diff --git a/TODO b/TODO index 431c99fe..1555507c 100644 --- a/TODO +++ b/TODO @@ -36,4 +36,9 @@ cache into framebuffers implement glbuffer for CoordsBuffer use indices in CoordsBuffer -create a Timer class \ No newline at end of file +move UICheckBox to lua +move UIWindow to lua +rework UI image style +class UIImage and UIText +add UI border +fix style inheretance using a style translator \ No newline at end of file diff --git a/modules/core_scripts/ui.lua b/modules/core_scripts/ui.lua index d0aad1c9..6cff1d4b 100644 --- a/modules/core_scripts/ui.lua +++ b/modules/core_scripts/ui.lua @@ -47,7 +47,17 @@ end function createWidget(style, parent) local className = g_ui.getStyleClass(style) + if className == "" then + error('could not find style ' .. style) + return + end + local class = _G[className] + if not class then + error('could not find widget class ' .. class) + return + end + local widget = class.create() if parent then parent:addChild(widget) diff --git a/modules/core_styles/core_styles.otmod b/modules/core_styles/core_styles.otmod index 05928328..ff41dbaf 100644 --- a/modules/core_styles/core_styles.otmod +++ b/modules/core_styles/core_styles.otmod @@ -15,6 +15,6 @@ Module importStyle 'styles/listboxes.otui' importStyle 'styles/items.otui' importStyle 'styles/creatures.otui' - importStyle 'styles/comboboxes.otui' importStyle 'styles/popupmenus.otui' + importStyle 'styles/comboboxes.otui' return true diff --git a/modules/core_styles/styles/comboboxes.otui b/modules/core_styles/styles/comboboxes.otui index fa423c90..a612e632 100644 --- a/modules/core_styles/styles/comboboxes.otui +++ b/modules/core_styles/styles/comboboxes.otui @@ -1,3 +1,7 @@ +ComboBoxPopupMenuSeparator < PopupMenuSeparator +ComboBoxPopupMenuButton < PopupMenuButton +ComboBoxPopupMenu < PopupMenu + ComboBox < UIComboBox font: verdana-11px-antialised color: #aaaaaa diff --git a/modules/core_styles/styles/popupmenus.otui b/modules/core_styles/styles/popupmenus.otui index a8006386..db89ac37 100644 --- a/modules/core_styles/styles/popupmenus.otui +++ b/modules/core_styles/styles/popupmenus.otui @@ -34,7 +34,7 @@ PopupMenuSeparator < UIWidget phantom: true PopupMenu < UIPopupMenu - width: 100 + width: 50 border-image: source: /core_styles/images/menubox.png border: 3 \ No newline at end of file diff --git a/modules/core_widgets/uicombobox.lua b/modules/core_widgets/uicombobox.lua index 1319a09e..988ad67f 100644 --- a/modules/core_widgets/uicombobox.lua +++ b/modules/core_widgets/uicombobox.lua @@ -27,7 +27,7 @@ function UIComboBox:addOption(text, data) end function UIComboBox:onMousePress(mousePos, mouseButton) - local menu = createWidget('PopupMenu', self) + local menu = createWidget(self:getStyleName() .. 'PopupMenu', self) for i,v in ipairs(self.options) do menu:addOption(v.text, function() self:setCurrentOption(v.text) end) end diff --git a/modules/core_widgets/uipopupmenu.lua b/modules/core_widgets/uipopupmenu.lua index 29b2c838..5ac6d15b 100644 --- a/modules/core_widgets/uipopupmenu.lua +++ b/modules/core_widgets/uipopupmenu.lua @@ -23,6 +23,8 @@ function UIPopupMenu:addOption(optionName, optionCallback) self:destroy() end optionWidget:setText(optionName) + local width = optionWidget:getTextSize().width + optionWidget:getMarginLeft() + optionWidget:getMarginRight() + 6 + self:setWidth(math.max(self:getWidth(), width)) end function UIPopupMenu:addSeparator()