From 59017205b0f3f88eef2b79f05894b64a4a79ff83 Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Tue, 1 Nov 2011 14:41:15 -0200 Subject: [PATCH] change interface style, add top menu --- modules/core_ui/icons/about.png | Bin 0 -> 763 bytes modules/core_ui/icons/exit.png | Bin 0 -> 932 bytes modules/core_ui/icons/login.png | Bin 0 -> 696 bytes modules/core_ui/icons/logout.png | Bin 0 -> 385 bytes modules/core_ui/icons/settings.png | Bin 0 -> 660 bytes modules/core_ui/images/empty_rounded_rect.png | Bin 0 -> 325 bytes modules/core_ui/images/top_button.png | Bin 0 -> 1184 bytes modules/core_ui/images/top_panel.png | Bin 0 -> 6436 bytes modules/core_ui/images/topbar.png | Bin 0 -> 171 bytes modules/core_ui/styles/buttons.otui | 27 + modules/core_ui/styles/panels.otui | 6 + modules/core_ui/styles/separators.otui | 1 + modules/mainmenu/characterlist.lua | 2 +- modules/mainmenu/entergame.lua | 2 +- modules/mainmenu/mainmenu.otmod | 4 +- modules/mainmenu/ui/charlist.otui | 1 + modules/mainmenu/ui/loginpanel.otui | 47 + modules/mainmenu/ui/mainmenu.otui | 31 +- modules/mainmenu/ui/otclient_logo.png | Bin 0 -> 5500 bytes modules/topmenu/topmenu.lua | 14 + modules/topmenu/topmenu.otmod | 18 + modules/topmenu/topmenu.otui | 52 + src/framework/ui/uilabel.cpp | 1 + src/framework/ui/uiwidget.cpp | 16 +- src/framework/ui/uiwidget.h | 3 + src/framework/ui/uiwindow.cpp | 4 +- src/otclient/otclient.cpp | 2 +- tools/charset_map.svg | 2984 ----------------- .../generate_bitmap_font.py | 2 +- 29 files changed, 197 insertions(+), 3020 deletions(-) create mode 100644 modules/core_ui/icons/about.png create mode 100644 modules/core_ui/icons/exit.png create mode 100644 modules/core_ui/icons/login.png create mode 100644 modules/core_ui/icons/logout.png create mode 100644 modules/core_ui/icons/settings.png create mode 100644 modules/core_ui/images/empty_rounded_rect.png create mode 100644 modules/core_ui/images/top_button.png create mode 100644 modules/core_ui/images/top_panel.png create mode 100644 modules/core_ui/images/topbar.png create mode 100644 modules/mainmenu/ui/loginpanel.otui create mode 100644 modules/mainmenu/ui/otclient_logo.png create mode 100644 modules/topmenu/topmenu.lua create mode 100644 modules/topmenu/topmenu.otmod create mode 100644 modules/topmenu/topmenu.otui delete mode 100644 tools/charset_map.svg diff --git a/modules/core_ui/icons/about.png b/modules/core_ui/icons/about.png new file mode 100644 index 0000000000000000000000000000000000000000..5e30545c4e5e5ddb8faa9a5d95740735bba14195 GIT binary patch literal 763 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 JtaD0e0sviSdCvd< literal 0 HcmV?d00001 diff --git a/modules/core_ui/images/top_button.png b/modules/core_ui/images/top_button.png new file mode 100644 index 0000000000000000000000000000000000000000..0f735dfe13a4ce6e5c220c81b4862d03bb436650 GIT binary patch literal 1184 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 == "opacity") { setOpacity(node->value()); } + // enabled + else if(node->tag() == "enabled") { + setEnabled(node->value()); + } // focusable else if(node->tag() == "focusable") { setFocusable(node->value()); } + // focusable + else if(node->tag() == "phantom") { + setPhantom(node->value()); + } // size else if(node->tag() == "size") { resize(node->value()); @@ -910,8 +919,11 @@ bool UIWidget::onMousePress(const Point& mousePos, Fw::MouseButton button) bool mustEnd = child->onMousePress(mousePos, button); - if(!child->getChildByPos(mousePos) && !child->isPressed()) - child->setPressed(true); + if(button == Fw::MouseLeftButton && !child->isPressed()) { + UIWidgetPtr clickedChild = child->getChildByPos(mousePos); + if(!clickedChild || clickedChild->isPhantom()) + child->setPressed(true); + } if(mustEnd) return true; diff --git a/src/framework/ui/uiwidget.h b/src/framework/ui/uiwidget.h index 5a2522a3..d89ea3f9 100644 --- a/src/framework/ui/uiwidget.h +++ b/src/framework/ui/uiwidget.h @@ -46,6 +46,7 @@ public: void setPressed(bool pressed) { m_pressed = pressed; updateState(Fw::PressedState); } void setId(const std::string& id) { m_id = id; } void setFocusable(bool focusable) { m_focusable = focusable; } + void setPhantom(bool phantom) { m_phantom = phantom; } void setStyle(const std::string& styleName); void setStyleFromNode(const OTMLNodePtr& styleNode); void setLayout(const UILayoutPtr& layout) { m_layout = layout; } @@ -87,6 +88,7 @@ public: bool isExplicitlyEnabled() const { return m_enabled; } bool isExplicitlyVisible() const { return m_visible; } bool isFocusable() const { return m_focusable; } + bool isPhantom() const { return m_phantom; } bool isSizeFixed() const { return m_fixedSize; } bool hasChildren() const { return m_children.size() > 0; } bool hasChild(const UIWidgetPtr& child); @@ -181,6 +183,7 @@ protected: bool m_focusable; bool m_fixedSize; bool m_pressed; + bool m_phantom; Rect m_rect; UILayoutPtr m_layout; UIWidgetWeakPtr m_parent; diff --git a/src/framework/ui/uiwindow.cpp b/src/framework/ui/uiwindow.cpp index 8614d155..c5d6685d 100644 --- a/src/framework/ui/uiwindow.cpp +++ b/src/framework/ui/uiwindow.cpp @@ -112,10 +112,10 @@ void UIWindow::onFocusChange(bool focused, Fw::FocusReason reason) bool UIWindow::onMousePress(const Point& mousePos, Fw::MouseButton button) { - if(!getChildByPos(mousePos)) { + UIWidgetPtr clickedChild = getChildByPos(mousePos); + if(!clickedChild || clickedChild->isPhantom()) { m_moving = true; m_movingReference = mousePos - getRect().topLeft(); - return true; } return UIWidget::onMousePress(mousePos, button); } diff --git a/src/otclient/otclient.cpp b/src/otclient/otclient.cpp index f10b6c4e..3c74f55a 100644 --- a/src/otclient/otclient.cpp +++ b/src/otclient/otclient.cpp @@ -148,7 +148,7 @@ void OTClient::run() render(); // render fps - defaultFont->renderText(fpsText, Point(g_graphics.getScreenSize().width() - fpsTextSize.width() - 10, 10)); + defaultFont->renderText(fpsText, Point(g_graphics.getScreenSize().width() - fpsTextSize.width() - 10, 34)); // render end g_graphics.endRender(); diff --git a/tools/charset_map.svg b/tools/charset_map.svg deleted file mode 100644 index e82454bb..00000000 --- a/tools/charset_map.svg +++ /dev/null @@ -1,2984 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ! - " - - # - $ - % - & - ' - ( - ) - * - + - , - - - . - / - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - : - ; - < - = - > - ? - @ - A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - [ - \ - ] - ^ - _ - ` - a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p - q - r - s - t - u - v - w - x - y - z - { - | - } - ~ - ¡ - - - £ - ¤ - ¥ - ¦ - § - © - - - ª - « - ¬ - ® - ¯ - ° - ± - ² - ³ - ´ - µ - - · - ¸ - ¹ - º - » - - ¼ - ½ - ¾ - ¿ - À - ¨ - ¢ - Á - à -  - Ä - Æ - Ç - È - É - Ë - Ê - Ì - Í - Î - Ï - Ñ - Ó - Ò - Ô - Õ - Ö - × - Ø - Ú - Ù - Û - Ü - Ý - Þ - ß - Ð - á - ã - â - ä - å - æ - ç - è - ê - é - ë - ì - í - î - ï - à - ñ - ó - ò - ô - õ - ö - ÷ - ø - ú - ù - û - ü - ý - þ - ÿ - ð - Å - - - ƒ - - - - - ˆ - - Š - - Œ - Ž - - - - - - - - ˜ - - š - - œ - ž - Ÿ - - - - - - - - - diff --git a/tools/gimp-bitmap-generator/generate_bitmap_font.py b/tools/gimp-bitmap-generator/generate_bitmap_font.py index 40e233eb..b0d23e8f 100755 --- a/tools/gimp-bitmap-generator/generate_bitmap_font.py +++ b/tools/gimp-bitmap-generator/generate_bitmap_font.py @@ -25,7 +25,7 @@ def generate_bitmap_font(timg, tdrawable, font, font_size, first_char, glyph_wid disp = gimp.Display(image) for i in range(char_begin, char_end): - if i == 129 or (i >= 141 and i <= 144) or i == 157: + if i == 127 or i == 129 or (i >= 141 and i <= 144) or i == 157: string = u"\u25A1" else: string = chr(i).decode('cp1252')