diff options
-rw-r--r-- | data/graphics/gui/CMakeLists.txt | 2 | ||||
-rw-r--r-- | data/graphics/gui/Makefile.am | 2 | ||||
-rw-r--r-- | data/graphics/gui/checkbox.png | bin | 802 -> 0 bytes | |||
-rw-r--r-- | data/graphics/gui/checkbox.xml | 10 | ||||
-rw-r--r-- | data/graphics/gui/window.png | bin | 17037 -> 17784 bytes | |||
-rw-r--r-- | src/gui/theme.cpp | 6 | ||||
-rw-r--r-- | src/gui/widgets/checkbox.cpp | 79 |
7 files changed, 70 insertions, 29 deletions
diff --git a/data/graphics/gui/CMakeLists.txt b/data/graphics/gui/CMakeLists.txt index e5f01895a..713c6ffd2 100644 --- a/data/graphics/gui/CMakeLists.txt +++ b/data/graphics/gui/CMakeLists.txt @@ -5,7 +5,7 @@ SET (FILES button_highlighted.xml button_pressed.xml buttonplay.png - checkbox.png + checkbox.xml circle-off.xml circle-on.xml colors.xml diff --git a/data/graphics/gui/Makefile.am b/data/graphics/gui/Makefile.am index d2e5c1534..81c7da04f 100644 --- a/data/graphics/gui/Makefile.am +++ b/data/graphics/gui/Makefile.am @@ -8,7 +8,7 @@ gui_DATA = \ button_highlighted.xml \ button_pressed.xml \ buttonplay.png \ - checkbox.png \ + checkbox.xml \ circle-off.xml \ circle-on.xml \ colors.xml \ diff --git a/data/graphics/gui/checkbox.png b/data/graphics/gui/checkbox.png Binary files differdeleted file mode 100644 index 29b64100a..000000000 --- a/data/graphics/gui/checkbox.png +++ /dev/null diff --git a/data/graphics/gui/checkbox.xml b/data/graphics/gui/checkbox.xml new file mode 100644 index 000000000..7e6161bb0 --- /dev/null +++ b/data/graphics/gui/checkbox.xml @@ -0,0 +1,10 @@ +<skinset name="Default" image="window.png"> + <widget type="Window" xpos="190" ypos="0"> + <part type="normal" xpos="0" ypos="0" width="9" height="9" /> + <part type="checked" xpos="9" ypos="0" width="9" height="9" /> + <part type="disabled" xpos="18" ypos="0" width="9" height="9" /> + <part type="disabled-checked" xpos="27" ypos="0" width="9" height="9" /> + <part type="normal-highlighted" xpos="36" ypos="0" width="9" height="9" /> + <part type="checked-highlighted" xpos="45" ypos="0" width="9" height="9" /> + </widget> +</skinset> diff --git a/data/graphics/gui/window.png b/data/graphics/gui/window.png Binary files differindex 814111175..9e797bc0f 100644 --- a/data/graphics/gui/window.png +++ b/data/graphics/gui/window.png diff --git a/src/gui/theme.cpp b/src/gui/theme.cpp index 77fe24d51..e01799ea7 100644 --- a/src/gui/theme.cpp +++ b/src/gui/theme.cpp @@ -329,25 +329,31 @@ static SkinParameter skinParam[] = {0, "up"}, {0, "hstart"}, {0, "in"}, + {0, "normal"}, {1, "top-edge"}, {1, "highlighted"}, {1, "down"}, {1, "hmiddle"}, {1, "in-highlighted"}, + {1, "checked"}, {2, "top-right-corner"}, {2, "pressed"}, {2, "left"}, {2, "hend"}, {2, "out"}, + {2, "disabled"}, {3, "left-edge"}, {3, "disabled"}, {3, "right"}, {3, "hgrip"}, {3, "out-highlighted"}, + {3, "disabled-checked"}, {4, "bg-quad"}, {4, "vstart"}, + {4, "normal-highlighted"}, {5, "right-edge"}, {5, "vmiddle"}, + {5, "checked-highlighted"}, {6, "bottom-left-corner"}, {6, "vend"}, {7, "bottom-edge"}, diff --git a/src/gui/widgets/checkbox.cpp b/src/gui/widgets/checkbox.cpp index 133a5da1d..ab08a95d0 100644 --- a/src/gui/widgets/checkbox.cpp +++ b/src/gui/widgets/checkbox.cpp @@ -53,22 +53,29 @@ CheckBox::CheckBox(const std::string &caption, bool selected, { if (instances == 0) { - Image *checkBox = Theme::getImageFromTheme("checkbox.png"); - if (checkBox) + if (Theme::instance()) { - checkBoxNormal = checkBox->getSubImage(0, 0, 9, 10); - checkBoxChecked = checkBox->getSubImage(9, 0, 9, 10); - checkBoxDisabled = checkBox->getSubImage(18, 0, 9, 10); - checkBoxDisabledChecked = checkBox->getSubImage(27, 0, 9, 10); - checkBoxNormalHi = checkBox->getSubImage(36, 0, 9, 10); - checkBoxCheckedHi = checkBox->getSubImage(45, 0, 9, 10); - checkBoxNormal->setAlpha(mAlpha); - checkBoxChecked->setAlpha(mAlpha); - checkBoxDisabled->setAlpha(mAlpha); - checkBoxDisabledChecked->setAlpha(mAlpha); - checkBoxNormalHi->setAlpha(mAlpha); - checkBoxCheckedHi->setAlpha(mAlpha); - checkBox->decRef(); + ImageRect rect; + Theme::instance()->loadRect(rect, "checkbox.xml", 0, 5); + checkBoxNormal = rect.grid[0]; + checkBoxChecked = rect.grid[1]; + checkBoxDisabled = rect.grid[2]; + checkBoxDisabledChecked = rect.grid[3]; + checkBoxNormalHi = rect.grid[4]; + checkBoxCheckedHi = rect.grid[5]; + + if (checkBoxNormal) + checkBoxNormal->setAlpha(mAlpha); + if (checkBoxChecked) + checkBoxChecked->setAlpha(mAlpha); + if (checkBoxDisabled) + checkBoxDisabled->setAlpha(mAlpha); + if (checkBoxDisabledChecked) + checkBoxDisabledChecked->setAlpha(mAlpha); + if (checkBoxNormalHi) + checkBoxNormalHi->setAlpha(mAlpha); + if (checkBoxCheckedHi) + checkBoxCheckedHi->setAlpha(mAlpha); } else { @@ -98,18 +105,36 @@ CheckBox::~CheckBox() if (instances == 0) { - delete checkBoxNormal; - checkBoxNormal = nullptr; - delete checkBoxChecked; - checkBoxChecked = nullptr; - delete checkBoxDisabled; - checkBoxDisabled = nullptr; - delete checkBoxDisabledChecked; - checkBoxDisabledChecked = nullptr; - delete checkBoxNormalHi; - checkBoxNormalHi = nullptr; - delete checkBoxCheckedHi; - checkBoxCheckedHi = nullptr; + if (checkBoxNormal) + { + checkBoxNormal->decRef(); + checkBoxNormal = nullptr; + } + if (checkBoxChecked) + { + checkBoxChecked->decRef(); + checkBoxChecked = nullptr; + } + if (checkBoxDisabled) + { + checkBoxDisabled->decRef(); + checkBoxDisabled = nullptr; + } + if (checkBoxDisabledChecked) + { + checkBoxDisabledChecked->decRef(); + checkBoxDisabledChecked = nullptr; + } + if (checkBoxNormalHi) + { + checkBoxNormalHi->decRef(); + checkBoxNormalHi = nullptr; + } + if (checkBoxCheckedHi) + { + checkBoxCheckedHi->decRef(); + checkBoxCheckedHi = nullptr; + } } } |