File: style-property.rb

package info (click to toggle)
ruby-gnome2 3.1.0-1%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 16,072 kB
  • ctags: 17,433
  • sloc: ansic: 93,621; ruby: 62,273; xml: 335; sh: 246; makefile: 25
file content (76 lines) | stat: -rwxr-xr-x 2,308 bytes parent folder | download | duplicates (5)
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
#!/usr/bin/env ruby
=begin
  style_property.rb - Ruby/GTK sample script.

  Copyright (c) 2004-2015 Ruby-GNOME2 Project Team
  This program is licenced under the same licence as Ruby-GNOME2.
=end

require "gtk3"

class MyButton < Gtk::Button
  type_register

  def initialize(label = nil)
    # When type_register() is used.
    # super is equivalent to GLib::Object#initialize.
    super("label" => label)
  end

  install_style_property(GLib::Param::Int.new("foo", # name
                                              "Foo", # nick
                                              "FOO", # blurb
                                              0,     # min
                                              100,   # max
                                              5,     # default
                                              GLib::Param::READABLE |
                                              GLib::Param::WRITABLE)) do |pspec, str|
    p pspec, str
    str.to_i + 10  # return the converted value.
  end

  install_style_property(GLib::Param::Enum.new("bar", # name
                                               "Bar", # nick
                                               "BAR", # blurb
                                               GLib::Type["GdkCursorType"], # Enum type
                                               Gdk::CursorType::ARROW, # default
                                               GLib::Param::READABLE |
                                               GLib::Param::WRITABLE)) do |pspec, str|
    p pspec, str
    if str.strip! == "boat"
      Gdk::Cursor::BOAT
    else
      pspec.default
    end
  end
end

provider = Gtk::CssProvider.new
provider.load(:data => <<-CSS)
* {
  -MyButton-foo: 30;
  -MyButton-bar: boat;
}
CSS

display = Gdk::Display.default
screen = display.default_screen
Gtk::StyleContext.add_provider_for_screen(screen, provider, Gtk::StyleProvider::PRIORITY_USER)

win = Gtk::Window.new("Custom style properties")
b = MyButton.new("Hello")
b.signal_connect("clicked") { Gtk.main_quit }

p MyButton.style_properties

win.set_default_size(100, 100)
win.add(b)
win.show_all
win.signal_connect("destroy") { Gtk.main_quit }

# You need to call them after "Gtk::Widget#show"
# (Or in expose event).
p b.style_get_property("foo")
p b.style_get_property("bar")

Gtk.main