#!/usr/bin/env ruby =begin style_property.rb - Ruby/GTK2 sample script. Copyright (c) 2004,2006 Ruby-GNOME2 Project Team This program is licenced under the same licence as Ruby-GNOME2. $Id: style_property.rb,v 1.4 2006/06/17 13:18:12 mutoh Exp $ =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::Cursor::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 Gtk::RC.parse("./style_property.rc") win = Gtk::Window.new("Gtk::RC sample") b = MyButton.new("Hello") b.signal_connect("clicked"){ Gtk.main_quit } p MyButton.style_properties win.set_default_size(100, 100) win.add(b).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 cursor = b.style_get_property("bar") Gtk.main