class Glimmer::LibUI::ControlProxy::MenuItemProxy::QuitMenuItemProxy

Proxy for LibUI quit menu item object

Follows the Proxy Design Pattern

Public Instance Methods

can_handle_listener?(listener_name) click to toggle source
# File lib/glimmer/libui/control_proxy/menu_item_proxy/quit_menu_item_proxy.rb, line 32
def can_handle_listener?(listener_name)
  listener_name == 'on_clicked' || super
end
destroy() click to toggle source
Calls superclass method Glimmer::LibUI::ControlProxy#destroy
# File lib/glimmer/libui/control_proxy/menu_item_proxy/quit_menu_item_proxy.rb, line 59
def destroy
  @on_clicked_listeners&.clear
  super
end
handle_listener(listener_name, &listener) click to toggle source
# File lib/glimmer/libui/control_proxy/menu_item_proxy/quit_menu_item_proxy.rb, line 36
def handle_listener(listener_name, &listener)
  if listener_name == 'on_clicked'
    @on_clicked_listeners ||= []
    @on_clicked_listeners << listener
    @default_behavior_listener ||= Proc.new do
      return_value = nil
      @on_clicked_listeners.each do |l|
        return_value = l.call(self)
        break if return_value.is_a?(Numeric)
      end
      if return_value.is_a?(Numeric)
        return_value
      else
        ControlProxy.main_window_proxy&.destroy
        ::LibUI.quit
        0
      end
    end.tap do |default_behavior_listener|
      ::LibUI.on_should_quit(&default_behavior_listener)
    end
  end
end

Private Instance Methods

build_control() click to toggle source
# File lib/glimmer/libui/control_proxy/menu_item_proxy/quit_menu_item_proxy.rb, line 66
def build_control
  @libui = @parent_proxy.append_quit_item(*@args)
  # setup default on_clicked listener if no on_clicked listeners are setup
  handle_listener('on_clicked') {} if @on_clicked_listeners.nil? || @on_clicked_listeners.empty?
end