register MainMenu to be accessible from DML

This commit is contained in:
Vadim Lopatin 2016-02-24 11:07:14 +03:00
parent 11593f91db
commit 615d0484f3
2 changed files with 30 additions and 8 deletions

View File

@ -278,6 +278,7 @@ void registerStandardWidgets() {
import dlangui.widgets.editors;
import dlangui.widgets.grid;
import dlangui.dialogs.filedlg;
import dlangui.widgets.menu;
mixin(registerWidgets!(FileNameEditLine, DirEditLine, //dlangui.dialogs.filedlg
ComboBox, ComboEdit, //dlangui.widgets.combobox
Widget, TextWidget, MultilineTextWidget, Button, ImageWidget, ImageButton, ImageCheckButton, ImageTextButton,
@ -286,6 +287,7 @@ void registerStandardWidgets() {
StringGridWidget, //dlangui.widgets.grid
VerticalLayout, HorizontalLayout, TableLayout, FrameLayout, // dlangui.widgets.layouts
ListWidget, StringListWidget,//dlangui.widgets.lists
MainMenu, //dlangui.widgets.menu
)("void registerWidgets"));
registerWidgets();
}

View File

@ -427,18 +427,28 @@ class MenuWidgetBase : ListWidget {
this(MenuWidgetBase parentMenu, MenuItem item, Orientation orientation) {
_parentMenu = parentMenu;
_item = item;
this.orientation = orientation;
id = "popup_menu";
styleId = STYLE_POPUP_MENU;
menuItems = item;
}
@property void menuItems(MenuItem item) {
if (_item) {
destroy(_item);
_item = null;
}
_item = item;
WidgetListAdapter adapter = new WidgetListAdapter();
for (int i=0; i < _item.subitemCount; i++) {
MenuItem subitem = _item.subitem(i);
MenuItemWidget widget = new MenuItemWidget(subitem, orientation == Orientation.Horizontal);
if (orientation == Orientation.Horizontal)
widget.styleId = STYLE_MAIN_MENU_ITEM;
widget.parent = this;
adapter.add(widget);
if (item) {
for (int i=0; i < _item.subitemCount; i++) {
MenuItem subitem = _item.subitem(i);
MenuItemWidget widget = new MenuItemWidget(subitem, orientation == Orientation.Horizontal);
if (orientation == Orientation.Horizontal)
widget.styleId = STYLE_MAIN_MENU_ITEM;
widget.parent = this;
adapter.add(widget);
}
}
ownAdapter = adapter;
}
@ -761,6 +771,8 @@ class MenuWidgetBase : ListWidget {
/// map key to action
override Action findKeyAction(uint keyCode, uint flags) {
if (!_item)
return null;
Action action = _item.findKeyAction(keyCode, flags);
return action;
}
@ -770,6 +782,14 @@ class MenuWidgetBase : ListWidget {
/// main menu (horizontal)
class MainMenu : MenuWidgetBase {
this() {
super(null, null, Orientation.Horizontal);
id = "MAIN_MENU";
styleId = STYLE_MAIN_MENU;
_clickOnButtonDown = true;
selectOnHover = false;
}
this(MenuItem item) {
super(null, item, Orientation.Horizontal);
id = "MAIN_MENU";