Class: Shoes::Button

Inherits:
Drawable show all
Defined in:
lacci/lib/shoes/drawables/button.rb

Constant Summary

Constants inherited from Drawable

Drawable::DRAW_CONTEXT_STYLES

Constants included from Log

Log::DEFAULT_COMPONENT, Log::DEFAULT_DEBUG_LOG_CONFIG, Log::DEFAULT_LOG_CONFIG

Instance Attribute Summary

Attributes inherited from Drawable

#debug_id, #destroyed, #parent

Attributes inherited from Linkable

#linkable_id

Instance Method Summary collapse

Methods inherited from Drawable

allocate_drawable_id, #app, #banner, #caption, convert_to_float, convert_to_integer, #destroy, #download, drawable_by_id, drawable_class_by_name, dsl_name, #event, expects_parent?, feature_for_shoes_style, get_shoes_events, #hide, #hover, init_args, #inscription, #inspect, is_widget_class?, #leave, #method_missing, #motion, opt_init_args, optional_init_args, register_drawable_id, registered_shoes_events?, required_init_args, #respond_to_missing?, #set_parent, shoes_events, shoes_style, shoes_style_hashes, shoes_style_name?, shoes_style_names, #shoes_style_values, shoes_styles, #show, #style, #subtitle, #tagline, #title, #toggle, unregister_drawable_id, use_current_app, validate_as, with_current_app

Methods included from MarginHelper

#margin_parse

Methods included from Colors

#gray, #rgb, #to_rgb

Methods included from Log

configure_logger, #log_init, logger

Methods inherited from Linkable

#bind_shoes_event, #send_self_event, #send_shoes_event, #unsub_all_shoes_events, #unsub_shoes_event

Constructor Details

#initialize(*args, **kwargs) { ... } ⇒ Shoes::Button

Creates a new Button object.

Examples:

Shoes.app do
  @push = button "Push me"
  @note = para "Nothing pushed so far"
  @push.click {
    @note.replace(
      "Aha! Click! ",
      link("Go back") { @note.replace("Nothing pushed so far") }
    )
  }
end

Parameters:

  • text (String)

    The text displayed on the button.

  • width (Integer)

    The requested width of the button in pixels.

  • height (Integer)

    The requested height of the button in pixels.

  • top (Integer)

    The position of the top edge of the button relative to its parent widget.

  • left (Integer)

    The position of the left edge of the button relative to its parent widget.

  • size (Integer)

    The font size of the button text.

  • color (String)

    The background color of the button.

  • padding_top (Integer)

    The padding above the button text.

  • padding_bottom (Integer)

    The padding below the button text.

  • text_color (String)

    The color of the button text.

Yields:

  • A block of code to be executed when the button is clicked.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lacci/lib/shoes/drawables/button.rb', line 35

def initialize(*args, **kwargs, &block)
  # Properties passed as positional args, not keywords, don't get auto-set
  @block = block

  super

  # Bind block to a handler named "click"
  bind_self_event("click") do
    @log.debug("Button clicked, calling handler") if @block
    @block&.call
  end

  create_display_drawable
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Shoes::Drawable

Instance Method Details

#click { ... } ⇒ Object

Set the click handler

Yields:

  • A block to be called when the button is clicked.



53
54
55
# File 'lacci/lib/shoes/drawables/button.rb', line 53

def click(&block)
  @block = block
end