Method deprecated or moved
This method is deprecated or moved on the latest stable version.
The last existing version (v1_9_2_180) is shown here.
ask_for_hash_pair(parent)
public
Ask for a hash key, value pair to be added to the Hash node parent.
Show source
def ask_for_hash_pair(parent)
key_input = type_input = value_input = nil
dialog = Dialog.new("New (key, value) pair for Hash", nil, nil,
[ Stock::OK, Dialog::RESPONSE_ACCEPT ],
[ Stock::CANCEL, Dialog::RESPONSE_REJECT ]
)
dialog.width_request = 640
hbox = HBox.new(false, 5)
hbox.pack_start(Label.new("Key:"), false)
hbox.pack_start(key_input = Entry.new)
key_input.text = @key || ''
dialog.vbox.pack_start(hbox, false)
key_input.signal_connect(:activate) do
if parent.any? { |c| c.content == key_input.text }
toplevel.display_status('Key already exists in Hash!')
key_input.text = ''
else
toplevel.display_status('Key has been changed.')
end
end
hbox = HBox.new(false, 5)
hbox.pack_start(Label.new("Type:"), false)
hbox.pack_start(type_input = ComboBox.new(true))
ALL_TYPES.each { |t| type_input.append_text(t) }
type_input.active = @type || 0
dialog.vbox.pack_start(hbox, false)
type_input.signal_connect(:changed) do
value_input.editable = false
case ALL_TYPES[type_input.active]
when 'Array', 'Hash'
value_input.text = ''
when 'TrueClass'
value_input.text = 'true'
when 'FalseClass'
value_input.text = 'false'
when 'NilClass'
value_input.text = 'null'
else
value_input.text = ''
value_input.editable = true
end
end
hbox = HBox.new(false, 5)
hbox.pack_start(Label.new("Value:"), false)
hbox.pack_start(value_input = Entry.new)
value_input.width_chars = 60
value_input.text = @value || ''
dialog.vbox.pack_start(hbox, false)
dialog.signal_connect(:'key-press-event', &DEFAULT_DIALOG_KEY_PRESS_HANDLER)
dialog.show_all
self.focus = dialog
dialog.run do |response|
if response == Dialog::RESPONSE_ACCEPT
@key = key_input.text
type = ALL_TYPES[@type = type_input.active]
content = value_input.text
return @key, type, content
end
end
return
ensure
dialog.destroy
end