gtk3 3.0.7-x86-mingw32 → 3.0.8-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|