gtk3 3.0.7-x64-mingw32 → 3.0.8-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/gtk3/extconf.rb +1 -0
- data/ext/gtk3/rb-gtk3-tree-view.c +4 -0
- data/ext/gtk3/rb-gtk3.c +245 -60
- data/lib/2.2/gtk3.so +0 -0
- data/lib/2.3/gtk3.so +0 -0
- data/lib/gtk3/box.rb +22 -0
- data/lib/gtk3/builder.rb +50 -29
- data/lib/gtk3/deprecated.rb +7 -0
- data/lib/gtk3/entry-buffer.rb +28 -0
- data/lib/gtk3/list-store.rb +2 -20
- data/lib/gtk3/loader.rb +6 -0
- data/lib/gtk3/menu-item.rb +8 -7
- data/lib/gtk3/tree-iter.rb +25 -1
- data/lib/gtk3/tree-model.rb +41 -0
- data/lib/gtk3/tree-store.rb +7 -6
- data/lib/gtk3/widget.rb +18 -1
- data/sample/gtk-demo/TODO +45 -39
- data/sample/gtk-demo/assistant.rb +123 -0
- data/sample/gtk-demo/builder.rb +75 -38
- data/sample/gtk-demo/button_box.rb +100 -0
- data/sample/gtk-demo/colorsel.rb +49 -65
- data/sample/gtk-demo/css_accordion.rb +33 -55
- data/sample/gtk-demo/css_basics.rb +55 -80
- data/sample/gtk-demo/css_multiplebgs.rb +112 -0
- data/sample/gtk-demo/css_pixbufs.rb +84 -0
- data/sample/gtk-demo/css_shadows.rb +101 -0
- data/sample/gtk-demo/cursors.rb +114 -0
- data/sample/gtk-demo/dialog.rb +105 -115
- data/sample/gtk-demo/entry_buffer.rb +44 -0
- data/sample/gtk-demo/entry_completion.rb +40 -52
- data/sample/gtk-demo/expander.rb +60 -26
- data/sample/gtk-demo/filtermodel.rb +119 -0
- data/sample/gtk-demo/font_features.rb +117 -0
- data/sample/gtk-demo/headerbar.rb +57 -0
- data/sample/gtk-demo/iconview_edit.rb +79 -0
- data/sample/gtk-demo/infobar.rb +75 -59
- data/sample/gtk-demo/links.rb +53 -40
- data/sample/gtk-demo/main.rb +353 -43
- data/sample/gtk-demo/main.ui +9 -9
- data/sample/gtk-demo/markup.rb +46 -0
- data/sample/gtk-demo/menus.rb +111 -162
- data/sample/gtk-demo/modelbutton.rb +47 -0
- data/sample/gtk-demo/overlay.rb +61 -0
- data/sample/gtk-demo/overlay2.rb +75 -0
- data/sample/gtk-demo/panes.rb +114 -133
- data/sample/gtk-demo/pickers.rb +70 -0
- data/sample/gtk-demo/popover.rb +110 -0
- data/sample/gtk-demo/printing.rb +68 -83
- data/sample/gtk-demo/revealer.rb +53 -0
- data/sample/gtk-demo/scale.rb +26 -0
- data/sample/gtk-demo/search_entry2.rb +107 -0
- data/sample/gtk-demo/sidebar.rb +68 -0
- data/sample/gtk-demo/sizegroup.rb +93 -105
- data/sample/gtk-demo/spinner.rb +53 -50
- data/sample/gtk-demo/stack.rb +28 -0
- data/sample/gtk-demo/test_mod.rb +22 -0
- data/sample/gtk-demo/textmask.rb +61 -0
- data/sample/gtk-demo/theming_style_classes.rb +16 -12
- data/sample/misc/app-menu.ui +19 -0
- data/sample/misc/button-menu.ui +19 -0
- data/sample/misc/icons-theme-viewer.rb +65 -0
- data/sample/misc/menu.rb +3 -3
- data/sample/misc/menus_from_resources.gresource.xml +8 -0
- data/sample/misc/menus_from_resources.rb +91 -0
- data/sample/misc/statusicon.rb +1 -1
- data/sample/misc/toolbar-menu.ui +23 -0
- data/sample/misc/treestore.rb +63 -0
- data/sample/tutorial/README.md +368 -6
- data/test/test-gtk-box.rb +13 -0
- data/test/test-gtk-builder.rb +1 -1
- data/test/test-gtk-clipboard.rb +124 -0
- data/test/test-gtk-container.rb +3 -3
- data/test/test-gtk-entry-buffer.rb +32 -0
- data/test/test-gtk-list-store.rb +30 -12
- data/test/test-gtk-menu.rb +32 -0
- data/test/test-gtk-tree-iter.rb +61 -5
- data/test/test-gtk-tree-path.rb +26 -1
- data/test/test-gtk-tree-sortable.rb +35 -0
- data/test/test-gtk-tree-store.rb +34 -0
- data/test/test-gtk-widget.rb +33 -2
- metadata +57 -22
- data/lib/2.0/gtk3.so +0 -0
- data/lib/2.1/gtk3.so +0 -0
- data/sample/gtk-demo/button-box.rb +0 -82
@@ -0,0 +1,123 @@
|
|
1
|
+
# Copyright (c) 2016 Ruby-GNOME2 Project Team
|
2
|
+
# This program is licenced under the same licence as Ruby-GNOME2.
|
3
|
+
#
|
4
|
+
=begin
|
5
|
+
= Assistant
|
6
|
+
|
7
|
+
Demonstrates a sample multi-step assistant. Assistants are used to divide
|
8
|
+
an operation into several simpler sequential steps, and to guide the user
|
9
|
+
through these steps.
|
10
|
+
=end
|
11
|
+
module AssistantDemo
|
12
|
+
def self.run_demo(main_window)
|
13
|
+
assistant = Gtk::Assistant.new
|
14
|
+
assistant.screen = main_window.screen
|
15
|
+
|
16
|
+
create_page1(assistant)
|
17
|
+
create_page2(assistant)
|
18
|
+
create_page3(assistant)
|
19
|
+
progress_bar = create_page4(assistant)
|
20
|
+
|
21
|
+
assistant.signal_connect("cancel", &:destroy)
|
22
|
+
|
23
|
+
assistant.signal_connect("close", &:destroy)
|
24
|
+
|
25
|
+
assistant.signal_connect "apply" do |widget|
|
26
|
+
GLib::Timeout.add(100) do
|
27
|
+
fraction = progress_bar.fraction + 0.05
|
28
|
+
if fraction < 1.0
|
29
|
+
progress_bar.fraction = fraction
|
30
|
+
else
|
31
|
+
widget.destroy
|
32
|
+
GLib::Source::REMOVE
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
assistant.signal_connect "prepare" do |widget, _page|
|
38
|
+
current_page = widget.current_page
|
39
|
+
n_pages = widget.n_pages
|
40
|
+
|
41
|
+
widget.title = "Sample assistant (#{current_page + 1} of #{n_pages}"
|
42
|
+
|
43
|
+
widget.commit if current_page == 3
|
44
|
+
end
|
45
|
+
|
46
|
+
if !assistant.visible?
|
47
|
+
assistant.show_all
|
48
|
+
else
|
49
|
+
assistant.destroy
|
50
|
+
end
|
51
|
+
assistant
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.create_page1(assistant)
|
55
|
+
box = Gtk::Box.new(:horizontal, 12)
|
56
|
+
box.border_width = 12
|
57
|
+
|
58
|
+
label = Gtk::Label.new("You must fill out this entry to continue")
|
59
|
+
box.pack_start(label, :expand => true, :fill => true, :padding => 0)
|
60
|
+
|
61
|
+
entry = Gtk::Entry.new
|
62
|
+
entry.activates_default = true
|
63
|
+
box.pack_start(entry, :expand => true, :fill => true, :padding => 0)
|
64
|
+
|
65
|
+
entry.signal_connect "changed" do |widget|
|
66
|
+
page_number = assistant.current_page
|
67
|
+
current_page = assistant.get_nth_page(page_number)
|
68
|
+
|
69
|
+
if widget.text
|
70
|
+
assistant.set_page_complete(current_page, true)
|
71
|
+
else
|
72
|
+
assistant.set_page_complete(current_page, false)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
box.show_all
|
77
|
+
assistant.append_page(box)
|
78
|
+
assistant.set_page_title(box, "Page 1")
|
79
|
+
assistant.set_page_type(box, :intro)
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.create_page2(assistant)
|
83
|
+
box = Gtk::Box.new(:horizontal, 12)
|
84
|
+
box.border_width = 12
|
85
|
+
|
86
|
+
checkbutton = Gtk::CheckButton.new(<<-LABEL)
|
87
|
+
This is optional data, you may continue
|
88
|
+
even if you do not check this
|
89
|
+
LABEL
|
90
|
+
box.pack_start(checkbutton, :expand => false, :fill => false, :padding => 0)
|
91
|
+
|
92
|
+
box.show_all
|
93
|
+
assistant.append_page(box)
|
94
|
+
assistant.set_page_complete(box, true)
|
95
|
+
assistant.set_page_title(box, "Page 1")
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.create_page3(assistant)
|
99
|
+
label = Gtk::Label.new("This is a confirmation page, press 'Apply' to apply changes")
|
100
|
+
label.show
|
101
|
+
|
102
|
+
assistant.append_page(label)
|
103
|
+
assistant.set_page_type(label, :confirm)
|
104
|
+
assistant.set_page_complete(label, true)
|
105
|
+
assistant.set_page_title(label, "Confirmation")
|
106
|
+
end
|
107
|
+
|
108
|
+
def self.create_page4(assistant)
|
109
|
+
progress_bar = Gtk::ProgressBar.new
|
110
|
+
progress_bar.halign = :center
|
111
|
+
progress_bar.valign = :center
|
112
|
+
|
113
|
+
progress_bar.show
|
114
|
+
assistant.append_page(progress_bar)
|
115
|
+
assistant.set_page_type(progress_bar, :progress)
|
116
|
+
assistant.set_page_title(progress_bar, "Applying changes")
|
117
|
+
|
118
|
+
# This prevents the assistant window from being
|
119
|
+
# closed while we're "busy" applying changes.
|
120
|
+
assistant.set_page_complete(progress_bar, false)
|
121
|
+
progress_bar
|
122
|
+
end
|
123
|
+
end
|
data/sample/gtk-demo/builder.rb
CHANGED
@@ -1,51 +1,88 @@
|
|
1
|
-
# Copyright (c)
|
1
|
+
# Copyright (c) 2015 Ruby-GNOME2 Project Team
|
2
2
|
# This program is licenced under the same licence as Ruby-GNOME2.
|
3
3
|
#
|
4
4
|
=begin
|
5
|
-
=
|
5
|
+
= Builder
|
6
6
|
|
7
|
-
Demonstrates an interface loaded from a XML description.
|
7
|
+
Demonstrates an interface loaded from a XML description.
|
8
8
|
=end
|
9
|
+
module BuilderDemo
|
10
|
+
def self.run_demo(_main_window)
|
11
|
+
builder = Gtk::Builder.new(:resource => "/builder/demo.ui")
|
12
|
+
builder.connect_signals {}
|
9
13
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
label = Gtk::Label.new("Build an interface from XML description.")
|
20
|
-
else
|
21
|
-
label = Gtk::Label.new("You need GTK+ >= 2.12.0 to run this demo.")
|
22
|
-
end
|
23
|
-
add(label)
|
24
|
-
return unless available
|
25
|
-
|
26
|
-
@builder = Gtk::Builder.new
|
27
|
-
filename = File.join(File.dirname(__FILE__), "demo.ui")
|
28
|
-
@builder << filename
|
29
|
-
@builder.connect_signals {|name| method(name)}
|
30
|
-
@window = @builder["window1"]
|
31
|
-
@window.show_all
|
32
|
-
|
33
|
-
signal_connect("destroy") do
|
34
|
-
@window.destroy unless @window.destroyed?
|
35
|
-
end
|
14
|
+
window = builder["window1"]
|
15
|
+
toolbar = builder["toolbar1"]
|
16
|
+
toolbar.style_context.add_class("primary-toolbar")
|
17
|
+
|
18
|
+
actions = Gio::SimpleActionGroup.new
|
19
|
+
|
20
|
+
action = Gio::SimpleAction.new("quit")
|
21
|
+
action.signal_connect "activate" do |_simple_action, _parameter|
|
22
|
+
window.destroy
|
36
23
|
end
|
24
|
+
actions.add_action(action)
|
37
25
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
26
|
+
action = Gio::SimpleAction.new("about")
|
27
|
+
actions.add_action(action)
|
28
|
+
action.signal_connect "activate" do |_simple_action, _parameter|
|
29
|
+
about_dlg = builder["aboutdialog1"]
|
30
|
+
about_dlg.run
|
31
|
+
about_dlg.hide
|
42
32
|
end
|
43
33
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
34
|
+
action = Gio::SimpleAction.new("help")
|
35
|
+
actions.add_action(action)
|
36
|
+
action.signal_connect "activate" do |_simple_action, _parameter|
|
37
|
+
puts "Help not available"
|
48
38
|
end
|
39
|
+
|
40
|
+
window.insert_action_group("win", actions)
|
41
|
+
|
42
|
+
accel_group = Gtk::AccelGroup.new
|
43
|
+
window.add_accel_group(accel_group)
|
44
|
+
|
45
|
+
builder["new_item"].add_accelerator("activate", accel_group,
|
46
|
+
Gdk::Keyval::KEY_n,
|
47
|
+
Gdk::ModifierType::CONTROL_MASK,
|
48
|
+
Gtk::AccelFlags::VISIBLE)
|
49
|
+
builder["open_item"].add_accelerator("activate", accel_group,
|
50
|
+
Gdk::Keyval::KEY_o,
|
51
|
+
Gdk::ModifierType::CONTROL_MASK,
|
52
|
+
Gtk::AccelFlags::VISIBLE)
|
53
|
+
builder["save_item"].add_accelerator("activate", accel_group,
|
54
|
+
Gdk::Keyval::KEY_s,
|
55
|
+
Gdk::ModifierType::CONTROL_MASK,
|
56
|
+
Gtk::AccelFlags::VISIBLE)
|
57
|
+
builder["quit_item"].add_accelerator("activate", accel_group,
|
58
|
+
Gdk::Keyval::KEY_q,
|
59
|
+
Gdk::ModifierType::CONTROL_MASK,
|
60
|
+
Gtk::AccelFlags::VISIBLE)
|
61
|
+
builder["copy_item"].add_accelerator("activate", accel_group,
|
62
|
+
Gdk::Keyval::KEY_c,
|
63
|
+
Gdk::ModifierType::CONTROL_MASK,
|
64
|
+
Gtk::AccelFlags::VISIBLE)
|
65
|
+
builder["cut_item"].add_accelerator("activate", accel_group,
|
66
|
+
Gdk::Keyval::KEY_x,
|
67
|
+
Gdk::ModifierType::CONTROL_MASK,
|
68
|
+
Gtk::AccelFlags::VISIBLE)
|
69
|
+
builder["paste_item"].add_accelerator("activate", accel_group,
|
70
|
+
Gdk::Keyval::KEY_v,
|
71
|
+
Gdk::ModifierType::CONTROL_MASK,
|
72
|
+
Gtk::AccelFlags::VISIBLE)
|
73
|
+
builder["help_item"].add_accelerator("activate", accel_group,
|
74
|
+
Gdk::Keyval::KEY_F1,
|
75
|
+
0,
|
76
|
+
Gtk::AccelFlags::VISIBLE)
|
77
|
+
builder["about_item"].add_accelerator("activate", accel_group,
|
78
|
+
Gdk::Keyval::KEY_F7,
|
79
|
+
0,
|
80
|
+
Gtk::AccelFlags::VISIBLE)
|
81
|
+
if !window.visible?
|
82
|
+
window.show_all
|
83
|
+
else
|
84
|
+
window.destroy
|
85
|
+
end
|
86
|
+
window
|
49
87
|
end
|
50
88
|
end
|
51
|
-
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# Copyright (c) 2015 Ruby-GNOME2 Project Team
|
2
|
+
# This program is licenced under the same licence as Ruby-GNOME2.
|
3
|
+
#
|
4
|
+
=begin
|
5
|
+
= Button Boxes
|
6
|
+
|
7
|
+
The Button Box widgets are used to arrange buttons with padding.
|
8
|
+
=end
|
9
|
+
module ButtonBoxDemo
|
10
|
+
def self.run_demo(main_window)
|
11
|
+
window = Gtk::Window.new(:toplevel)
|
12
|
+
window.screen = main_window.screen
|
13
|
+
window.set_title("Button Boxes")
|
14
|
+
window.set_border_width(10)
|
15
|
+
|
16
|
+
main_vbox = Gtk::Box.new(:vertical, 0)
|
17
|
+
window.add(main_vbox)
|
18
|
+
|
19
|
+
frame_horz = Gtk::Frame.new("Horizontal Button Boxes")
|
20
|
+
main_vbox.pack_start(frame_horz, :expand => true, :fill => true, :padding => 10)
|
21
|
+
|
22
|
+
vbox = Gtk::Box.new(:vertical, 0)
|
23
|
+
vbox.set_border_width(10)
|
24
|
+
frame_horz.add(vbox)
|
25
|
+
|
26
|
+
bbox = create_bbox(true, "Spread", 40, :spread)
|
27
|
+
vbox.pack_start(bbox, :expand => true, :fill => true, :padding => 0)
|
28
|
+
|
29
|
+
bbox = create_bbox(true, "Edge", 40, :edge)
|
30
|
+
vbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
31
|
+
|
32
|
+
bbox = create_bbox(true, "Start", 40, :start)
|
33
|
+
vbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
34
|
+
|
35
|
+
bbox = create_bbox(true, "End", 40, :end)
|
36
|
+
vbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
37
|
+
|
38
|
+
bbox = create_bbox(true, "Center", 40, :center)
|
39
|
+
vbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
40
|
+
|
41
|
+
bbox = create_bbox(true, "Expand", 0, :expand)
|
42
|
+
vbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
43
|
+
|
44
|
+
frame_vert = Gtk::Frame.new("Vertical Button Boxes")
|
45
|
+
main_vbox.pack_start(frame_vert, :expand => true, :fill => true, :padding => 10)
|
46
|
+
|
47
|
+
hbox = Gtk::Box.new(:horizontal, 0)
|
48
|
+
hbox.set_border_width(10)
|
49
|
+
|
50
|
+
frame_vert.add(hbox)
|
51
|
+
|
52
|
+
bbox = create_bbox(false, "Spread", 10, :spread)
|
53
|
+
hbox.pack_start(bbox, :expand => true, :fill => true, :padding => 0)
|
54
|
+
|
55
|
+
bbox = create_bbox(false, "Edge", 10, :edge)
|
56
|
+
hbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
57
|
+
|
58
|
+
bbox = create_bbox(false, "Start", 10, :start)
|
59
|
+
hbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
60
|
+
|
61
|
+
bbox = create_bbox(false, "End", 10, :end)
|
62
|
+
hbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
63
|
+
|
64
|
+
bbox = create_bbox(false, "Center", 10, :center)
|
65
|
+
hbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
66
|
+
|
67
|
+
bbox = create_bbox(false, "Expand", 0, :expand)
|
68
|
+
hbox.pack_start(bbox, :expand => true, :fill => true, :padding => 5)
|
69
|
+
|
70
|
+
if !window.visible?
|
71
|
+
window.show_all
|
72
|
+
else
|
73
|
+
window.destroy
|
74
|
+
end
|
75
|
+
window
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.create_bbox(horizontal, title, spacing, layout)
|
79
|
+
frame = Gtk::Frame.new(title)
|
80
|
+
bbox = nil
|
81
|
+
|
82
|
+
if horizontal
|
83
|
+
bbox = Gtk::ButtonBox.new(:horizontal)
|
84
|
+
else
|
85
|
+
bbox = Gtk::ButtonBox.new(:vertical)
|
86
|
+
end
|
87
|
+
|
88
|
+
bbox.set_border_width(5)
|
89
|
+
frame.add(bbox)
|
90
|
+
bbox.set_layout(layout)
|
91
|
+
bbox.set_spacing(spacing)
|
92
|
+
|
93
|
+
%w(OK(_O) Cancel(_C) Help(_H)).each do |name|
|
94
|
+
button = Gtk::Button.new(:label => name, :use_underline => true)
|
95
|
+
bbox.add(button)
|
96
|
+
end
|
97
|
+
|
98
|
+
frame
|
99
|
+
end
|
100
|
+
end
|
data/sample/gtk-demo/colorsel.rb
CHANGED
@@ -1,82 +1,66 @@
|
|
1
|
-
# Copyright (c)
|
1
|
+
# Copyright (c) 2015 Ruby-GNOME2 Project Team
|
2
2
|
# This program is licenced under the same licence as Ruby-GNOME2.
|
3
3
|
#
|
4
|
-
# $Id: colorsel.rb,v 1.4 2005/02/12 23:02:43 kzys Exp $
|
5
4
|
=begin
|
6
|
-
= Color
|
5
|
+
= Color Chooser
|
7
6
|
|
8
|
-
|
9
|
-
|
7
|
+
A GtkColorChooser lets the user choose a color. There are several
|
8
|
+
implementations of the GtkColorChooser interface in GTK+. The
|
9
|
+
GtkColorChooserDialog is a prebuilt dialog containing a
|
10
|
+
GtkColorChooserWidget.
|
10
11
|
=end
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
module ColorselDemo
|
13
|
+
def self.run_demo(main_window)
|
14
|
+
color = Gdk::RGBA.new(0, 0, 1, 1)
|
15
|
+
|
16
|
+
window = Gtk::Window.new(:toplevel)
|
17
|
+
window.screen = main_window.screen
|
18
|
+
window.set_title("Color Chooser")
|
19
|
+
window.set_border_width(8)
|
20
|
+
|
21
|
+
vbox = Gtk::Box.new(:vertical, 8)
|
22
|
+
vbox.set_border_width(8)
|
23
|
+
window.add(vbox)
|
24
|
+
|
25
|
+
frame = Gtk::Frame.new
|
26
|
+
frame.set_shadow_type(:in)
|
27
|
+
vbox.pack_start(frame, :expand => true, :fill => true, :padding => 0)
|
28
|
+
|
29
|
+
da = Gtk::DrawingArea.new
|
30
|
+
da.signal_connect "draw" do |_widget, cr|
|
31
|
+
cr.set_source(color.to_a)
|
32
|
+
cr.paint
|
33
|
+
end
|
19
34
|
|
20
|
-
|
35
|
+
da.set_size_request(200, 200)
|
21
36
|
|
22
|
-
|
23
|
-
vbox.set_border_width(8)
|
24
|
-
add(vbox)
|
37
|
+
frame.add(da)
|
25
38
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
vbox.pack_start(@frame, :expand => true, :fill => true, :padding => 0)
|
39
|
+
button = Gtk::Button.new(:mnemonic => "_Change the above color")
|
40
|
+
button.set_halign(:end)
|
41
|
+
button.set_valign(:center)
|
30
42
|
|
31
|
-
|
43
|
+
vbox.pack_start(button, :expand => false, :fill => false, :padding => 0)
|
44
|
+
button.signal_connect "clicked" do |_widget|
|
45
|
+
dialog = Gtk::ColorChooserDialog.new(:title => "Changing Color",
|
46
|
+
:parent => window)
|
47
|
+
dialog.set_modal(true)
|
48
|
+
dialog.set_rgba(color)
|
32
49
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
event.set_source_rgba(background_color.to_a)
|
38
|
-
event.paint
|
39
|
-
end
|
50
|
+
dialog.signal_connect "response" do |widget, response_id|
|
51
|
+
color = widget.rgba if response_id == Gtk::ResponseType::OK
|
52
|
+
da.queue_draw # force da to use the new color now
|
53
|
+
widget.destroy
|
40
54
|
end
|
41
55
|
|
42
|
-
|
43
|
-
@da.set_size_request(200, 200)
|
44
|
-
# set the color
|
45
|
-
@da.override_background_color(:normal, @color)
|
46
|
-
|
47
|
-
@frame.add(@da)
|
48
|
-
|
49
|
-
alignment = Gtk::Alignment.new(1.0, 0.5, 0.0, 0.0)
|
50
|
-
|
51
|
-
button = Gtk::Button.new(:mnemonic => '_Change the above color')
|
52
|
-
alignment.add(button)
|
53
|
-
|
54
|
-
vbox.pack_start(alignment, :expand => false, :fill => false, :padding => 0)
|
55
|
-
|
56
|
-
button.signal_connect('clicked') do
|
57
|
-
change_color_callback
|
58
|
-
end
|
56
|
+
dialog.show_all
|
59
57
|
end
|
60
58
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
colorsel = dialog.color_selection
|
67
|
-
|
68
|
-
colorsel.set_previous_rgba(@color)
|
69
|
-
colorsel.set_current_rgba(@color)
|
70
|
-
colorsel.set_has_palette(true)
|
71
|
-
|
72
|
-
response = dialog.run
|
73
|
-
|
74
|
-
if response == Gtk::ResponseType::OK
|
75
|
-
@color = colorsel.current_rgba
|
76
|
-
@da.override_background_color(:normal, @color)
|
77
|
-
end
|
78
|
-
|
79
|
-
dialog.destroy
|
59
|
+
if !window.visible?
|
60
|
+
window.show_all
|
61
|
+
else
|
62
|
+
window.destroy
|
80
63
|
end
|
64
|
+
window
|
81
65
|
end
|
82
66
|
end
|