86 lines
2.2 KiB
Ruby
86 lines
2.2 KiB
Ruby
|
=begin
|
||
|
properties.rb -
|
||
|
|
||
|
GLib::Object#properties and Gtk::Container#child_properties sample script.
|
||
|
|
||
|
Copyright (C) 2004-2006 Masao Mutoh
|
||
|
|
||
|
This program is licenced under the same licence as Ruby-GNOME2.
|
||
|
|
||
|
$Id: properties.rb,v 1.3 2006/06/17 13:18:12 mutoh Exp $
|
||
|
=end
|
||
|
|
||
|
require 'gtk2'
|
||
|
|
||
|
class MyButton < Gtk::Button
|
||
|
type_register
|
||
|
|
||
|
def initialize(label = nil)
|
||
|
# XXX:
|
||
|
# When type_register() is used.
|
||
|
# super is equivalent to GLib::Object#initialize.
|
||
|
super("label" => label)
|
||
|
@fuga = 0
|
||
|
@hoge = 0
|
||
|
end
|
||
|
|
||
|
# define new property "fuga"
|
||
|
install_property(GLib::Param::Int.new("fuga", # name
|
||
|
"Fuga", # nick
|
||
|
"fuga fuga", # blurb
|
||
|
0, # min
|
||
|
10000, # max
|
||
|
0, # default
|
||
|
GLib::Param::READABLE |
|
||
|
GLib::Param::WRITABLE))
|
||
|
|
||
|
# define new property "hoge"
|
||
|
install_child_property(GLib::Param::Int.new("hoge", # name
|
||
|
"Hoge", # nick
|
||
|
"hoge hoge", # blurb
|
||
|
0, # min
|
||
|
10000, # max
|
||
|
0, # default
|
||
|
GLib::Param::READABLE |
|
||
|
GLib::Param::WRITABLE))
|
||
|
|
||
|
# implementation of the property "fuga"
|
||
|
def fuga
|
||
|
puts "MyButton#fuga is called"
|
||
|
@fuga
|
||
|
end
|
||
|
def fuga=(arg)
|
||
|
puts "MyButton#fuga= is called"
|
||
|
@fuga = arg
|
||
|
notify("fuga")
|
||
|
end
|
||
|
|
||
|
# implementation of the property "hoge"
|
||
|
def get_hoge(child)
|
||
|
puts "MyButton#get_hoge is called"
|
||
|
@hoge
|
||
|
end
|
||
|
def set_hoge(child, arg)
|
||
|
puts "MyButton#set_hoge is called"
|
||
|
@hoge = arg
|
||
|
end
|
||
|
end
|
||
|
|
||
|
b = MyButton.new("Hello")
|
||
|
p b
|
||
|
p b.label
|
||
|
p b.gtype
|
||
|
|
||
|
p MyButton.properties
|
||
|
p b.get_property("fuga")
|
||
|
b.set_property("fuga", 1)
|
||
|
p b.get_property("fuga")
|
||
|
|
||
|
p MyButton.child_properties
|
||
|
p child = b.child
|
||
|
p b.child_get_property(child, "hoge")
|
||
|
b.child_set_property(child, "hoge", 2)
|
||
|
p b.child_get_property(child, "hoge")
|
||
|
|
||
|
p MyButton.ancestors
|