File: properties.rb

package info (click to toggle)
ruby-gnome2 0.15.0-1.1
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 7,692 kB
  • ctags: 8,558
  • sloc: ansic: 69,912; ruby: 19,511; makefile: 97; xml: 35; sql: 13
file content (85 lines) | stat: -rwxr-xr-x 2,257 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
=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