summaryrefslogtreecommitdiff
path: root/src/gui/widgets/dropdown.cpp
AgeCommit message (Collapse)AuthorFilesLines
2025-04-25GUI: Added support for multiple color palettes to ThemeThorbjørn Lindeijer1-3/+4
Each Skin can point to a different palette, which can be used to tweak text colors where necessary. For now there is no generic solution for this, instead a number of locations have been adjusted to take the palette into account: * ChatWindow sets its palette on the BrowserBox used in its tabs. * Popup sets its palette on child widgets when they are added (covering BrowserBox, Label and TextBox). * ItemPopup now uses its palette when looking up colors. The BrowserBox now retrieves its numbered text colors from the theme. Also added OLDCHAT, AWAYCHAT and GLOBAL theme colors, with ##g, ##o and ##a to choose these colors respectively. Fixed ImageRect move constructor. TextPreview class was cleaned up from unused functionality. Being name colors are no longer different between the name shown on the being and the name shown in the SpeechDialog.
2025-04-25GUI: Allow theme to skin item slots and equipment boxesThorbjørn Lindeijer1-4/+3
* Added EquipmentBox and ItemSlot skin types. * Allowed rectangles drawn by the theme to be not filled. * Added width/height attributes to skin element since we needed a way to specify the size of the item slots and equipment boxes.
2025-03-24Expanded GUI theming capabilitiesThorbjørn Lindeijer1-3/+74
* Moved previously hardcoded values for frame size, padding and title bar height to the Skin. * Added support for rendering colored rectangles (used for scroll bar background). * Scroll bar width is now determined by its skin. * Added separate skins for horizontal and vertical scroll bars and horizontal and vertical scroll markers and added a skin for the shortcut box. * Added support for hovered state on window close button.
2025-03-24Define the GUI theme in XMLThorbjørn Lindeijer1-12/+20
Now all images used by the various UI widgets are defined in a `theme.xml`, removing hardcoded requirements on the size of images, borders and sub-images and their locations. The `colors.xml` file was merged into this new file as well. The `<img>` element defines either a plain image, or a 9-scale that is automatically rendered at the size of the widget when any of the `left`, `right`, `top` or `bottom` attributes are given. The `x`, `y`, `width` and `height` attributes determine the sub-rectangle within the image referenced by `src`. `x` and `y` default to 0 and `width` and `height` default to the imge size. The `<state>` element defines in which state its images are used by setting its `selected`, `disabled`, `hovered` or `focused` attributes to either `true` or `false`. Only the first matching state is rendered. The `Text` and `SpeechBubble` classes now use the same skin to draw the bubble, as well as using a newly introduced `BUBBLE_TEXT` color from the theme palette.
2025-03-14Moved widget drawing code into ThemeThorbjørn Lindeijer1-99/+17
This is cleaner overall since now each widget type no longer needs to keep track of its own instances and updating of the GUI alpha. It also introduces a single point from where the GUI theme support can be enhanced. Theme is no longer a singleton, though for now there is a single instance owned by the Gui singleton. Widgets adjusted to delegate their painting to the Theme: * Button * Tab * TextField * CheckBox * RadioButton * Slider * DropDown * ProgressBar * ScrollArea * ResizeGrip * PlayerBox (by subclassing ScrollArea) The Window and Popup widgets already use the theme through the Skin class. They can actually use a different skin per instance, though this feature is only used by the SpeechBubble.
2025-02-26Use ResourceRef for all resource typesThorbjørn Lindeijer1-8/+6
All ResourceManager functions that load resources now return respective ResourceRef values, which helps to make sure resources are properly cleaned up. The Sound class was cleaned up and now also allows SoundEffect resources to be unloaded. The Animation class now keeps its ImageSet loaded only as long as necessary. Previously, SimpleAnimation and ParticleEmitter would keep the ImageSet loaded indefinitely by never decreasing its reference count. Reduced duplicated animation loading code between SimpleAnimation and ParticleEmitter.
2025-01-20Made client config statically typedThorbjørn Lindeijer1-1/+1
This makes accessing the config values much faster, since it no longer needs to do a lookup nor string conversion, which means we could remove some needless copying of the values. Overall it makes it easier to find out where settings are used and it puts the defaults along with the declaration. Options with default values are no longer saved to the config file. This does not include unrecognized options, which are kept around to provide some compatibility with older clients. While most basic options have kept the same name, more complicated settings like window geometry, shortcuts, outfits, etc. now have their own XML elements. Older clients will ignore these and erase them when saving the configuration.
2024-03-22Fixed the distribution of action events by DropDownThorbjørn Lindeijer1-1/+7
It did not distribute them when the value of the DropDown was changed by key events or mouse wheel.
2024-02-13General code cleanupsThorbjørn Lindeijer1-3/+3
* Removing unused includes * Use member initialization * Use range-based for loops * Use nullptr * Removed no longer used aliases * Use override * Don't use else after return * Use '= delete' to remove implicit members * Use std::string::empty instead of comparing to ""
2024-01-29Removed unused includes in various filesThorbjørn Lindeijer1-1/+0
2024-01-29Apply C++11 fixitsThorbjørn Lindeijer1-5/+3
modernize-loop-convert modernize-deprecated-headers
2024-01-24Fixed compilation issues and use of deprecated C++ featuresThorbjørn Lindeijer1-1/+1
* Fixed compiler errors due to dynamic exception specifications * Replace std::auto_ptr with std::unique_ptr * Replace std::mem_fun with std::mem_fn * Prefix for_each with std:: (apparently not needed before) * Just use lambda instead of std::bind2nd * Removed usages of std::unary_function
2012-01-26Updated copyrights to 2012Thorbjørn Lindeijer1-1/+1
2010-08-03Move Theme and UserPalette to the resources folderJared Adams1-1/+1
Reviewed-by: Yohann Ferreira
2010-07-28Centralized configuration default values using the VariableData system.Yohann Ferreira1-2/+2
Please note that I didn't turned all the getValue() call into new ones, simply because I have to have config object initiated which is not forcefully the case the branding file. Resolves: Manasource Mantis #170.
2010-03-12Split Palette into Theme and UserPaletteJared Adams1-3/+3
Themes can now control the colors they use. Colors in the Viewport (being names, particles, etc) can still be changed by the user. Also make ProgressBars more easily colored. DyePalette was made more flexible in the process. Also fixes comparing strings of different lengths insensitively. Reviewed-by: Thorbjørn Lindeijer
2010-03-05Rename SkinLoader to ThemeJared Adams1-11/+7
Also merge the guialpha ConfigListener into Theme. Reviewed-by: Thorbjørn Lindeijer
2010-02-28Make the gui more themeable and distribute two themesJared Adams1-7/+5
The older gray theme and the new wood theme are available as themes. The gray theme needs some new graphics for hilights. Add a theme option for branding and add path/to/branding/data to the PhysFS search path. Reviewed-by: Thorbjørn Lindeijer Reviewed-by: Chuck Miller
2010-02-22Modify copyright headersFreeyorp1-1/+2
2010-02-20License header update for The Mana ClientThorbjørn Lindeijer1-4/+3
2010-02-14Fixed DropDowns not collapsing when an item was clicked on, or enter orTametomo1-21/+26
space was pressed. Signed-off-by: Tametomo <irarice@gmail.com>
2010-02-14Release modal mouse focus in DropDowns when focus is lost. If notTametomo1-0/+6
released, this can cause the user to think that the client has frozen up when dialogs such as the quit dialog take modal focus. Signed-off-by: Tametomo <irarice@gmail.com>
2010-02-14Fixed duplicating of up and down actions with the dropdown widget. (itTametomo1-2/+4
used to get one event from the dropdown, then another from the listbox if dropped down. Otherwise, it only got one from the dropdown) Signed-off-by: Tametomo <irarice@gmail.com>
2010-02-08Delete models explicitly rather than relying on booleansThorbjørn Lindeijer1-2/+2
It is more clear in the end. Also fixed deleting of the mode list model.
2010-02-07Cleanup some memory issuesJared Adams1-2/+2
2010-02-07Updated Copyright year to 2010!Bertram1-1/+1
Also added the update copyright tool from the Wormux Team. ( And not forgetting credit's due. :P )
2010-01-11Cleanup GUI classesJared Adams1-5/+5
Moved remaining widgets into widgets folder, standardized include order, moved TextRenderer out.
2009-09-03Resolved Mantis #847: Login stage Windows won't go less than the default gui ↵Bertram1-9/+18
opacity. Of course, in-game, the wanted opacity still shows up.
2009-05-14Don't apply GUI opacity to the selected value of a DropDownBjørn Lindeijer1-3/+3
2009-04-20Fixed key handling in dropdowns when the dropdown portion isn't visible.Tametomo1-0/+46
Signed-off-by: Tametomo <irarice@gmail.com> Signed-off-by: Bjørn Lindeijer <bjorn@lindeijer.nl>
2009-04-15Right, our ScrollArea deletes its contentBjørn Lindeijer1-1/+0
Fixes crash on closing login dialog...
2009-04-15Have the DropDown create its ScrollArea and ListBoxBjørn Lindeijer1-15/+10
And also clean them up again. Fixes some memory leaks and simplifies the code. Also got rid of the basically unused "opaque" setting of DropDown.
2009-04-07Moved basic widgets into the gui/widgets directoryBjørn Lindeijer1-2/+3
In an attempt to make the GUI code a little more structured, basic widgets are now put in gui/widgets. Many includes were also cleaned up.
2009-03-28Removed a lot of useless isVisible() checksBjørn Lindeijer1-3/+0
The draw() method of a widget isn't called when a widget is not visible.
2009-03-27Removed all the static initializations of mAlphaBjørn Lindeijer1-1/+1
They happened before the configuration was initialized, so that didn't make any sense. It never showed up as a problem since the value is constantly set in the draw methods anyway.
2009-03-26First batch of include cleanupBjørn Lindeijer1-10/+10
Since the relative includes are getting ugly and somewhat inconvenient, we'll switch to includes relative to the project root. We've done this for a while already with tmwserv. Another rule which we've always had but was never written down, is that each source file first includes its own header. This is common practice and ensures each header compiles without needing other stuff to be included first. Somebody using Code::Blocks might want to fix the project file by adding the 'src' directory to the list of include paths.
2009-03-25Don't crash cause of deleting a model twiceBjørn Lindeijer1-3/+0
This reverts commit c2e4a7a70971355f1446bb01053af8a1da8c98e1.
2009-03-12Make use of the new available colorsMajin Sniper1-10/+6
This patch lets all being derivatives use the palette to set their name's colors. Text Particle Effects all respect the new settings. Some widgets were updated to use the colors.
2009-03-12Extending the internal handling of colorssniper1-12/+9
The internal storage for colors was in the file color.h/color.cpp. It mainly managed the colors in the chat. The Color class was extended to be more generic now and it stores gcn::Color objects instead of integers now. A lot of new colortypes are now available, though not many of them are used for now, that will come in the next patches. The Color class was renamed to Palette and color.{h,cpp} to palette.{h,cpp} to better describe its purpose. The color config gui now lists the new colors, even changes them, but the result is not displayed properly for now.
2009-03-11Fix a memory leak in dropdownJared Adams1-0/+3
2009-03-10Remove some tabs and trailing whitespaceJared Adams1-3/+3
2009-03-06Merge branch 'aethyra/master'Bjørn Lindeijer1-10/+12
Conflicts: src/being.cpp src/being.h src/floor_item.cpp src/floor_item.h src/flooritemmanager.cpp src/gui/inventorywindow.cpp src/gui/inventorywindow.h src/gui/itemcontainer.cpp src/gui/popupmenu.cpp src/net/beinghandler.cpp src/npc.cpp
2009-03-05Made some optimizations based on some profiling done by Octalot, as wellIra Rice1-10/+12
as some other optimizations that I could see that cut down on some unneeded redraws, which in turn improved frame rates slightly. Signed-off-by: Ira Rice <irarice@gmail.com>
2009-02-15Fixed header copyright notices.Ira Rice1-2/+3
Signed-off-by: Ira Rice <irarice@gmail.com>
2009-02-15More copyright header fixesBjørn Lindeijer1-1/+1
2009-02-15Merge commit 'aethyra/master'Bjørn Lindeijer1-3/+3
Conflicts: CMakeLists.txt configure.ac data/help/header.txt packaging/windows/setup.nsi po/POTFILES.in src/being.cpp src/being.h src/game.cpp src/gui/color.cpp src/gui/color.h src/gui/equipmentwindow.h src/gui/popupmenu.cpp src/gui/recorder.cpp src/gui/setup_colors.h src/gui/setup_keyboard.cpp src/gui/setup_keyboard.h src/gui/skill.cpp src/gui/speechbubble.cpp src/gui/speechbubble.h src/gui/table.cpp src/keyboardconfig.cpp src/keyboardconfig.h src/localplayer.cpp src/main.cpp src/main.h src/map.cpp src/resources/colordb.cpp src/resources/colordb.h src/resources/emotedb.cpp src/resources/emotedb.h src/text.cpp src/text.h src/tmw.rc src/winver.h
2009-02-11Shut up some compiler warnings.Philipp Sehmisch1-1/+1
2009-02-11Shut up some compiler warnings.Philipp Sehmisch1-1/+1
2009-02-11Changed spelling from colour to color.Philipp Sehmisch1-2/+2
2009-02-10Fixed header files, as well as removed the unused buddy list class (notIra Rice1-6/+6
useful since buddy lists are tracked through the player relation interface instead) Signed-off-by: Ira Rice <irarice@gmail.com>