Formerly there was much special handling for the Tooltip dialog in
GuiManager::runLoop. This was replaced by overloading the event handling
functions in Tooltip. Also the Tooltip was adapted to be run like every
other normal dialog.
svn-id: r54337
Before, it could be instantiated after an engine loaded and then was never deleted, causing memory fragmentation. Also removed inner tooltip call to the GuiManager runloop, which makes the logic simpler since the tooltip is a bit of a hack. I had to remove it because deleting _tooltip in the inner loop (called from tooltip itself) is trouble.
svn-id: r54311
RadiobuttonGroup has a destructor which must be called to avoid leaking memory.
Have also added missing NULL init() declarations on object member pointers to avoid any future issues.
svn-id: r54260
This makes it possible to write
DECLARE_SINGLETON(foo);
instead of
DECLARE_SINGLETON(foo)
without causing a warning about an extra semicolon.
The extra semicolon helps some editors at parsing the C++ code.
svn-id: r54258
Basically, it was remembering the font under its non-localized name.
This resulted in a leak, and potentially could have caused the wrong
font to be used in a localization.
svn-id: r54256
I reduced memory fragmentation using 2 principles: Plugins should be loaded for as little time as possible, and long lasting memory allocations should be allocated before plugins are loaded. There might still be a little fragmentation left.
Note that command line settings that require plugins to be loaded don't work yet, but they didn't work (properly) before either.
svn-id: r54097
- Changed the new dithering checkbox to be more generic (i.e. relevant for all engines that may support such a feature in the future)
- Changed the checkbox to be unchecked by default. As discussed on -devel, game enhancements in ScummVM should be off by default, and opt-in
- Changed the option from "sci_undither" to "disable_dithering"
- Changed theme version style to X.Y.Z and bumped it to 0.8.2
svn-id: r54090
This merge was extremely difficult to carry out. It wasn't entirely SVN's fault -- there were several merges to the branch that were done by hand. Please check for any issues and regressions. Also note that the DS makefile was not copied over since the "one at a time" plugin mode currently has too much fragmentation ie. it doesn't work.
svn-id: r54051
This is a first step towards getting rid of all uses of regular printf,
fprintf, vprintf, vfprintf, puts, fputs, etc. in our codebase.
The name format() reflects the purpose of the function, and parallels
String.format() in Java, boost::format, and others.
svn-id: r54004
A new header file common/forbidden.h is included by scummsys.h and it
re-#defines numerous symbols like fopen(), fread(), system(), etc. with
garbage, in order to provoke compile errors in any code using them.
If a .cpp file really *must* use any of these (e.g. because it is a
backend file), then these redefinitions can be disabled by #defining
FORBIDDEN_SYMBOL_ALLOW_ALL as the first thing in the .cpp file. Whenever
this is done, an explanatory comment should be added.
Note that this system cannot catch all "bad" usages (notably the Lua
code in the sword25 engine), as it can only work if scummsys.h is
included.
svn-id: r53961
The GM and MT-32 popup widgets would be set to the first available MIDI device by default (before any selection has taken place yet). Instead, default will now be the first list entry.
svn-id: r53827
This fixes an issue with the <default> setting in the GM and MT-32 device tabs that has caused some complaints and discussions on -devel. It might also be what bug #3088438 is about.
With a <default> setting ScummVM would just use the first available MIDI device (even if this is the not really well working MT-32 emulator). This <default> setting was also indeed set by default - making it even more annoying.
Now there is a new setting for both the GM and MT-32 device tabs ("Don't use GM/MT-32 music").
This will cause MIDI device detection to be skipped and the best of the other devices (Adlib etc.) to be used. This new setting is used as default. So users who haven't specified anything will get Adlib, PC Speaker etc. (if supported by the engine) even if the engine prefers Midi.
There is a new "Use first available device" setting which will have the same effect as the "<default>" setting we had before.
svn-id: r53771
Almost all places where we used XMLParser::parseIntegerKey were using
it like this:
XMLParser::parseIntegerKey(str.c_str(), ...)
Since this makes the code harder to read, I overloaded the method to
also accept Commmon::String directly.
Also removed all .c_str() invocations where necessary.
svn-id: r53479
When switching to a theme that do not have the fonts needed to properly
display the current language, it now revert to the previously used theme
and display an error message telling the user to change the language
first if he wants to use the theme he selected.
svn-id: r52969
Add an error message when switching to a theme that does not support
the current language (i.e. it does not have fonts for the charset used by
that language).
svn-id: r52965
When the locale font are not found when loading the theme, it now
fallbacks to default language (i.e. English) and default font. For this to work
I had to move the TranslationManager initialization before the Theme is
loaded. Therefore it is now initialized when the GuiManager is constructed.
svn-id: r52896
This happened with some translations as the width of the checkbox was
fixed to 80 pixels, even though more space was available. I have increased
it to 120 pixels.
svn-id: r52849
I think I have checked everywhere and it looks good both in English and in
French. This might help for future translations. I am not committing the
change to the 1.2.0 branch though as I am not completely sure it is
harmless.
svn-id: r52830
In normal (no scaling) mode and aspect ratio correction turned off, the
height of the Audio tab of the game options was too small and the subtitle
speed option was subsequently cut.
svn-id: r52829
This code was added when tooltip support was added. Since we changed the way
how tooltips are drawn later on, this code is not required anymore. Actually
it was never used, but it could've been used to save/restore the state of the
GUI for the tooltips.
svn-id: r52717
Starting with r48551 the caret undrawing caused the text selection color in
ListWidgets to be removed. It also added a slight offset to the character
next to the undrawn caret. All this is fixed now.
svn-id: r52716
This change means there can now be different translations for the same
english string depending on the context. It is based on gettext msgctxt feature.
There is a new macro _c(msg, ctxt) that should be used instead of _(msg) in
the source code when we want to add a context to the message. For the
moment I have added contexts to only one message ("None") so that I could
test the changes. Context could be added also to get shorter translations when
GUI is in 1x mode.
I have also added back the fuzzy option to msmerge since it is useful when
adding contexts to populate the translations for the new contexts.
svn-id: r52308
The ThemeEngine had a fallback implemented to use the
non-localized font if the localized one (e.g. for Hungarian) could not
be found. However the fallback was not working. Now it is working.
svn-id: r52243
These devices are not able to create appropriate drivers.
The only purpose for now is having proper gui options and flags and music types for the device detector.
The corresponding GUIO flags for the new devices have been added, too.
svn-id: r51995
The GUI now uses the content of the Language field from the po file
header if it is present and not empty for the language selection
PopupWidget. If not present it uses the file name as before (e.g.
ru_RU).
Also update all the translation template and all the translation files.
svn-id: r51542
This makes the GMM's option dialog work again.
The fix itself is exactly the same like I made in r50468, which
also broke the GMM's option dialog.
svn-id: r51330
Bug #3027772: "Can't switch between Text and Speech". The problem was in
overcrowded Audio tab in any resolution with height < 480.
Solved by adding new MT-32 tab and grouping all relevant widgets there.
TODO:
- The problem still exists for 320x200 resolution where Subtitle speed
control is not accessible
- Apparently nobody tested tab control scrolling after switching to new
GUI, and now there are artifacts
svn-id: r51265
With help of Tanoku tooltips were switched from widgets to dialogs
which helped to fix nasty bug with background not being restored.
Although it is basically a hack around inconsistent font backbuffering
in our GUI code, for the time being it is feasible.
The patch was extended with way to specify tooltip background in the
theme file.
svn-id: r51217
Formerly in case a game only specified GUIO_MIDIMT32, only the MT-32 Emulator
was shown, since that is the only device which is of type MT_MT32. All
external MIDI devices are currently only flagged with MT_GM.
svn-id: r51107
This is based on the Android specific patch found under:
backends/platform/android/scummvm-android-themeengine.patch
After some testing we should be able to get rid of that custom patch.
svn-id: r51028
* Remove _isAttached member var and isAttached method
* Engines now always call the onFrame method; whether it does
something is decided by the debugger class resp. its subclasses
* Make detach() protected instead of private, so that subclasses
can invoke it
* Remove _detach_now member var (call detach() instead).
* Rename _frame_countdown to _frameCountdown and properly
document it.
* Add more doxygen comments
* Cleanup
svn-id: r50963
our module unzip.cpp can read uncompressed ZIP archives even without zlib. if some of the files
inside are compressed and zlib is not linked in, an error is returned.
svn-id: r50483
The problem here is that our ConfigDialog uses "" as domain name,
this will result in the assert in common/config-manager.cpp:323
getting triggered, when using ConfMan.removeKey.
Since setting the domain to the game's domain does not seem save
according to the FIXME in gui/dialogs.cpp about this domain hackery,
I decided to adapt the OptionsDialog to only call ConfMan.removeKey
for "music_driver" etc., when the music driver widgets are present.
This is consistent with the over uses of removeKey in
OptionsDialog::close too.
svn-id: r50468
Currently it ws not decided where to put fonts, but if you put BDF files into
themepath, they will get picked up.
The font name has to contain same codepage specification as in the .po file,
i.e. fixed5x8-iso-8859-5.bdf for Cyrillic codepage. In case the font does not
exist, default will be used.
All built in fonts get proper names.
TODO: Currently there is a bug with our font cacher. Font clR6x12-iso-8859-5
is empty after loading from FCC file. Reason is unknown.
svn-id: r50448