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

View File

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