From e9f7a035b15391e5fb65d16f9d47a5f0a2efed61 Mon Sep 17 00:00:00 2001 From: David Capello Date: Fri, 21 Jan 2011 17:50:04 -0300 Subject: [PATCH] Remove jtheme and JTheme types, use Theme class directly. + Added CurrentTheme namespace. + Rename Theme::regen() to Theme::onRegenerate(). + ji_regen_theme() is in Theme::regenerate() member function. --- src/commands/cmd_refresh.cpp | 6 +-- src/gui/CMakeLists.txt | 2 +- src/gui/button.cpp | 6 +-- src/gui/entry.cpp | 2 +- src/gui/jbase.h | 5 +- src/gui/jbox.cpp | 4 +- src/gui/jcombobox.cpp | 2 +- src/gui/jfont.cpp | 2 +- src/gui/jgrid.cpp | 4 +- src/gui/jimage.cpp | 2 +- src/gui/jinete.cpp | 9 +--- src/gui/jinete.h | 2 +- src/gui/jintern.cpp | 8 ++-- src/gui/jintern.h | 2 +- src/gui/jlink_label.cpp | 2 +- src/gui/jlistbox.cpp | 4 +- src/gui/jpanel.cpp | 4 +- src/gui/jsep.cpp | 4 +- src/gui/jsystem.cpp | 4 +- src/gui/jtextbox.cpp | 2 +- src/gui/jview.cpp | 4 +- src/gui/label.cpp | 4 +- src/gui/slider.cpp | 2 +- src/gui/{jtheme.cpp => theme.cpp} | 76 ++++++++++++------------------- src/gui/{jtheme.h => theme.h} | 26 +++++++---- src/gui/widget.cpp | 6 +-- src/gui/widget.h | 8 ++-- src/modules/gfx.cpp | 4 +- src/modules/gui.cpp | 22 ++++----- src/skin_theme.cpp | 2 +- src/skin_theme.h | 9 ++-- src/widgets/colview.cpp | 2 +- src/widgets/groupbut.cpp | 4 +- src/widgets/paledit.cpp | 2 +- src/widgets/target.cpp | 4 +- 35 files changed, 119 insertions(+), 132 deletions(-) rename src/gui/{jtheme.cpp => theme.cpp} (84%) rename src/gui/{jtheme.h => theme.h} (89%) diff --git a/src/commands/cmd_refresh.cpp b/src/commands/cmd_refresh.cpp index 82704ee80..2d44e00c3 100644 --- a/src/commands/cmd_refresh.cpp +++ b/src/commands/cmd_refresh.cpp @@ -25,8 +25,8 @@ #include #endif -#include "gui/jtheme.h" #include "gui/jsystem.h" +#include "gui/theme.h" #include "app.h" #include "commands/command.h" @@ -62,9 +62,9 @@ void RefreshCommand::onExecute(Context* context) // Reload skin { - SkinTheme* theme = (SkinTheme*)ji_get_theme(); + SkinTheme* theme = (SkinTheme*)CurrentTheme::get(); theme->reload_skin(); - ji_regen_theme(); + theme->regenerate(); } { diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 7963d2c0d..57e64387f 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -37,11 +37,11 @@ add_library(gui-lib jstream.cpp jsystem.cpp jtextbox.cpp - jtheme.cpp jtooltips.cpp jview.cpp label.cpp preferred_size_event.cpp property.cpp slider.cpp + theme.cpp widget.cpp) diff --git a/src/gui/button.cpp b/src/gui/button.cpp index bb4b9a501..3a00a2598 100644 --- a/src/gui/button.cpp +++ b/src/gui/button.cpp @@ -13,14 +13,14 @@ #include #include "gui/button.h" +#include "gui/frame.h" #include "gui/jlist.h" #include "gui/jmanager.h" #include "gui/jmessage.h" #include "gui/jrect.h" -#include "gui/jtheme.h" -#include "gui/widget.h" -#include "gui/frame.h" #include "gui/preferred_size_event.h" +#include "gui/theme.h" +#include "gui/widget.h" ButtonBase::ButtonBase(const char* text, int type, int behaviorType, int drawType) : Widget(type) diff --git a/src/gui/entry.cpp b/src/gui/entry.cpp index 84d5abb41..11a46d875 100644 --- a/src/gui/entry.cpp +++ b/src/gui/entry.cpp @@ -18,8 +18,8 @@ #include "gui/jmessage.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" #include "gui/preferred_size_event.h" +#include "gui/theme.h" #include "gui/widget.h" #define CHARACTER_LENGTH(f, c) ((f)->vtable->char_length((f), (c))) diff --git a/src/gui/jbase.h b/src/gui/jbase.h index ba3609348..b33d277e0 100644 --- a/src/gui/jbase.h +++ b/src/gui/jbase.h @@ -47,10 +47,10 @@ struct jlist; union jmessage; struct jrect; struct jregion; -class jtheme; -class Widget; class Frame; +class Theme; +class Widget; /* alignment */ #define JI_HORIZONTAL 0x0001 @@ -203,7 +203,6 @@ typedef union jmessage* JMessage; typedef struct jstream* JStream; typedef struct jrect* JRect; typedef struct jregion* JRegion; -typedef class jtheme* JTheme; typedef class Widget* JWidget; typedef struct jxml* JXml; typedef struct jxmlattr* JXmlAttr; diff --git a/src/gui/jbox.cpp b/src/gui/jbox.cpp index 01ee4b35b..2d4187106 100644 --- a/src/gui/jbox.cpp +++ b/src/gui/jbox.cpp @@ -8,12 +8,12 @@ #include "config.h" +#include "gfx/size.h" #include "gui/jlist.h" #include "gui/jmessage.h" #include "gui/jrect.h" +#include "gui/theme.h" #include "gui/widget.h" -#include "gui/jtheme.h" -#include "gfx/size.h" using namespace gfx; diff --git a/src/gui/jcombobox.cpp b/src/gui/jcombobox.cpp index 8e26884d7..b02258dd8 100644 --- a/src/gui/jcombobox.cpp +++ b/src/gui/jcombobox.cpp @@ -43,7 +43,7 @@ ComboBox::ComboBox() m_entry->user_data[0] = this; m_button->user_data[0] = this; - /* TODO this separation should be from the JTheme */ + // TODO this separation should be from the Theme* this->child_spacing = 0; jwidget_focusrest(this, true); diff --git a/src/gui/jfont.cpp b/src/gui/jfont.cpp index 9b6da6bac..b0fae9f4b 100644 --- a/src/gui/jfont.cpp +++ b/src/gui/jfont.cpp @@ -15,7 +15,7 @@ #include "gui/jfont.h" #include "gui/jintern.h" -#include "gui/jtheme.h" +#include "gui/theme.h" FONT* ji_font_load(const char* filepathname) { diff --git a/src/gui/jgrid.cpp b/src/gui/jgrid.cpp index 7227be0c9..f9dd0e915 100644 --- a/src/gui/jgrid.cpp +++ b/src/gui/jgrid.cpp @@ -10,12 +10,12 @@ #include #include +#include "gfx/size.h" #include "gui/jlist.h" #include "gui/jmessage.h" #include "gui/jrect.h" +#include "gui/theme.h" #include "gui/widget.h" -#include "gui/jtheme.h" -#include "gfx/size.h" using namespace gfx; diff --git a/src/gui/jimage.cpp b/src/gui/jimage.cpp index 7c5ed8155..4f8bb122c 100644 --- a/src/gui/jimage.cpp +++ b/src/gui/jimage.cpp @@ -13,7 +13,7 @@ #include "gui/jmessage.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" +#include "gui/theme.h" #include "gui/widget.h" static bool image_msg_proc(JWidget widget, JMessage msg); diff --git a/src/gui/jinete.cpp b/src/gui/jinete.cpp index 06c52271b..f88a5fbb7 100644 --- a/src/gui/jinete.cpp +++ b/src/gui/jinete.cpp @@ -7,8 +7,8 @@ #include "config.h" #include "gui/jbase.h" -#include "gui/jtheme.h" #include "gui/jclipboard.h" +#include "gui/theme.h" #ifdef MEMLEAK void _jmemleak_init(); @@ -24,9 +24,6 @@ void _ji_system_exit(); int _ji_font_init(); void _ji_font_exit(); -int _ji_theme_init(); -void _ji_theme_exit(); - /** * Initializes the Jinete library. */ @@ -40,19 +37,17 @@ Jinete::Jinete() _ji_system_init(); _ji_font_init(); _ji_widgets_init(); - _ji_theme_init(); } Jinete::~Jinete() { // finish theme - ji_set_theme(NULL); + CurrentTheme::set(NULL); // destroy clipboard jclipboard_set_text(NULL); // shutdown system - _ji_theme_exit(); _ji_widgets_exit(); _ji_font_exit(); _ji_system_exit(); diff --git a/src/gui/jinete.h b/src/gui/jinete.h index c7bc2f371..3db745402 100644 --- a/src/gui/jinete.h +++ b/src/gui/jinete.h @@ -37,11 +37,11 @@ #include "gui/jstream.h" #include "gui/jsystem.h" #include "gui/jtextbox.h" -#include "gui/jtheme.h" #include "gui/jtooltips.h" #include "gui/jview.h" #include "gui/label.h" #include "gui/slider.h" +#include "gui/theme.h" #include "gui/widget.h" #endif diff --git a/src/gui/jintern.cpp b/src/gui/jintern.cpp index 198d6946f..605fa309d 100644 --- a/src/gui/jintern.cpp +++ b/src/gui/jintern.cpp @@ -8,10 +8,10 @@ #include -#include "gui/jmanager.h" -#include "gui/jtheme.h" -#include "gui/widget.h" #include "gui/frame.h" +#include "gui/jmanager.h" +#include "gui/theme.h" +#include "gui/widget.h" static std::vector* widgets; @@ -105,7 +105,7 @@ void _ji_reinit_theme_in_all_widgets() // Then we can reinitialize the theme of each widget for (c=0; csize(); c++) if (_ji_is_valid_widget((*widgets)[c])) { - (*widgets)[c]->theme = ji_get_theme(); + (*widgets)[c]->theme = CurrentTheme::get(); jwidget_init_theme((*widgets)[c]); } diff --git a/src/gui/jintern.h b/src/gui/jintern.h index e4aabd22c..0ce6d17c9 100644 --- a/src/gui/jintern.h +++ b/src/gui/jintern.h @@ -38,7 +38,7 @@ void _jmanager_open_window(JWidget manager, Frame* frame); void _jmanager_close_window(JWidget manager, Frame* frame, bool redraw_background); ////////////////////////////////////////////////////////////////////// -// jtheme.c +// theme.cpp void _ji_theme_draw_sprite_color(struct BITMAP *bmp, struct BITMAP *sprite, int x, int y, int color); diff --git a/src/gui/jlink_label.cpp b/src/gui/jlink_label.cpp index 60fdb73f3..b05463f4c 100644 --- a/src/gui/jlink_label.cpp +++ b/src/gui/jlink_label.cpp @@ -9,8 +9,8 @@ #include "gui/jlink_label.h" #include "gui/jmessage.h" -#include "gui/jtheme.h" #include "gui/jsystem.h" +#include "gui/theme.h" #include "launcher.h" LinkLabel::LinkLabel(const char* urlOrText) diff --git a/src/gui/jlistbox.cpp b/src/gui/jlistbox.cpp index 6e271e1f6..8eff2bf51 100644 --- a/src/gui/jlistbox.cpp +++ b/src/gui/jlistbox.cpp @@ -8,15 +8,15 @@ #include +#include "gfx/size.h" #include "gui/jlist.h" #include "gui/jmanager.h" #include "gui/jmessage.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" #include "gui/jview.h" +#include "gui/theme.h" #include "gui/widget.h" -#include "gfx/size.h" using namespace gfx; diff --git a/src/gui/jpanel.cpp b/src/gui/jpanel.cpp index a75cfb2b5..3ec5f9fea 100644 --- a/src/gui/jpanel.cpp +++ b/src/gui/jpanel.cpp @@ -6,13 +6,13 @@ #include "config.h" +#include "gfx/size.h" #include "gui/jlist.h" #include "gui/jmessage.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" +#include "gui/theme.h" #include "gui/widget.h" -#include "gfx/size.h" typedef struct Panel { diff --git a/src/gui/jsep.cpp b/src/gui/jsep.cpp index 767635461..5bbaf2e7e 100644 --- a/src/gui/jsep.cpp +++ b/src/gui/jsep.cpp @@ -6,12 +6,12 @@ #include "config.h" +#include "gfx/size.h" #include "gui/jlist.h" #include "gui/jmessage.h" #include "gui/jrect.h" -#include "gui/jtheme.h" +#include "gui/theme.h" #include "gui/widget.h" -#include "gfx/size.h" using namespace gfx; diff --git a/src/gui/jsystem.cpp b/src/gui/jsystem.cpp index d55d62b2c..5154f3d09 100644 --- a/src/gui/jsystem.cpp +++ b/src/gui/jsystem.cpp @@ -18,7 +18,7 @@ #include "gui/jrect.h" #include "gui/jregion.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" +#include "gui/theme.h" #include "gui/widget.h" /* Global output bitmap. */ @@ -210,7 +210,7 @@ int jmouse_set_cursor(int type) if (m_cursor == type) return type; else { - JTheme theme = ji_get_theme(); + Theme* theme = CurrentTheme::get(); int old = m_cursor; m_cursor = type; diff --git a/src/gui/jtextbox.cpp b/src/gui/jtextbox.cpp index bbdc20766..ecea52b76 100644 --- a/src/gui/jtextbox.cpp +++ b/src/gui/jtextbox.cpp @@ -15,8 +15,8 @@ #include "gui/jmessage.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" #include "gui/jview.h" +#include "gui/theme.h" #include "gui/widget.h" static bool textbox_msg_proc(JWidget widget, JMessage msg); diff --git a/src/gui/jview.cpp b/src/gui/jview.cpp index 151d95d5e..0110e79f1 100644 --- a/src/gui/jview.cpp +++ b/src/gui/jview.cpp @@ -6,16 +6,16 @@ #include "config.h" +#include "gfx/size.h" #include "gui/jintern.h" #include "gui/jlist.h" #include "gui/jmessage.h" #include "gui/jrect.h" #include "gui/jregion.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" #include "gui/jview.h" +#include "gui/theme.h" #include "gui/widget.h" -#include "gfx/size.h" #define BAR_SIZE widget->theme->scrollbar_size diff --git a/src/gui/label.cpp b/src/gui/label.cpp index c16f91eb2..e2a3d29d6 100644 --- a/src/gui/label.cpp +++ b/src/gui/label.cpp @@ -6,9 +6,9 @@ #include "config.h" -#include "gui/label.h" #include "gui/jmessage.h" -#include "gui/jtheme.h" +#include "gui/label.h" +#include "gui/theme.h" Label::Label(const char *text) : Widget(JI_LABEL) diff --git a/src/gui/slider.cpp b/src/gui/slider.cpp index 055d1d8e6..dc8586a46 100644 --- a/src/gui/slider.cpp +++ b/src/gui/slider.cpp @@ -13,9 +13,9 @@ #include "gui/jmessage.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" #include "gui/preferred_size_event.h" #include "gui/slider.h" +#include "gui/theme.h" #include "gui/widget.h" static int slider_press_x; diff --git a/src/gui/jtheme.cpp b/src/gui/theme.cpp similarity index 84% rename from src/gui/jtheme.cpp rename to src/gui/theme.cpp index 2c1c7df80..01f8343b6 100644 --- a/src/gui/jtheme.cpp +++ b/src/gui/theme.cpp @@ -14,33 +14,19 @@ #include "gui/jmanager.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" #include "gui/jview.h" +#include "gui/theme.h" #include "gui/widget.h" -static JTheme ji_current_theme = NULL; -static JTheme ji_standard_theme = NULL; +static Theme* current_theme = NULL; static void draw_text(BITMAP *bmp, FONT *f, const char *text, int x, int y, int fg_color, int bg_color, bool fill_bg); -int _ji_theme_init() -{ - return 0; -} - -void _ji_theme_exit() -{ - if (ji_standard_theme) { - delete ji_standard_theme; - ji_standard_theme = NULL; - } -} - -jtheme::jtheme() +Theme::Theme() { this->name = "Theme"; - this->default_font = font; /* default Allegro font */ + this->default_font = font; // Default Allegro font this->desktop_color = 0; this->textbox_fg_color = 0; this->textbox_bg_color = 0; @@ -50,58 +36,56 @@ jtheme::jtheme() this->guiscale = 1; } -jtheme::~jtheme() +Theme::~Theme() { - if (ji_current_theme == this) - ji_set_theme(NULL); + if (current_theme == this) + CurrentTheme::set(NULL); } -/**********************************************************************/ +void Theme::regenerate() +{ + int type = jmouse_get_cursor(); + jmouse_set_cursor(JI_CURSOR_NULL); -void ji_set_theme(JTheme theme) + onRegenerate(); + + jmouse_set_cursor(type); +} + +////////////////////////////////////////////////////////////////////// + +void CurrentTheme::set(Theme* theme) { JWidget manager = ji_get_default_manager(); - ji_current_theme = theme; + current_theme = theme; - if (ji_current_theme) { - ji_regen_theme(); + if (current_theme) { + current_theme->regenerate(); if (manager && jwidget_get_theme(manager) == NULL) jwidget_set_theme(manager, theme); } } -JTheme ji_get_theme() +Theme* CurrentTheme::get() { - return ji_current_theme; -} - -void ji_regen_theme() -{ - if (ji_current_theme) { - int type = jmouse_get_cursor(); - jmouse_set_cursor(JI_CURSOR_NULL); - - ji_current_theme->regen(); - - jmouse_set_cursor(type); - } + return current_theme; } int ji_color_foreground() { - return ji_current_theme->color_foreground(); + return current_theme->color_foreground(); } int ji_color_disabled() { - return ji_current_theme->color_disabled(); + return current_theme->color_disabled(); } int ji_color_face() { - return ji_current_theme->color_face(); + return current_theme->color_face(); } int ji_color_facelight() @@ -122,17 +106,17 @@ int ji_color_faceshadow() int ji_color_hotface() { - return ji_current_theme->color_hotface(); + return current_theme->color_hotface(); } int ji_color_selected() { - return ji_current_theme->color_selected(); + return current_theme->color_selected(); } int ji_color_background() { - return ji_current_theme->color_background(); + return current_theme->color_background(); } BITMAP* ji_apply_guiscale(BITMAP* original) diff --git a/src/gui/jtheme.h b/src/gui/theme.h similarity index 89% rename from src/gui/jtheme.h rename to src/gui/theme.h index 3caffcc7b..9ff886e6a 100644 --- a/src/gui/jtheme.h +++ b/src/gui/theme.h @@ -4,8 +4,8 @@ // This source file is ditributed under a BSD-like license, please // read LICENSE.txt for more information. -#ifndef GUI_JTHEME_H_INCLUDED -#define GUI_JTHEME_H_INCLUDED +#ifndef GUI_THEME_H_INCLUDED +#define GUI_THEME_H_INCLUDED #include "gui/jbase.h" @@ -16,7 +16,7 @@ class ButtonBase; class Entry; class Slider; -class jtheme +class Theme { public: const char* name; @@ -29,10 +29,11 @@ public: int scrollbar_size; int guiscale; - jtheme(); - virtual ~jtheme(); + Theme(); + virtual ~Theme(); + + void regenerate(); - virtual void regen() = 0; virtual BITMAP* set_cursor(int type, int *focus_x, int *focus_y) = 0; virtual void init_widget(JWidget widget) = 0; virtual JRegion get_window_mask(JWidget widget) = 0; @@ -68,11 +69,16 @@ public: virtual void draw_view_viewport(JWidget widget, JRect clip) = 0; virtual void draw_frame(Frame* frame, JRect clip) = 0; +protected: + virtual void onRegenerate() = 0; + }; -void ji_set_theme(JTheme theme); -JTheme ji_get_theme(); -void ji_regen_theme(); +namespace CurrentTheme +{ + void set(Theme* theme); + Theme* get(); +} int ji_color_foreground(); int ji_color_disabled(); @@ -89,7 +95,7 @@ BITMAP* ji_apply_guiscale(BITMAP* original); // Every icon/graphics/font should be scaled to this factor. inline int jguiscale() { - return ji_get_theme() ? ji_get_theme()->guiscale: 1; + return CurrentTheme::get() ? CurrentTheme::get()->guiscale: 1; } #endif diff --git a/src/gui/widget.cpp b/src/gui/widget.cpp index 50d0c5f5f..29efa423d 100644 --- a/src/gui/widget.cpp +++ b/src/gui/widget.cpp @@ -59,7 +59,7 @@ Widget::Widget(int type) this->max_h = INT_MAX; this->children = jlist_new(); this->parent = NULL; - this->theme = ji_get_theme(); + this->theme = CurrentTheme::get(); this->hooks = jlist_new(); this->m_align = 0; @@ -858,7 +858,7 @@ int jwidget_get_bg_color(JWidget widget) return widget->getBgColor(); } -JTheme jwidget_get_theme(JWidget widget) +Theme* jwidget_get_theme(JWidget widget) { ASSERT_VALID_WIDGET(widget); @@ -1054,7 +1054,7 @@ void jwidget_set_bg_color(JWidget widget, int color) widget->setBgColor(color); } -void jwidget_set_theme(JWidget widget, JTheme theme) +void jwidget_set_theme(JWidget widget, Theme* theme) { ASSERT_VALID_WIDGET(widget); diff --git a/src/gui/widget.h b/src/gui/widget.h index 4662ade64..7e6cf4faf 100644 --- a/src/gui/widget.h +++ b/src/gui/widget.h @@ -82,7 +82,7 @@ JRect jwidget_get_child_rect(JWidget widget); JRegion jwidget_get_region(JWidget widget); JRegion jwidget_get_drawable_region(JWidget widget, int flags); int jwidget_get_bg_color(JWidget widget); -JTheme jwidget_get_theme(JWidget widget); +Theme* jwidget_get_theme(JWidget widget); int jwidget_get_text_length(JWidget widget); int jwidget_get_text_height(JWidget widget); void jwidget_get_texticon_info(JWidget widget, @@ -96,7 +96,7 @@ void jwidget_set_rect(JWidget widget, JRect rect); void jwidget_set_min_size(JWidget widget, int w, int h); void jwidget_set_max_size(JWidget widget, int w, int h); void jwidget_set_bg_color(JWidget widget, int color); -void jwidget_set_theme(JWidget widget, JTheme theme); +void jwidget_set_theme(JWidget widget, Theme* theme); /* drawing methods */ @@ -149,7 +149,7 @@ public: /* structures */ JList children; /* sub-objects */ JWidget parent; /* who is the parent? */ - JTheme theme; /* widget's theme */ + Theme* theme; // Widget's theme /* virtual properties */ JList hooks; /* hooks with msg_proc and specific data */ @@ -167,7 +167,7 @@ public: /* more properties... */ - /* for JTheme */ + // Extra data for the theme void *theme_data[4]; /* for user */ diff --git a/src/modules/gfx.cpp b/src/modules/gfx.cpp index 403d179d0..93e67943b 100644 --- a/src/modules/gfx.cpp +++ b/src/modules/gfx.cpp @@ -24,7 +24,7 @@ #include "gui/jintern.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" +#include "gui/theme.h" #include "app.h" #include "app/color_utils.h" @@ -497,7 +497,7 @@ void draw_color_button(BITMAP* bmp, bool outer_se, bool outer_s, bool outer_sw, bool outer_w, int imgtype, const Color& color, bool hot, bool drag) { - SkinTheme* theme = (SkinTheme*)ji_get_theme(); + SkinTheme* theme = (SkinTheme*)CurrentTheme::get(); int scale = jguiscale(); // Draw background (the color) diff --git a/src/modules/gui.cpp b/src/modules/gui.cpp index 379cae40c..559f5b5a8 100644 --- a/src/modules/gui.cpp +++ b/src/modules/gui.cpp @@ -135,7 +135,7 @@ struct Monitor ////////////////////////////////////////////////////////////////////// static JWidget manager = NULL; -static JTheme ase_theme = NULL; +static Theme* ase_theme = NULL; static int monitor_timer = -1; static MonitorList* monitors = NULL; @@ -296,8 +296,8 @@ gfx_done:; manager = jmanager_new(); jwidget_add_hook(manager, JI_WIDGET, manager_msg_proc, NULL); - /* setup the standard jinete theme for widgets */ - ji_set_theme(ase_theme = new SkinTheme()); + // Setup the GUI theme for all widgets + CurrentTheme::set(ase_theme = new SkinTheme()); // Setup the handler for window-resize events set_resize_callback(resize_callback); @@ -369,7 +369,7 @@ void exit_module_gui() destroy_default_font(); // Now we can destroy theme - ji_set_theme(NULL); + CurrentTheme::set(NULL); delete ase_theme; remove_keyboard(); @@ -575,9 +575,9 @@ void gui_setup_screen(bool reload_font) // Update guiscale factor int old_guiscale = jguiscale(); - ji_get_theme()->guiscale = (screen_scaling == 1 && - JI_SCREEN_W > 512 && - JI_SCREEN_H > 256) ? 2: 1; + CurrentTheme::get()->guiscale = (screen_scaling == 1 && + JI_SCREEN_W > 512 && + JI_SCREEN_H > 256) ? 2: 1; // If the guiscale have changed if (old_guiscale != jguiscale()) { @@ -592,7 +592,7 @@ void gui_setup_screen(bool reload_font) // Regenerate the theme if (regen) { - ji_regen_theme(); + CurrentTheme::get()->regenerate(); reinit = true; } @@ -605,7 +605,7 @@ void gui_setup_screen(bool reload_font) static void destroy_default_font() { - JTheme theme = ji_get_theme(); + Theme* theme = CurrentTheme::get(); // No font for now if (theme->default_font && theme->default_font != font) @@ -616,7 +616,7 @@ static void destroy_default_font() static void reload_default_font() { - JTheme theme = ji_get_theme(); + Theme* theme = CurrentTheme::get(); SkinTheme* skin_theme = static_cast(theme); const char *user_font; @@ -1288,7 +1288,7 @@ static bool manager_msg_proc(JWidget widget, JMessage msg) static void on_palette_change_signal() { // Regenerate the theme - ji_regen_theme(); + CurrentTheme::get()->regenerate(); // Fixup the icons JLink link; diff --git a/src/skin_theme.cpp b/src/skin_theme.cpp index 3184ebdc4..f68ccfb50 100644 --- a/src/skin_theme.cpp +++ b/src/skin_theme.cpp @@ -190,7 +190,7 @@ std::string SkinTheme::get_font_filename() const return "skins/" + m_selected_skin + "/font.pcx"; } -void SkinTheme::regen() +void SkinTheme::onRegenerate() { check_icon_size = 8 * jguiscale(); radio_icon_size = 8 * jguiscale(); diff --git a/src/skin_theme.h b/src/skin_theme.h index 8bb4b6fd4..ed1e7d6a0 100644 --- a/src/skin_theme.h +++ b/src/skin_theme.h @@ -25,8 +25,8 @@ #include "gfx/rect.h" #include "gui/jrect.h" -#include "gui/jtheme.h" #include "gui/property.h" +#include "gui/theme.h" // Property to show widgets with a special look (e.g.: buttons or sliders with mini-borders) class SkinProperty : public Property @@ -420,7 +420,7 @@ enum { // This is the GUI theme used by ASE (which use images from data/skins // directory). -class SkinTheme : public jtheme +class SkinTheme : public Theme { std::string m_selected_skin; BITMAP* m_sheet_bmp; @@ -436,7 +436,6 @@ public: std::string get_font_filename() const; - void regen(); BITMAP* set_cursor(int type, int* focus_x, int* focus_y); void init_widget(JWidget widget); JRegion get_window_mask(JWidget widget); @@ -537,6 +536,10 @@ public: draw_bounds_nw(bmp, rc.x, rc.y, rc.x+rc.w-1, rc.y+rc.h-1, nw, bg); } +protected: + + void onRegenerate(); + private: BITMAP* cropPartFromSheet(BITMAP* bmp, int x, int y, int w, int h, bool cursor = false); diff --git a/src/widgets/colview.cpp b/src/widgets/colview.cpp index 7378dcb67..71570003e 100644 --- a/src/widgets/colview.cpp +++ b/src/widgets/colview.cpp @@ -26,7 +26,7 @@ #include "gui/jmessage.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" +#include "gui/theme.h" #include "gui/widget.h" #include "modules/gfx.h" #include "modules/gui.h" diff --git a/src/widgets/groupbut.cpp b/src/widgets/groupbut.cpp index 7199dbc40..c902bd74d 100644 --- a/src/widgets/groupbut.cpp +++ b/src/widgets/groupbut.cpp @@ -22,12 +22,12 @@ #include #include "base/bind.h" -#include "gui/jbox.h" #include "gui/button.h" +#include "gui/jbox.h" #include "gui/jhook.h" #include "gui/jlist.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" +#include "gui/theme.h" #include "gui/widget.h" #include "modules/gui.h" #include "widgets/groupbut.h" diff --git a/src/widgets/paledit.cpp b/src/widgets/paledit.cpp index edd5715c7..9cdd7519f 100644 --- a/src/widgets/paledit.cpp +++ b/src/widgets/paledit.cpp @@ -27,8 +27,8 @@ #include "gui/jmessage.h" #include "gui/jrect.h" #include "gui/jsystem.h" -#include "gui/jtheme.h" #include "gui/jview.h" +#include "gui/theme.h" #include "gui/widget.h" #include "modules/gui.h" #include "modules/palettes.h" diff --git a/src/widgets/target.cpp b/src/widgets/target.cpp index a9da65fdb..4078be3df 100644 --- a/src/widgets/target.cpp +++ b/src/widgets/target.cpp @@ -24,10 +24,10 @@ #include "base/bind.h" #include "core/cfg.h" #include "effect/effect.h" -#include "gui/jbox.h" #include "gui/button.h" +#include "gui/jbox.h" #include "gui/jhook.h" -#include "gui/jtheme.h" +#include "gui/theme.h" #include "gui/widget.h" #include "modules/gfx.h" #include "modules/gui.h"