diff --git a/examples/dmledit/src/dmledit.d b/examples/dmledit/src/dmledit.d index 3396b920..11166687 100644 --- a/examples/dmledit/src/dmledit.d +++ b/examples/dmledit/src/dmledit.d @@ -190,7 +190,7 @@ class EditFrame : AppFrame { FileDialog dlg = createFileDialog(caption, false); dlg.addFilter(FileFilterEntry(UIString("DML files"d), "*.dml")); dlg.addFilter(FileFilterEntry(UIString("All files"d), "*.*")); - dlg.onDialogResult = delegate(Dialog dlg, const Action result) { + dlg.dialogResult = delegate(Dialog dlg, const Action result) { if (result.id == ACTION_OPEN.id) { string filename = result.stringParam; _editor.text=""d; @@ -209,7 +209,7 @@ class EditFrame : AppFrame { FileDialog dlg = createFileDialog(caption, false); dlg.addFilter(FileFilterEntry(UIString("DML files"d), "*.dml")); dlg.addFilter(FileFilterEntry(UIString("All files"d), "*.*")); - dlg.onDialogResult = delegate(Dialog dlg, const Action result) { + dlg.dialogResult = delegate(Dialog dlg, const Action result) { if (result.id == ACTION_OPEN.id) { string filename = result.stringParam; saveSourceFile(filename); @@ -223,7 +223,7 @@ class EditFrame : AppFrame { FileDialog dlg = createFileDialog(caption); dlg.addFilter(FileFilterEntry(UIString("DML files"d), "*.dml")); dlg.addFilter(FileFilterEntry(UIString("All files"d), "*.*")); - dlg.onDialogResult = delegate(Dialog dlg, const Action result) { + dlg.dialogResult = delegate(Dialog dlg, const Action result) { if (result.id == ACTION_OPEN.id) { string filename = result.stringParam; openSourceFile(filename); diff --git a/examples/example1/src/example1.d b/examples/example1/src/example1.d index 9f0fba4e..2b6195ff 100644 --- a/examples/example1/src/example1.d +++ b/examples/example1/src/example1.d @@ -297,8 +297,8 @@ extern (C) int UIAppMain(string[] args) { }; MenuItem enLang = (new MenuItem(new Action(611, "MENU_VIEW_LANGUAGE_EN"))).type(MenuItemType.Radio).checked(true); MenuItem ruLang = (new MenuItem(new Action(612, "MENU_VIEW_LANGUAGE_RU"))).type(MenuItemType.Radio); - enLang.onMenuItemClick = onLangChange; - ruLang.onMenuItemClick = onLangChange; + enLang.menuItemClick = onLangChange; + ruLang.menuItemClick = onLangChange; langItem.add(enLang); langItem.add(ruLang); viewItem.add(langItem); @@ -318,9 +318,9 @@ extern (C) int UIAppMain(string[] args) { } return true; }; - theme1.onMenuItemClick = onThemeChange; - theme2.onMenuItemClick = onThemeChange; - theme3.onMenuItemClick = onThemeChange; + theme1.menuItemClick = onThemeChange; + theme2.menuItemClick = onThemeChange; + theme3.menuItemClick = onThemeChange; themeItem.add(theme1); themeItem.add(theme2); themeItem.add(theme3); @@ -338,7 +338,7 @@ extern (C) int UIAppMain(string[] args) { mainMenuItems.add(windowItem); mainMenuItems.add(helpItem); MainMenu mainMenu = new MainMenu(mainMenuItems); - mainMenu.onMenuItemClickListener = delegate(MenuItem item) { + mainMenu.menuItemClick = delegate(MenuItem item) { Log.d("mainMenu.onMenuItemListener", item.label); const Action a = item.action; if (a) { @@ -356,7 +356,7 @@ extern (C) int UIAppMain(string[] args) { dlg.addFilter(FileFilterEntry(UIString("FILTER_TEXT_FILES", "Text files (*.txt)"d), "*.txt")); dlg.addFilter(FileFilterEntry(UIString("FILTER_SOURCE_FILES", "Source files"d), "*.d;*.dd;*.c;*.cc;*.cpp;*.h;*.hpp")); //dlg.filterIndex = 2; - dlg.onDialogResult = delegate(Dialog dlg, const Action result) { + dlg.dialogResult = delegate(Dialog dlg, const Action result) { if (result.id == ACTION_OPEN.id) { string filename = result.stringParam; if (filename.endsWith(".d") || filename.endsWith(".txt") || filename.endsWith(".cpp") || filename.endsWith(".h") || filename.endsWith(".c") @@ -395,7 +395,7 @@ extern (C) int UIAppMain(string[] args) { // ========= create tabs =================== - tabs.onTabChangedListener = delegate(string newTabId, string oldTabId) { + tabs.tabChanged = delegate(string newTabId, string oldTabId) { window.windowCaption = tabs.tab(newTabId).text.value ~ " - dlangui example 1"d; }; tabs.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT); @@ -861,7 +861,7 @@ void main() treeLayout.addChild(new ResizerWidget()); treeLayout.addChild(treeControlledPanel); - tree.selectionListener = delegate(TreeItems source, TreeItem selectedItem, bool activated) { + tree.selectionChange = delegate(TreeItems source, TreeItem selectedItem, bool activated) { dstring label = "Selected item: "d ~ toUTF32(selectedItem.id) ~ (activated ? " selected + activated"d : " selected"d); treeItemLabel.text = label; }; diff --git a/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d b/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d index 30d260dd..670304ce 100644 --- a/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d +++ b/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d @@ -135,7 +135,7 @@ class SpreadSheetWidget : WidgetGroupDefaultDrawing, OnScrollHandler, CellSelect ]); foreach(sb; _scrollbars) - sb.onScrollEventListener = this; + sb.scrollEvent = this; foreach(view; _views) { view.cellSelected = this; view.cellActivated = this; diff --git a/examples/spreadsheet/src/spreadsheetapp.d b/examples/spreadsheet/src/spreadsheetapp.d index f0d6c658..c2a69a58 100644 --- a/examples/spreadsheet/src/spreadsheetapp.d +++ b/examples/spreadsheet/src/spreadsheetapp.d @@ -139,7 +139,7 @@ class EditFrame : AppFrame { FileDialog dlg = createFileDialog(caption, false); dlg.addFilter(FileFilterEntry(UIString("DML files"d), "*.dml")); dlg.addFilter(FileFilterEntry(UIString("All files"d), "*.*")); - dlg.onDialogResult = delegate(Dialog dlg, const Action result) { + dlg.dialogResult = delegate(Dialog dlg, const Action result) { if (result.id == ACTION_OPEN.id) { string filename = result.stringParam; //_editor.text=""d; @@ -158,7 +158,7 @@ class EditFrame : AppFrame { FileDialog dlg = createFileDialog(caption, false); dlg.addFilter(FileFilterEntry(UIString("DML files"d), "*.dml")); dlg.addFilter(FileFilterEntry(UIString("All files"d), "*.*")); - dlg.onDialogResult = delegate(Dialog dlg, const Action result) { + dlg.dialogResult = delegate(Dialog dlg, const Action result) { if (result.id == ACTION_OPEN.id) { string filename = result.stringParam; saveSourceFile(filename); @@ -172,7 +172,7 @@ class EditFrame : AppFrame { FileDialog dlg = createFileDialog(caption); dlg.addFilter(FileFilterEntry(UIString("DML files"d), "*.dml")); dlg.addFilter(FileFilterEntry(UIString("All files"d), "*.*")); - dlg.onDialogResult = delegate(Dialog dlg, const Action result) { + dlg.dialogResult = delegate(Dialog dlg, const Action result) { if (result.id == ACTION_OPEN.id) { string filename = result.stringParam; openSourceFile(filename); diff --git a/src/dlangui/dialogs/dialog.d b/src/dlangui/dialogs/dialog.d index 1b82ec52..0ece0208 100644 --- a/src/dlangui/dialogs/dialog.d +++ b/src/dlangui/dialogs/dialog.d @@ -54,7 +54,7 @@ class Dialog : VerticalLayout { protected uint _flags; protected string _icon; - Signal!DialogResultHandler onDialogResult; + Signal!DialogResultHandler dialogResult; this(UIString caption, Window parentWindow = null, uint flags = DialogFlag.Modal) { super("dialog-main-widget"); @@ -160,8 +160,8 @@ class Dialog : VerticalLayout { */ void close(const Action action) { if (action) { - if (onDialogResult.assigned) - onDialogResult(this, action); + if (dialogResult.assigned) + dialogResult(this, action); else if (_parentWindow && !_popup) _parentWindow.dispatchAction(action); } @@ -185,7 +185,7 @@ class Dialog : VerticalLayout { if (_flags & DialogFlag.Popup) { DialogFrame _frame = new DialogFrame(this, _cancelButton !is null); if (_cancelButton) { - _frame.onCloseButtonClickListener = delegate(Widget w) { + _frame.closeButtonClick = delegate(Widget w) { close(_cancelButton.action); return true; }; diff --git a/src/dlangui/dialogs/filedlg.d b/src/dlangui/dialogs/filedlg.d index 14f02ab1..1e25ce1e 100644 --- a/src/dlangui/dialogs/filedlg.d +++ b/src/dlangui/dialogs/filedlg.d @@ -253,7 +253,7 @@ class FileDialog : Dialog, CustomGridCellAdapter { } res.ownAdapter = adapter; res.layoutWidth(WRAP_CONTENT).layoutHeight(FILL_PARENT).layoutWeight(0); - res.onItemClickListener = delegate(Widget source, int itemIndex) { + res.itemClick = delegate(Widget source, int itemIndex) { openDirectory(_roots[itemIndex].path, null); res.selectItem(-1); return true; @@ -351,7 +351,7 @@ class FileDialog : Dialog, CustomGridCellAdapter { filterLabels ~= f.label.value; _cbFilters = new ComboBox("filter", filterLabels); _cbFilters.selectedItemIndex = _filterIndex; - _cbFilters.onItemClickListener = delegate(Widget source, int itemIndex) { + _cbFilters.itemClick = delegate(Widget source, int itemIndex) { _filterIndex = itemIndex; reopenDirectory(); return true; @@ -472,7 +472,7 @@ class FilePathPanelItem : HorizontalLayout { string d = baseName(fullPath); Action a = new Action(itemId++, toUTF32(d)); MenuItem item = new MenuItem(a); - item.onMenuItemClick = delegate(MenuItem item) { + item.menuItemClick = delegate(MenuItem item) { if (onPathSelectionListener.assigned) return onPathSelectionListener(fullPath); return false; @@ -618,7 +618,7 @@ class FilePathPanel : FrameLayout { _segments = new FilePathPanelButtons(ID_SEGMENTS); _edPath = new EditLine(ID_EDITOR); _edPath.layoutWidth = FILL_PARENT; - _edPath.editorActionListener = &onEditorAction; + _edPath.editorAction = &onEditorAction; _edPath.focusChange = &onEditorFocusChanged; _segments.click = &onSegmentsClickOutside; _segments.onPathSelectionListener = &onPathSelected; diff --git a/src/dlangui/dialogs/msgbox.d b/src/dlangui/dialogs/msgbox.d index 13bda396..060aa1da 100644 --- a/src/dlangui/dialogs/msgbox.d +++ b/src/dlangui/dialogs/msgbox.d @@ -48,7 +48,7 @@ class MessageBox : Dialog { _actions = buttons; _defaultButtonIndex = defaultButtonIndex; if (handler) { - onDialogResult = delegate (Dialog dlg, const Action action) { + dialogResult = delegate (Dialog dlg, const Action action) { handler(action); }; } diff --git a/src/dlangui/dialogs/settingsdialog.d b/src/dlangui/dialogs/settingsdialog.d index dc53d76a..7b5c987e 100644 --- a/src/dlangui/dialogs/settingsdialog.d +++ b/src/dlangui/dialogs/settingsdialog.d @@ -85,7 +85,7 @@ class StringComboBoxItem : SettingsItem { } if (index >= 0) cb.selectedItemIndex = index; - cb.onItemClickListener = delegate(Widget source, int itemIndex) { + cb.itemClick = delegate(Widget source, int itemIndex) { if (itemIndex >= 0 && itemIndex < _items.length) setting.str = _items[itemIndex].stringId; return true; @@ -117,7 +117,7 @@ class IntComboBoxItem : SettingsItem { } if (index >= 0) cb.selectedItemIndex = index; - cb.onItemClickListener = delegate(Widget source, int itemIndex) { + cb.itemClick = delegate(Widget source, int itemIndex) { if (itemIndex >= 0 && itemIndex < _items.length) setting.integer = _items[itemIndex].intId; return true; @@ -151,7 +151,7 @@ class FloatComboBoxItem : SettingsItem { } if (index >= 0) cb.selectedItemIndex = index; - cb.onItemClickListener = delegate(Widget source, int itemIndex) { + cb.itemClick = delegate(Widget source, int itemIndex) { if (itemIndex >= 0 && itemIndex < _items.length) setting.floating = _items[itemIndex].intId / cast(double)_divider; return true; @@ -389,7 +389,7 @@ class SettingsDialog : Dialog { _tree = new TreeWidget("prop_tree"); _tree.styleId = STYLE_SETTINGS_TREE; _tree.layoutHeight(FILL_PARENT).layoutHeight(FILL_PARENT).minHeight(200).minWidth(100); - _tree.selectionListener = &onTreeItemSelected; + _tree.selectionChange = &onTreeItemSelected; _tree.fontSize = 16; _frame = new FrameLayout("prop_pages"); _frame.styleId = STYLE_SETTINGS_PAGES; diff --git a/src/dlangui/widgets/appframe.d b/src/dlangui/widgets/appframe.d index 3d2b9e62..50d5768f 100644 --- a/src/dlangui/widgets/appframe.d +++ b/src/dlangui/widgets/appframe.d @@ -234,7 +234,7 @@ class AppFrame : VerticalLayout, MenuItemClickHandler, MenuItemActionHandler { _body = createBody(); _body.focusGroup = true; if (_mainMenu) { - _mainMenu.onMenuItemClickListener = &onMenuItemClick; + _mainMenu.menuItemClick = &onMenuItemClick; addChild(_mainMenu); } if (_toolbarHost) diff --git a/src/dlangui/widgets/combobox.d b/src/dlangui/widgets/combobox.d index 10d6488a..54af128a 100644 --- a/src/dlangui/widgets/combobox.d +++ b/src/dlangui/widgets/combobox.d @@ -46,8 +46,6 @@ class ComboBoxBase : HorizontalLayout, OnClickHandler { /** Handle item click. */ Signal!OnItemSelectedHandler itemClick; - /// itemClick signal alias for backward compatibility; will be deprecated in future - alias onItemClickListener = itemClick; protected Widget createSelectedItemWidget() { Widget res; @@ -71,8 +69,8 @@ class ComboBoxBase : HorizontalLayout, OnClickHandler { if (_selectedItemIndex == index) return this; _selectedItemIndex = index; - if (onItemClickListener.assigned) - onItemClickListener(this, index); + if (itemClick.assigned) + itemClick(this, index); return this; } @@ -125,7 +123,7 @@ class ComboBoxBase : HorizontalLayout, OnClickHandler { _popup = window.showPopup(_popupList, this, PopupAlign.Below | PopupAlign.FitAnchorSize); _popup.flags = PopupFlags.CloseOnClickOutside; _popup.styleId = STYLE_POPUP_MENU; - _popup.onPopupCloseListener = delegate (PopupWidget source) { + _popup.popupClosed = delegate (PopupWidget source) { _popup = null; _popupList = null; }; diff --git a/src/dlangui/widgets/controls.d b/src/dlangui/widgets/controls.d index e0930301..3899c813 100644 --- a/src/dlangui/widgets/controls.d +++ b/src/dlangui/widgets/controls.d @@ -508,7 +508,7 @@ class AbstractSlider : WidgetGroup { } /// scroll event listeners - Signal!OnScrollHandler onScrollEventListener; + Signal!OnScrollHandler scrollEvent; /// returns slider position @property int position() const { return _position; } @@ -564,10 +564,10 @@ class AbstractSlider : WidgetGroup { } bool sendScrollEvent(ScrollAction action, int position) { - if (!onScrollEventListener.assigned) + if (!scrollEvent.assigned) return false; ScrollEvent event = new ScrollEvent(action, _minValue, _maxValue, _pageSize, position); - bool res = onScrollEventListener(this, event); + bool res = scrollEvent(this, event); if (event.positionChanged) { _position = event.position; if (_position > _maxValue) diff --git a/src/dlangui/widgets/docks.d b/src/dlangui/widgets/docks.d index 605fafb0..1865f983 100644 --- a/src/dlangui/widgets/docks.d +++ b/src/dlangui/widgets/docks.d @@ -71,7 +71,7 @@ struct DockSpace { break; } _resizer.visibility = Visibility.Gone; - _resizer.resizeListener = &onResize; + _resizer.resizeEvent = &onResize; return _resizer; } /// host to be layed out diff --git a/src/dlangui/widgets/editors.d b/src/dlangui/widgets/editors.d index 63767608..e8cebdb3 100644 --- a/src/dlangui/widgets/editors.d +++ b/src/dlangui/widgets/editors.d @@ -422,8 +422,8 @@ class EditWidgetBase : ScrollWidgetBase, EditableContentListener, MenuItemAction override bool canShowPopupMenu(int x, int y) { if (_popupMenu is null) return false; - if (_popupMenu.onBeforeOpeningSubmenu.assigned) - if (!_popupMenu.onBeforeOpeningSubmenu(_popupMenu)) + if (_popupMenu.openingSubmenu.assigned) + if (!_popupMenu.openingSubmenu(_popupMenu)) return false; return true; } @@ -461,12 +461,12 @@ class EditWidgetBase : ScrollWidgetBase, EditableContentListener, MenuItemAction /// shows popup at (x,y) override void showPopupMenu(int x, int y) { /// if preparation signal handler assigned, call it; don't show popup if false is returned from handler - if (_popupMenu.onBeforeOpeningSubmenu.assigned) - if (!_popupMenu.onBeforeOpeningSubmenu(_popupMenu)) + if (_popupMenu.openingSubmenu.assigned) + if (!_popupMenu.openingSubmenu(_popupMenu)) return; _popupMenu.updateActionState(this); PopupMenu popupMenu = new PopupMenu(_popupMenu); - popupMenu.onMenuItemActionListener = this; + popupMenu.menuItemAction = this; PopupWidget popup = window.showPopup(popupMenu, this, PopupAlign.Point | PopupAlign.Right, x, y); popup.flags = PopupFlags.CloseOnClickOutside; } @@ -1504,7 +1504,7 @@ interface EditorActionHandler { /// single line editor class EditLine : EditWidgetBase { - Signal!EditorActionHandler editorActionListener; + Signal!EditorActionHandler editorAction; /// empty parameter list constructor - for usage by factory this() { @@ -1595,8 +1595,8 @@ class EditLine : EditWidgetBase { case EditorActions.InsertNewLine: case EditorActions.PrependNewLine: case EditorActions.AppendNewLine: - if (editorActionListener.assigned) { - return editorActionListener(a); + if (editorAction.assigned) { + return editorAction(a); } break; case EditorActions.Up: diff --git a/src/dlangui/widgets/layouts.d b/src/dlangui/widgets/layouts.d index aa8b985f..9540ce45 100644 --- a/src/dlangui/widgets/layouts.d +++ b/src/dlangui/widgets/layouts.d @@ -292,7 +292,7 @@ class ResizerWidget : Widget { protected Widget _nextWidget; protected string _styleVertical; protected string _styleHorizontal; - Signal!ResizeHandler resizeListener; + Signal!ResizeHandler resizeEvent; /// Orientation: Vertical to resize vertically, Horizontal - to resize horizontally @property Orientation orientation() { return _orientation; } @@ -405,8 +405,8 @@ class ResizerWidget : Widget { _delta = _minDragDelta; if (_delta > _maxDragDelta) _delta = _maxDragDelta; - } else if (resizeListener.assigned) { - resizeListener(this, ResizerEventType.StartDragging, _orientation == Orientation.Vertical ? event.y : event.x); + } else if (resizeEvent.assigned) { + resizeEvent(this, ResizerEventType.StartDragging, _orientation == Orientation.Vertical ? event.y : event.x); } return true; } @@ -418,16 +418,16 @@ class ResizerWidget : Widget { if (_dragging) { //sendScrollEvent(ScrollAction.SliderReleased, _position); _dragging = false; - if (resizeListener.assigned) { - resizeListener(this, ResizerEventType.EndDragging, _orientation == Orientation.Vertical ? event.y : event.x); + if (resizeEvent.assigned) { + resizeEvent(this, ResizerEventType.EndDragging, _orientation == Orientation.Vertical ? event.y : event.x); } } return true; } if (event.action == MouseAction.Move && _dragging) { int delta = _orientation == Orientation.Vertical ? event.y - _dragStart.y : event.x - _dragStart.x; - if (resizeListener.assigned) { - resizeListener(this, ResizerEventType.Dragging, _orientation == Orientation.Vertical ? event.y : event.x); + if (resizeEvent.assigned) { + resizeEvent(this, ResizerEventType.Dragging, _orientation == Orientation.Vertical ? event.y : event.x); return true; } _delta = _dragStartPosition + delta; @@ -487,8 +487,8 @@ class ResizerWidget : Widget { if (_dragging) { resetState(State.Pressed); _dragging = false; - if (resizeListener.assigned) { - resizeListener(this, ResizerEventType.EndDragging, _orientation == Orientation.Vertical ? event.y : event.x); + if (resizeEvent.assigned) { + resizeEvent(this, ResizerEventType.EndDragging, _orientation == Orientation.Vertical ? event.y : event.x); } } return true; diff --git a/src/dlangui/widgets/lists.d b/src/dlangui/widgets/lists.d index f6f9374f..f46f519a 100644 --- a/src/dlangui/widgets/lists.d +++ b/src/dlangui/widgets/lists.d @@ -57,16 +57,16 @@ interface ListAdapter { /// List adapter for simple list of widget instances class ListAdapterBase : ListAdapter { /** Handle items change */ - protected Signal!OnAdapterChangeHandler onAdapterChangeListener; + protected Signal!OnAdapterChangeHandler adapterChanged; /// connect adapter change handler override ListAdapter connect(OnAdapterChangeHandler handler) { - onAdapterChangeListener.connect(handler); + adapterChanged.connect(handler); return this; } /// disconnect adapter change handler override ListAdapter disconnect(OnAdapterChangeHandler handler) { - onAdapterChangeListener.disconnect(handler); + adapterChanged.disconnect(handler); return this; } /// returns integer item id by index (if supported) @@ -110,8 +110,8 @@ class ListAdapterBase : ListAdapter { /// notify listeners about list items changes void updateViews() { - if (onAdapterChangeListener.assigned) - onAdapterChangeListener.emit(this); + if (adapterChanged.assigned) + adapterChanged.emit(this); } } @@ -545,7 +545,7 @@ class ListWidget : WidgetGroup, OnScrollHandler, OnAdapterChangeHandler { _selectedItemIndex = -1; _scrollbar = new ScrollBar("listscroll", orientation); _scrollbar.visibility = Visibility.Gone; - _scrollbar.onScrollEventListener = &onScrollEvent; + _scrollbar.scrollEvent = &onScrollEvent; addChild(_scrollbar); } diff --git a/src/dlangui/widgets/menu.d b/src/dlangui/widgets/menu.d index 7f7b2c01..c01b8bbe 100644 --- a/src/dlangui/widgets/menu.d +++ b/src/dlangui/widgets/menu.d @@ -63,9 +63,9 @@ class MenuItem { protected MenuItem[] _subitems; protected MenuItem _parent; /// handle menu item click (parameter is MenuItem) - Signal!MenuItemClickHandler onMenuItemClick; + Signal!MenuItemClickHandler menuItemClick; /// handle menu item click action (parameter is Action) - Signal!MenuItemActionHandler onMenuItemAction; + Signal!MenuItemActionHandler menuItemAction; /// item action id, 0 if no action @property int id() const { return _action is null ? 0 : _action.id; } /// returns count of submenu items @@ -227,7 +227,7 @@ class MenuItem { /// handle menu item click Signal!(void, MenuItem) onMenuItem; /// prepare for opening of submenu, return true if opening is allowed - Signal!(bool, MenuItem) onBeforeOpeningSubmenu; + Signal!(bool, MenuItem) openingSubmenu; /// call to update state for action (if action is assigned for widget) void updateActionState(Widget w) { @@ -421,9 +421,9 @@ class MenuWidgetBase : ListWidget { protected int _openedPopupIndex; /// menu item click listener - Signal!MenuItemClickHandler onMenuItemClickListener; + Signal!MenuItemClickHandler menuItemClick; /// menu item action listener - Signal!MenuItemActionHandler onMenuItemActionListener; + Signal!MenuItemActionHandler menuItemAction; this(MenuWidgetBase parentMenu, MenuItem item, Orientation orientation) { _parentMenu = parentMenu; @@ -534,7 +534,7 @@ class MenuWidgetBase : ListWidget { PopupMenu popupMenu = new PopupMenu(itemWidget.item, this); PopupWidget popup = window.showPopup(popupMenu, itemWidget, orientation == Orientation.Horizontal ? PopupAlign.Below : PopupAlign.Right); requestActionsUpdate(); - popup.onPopupCloseListener = &onPopupClosed; + popup.popupClosed = &onPopupClosed; popup.flags = PopupFlags.CloseOnClickOutside; _openedPopup = popup; _openedMenu = popupMenu; @@ -583,10 +583,10 @@ class MenuWidgetBase : ListWidget { } else if (item.type == MenuItemType.Radio) { item.checked = true; } - if (item.onMenuItemClick.assigned) - item.onMenuItemClick(item); - if (item.onMenuItemAction.assigned && item.action) - item.onMenuItemAction(item.action); + if (item.menuItemClick.assigned) + item.menuItemClick(item); + if (item.menuItemAction.assigned && item.action) + item.menuItemAction(item.action); } protected void onMenuItem(MenuItem item) { @@ -605,9 +605,9 @@ class MenuWidgetBase : ListWidget { selectOnHover = false; // copy menu item click listeners - Signal!MenuItemClickHandler onMenuItemClickListenerCopy = onMenuItemClickListener; + Signal!MenuItemClickHandler onMenuItemClickListenerCopy = menuItemClick; // copy item action listeners - Signal!MenuItemActionHandler onMenuItemActionListenerCopy = onMenuItemActionListener; + Signal!MenuItemActionHandler onMenuItemActionListenerCopy = menuItemAction; handleMenuItemClick(item); @@ -798,9 +798,9 @@ class MainMenu : MenuWidgetBase { debug(DebugMenus) Log.d("MainMenu.onMenuItem ", item.action.label); // copy menu item click listeners - Signal!MenuItemClickHandler onMenuItemClickListenerCopy = onMenuItemClickListener; + Signal!MenuItemClickHandler onMenuItemClickListenerCopy = menuItemClick; // copy item action listeners - Signal!MenuItemActionHandler onMenuItemActionListenerCopy = onMenuItemActionListener; + Signal!MenuItemActionHandler onMenuItemActionListenerCopy = menuItemAction; deactivate(); diff --git a/src/dlangui/widgets/popup.d b/src/dlangui/widgets/popup.d index b3b1322c..795ab2c5 100644 --- a/src/dlangui/widgets/popup.d +++ b/src/dlangui/widgets/popup.d @@ -18,73 +18,73 @@ Copyright: Vadim Lopatin, 2014 License: Boost License 1.0 Authors: Vadim Lopatin, coolreader.org@gmail.com */ -module dlangui.widgets.popup; - -import dlangui.widgets.widget; -import dlangui.widgets.layouts; -import dlangui.core.signals; -import dlangui.platforms.common.platform; - -/// popup alignment option flags -enum PopupAlign : uint { - /// center popup around anchor widget center - Center = 1, - /// place popup below anchor widget close to lower bound - Below = 2, - /// place popup below anchor widget close to right bound (when no space enough, align near left bound) +module dlangui.widgets.popup; + +import dlangui.widgets.widget; +import dlangui.widgets.layouts; +import dlangui.core.signals; +import dlangui.platforms.common.platform; + +/// popup alignment option flags +enum PopupAlign : uint { + /// center popup around anchor widget center + Center = 1, + /// place popup below anchor widget close to lower bound + Below = 2, + /// place popup below anchor widget close to right bound (when no space enough, align near left bound) Right = 4, /// align to specified point - Point = 8, - /// if popup content size is less than anchor's size, increase it to anchor size + Point = 8, + /// if popup content size is less than anchor's size, increase it to anchor size FitAnchorSize = 16, -} - -struct PopupAnchor { +} + +struct PopupAnchor { Widget widget; int x; - int y; - uint alignment = PopupAlign.Center; -} - -/// popup behavior flags - for PopupWidget.flags property -enum PopupFlags : uint { - /// close popup when mouse button clicked outside of its bounds - CloseOnClickOutside = 1, - /// modal popup - keypresses and mouse events can be routed to this popup only - Modal = 2, -} - + int y; + uint alignment = PopupAlign.Center; +} + +/// popup behavior flags - for PopupWidget.flags property +enum PopupFlags : uint { + /// close popup when mouse button clicked outside of its bounds + CloseOnClickOutside = 1, + /// modal popup - keypresses and mouse events can be routed to this popup only + Modal = 2, +} + /** interface - slot for onPopupCloseListener */ interface OnPopupCloseHandler { void onPopupClosed(PopupWidget source); } - -/// popup widget container -class PopupWidget : LinearLayout { - protected PopupAnchor _anchor; - protected bool _modal; - - protected uint _flags; - /** popup close signal */ - Signal!OnPopupCloseHandler onPopupCloseListener; - //protected void delegate(PopupWidget popup) _onPopupCloseListener; - /// popup close listener (called right before closing) - //@property void delegate(PopupWidget popup) onPopupCloseListener() { return _onPopupCloseListener; } - /// set popup close listener (to call right before closing) - //@property PopupWidget onPopupCloseListener(void delegate(PopupWidget popup) listener) { _onPopupCloseListener = listener; return this; } - - /// returns popup behavior flags (combination of PopupFlags) - @property uint flags() { return _flags; } - /// set popup behavior flags (combination of PopupFlags) - @property PopupWidget flags(uint flags) { _flags = flags; return this; } - - /// access to popup anchor - @property ref PopupAnchor anchor() { return _anchor; } - /// returns true if popup is modal - bool modal() { return _modal; } - /// set modality flag - PopupWidget modal(bool modal) { _modal = modal; return this; } - + +/// popup widget container +class PopupWidget : LinearLayout { + protected PopupAnchor _anchor; + protected bool _modal; + + protected uint _flags; + /** popup close signal */ + Signal!OnPopupCloseHandler popupClosed; + //protected void delegate(PopupWidget popup) _onPopupCloseListener; + /// popup close listener (called right before closing) + //@property void delegate(PopupWidget popup) onPopupCloseListener() { return _onPopupCloseListener; } + /// set popup close listener (to call right before closing) + //@property PopupWidget onPopupCloseListener(void delegate(PopupWidget popup) listener) { _onPopupCloseListener = listener; return this; } + + /// returns popup behavior flags (combination of PopupFlags) + @property uint flags() { return _flags; } + /// set popup behavior flags (combination of PopupFlags) + @property PopupWidget flags(uint flags) { _flags = flags; return this; } + + /// access to popup anchor + @property ref PopupAnchor anchor() { return _anchor; } + /// returns true if popup is modal + bool modal() { return _modal; } + /// set modality flag + PopupWidget modal(bool modal) { _modal = modal; return this; } + /// Measure widget according to desired width and height constraints. (Step 1 of two phase layout). override void measure(int parentWidth, int parentHeight) { super.measure(parentWidth, parentHeight); @@ -96,8 +96,8 @@ class PopupWidget : LinearLayout { /// just call on close listener void onClose() { - if (onPopupCloseListener.assigned) - onPopupCloseListener(this); + if (popupClosed.assigned) + popupClosed(this); } /// Set widget rectangle to specified value and layout widget contents. (Step 2 of two phase layout). @@ -145,25 +145,25 @@ class PopupWidget : LinearLayout { r.moveToFit(rc); super.layout(r); } - - this(Widget content, Window window) { - super("POPUP"); - _window = window; - //styleId = "POPUP_MENU"; - addChild(content); - } - - /// called for mouse activity outside shown popup bounds - bool onMouseEventOutside(MouseEvent event) { - if (visibility != Visibility.Visible) - return false; - if (_flags & PopupFlags.CloseOnClickOutside) { - if (event.action == MouseAction.ButtonDown) { - // clicked outside - close popup - close(); - return false; - } - } - return false; - } -} + + this(Widget content, Window window) { + super("POPUP"); + _window = window; + //styleId = "POPUP_MENU"; + addChild(content); + } + + /// called for mouse activity outside shown popup bounds + bool onMouseEventOutside(MouseEvent event) { + if (visibility != Visibility.Visible) + return false; + if (_flags & PopupFlags.CloseOnClickOutside) { + if (event.action == MouseAction.ButtonDown) { + // clicked outside - close popup + close(); + return false; + } + } + return false; + } +} diff --git a/src/dlangui/widgets/scroll.d b/src/dlangui/widgets/scroll.d index 6cd3c1ac..2ae7b458 100644 --- a/src/dlangui/widgets/scroll.d +++ b/src/dlangui/widgets/scroll.d @@ -111,12 +111,12 @@ class ScrollWidgetBase : WidgetGroup, OnScrollHandler { _vscrollbarMode = vscrollbarMode; if (_vscrollbarMode != ScrollBarMode.Invisible) { _vscrollbar = new ScrollBar("vscrollbar", Orientation.Vertical); - _vscrollbar.onScrollEventListener = this; + _vscrollbar.scrollEvent = this; addChild(_vscrollbar); } if (_hscrollbarMode != ScrollBarMode.Invisible) { _hscrollbar = new ScrollBar("hscrollbar", Orientation.Horizontal); - _hscrollbar.onScrollEventListener = this; + _hscrollbar.scrollEvent = this; addChild(_hscrollbar); } } diff --git a/src/dlangui/widgets/tabs.d b/src/dlangui/widgets/tabs.d index a13c62d3..0220cd29 100644 --- a/src/dlangui/widgets/tabs.d +++ b/src/dlangui/widgets/tabs.d @@ -94,7 +94,7 @@ class TabItemWidget : HorizontalLayout { private ImageButton _closeButton; private TabItem _item; private bool _enableCloseButton; - Signal!TabCloseHandler onTabCloseListener; + Signal!TabCloseHandler tabClose; @property TabItem tabItem() { return _item; } @property TabControl tabControl() { return cast(TabControl)parent; } this(TabItem item, bool enableCloseButton = true) { @@ -128,8 +128,8 @@ class TabItemWidget : HorizontalLayout { protected bool onClick(Widget source) { if (source.compareId("CLOSE")) { Log.d("tab close button pressed"); - if (onTabCloseListener.assigned) - onTabCloseListener(_item.id); + if (tabClose.assigned) + tabClose(_item.id); } return true; } @@ -227,10 +227,10 @@ class TabControl : WidgetGroupDefaultDrawing { protected string _tabButtonTextStyle; /// signal of tab change (e.g. by clicking on tab header) - Signal!TabHandler onTabChangedListener; + Signal!TabHandler tabChanged; /// signal on tab close button - Signal!TabCloseHandler onTabCloseListener; + Signal!TabCloseHandler tabClose; protected Align _tabAlignment; @property Align tabAlignment() { return _tabAlignment; } @@ -378,8 +378,8 @@ class TabControl : WidgetGroupDefaultDrawing { } protected void onTabClose(string tabId) { - if (onTabCloseListener.assigned) - onTabCloseListener(tabId); + if (tabClose.assigned) + tabClose(tabId); } /// add new tab @@ -389,7 +389,7 @@ class TabControl : WidgetGroupDefaultDrawing { widget.parent = this; widget.click = &onClick; widget.setStyles(_tabButtonStyle, _tabButtonTextStyle); - widget.onTabCloseListener = &onTabClose; + widget.tabClose = &onTabClose; _children.insert(widget, index); updateTabs(); requestLayout(); @@ -548,8 +548,8 @@ class TabControl : WidgetGroupDefaultDrawing { _children.get(i).state = State.Normal; } } - if (onTabChangedListener.assigned) - onTabChangedListener(_selectedTabId, previousSelectedTab); + if (tabChanged.assigned) + tabChanged(_selectedTabId, previousSelectedTab); } } @@ -565,7 +565,7 @@ class TabHost : FrameLayout, TabHandler { super(ID); _tabControl = tabControl; if (_tabControl !is null) - _tabControl.onTabChangedListener = &onTabChanged; + _tabControl.tabChanged = &onTabChanged; styleId = STYLE_TAB_HOST; } protected TabControl _tabControl; @@ -575,7 +575,7 @@ class TabHost : FrameLayout, TabHandler { @property TabHost tabControl(TabControl newWidget) { _tabControl = newWidget; if (_tabControl !is null) - _tabControl.onTabChangedListener = &onTabChanged; + _tabControl.tabChanged = &onTabChanged; return this; } @@ -584,14 +584,14 @@ class TabHost : FrameLayout, TabHandler { @property void hiddenTabsVisibility(Visibility v) { _hiddenTabsVisibility = v; } /// signal of tab change (e.g. by clicking on tab header) - Signal!TabHandler onTabChangedListener; + Signal!TabHandler tabChanged; protected override void onTabChanged(string newActiveTabId, string previousTabId) { if (newActiveTabId !is null) { showChild(newActiveTabId, _hiddenTabsVisibility, true); } - if (onTabChangedListener.assigned) - onTabChangedListener(newActiveTabId, previousTabId); + if (tabChanged.assigned) + tabChanged(newActiveTabId, previousTabId); } /// get tab content widget by id @@ -670,8 +670,8 @@ class TabWidget : VerticalLayout, TabHandler, TabCloseHandler { super(ID); _tabControl = new TabControl("TAB_CONTROL", tabAlignment); _tabHost = new TabHost("TAB_HOST", _tabControl); - _tabControl.onTabChangedListener.connect(this); - _tabControl.onTabCloseListener.connect(this); + _tabControl.tabChanged.connect(this); + _tabControl.tabClose.connect(this); styleId = STYLE_TAB_WIDGET; if (tabAlignment == Align.Top) { addChild(_tabControl); @@ -687,19 +687,19 @@ class TabWidget : VerticalLayout, TabHandler, TabCloseHandler { TabHost tabHost() { return _tabHost; } /// signal of tab change (e.g. by clicking on tab header) - Signal!TabHandler onTabChangedListener; + Signal!TabHandler tabChanged; /// signal on tab close button - Signal!TabCloseHandler onTabCloseListener; + Signal!TabCloseHandler tabClose; protected override void onTabClose(string tabId) { - if (onTabCloseListener.assigned) - onTabCloseListener(tabId); + if (tabClose.assigned) + tabClose(tabId); } protected override void onTabChanged(string newActiveTabId, string previousTabId) { // forward to listener - if (onTabChangedListener.assigned) - onTabChangedListener(newActiveTabId, previousTabId); + if (tabChanged.assigned) + tabChanged(newActiveTabId, previousTabId); } /// add new tab by id and label string resource id diff --git a/src/dlangui/widgets/tree.d b/src/dlangui/widgets/tree.d index db5756c1..431924e6 100644 --- a/src/dlangui/widgets/tree.d +++ b/src/dlangui/widgets/tree.d @@ -659,9 +659,9 @@ class TreeWidgetBase : ScrollWidget, OnTreeContentChangeListener, OnTreeStateCh @property ref TreeItems items() { return _tree; } - Signal!OnTreeSelectionChangeListener selectionListener; + Signal!OnTreeSelectionChangeListener selectionChange; /// allows to provide individual popup menu for items - Listener!OnTreePopupMenuListener popupMenuListener; + Listener!OnTreePopupMenuListener popupMenu; protected bool _needUpdateWidgets; protected bool _needUpdateWidgetStates; @@ -678,8 +678,8 @@ class TreeWidgetBase : ScrollWidget, OnTreeContentChangeListener, OnTreeStateCh } protected MenuItem onTreeItemPopupMenu(TreeItems source, TreeItem selectedItem) { - if (popupMenuListener) - return popupMenuListener(source, selectedItem); + if (popupMenu) + return popupMenu(source, selectedItem); return null; } @@ -827,8 +827,8 @@ class TreeWidgetBase : ScrollWidget, OnTreeContentChangeListener, OnTreeStateCh selected.setFocus(); makeWidgetVisible(selected, false, true); } - if (selectionListener.assigned) - selectionListener(source, selectedItem, activated); + if (selectionChange.assigned) + selectionChange(source, selectedItem, activated); } void makeItemVisible(TreeItem item) { diff --git a/src/dlangui/widgets/widget.d b/src/dlangui/widgets/widget.d index 3ee5ec30..d183b254 100644 --- a/src/dlangui/widgets/widget.d +++ b/src/dlangui/widgets/widget.d @@ -1218,6 +1218,9 @@ class Widget { /// mouse event listener (bool delegate(Widget, MouseEvent)) - return true if event is processed by handler Signal!OnMouseHandler mouseEvent; + + // Signal utils + /// helper function to add onCheckChangeListener in method chain Widget addOnClickListener(bool delegate(Widget) listener) { click.connect(listener); diff --git a/src/dlangui/widgets/winframe.d b/src/dlangui/widgets/winframe.d index a64151fd..523e43db 100644 --- a/src/dlangui/widgets/winframe.d +++ b/src/dlangui/widgets/winframe.d @@ -47,10 +47,10 @@ class WindowFrame : VerticalLayout { init(); } - Signal!OnClickHandler onCloseButtonClickListener; + Signal!OnClickHandler closeButtonClick; protected bool onCloseButtonClick(Widget source) { - if (onCloseButtonClickListener.assigned) - onCloseButtonClickListener(source); + if (closeButtonClick.assigned) + closeButtonClick(source); return true; }