class Plugin::Settings::Select

Public Class Methods

new(plugin, values = []) click to toggle source
# File core/plugin/settings/select.rb, line 4
def initialize(plugin, values = [])
  type_strict plugin => Plugin
  @plugin = plugin
  @options = values.to_a.freeze end

Public Instance Methods

build(label, config) click to toggle source

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

Args

label

ラベル。文字列。

config

設定のキー

Return

ウィジェット

# File core/plugin/settings/select.rb, line 36
def build(label, config)
  if has_widget?
    group = Gtk::Frame.new.set_border_width(8)
    group.set_label(label)
    group.add(build_box(Plugin::Settings::Listener[config]))
    group
  else
    Gtk::HBox.new(false, 0).add(Gtk::Label.new(label).left).closeup(build_combobox(Plugin::Settings::Listener[config])) end end
has_widget?() click to toggle source

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

Return

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

# File core/plugin/settings/select.rb, line 27
def has_widget?
  not @options.all?{ |option| option.last.is_a? String } end
method_missing(*args, &block) click to toggle source
# File core/plugin/settings/select.rb, line 45
def method_missing(*args, &block)
  @plugin.__send__(*args, &block)
end
option(value, label = nil) click to toggle source

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

Args

value

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

label

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

&block

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

# File core/plugin/settings/select.rb, line 14
def option(value, label = nil)
  if block_given?
    widget = Plugin::Settings.new(@plugin).set_border_width(4)
    widget.instance_eval(&Proc.new)
    @options += [[value, label, widget].freeze]
  else
    @options += [[value, label].freeze] end
  @options.freeze
  self end