class Gtk::FormDSL::Select

Public Class Methods

new(parent_dslobj, values = []) click to toggle source
# File core/mui/gtk_form_dsl_select.rb, line 4
def initialize(parent_dslobj, values = [])
  @parent_dslobj = parent_dslobj
  @options = values.to_a.freeze end

Public Instance Methods

build(label, config_key) click to toggle source

optionメソッドで追加された項目をウィジェットに組み立てる

Args

label

ラベル。文字列。

config_key

設定のキー

Return

ウィジェット

# File core/mui/gtk_form_dsl_select.rb, line 38
def build(label, config_key)
  if has_widget?
    group = Gtk::Frame.new.set_border_width(8)
    group.set_label(label)
    group.add(build_box(config_key))
    group
  else
    Gtk::HBox.new(false, 0).add(Gtk::Label.new(label).left).closeup(build_combobox(config_key))
  end
end
has_widget?() click to toggle source

項目として、ウィジェットを持っているかを返す。

Return

ウィジェットを持っているなら真

# File core/mui/gtk_form_dsl_select.rb, line 28
def has_widget?
  not @options.all?{ |option| option.last.is_a? String }
end
method_missing(*args, &block) click to toggle source
# File core/mui/gtk_form_dsl_select.rb, line 49
def method_missing(*args, &block)
  @parent_dslobj.method_missing_at_select_dsl(*args, &block)
end
option(value, label = nil) click to toggle source

セレクトボックスに要素を追加する

Args

value

選択されたらセットされる値

label

ラベル。 _&block_ がなければ使われる。文字列。

&block

Plugin::Settings のインスタンス内で評価され、そのインスタンスが内容として使われる

# File core/mui/gtk_form_dsl_select.rb, line 13
def option(value, label = nil)
  if block_given?
    widget = @parent_dslobj.create_inner_setting.set_border_width(4)
    widget.instance_eval(&Proc.new)
    @options += [[value, label, widget].freeze]
  else
    @options += [[value, label].freeze]
  end
  @options.freeze
  self
end