wxEvtHandler

The Event handler.

The Event handler.

To get events from wxwidgets objects you subscribe to them by calling connect/[2-3]. Events are sent as messages, if no callback was supplied These messages will be #wx{} where EventRecord is a record that depends on the event type. The records are defined in: wx/include/wx.hrl.

If a callback was supplied to connect, the callback will be invoked (in another process) to handle the event. The callback should be of arity 2. fun(EventRecord::wx(), EventObject::wxObject()).

Beware that the callback will be in executed in new process each time.

The orginal documentation.

Types


event() =
            wxActivate() |
            wxAuiManager() |
            wxAuiNotebook() |
            wxCalendar() |
            wxChildFocus() |
            wxClipboardText() |
            wxClose() |
            wxColourPicker() |
            wxCommand() |
            wxContextMenu() |
            wxDate() |
            wxDisplayChanged() |
            wxErase() |
            wxFileDirPicker() |
            wxFocus() |
            wxFontPicker() |
            wxGrid() |
            wxHelp() |
            wxHtmlLink() |
            wxIconize() |
            wxIdle() |
            wxInitDialog() |
            wxJoystick() |
            wxKey() |
            wxList() |
            wxMaximize() |
            wxMenu() |
            wxMouse() |
            wxMouseCaptureChanged() |
            wxMouseCaptureLost() |
            wxMove() |
            wxNavigationKey() |
            wxNotebook() |
            wxPaint() |
            wxPaletteChanged() |
            wxQueryNewPalette() |
            wxSash() |
            wxScroll() |
            wxScrollWin() |
            wxSetCursor() |
            wxShow() |
            wxSize() |
            wxSpin() |
            wxSplitter() |
            wxStyledText() |
            wxSysColourChanged() |
            wxTaskBarIcon() |
            wxTree() |
            wxUpdateUI() |
            wxWindowCreate() |
            wxWindowDestroy()

wx() =
            #wx{id = integer(),
                obj = wx:wx_object(),
                userData = term(),
                event = event()}

wxActivate() =
            #wxActivate{type = wxActivateEventType(),
                        active = boolean()}

wxActivateEventType() = activate | activate_app | hibernate

wxAuiManager() =
            #wxAuiManager{type = wxAuiManagerEventType(),
                          manager = wxAuiManager:wxAuiManager(),
                          pane = wxAuiPaneInfo:wxAuiPaneInfo(),
                          button = integer(),
                          veto_flag = boolean(),
                          canveto_flag = boolean(),
                          dc = wxDC:wxDC()}

wxAuiManagerEventType() =
            aui_pane_button |
            aui_pane_close |
            aui_pane_maximize |
            aui_pane_restore |
            aui_pane_activated |
            aui_render |
            aui_find_manager

wxAuiNotebook() =
            #wxAuiNotebook{type = wxAuiNotebookEventType(),
                           old_selection = integer(),
                           selection = integer(),
                           drag_source = wxAuiNotebook:wxAuiNotebook()}

wxAuiNotebookEventType() =
            command_auinotebook_page_close |
            command_auinotebook_page_changed |
            command_auinotebook_page_changing |
            command_auinotebook_button |
            command_auinotebook_begin_drag |
            command_auinotebook_end_drag |
            command_auinotebook_drag_motion |
            command_auinotebook_allow_dnd |
            command_auinotebook_tab_middle_down |
            command_auinotebook_tab_middle_up |
            command_auinotebook_tab_right_down |
            command_auinotebook_tab_right_up |
            command_auinotebook_page_closed |
            command_auinotebook_drag_done |
            command_auinotebook_bg_dclick

wxCalendar() =
            #wxCalendar{type = wxCalendarEventType(),
                        wday = wx:wx_enum(),
                        date = wx:wx_datetime()}

wxCalendarEventType() =
            calendar_sel_changed |
            calendar_day_changed |
            calendar_month_changed |
            calendar_year_changed |
            calendar_doubleclicked |
            calendar_weekday_clicked

wxChildFocus() = #wxChildFocus{type = wxChildFocusEventType()}

wxChildFocusEventType() = child_focus

wxClipboardText() =
            #wxClipboardText{type = wxClipboardTextEventType()}

wxClipboardTextEventType() =
            command_text_copy | command_text_cut | command_text_paste

wxClose() = #wxClose{type = wxCloseEventType()}

wxCloseEventType() =
            close_window | end_session | query_end_session

wxColourPicker() =
            #wxColourPicker{type = wxColourPickerEventType(),
                            colour = wx:wx_colour()}

wxColourPickerEventType() = command_colourpicker_changed

wxCommand() =
            #wxCommand{type = wxCommandEventType(),
                       cmdString = unicode:chardata(),
                       commandInt = integer(),
                       extraLong = integer()}

wxCommandEventType() =
            command_button_clicked |
            command_checkbox_clicked |
            command_choice_selected |
            command_listbox_selected |
            command_listbox_doubleclicked |
            command_text_updated |
            command_text_enter |
            command_menu_selected |
            command_slider_updated |
            command_radiobox_selected |
            command_radiobutton_selected |
            command_scrollbar_updated |
            command_vlbox_selected |
            command_combobox_selected |
            command_tool_rclicked |
            command_tool_enter |
            command_checklistbox_toggled |
            command_togglebutton_clicked |
            command_left_click |
            command_left_dclick |
            command_right_click |
            command_set_focus |
            command_kill_focus |
            command_enter

wxContextMenu() =
            #wxContextMenu{type = wxContextMenuEventType(),
                           pos = {X :: integer(), Y :: integer()}}

wxContextMenuEventType() = context_menu

wxDate() =
            #wxDate{type = wxDateEventType(), date = wx:wx_datetime()}

wxDateEventType() = date_changed

wxDisplayChanged() =
            #wxDisplayChanged{type = wxDisplayChangedEventType()}

wxDisplayChangedEventType() = display_changed

wxErase() =
            #wxErase{type = wxEraseEventType(), dc = wxDC:wxDC()}

wxEraseEventType() = erase_background

wxEventType() =
            wxActivateEventType() |
            wxAuiManagerEventType() |
            wxAuiNotebookEventType() |
            wxCalendarEventType() |
            wxChildFocusEventType() |
            wxClipboardTextEventType() |
            wxCloseEventType() |
            wxColourPickerEventType() |
            wxCommandEventType() |
            wxContextMenuEventType() |
            wxDateEventType() |
            wxDisplayChangedEventType() |
            wxEraseEventType() |
            wxFileDirPickerEventType() |
            wxFocusEventType() |
            wxFontPickerEventType() |
            wxGridEventType() |
            wxHelpEventType() |
            wxHtmlLinkEventType() |
            wxIconizeEventType() |
            wxIdleEventType() |
            wxInitDialogEventType() |
            wxJoystickEventType() |
            wxKeyEventType() |
            wxListEventType() |
            wxMaximizeEventType() |
            wxMenuEventType() |
            wxMouseCaptureChangedEventType() |
            wxMouseCaptureLostEventType() |
            wxMouseEventType() |
            wxMoveEventType() |
            wxNavigationKeyEventType() |
            wxNotebookEventType() |
            wxPaintEventType() |
            wxPaletteChangedEventType() |
            wxQueryNewPaletteEventType() |
            wxSashEventType() |
            wxScrollEventType() |
            wxScrollWinEventType() |
            wxSetCursorEventType() |
            wxShowEventType() |
            wxSizeEventType() |
            wxSpinEventType() |
            wxSplitterEventType() |
            wxStyledTextEventType() |
            wxSysColourChangedEventType() |
            wxTaskBarIconEventType() |
            wxTreeEventType() |
            wxUpdateUIEventType() |
            wxWindowCreateEventType() |
            wxWindowDestroyEventType()

wxEvtHandler() = wx:wx_object()

wxFileDirPicker() =
            #wxFileDirPicker{type = wxFileDirPickerEventType(),
                             path = unicode:chardata()}

wxFileDirPickerEventType() =
            command_filepicker_changed | command_dirpicker_changed

wxFocus() =
            #wxFocus{type = wxFocusEventType(),
                     win = wxWindow:wxWindow()}

wxFocusEventType() = set_focus | kill_focus

wxFontPicker() =
            #wxFontPicker{type = wxFontPickerEventType(),
                          font = wxFont:wxFont()}

wxFontPickerEventType() = command_fontpicker_changed

wxGrid() =
            #wxGrid{type = wxGridEventType(),
                    row = integer(),
                    col = integer(),
                    x = integer(),
                    y = integer(),
                    selecting = boolean(),
                    control = boolean(),
                    meta = boolean(),
                    shift = boolean(),
                    alt = boolean()}

wxGridEventType() =
            grid_cell_left_click |
            grid_cell_right_click |
            grid_cell_left_dclick |
            grid_cell_right_dclick |
            grid_label_left_click |
            grid_label_right_click |
            grid_label_left_dclick |
            grid_label_right_dclick |
            grid_row_size |
            grid_col_size |
            grid_range_select |
            grid_cell_change |
            grid_select_cell |
            grid_editor_shown |
            grid_editor_hidden |
            grid_editor_created |
            grid_cell_begin_drag

wxHelp() = #wxHelp{type = wxHelpEventType()}

wxHelpEventType() = help | detailed_help

wxHtmlLinkEventType() = command_html_link_clicked

wxIconize() =
            #wxIconize{type = wxIconizeEventType(),
                       iconized = boolean()}

wxIconizeEventType() = iconize

wxIdle() = #wxIdle{type = wxIdleEventType()}

wxIdleEventType() = idle

wxInitDialog() = #wxInitDialog{type = wxInitDialogEventType()}

wxInitDialogEventType() = init_dialog

wxJoystick() =
            #wxJoystick{type = wxJoystickEventType(),
                        pos = {X :: integer(), Y :: integer()},
                        zPosition = integer(),
                        buttonChange = integer(),
                        buttonState = integer(),
                        joyStick = integer()}

wxJoystickEventType() =
            joy_button_down | joy_button_up | joy_move | joy_zmove

wxKey() =
            #wxKey{type = wxKeyEventType(),
                   x = integer(),
                   y = integer(),
                   keyCode = integer(),
                   controlDown = boolean(),
                   shiftDown = boolean(),
                   altDown = boolean(),
                   metaDown = boolean(),
                   scanCode = boolean(),
                   uniChar = integer(),
                   rawCode = integer(),
                   rawFlags = integer()}

wxKeyEventType() = char | char_hook | key_down | key_up

wxList() =
            #wxList{type = wxListEventType(),
                    code = integer(),
                    oldItemIndex = integer(),
                    itemIndex = integer(),
                    col = integer(),
                    pointDrag = {X :: integer(), Y :: integer()}}

wxListEventType() =
            command_list_begin_drag |
            command_list_begin_rdrag |
            command_list_begin_label_edit |
            command_list_end_label_edit |
            command_list_delete_item |
            command_list_delete_all_items |
            command_list_key_down |
            command_list_insert_item |
            command_list_col_click |
            command_list_col_right_click |
            command_list_col_begin_drag |
            command_list_col_dragging |
            command_list_col_end_drag |
            command_list_item_selected |
            command_list_item_deselected |
            command_list_item_right_click |
            command_list_item_middle_click |
            command_list_item_activated |
            command_list_item_focused |
            command_list_cache_hint

wxMaximize() = #wxMaximize{type = wxMaximizeEventType()}

wxMaximizeEventType() = maximize

wxMenu() =
            #wxMenu{type = wxMenuEventType(),
                    menuId = integer(),
                    menu = wxMenu:wxMenu()}

wxMenuEventType() = menu_open | menu_close | menu_highlight

wxMouse() =
            #wxMouse{type = wxMouseEventType(),
                     x = integer(),
                     y = integer(),
                     leftDown = boolean(),
                     middleDown = boolean(),
                     rightDown = boolean(),
                     controlDown = boolean(),
                     shiftDown = boolean(),
                     altDown = boolean(),
                     metaDown = boolean(),
                     wheelRotation = integer(),
                     wheelDelta = integer(),
                     linesPerAction = integer()}

wxMouseCaptureChanged() =
            #wxMouseCaptureChanged{type =
                                       wxMouseCaptureChangedEventType()}

wxMouseCaptureChangedEventType() = mouse_capture_changed

wxMouseCaptureLost() =
            #wxMouseCaptureLost{type = wxMouseCaptureLostEventType()}

wxMouseCaptureLostEventType() = mouse_capture_lost

wxMouseEventType() =
            left_down |
            left_up |
            middle_down |
            middle_up |
            right_down |
            right_up |
            motion |
            enter_window |
            leave_window |
            left_dclick |
            middle_dclick |
            right_dclick |
            mousewheel

wxMove() =
            #wxMove{type = wxMoveEventType(),
                    pos = {X :: integer(), Y :: integer()},
                    rect =
                        {X :: integer(),
                         Y :: integer(),
                         W :: integer(),
                         H :: integer()}}

wxMoveEventType() = move

wxNavigationKey() =
            #wxNavigationKey{type = wxNavigationKeyEventType(),
                             flags = integer(),
                             focus = wxWindow:wxWindow()}

wxNavigationKeyEventType() = navigation_key

wxNotebook() =
            #wxNotebook{type = wxNotebookEventType(),
                        nSel = integer(),
                        nOldSel = integer()}

wxNotebookEventType() =
            command_notebook_page_changed | command_notebook_page_changing

wxPaint() = #wxPaint{type = wxPaintEventType()}

wxPaintEventType() = paint

wxPaletteChanged() =
            #wxPaletteChanged{type = wxPaletteChangedEventType()}

wxPaletteChangedEventType() = palette_changed

wxQueryNewPalette() =
            #wxQueryNewPalette{type = wxQueryNewPaletteEventType()}

wxQueryNewPaletteEventType() = query_new_palette

wxSash() =
            #wxSash{type = wxSashEventType(),
                    edge = wx:wx_enum(),
                    dragRect =
                        {X :: integer(),
                         Y :: integer(),
                         W :: integer(),
                         H :: integer()},
                    dragStatus = wx:wx_enum()}

wxSashEventType() = sash_dragged

wxScroll() =
            #wxScroll{type = wxScrollEventType(),
                      commandInt = integer(),
                      extraLong = integer()}

wxScrollEventType() =
            scroll_top |
            scroll_bottom |
            scroll_lineup |
            scroll_linedown |
            scroll_pageup |
            scroll_pagedown |
            scroll_thumbtrack |
            scroll_thumbrelease |
            scroll_changed

wxScrollWin() =
            #wxScrollWin{type = wxScrollWinEventType(),
                         commandInt = integer(),
                         extraLong = integer()}

wxScrollWinEventType() =
            scrollwin_top |
            scrollwin_bottom |
            scrollwin_lineup |
            scrollwin_linedown |
            scrollwin_pageup |
            scrollwin_pagedown |
            scrollwin_thumbtrack |
            scrollwin_thumbrelease

wxSetCursor() =
            #wxSetCursor{type = wxSetCursorEventType(),
                         x = integer(),
                         y = integer(),
                         cursor = wxCursor:wxCursor()}

wxSetCursorEventType() = set_cursor

wxShow() =
            #wxShow{type = wxShowEventType(), show = boolean()}

wxShowEventType() = show

wxSize() =
            #wxSize{type = wxSizeEventType(),
                    size = {W :: integer(), H :: integer()},
                    rect =
                        {X :: integer(),
                         Y :: integer(),
                         W :: integer(),
                         H :: integer()}}

wxSizeEventType() = size

wxSpin() =
            #wxSpin{type = wxSpinEventType(), commandInt = integer()}

wxSpinEventType() =
            command_spinctrl_updated | spin_up | spin_down | spin

wxSplitter() = #wxSplitter{type = wxSplitterEventType()}

wxSplitterEventType() =
            command_splitter_sash_pos_changed |
            command_splitter_sash_pos_changing |
            command_splitter_doubleclicked |
            command_splitter_unsplit

wxStyledText() =
            #wxStyledText{type = wxStyledTextEventType(),
                          position = integer(),
                          key = integer(),
                          modifiers = integer(),
                          modificationType = integer(),
                          text = unicode:chardata(),
                          length = integer(),
                          linesAdded = integer(),
                          line = integer(),
                          foldLevelNow = integer(),
                          foldLevelPrev = integer(),
                          margin = integer(),
                          message = integer(),
                          wParam = integer(),
                          lParam = integer(),
                          listType = integer(),
                          x = integer(),
                          y = integer(),
                          dragText = unicode:chardata(),
                          dragAllowMove = boolean(),
                          dragResult = wx:wx_enum()}

wxStyledTextEventType() =
            stc_change |
            stc_styleneeded |
            stc_charadded |
            stc_savepointreached |
            stc_savepointleft |
            stc_romodifyattempt |
            stc_key |
            stc_doubleclick |
            stc_updateui |
            stc_modified |
            stc_macrorecord |
            stc_marginclick |
            stc_needshown |
            stc_painted |
            stc_userlistselection |
            stc_uridropped |
            stc_dwellstart |
            stc_dwellend |
            stc_start_drag |
            stc_drag_over |
            stc_do_drop |
            stc_zoom |
            stc_hotspot_click |
            stc_hotspot_dclick |
            stc_calltip_click |
            stc_autocomp_selection

wxSysColourChanged() =
            #wxSysColourChanged{type = wxSysColourChangedEventType()}

wxSysColourChangedEventType() = sys_colour_changed

wxTaskBarIcon() =
            #wxTaskBarIcon{type = wxTaskBarIconEventType()}

wxTaskBarIconEventType() =
            taskbar_move |
            taskbar_left_down |
            taskbar_left_up |
            taskbar_right_down |
            taskbar_right_up |
            taskbar_left_dclick |
            taskbar_right_dclick

wxTree() =
            #wxTree{type = wxTreeEventType(),
                    item = integer(),
                    itemOld = integer(),
                    pointDrag = {X :: integer(), Y :: integer()}}

wxTreeEventType() =
            command_tree_begin_drag |
            command_tree_begin_rdrag |
            command_tree_begin_label_edit |
            command_tree_end_label_edit |
            command_tree_delete_item |
            command_tree_get_info |
            command_tree_set_info |
            command_tree_item_expanded |
            command_tree_item_expanding |
            command_tree_item_collapsed |
            command_tree_item_collapsing |
            command_tree_sel_changed |
            command_tree_sel_changing |
            command_tree_key_down |
            command_tree_item_activated |
            command_tree_item_right_click |
            command_tree_item_middle_click |
            command_tree_end_drag |
            command_tree_state_image_click |
            command_tree_item_gettooltip |
            command_tree_item_menu

wxUpdateUI() = #wxUpdateUI{type = wxUpdateUIEventType()}

wxUpdateUIEventType() = update_ui

wxWindowCreate() =
            #wxWindowCreate{type = wxWindowCreateEventType()}

wxWindowCreateEventType() = create

wxWindowDestroy() =
            #wxWindowDestroy{type = wxWindowDestroyEventType()}

wxWindowDestroyEventType() = destroy

Functions


connect(This::wxEvtHandler(), EventType::wxEventType()) -> ok

connect(This::wxEvtHandler(), EventType::wxEventType(), Options::[Option]) -> ok

  • Option = {id, integer()} | {lastId, integer()} | {skip, boolean()} | callback | {callback, function()} | {userData, term()}

This function subscribes the to events of EventType, in the range id, lastId. The events will be received as messages if no callback is supplied.

Options: {id, integer()}, The identifier (or first of the identifier range) to be associated with this event handler. Default ?wxID_ANY {lastId, integer()}, The second part of the identifier range. If used 'id' must be set as the starting identifier range. Default ?wxID_ANY {skip, boolean()}, If skip is true further event_handlers will be called. This is not used if the 'callback' option is used. Default false. {callback, function()} Use a callback fun(EventRecord::wx(), EventObject::wxObject()) to process the event. Default not specfied i.e. a message will be delivered to the process calling this function. {userData, term()} An erlang term that will be sent with the event. Default: [].

disconnect(This::wxEvtHandler()) -> boolean()

Equivalent to disconnect(This, null, []) Can also have an optional callback Fun() as an additional last argument.

disconnect(This::wxEvtHandler(), EventType::wxEventType()) -> boolean()

disconnect(This::wxEvtHandler(), EventType::wxEventType(), Opts::[Option]) -> boolean()

  • Option = {id, integer()} | {lastId, integer()} | {callback, function()}

See external documentation This function unsubscribes the process or callback fun from the event handler. EventType may be the atom 'null' to match any eventtype. Notice that the options skip and userdata is not used to match the eventhandler.