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
data/sample/gtk-demo/main.ui
CHANGED
@@ -18,14 +18,14 @@
|
|
18
18
|
</menu>
|
19
19
|
<object class="GtkTreeStore" id="treestore">
|
20
20
|
<columns>
|
21
|
-
<!-- column-name NAME
|
22
|
-
<column type="gchararray"/>
|
21
|
+
<!-- column-name NAME
|
22
|
+
<column type="gchararray"/> -->
|
23
23
|
<!-- column-name TITLE -->
|
24
24
|
<column type="gchararray"/>
|
25
25
|
<!-- column-name FILENAME -->
|
26
26
|
<column type="gchararray"/>
|
27
|
-
<!-- column-name FUNC
|
28
|
-
<column type="gpointer"/>
|
27
|
+
<!-- column-name FUNC
|
28
|
+
<column type="gpointer"/> -->
|
29
29
|
<!-- column-name STYLE -->
|
30
30
|
<column type="gint"/>
|
31
31
|
</columns>
|
@@ -87,13 +87,13 @@
|
|
87
87
|
</object>
|
88
88
|
</child>
|
89
89
|
<child>
|
90
|
-
<object class="GtkTreeViewColumn" id="
|
90
|
+
<object class="GtkTreeViewColumn" id="treeviewcolumn0">
|
91
91
|
<property name="title" translatable="yes">column</property>
|
92
92
|
<child>
|
93
|
-
<object class="GtkCellRendererText" id="
|
93
|
+
<object class="GtkCellRendererText" id="cellrenderertext0"/>
|
94
94
|
<attributes>
|
95
|
-
<attribute name="style">
|
96
|
-
<attribute name="text">
|
95
|
+
<attribute name="style">2</attribute>
|
96
|
+
<attribute name="text">0</attribute>
|
97
97
|
</attributes>
|
98
98
|
</child>
|
99
99
|
</object>
|
@@ -112,7 +112,7 @@
|
|
112
112
|
<property name="enable_popup">1</property>
|
113
113
|
<property name="show_border">0</property>
|
114
114
|
<child>
|
115
|
-
<object class="GtkScrolledWindow" id="
|
115
|
+
<object class="GtkScrolledWindow" id="info-scrolledwindow">
|
116
116
|
<property name="visible">1</property>
|
117
117
|
<property name="can_focus">1</property>
|
118
118
|
<child>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (c) 2015 Ruby-GNOME2 Project Team
|
2
|
+
# This program is licenced under the same licence as Ruby-GNOME2.
|
3
|
+
#
|
4
|
+
=begin
|
5
|
+
= Text View/Markup
|
6
|
+
|
7
|
+
Gtk::TextBuffer lets you define your own tags that can influence
|
8
|
+
text formatting in a variety of ways. In this example, we show
|
9
|
+
that Gtk::TextBuffer can load Pango markup and automatically generate
|
10
|
+
suitable tags.
|
11
|
+
|
12
|
+
=end
|
13
|
+
module MarkupDemo
|
14
|
+
|
15
|
+
def self.run_demo(main_window)
|
16
|
+
window = Gtk::Window.new(:toplevel)
|
17
|
+
window.screen = main_window.screen
|
18
|
+
window.set_default_size(450, 450)
|
19
|
+
|
20
|
+
window.set_title("Markup")
|
21
|
+
|
22
|
+
view = Gtk::TextView.new
|
23
|
+
view.set_wrap_mode(:word)
|
24
|
+
view.set_left_margin(10)
|
25
|
+
view.set_right_margin(10)
|
26
|
+
|
27
|
+
sw = Gtk::ScrolledWindow.new(nil, nil)
|
28
|
+
sw.set_policy(:never, :automatic)
|
29
|
+
|
30
|
+
window.add(sw)
|
31
|
+
sw.add(view)
|
32
|
+
|
33
|
+
markup = Gio::Resources.lookup_data("/markup/markup.txt", 0)
|
34
|
+
|
35
|
+
buffer = view.buffer
|
36
|
+
buffer.insert_markup(buffer.start_iter, markup, -1)
|
37
|
+
|
38
|
+
sw.show_all
|
39
|
+
|
40
|
+
if !window.visible?
|
41
|
+
window.show_all
|
42
|
+
else
|
43
|
+
window.destroy
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/sample/gtk-demo/menus.rb
CHANGED
@@ -1,172 +1,121 @@
|
|
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: menus.rb,v 1.4 2005/02/12 23:02:43 kzys Exp $
|
5
4
|
=begin
|
6
|
-
=
|
7
|
-
|
8
|
-
There are several widgets involved in displaying menus. The
|
9
|
-
|
10
|
-
at the top of an application
|
11
|
-
that pops up. Both
|
12
|
-
|
13
|
-
(
|
14
|
-
be selected by the user.
|
15
|
-
|
16
|
-
There are several kinds of menu item, including plain
|
17
|
-
|
18
|
-
which is a check menu item that's in a mutually exclusive group,
|
19
|
-
|
20
|
-
which allows a
|
21
|
-
can place a
|
22
|
-
|
23
|
-
A
|
24
|
-
up when the menu item is selected. Typically, all menu items in a menu bar
|
25
|
-
have submenus.
|
26
|
-
|
27
|
-
The Gtk::OptionMenu widget is a button that pops up a Gtk::Menu when clicked.
|
28
|
-
It's used inside dialogs and such.
|
29
|
-
|
30
|
-
Gtk::ItemFactory provides a higher-level interface for creating menu bars
|
31
|
-
and menus; while you can construct menus manually, most people don't
|
32
|
-
do that. There's a separate demo for Gtk::ItemFactory.
|
5
|
+
= Menus
|
6
|
+
|
7
|
+
There are several widgets involved in displaying menus. The
|
8
|
+
GtkMenuBar widget is a menu bar, which normally appears horizontally
|
9
|
+
at the top of an application, but can also be layed out vertically.
|
10
|
+
The GtkMenu widget is the actual menu that pops up. Both GtkMenuBar
|
11
|
+
and GtkMenu are subclasses of GtkMenuShell; a GtkMenuShell contains
|
12
|
+
menu items (GtkMenuItem). Each menu item contains text and/or images
|
13
|
+
and can be selected by the user.
|
14
|
+
|
15
|
+
There are several kinds of menu item, including plain GtkMenuItem,
|
16
|
+
GtkCheckMenuItem which can be checked/unchecked, GtkRadioMenuItem
|
17
|
+
which is a check menu item that's in a mutually exclusive group,
|
18
|
+
GtkSeparatorMenuItem which is a separator bar, GtkTearoffMenuItem
|
19
|
+
which allows a GtkMenu to be torn off, and GtkImageMenuItem which
|
20
|
+
can place a GtkImage or other widget next to the menu text.
|
21
|
+
|
22
|
+
A GtkMenuItem can have a submenu, which is simply a GtkMenu to pop
|
23
|
+
up when the menu item is selected. Typically, all menu items in a menu bar
|
24
|
+
have submenus.
|
33
25
|
=end
|
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
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
Gtk::ACCEL_VISIBLE)
|
90
|
-
menuitem = Gtk::CheckMenuItem.new('Accelerator Locked')
|
91
|
-
menu.append(menuitem)
|
92
|
-
menuitem.show
|
93
|
-
menuitem.add_accelerator('activate',
|
94
|
-
accel_group,
|
95
|
-
Gdk::Keyval::KEY_F2,
|
96
|
-
0,
|
97
|
-
Gtk::ACCEL_VISIBLE | Gtk::ACCEL_LOCKED)
|
98
|
-
menuitem = Gtk::CheckMenuItem.new('Accelerators Frozen')
|
99
|
-
menu.append(menuitem)
|
100
|
-
menuitem.show
|
101
|
-
menuitem.add_accelerator('activate',
|
102
|
-
accel_group,
|
103
|
-
Gdk::Keyval::KEY_F2,
|
104
|
-
0,
|
105
|
-
Gtk::ACCEL_VISIBLE)
|
106
|
-
menuitem.add_accelerator('activate',
|
107
|
-
accel_group,
|
108
|
-
Gdk::Keyval::KEY_F3,
|
109
|
-
0,
|
110
|
-
Gtk::ACCEL_VISIBLE)
|
111
|
-
|
112
|
-
optionmenu = Gtk::OptionMenu.new
|
113
|
-
optionmenu.menu = menu
|
114
|
-
optionmenu.history = 3
|
115
|
-
box2.pack_start(optionmenu, :expand => true, :fill => true, :padding => 0)
|
116
|
-
optionmenu.show
|
117
|
-
|
118
|
-
separator = Gtk::HSeparator.new
|
119
|
-
box1.pack_start(separator, :expand => false, :fill => true, :padding => 0)
|
120
|
-
separator.show
|
121
|
-
|
122
|
-
box2 = Gtk::VBox.new(false, 10)
|
123
|
-
box2.border_width = 10
|
124
|
-
box1.pack_start(box2, :expand => false, :fill => true, :padding => 0)
|
125
|
-
box2.show
|
126
|
-
|
127
|
-
button = Gtk::Button.new('close')
|
128
|
-
button.signal_connect('clicked') do
|
129
|
-
quit
|
26
|
+
module MenusDemo
|
27
|
+
def self.run_demo(main_window)
|
28
|
+
window = Gtk::Window.new(:toplevel)
|
29
|
+
window.screen = main_window.screen
|
30
|
+
window.title = "Menus"
|
31
|
+
|
32
|
+
accel_group = Gtk::AccelGroup.new
|
33
|
+
window.add_accel_group(accel_group)
|
34
|
+
window.border_width = 0
|
35
|
+
|
36
|
+
box = Gtk::Box.new(:horizontal, 0)
|
37
|
+
window.add(box)
|
38
|
+
box.show
|
39
|
+
|
40
|
+
box1 = Gtk::Box.new(:horizontal, 0)
|
41
|
+
box.add(box1)
|
42
|
+
box1.show
|
43
|
+
|
44
|
+
menubar = Gtk::MenuBar.new
|
45
|
+
menubar.expand = true
|
46
|
+
box1.pack_start(menubar, :expand => false, :fill => true, :padding => 0)
|
47
|
+
menubar.show
|
48
|
+
|
49
|
+
menu = create_menu(2)
|
50
|
+
|
51
|
+
menuitem = Gtk::MenuItem.new(:label => "test\nline2")
|
52
|
+
menuitem.submenu = menu
|
53
|
+
menubar.append(menuitem)
|
54
|
+
menuitem.show
|
55
|
+
|
56
|
+
menuitem = Gtk::MenuItem.new(:label => "foo")
|
57
|
+
menuitem.submenu = create_menu(3)
|
58
|
+
menubar.append(menuitem)
|
59
|
+
menuitem.show
|
60
|
+
|
61
|
+
menuitem = Gtk::MenuItem.new(:label => "bar")
|
62
|
+
menuitem.submenu = create_menu(4)
|
63
|
+
menubar.append(menuitem)
|
64
|
+
menuitem.show
|
65
|
+
|
66
|
+
box2 = Gtk::Box.new(:vertical, 10)
|
67
|
+
box2.border_width = 10
|
68
|
+
box1.pack_start(box2, :expand => false, :fill => true, :padding => 0)
|
69
|
+
box2.show
|
70
|
+
|
71
|
+
button = Gtk::Button.new(:label => "Flip")
|
72
|
+
button.signal_connect("clicked") do |_widget|
|
73
|
+
parent = menubar.parent
|
74
|
+
orientation = parent.orientation.to_i
|
75
|
+
parent.orientation = 1 - orientation
|
76
|
+
|
77
|
+
if orientation == Gtk::Orientation::VERTICAL
|
78
|
+
menubar.set_property("pack-direction", Gtk::PackDirection::TTB)
|
79
|
+
else
|
80
|
+
menubar.set_property("pack-direction", Gtk::PackDirection::LTR)
|
130
81
|
end
|
131
|
-
box2.pack_start(button, :expand => true, :fill => true, :padding => 0)
|
132
|
-
button.flags = Gtk::Widget::CAN_DEFAULT
|
133
|
-
button.grab_default
|
134
|
-
button.show
|
135
82
|
end
|
83
|
+
box2.pack_start(button, :expand => true, :fill => true, :padding => 0)
|
84
|
+
button.show
|
85
|
+
button = Gtk::Button.new(:label => "Close")
|
86
|
+
button.signal_connect("clicked") do |_widget|
|
87
|
+
window.destroy
|
88
|
+
end
|
89
|
+
box2.pack_start(button, :expand => true, :fill => true, :padding => 0)
|
90
|
+
button.can_default = true
|
91
|
+
button.grab_default
|
92
|
+
button.show
|
93
|
+
|
94
|
+
if !window.visible?
|
95
|
+
window.show_all
|
96
|
+
else
|
97
|
+
window.destroy
|
98
|
+
end
|
99
|
+
window
|
100
|
+
end
|
136
101
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
if
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
5.times do |i|
|
153
|
-
buf = sprintf('item %2d - %d', depth, i + 1)
|
154
|
-
menuitem = Gtk::RadioMenuItem.new(buf)
|
155
|
-
group = menuitem.group
|
156
|
-
|
157
|
-
menu.append(menuitem)
|
158
|
-
menuitem.show
|
159
|
-
if i == 3
|
160
|
-
menuitem.sensitive = false
|
161
|
-
end
|
162
|
-
|
163
|
-
if submenu = create_menu(depth - 1, true)
|
164
|
-
menuitem.submenu = submenu
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
menu.show
|
169
|
-
return menu
|
102
|
+
def self.create_menu(depth)
|
103
|
+
return nil if depth < 1
|
104
|
+
|
105
|
+
menu = Gtk::Menu.new
|
106
|
+
last_item = nil
|
107
|
+
(0..5).each do |i|
|
108
|
+
j = i + 1
|
109
|
+
label = "item #{depth} - #{j}"
|
110
|
+
menu_item = Gtk::RadioMenuItem.new(nil, label)
|
111
|
+
menu_item.join_group(last_item) if last_item
|
112
|
+
last_item = menu_item
|
113
|
+
menu.append(menu_item)
|
114
|
+
menu_item.show
|
115
|
+
menu_item.sensitive = false if i == 3
|
116
|
+
menu_item.submenu = create_menu(depth - 1)
|
170
117
|
end
|
118
|
+
|
119
|
+
menu
|
171
120
|
end
|
172
121
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# Copyright (c) 2008-2015 Ruby-GNOME2 Project Team
|
2
|
+
# This program is licenced under the same licence as Ruby-GNOME2.
|
3
|
+
#
|
4
|
+
=begin
|
5
|
+
= Model Button
|
6
|
+
|
7
|
+
GtkModelButton is a button widget that is designed to be used with
|
8
|
+
a GAction as model. The button will adjust its appearance according
|
9
|
+
to the kind of action it is connected to.
|
10
|
+
|
11
|
+
It is also possible to use GtkModelButton without a GAction. In this
|
12
|
+
case, you should set the "role" attribute yourself, and connect to the
|
13
|
+
"clicked" signal as you would for any other button.
|
14
|
+
|
15
|
+
A common use of GtkModelButton is to implement menu-like content
|
16
|
+
in popovers.
|
17
|
+
=end
|
18
|
+
module ModelbuttonDemo
|
19
|
+
def self.run_demo(main_window)
|
20
|
+
builder = Gtk::Builder.new(:resource => "/modelbutton/modelbutton.ui")
|
21
|
+
|
22
|
+
builder.connect_signals do |name|
|
23
|
+
if name == "tool_clicked"
|
24
|
+
proc do |button|
|
25
|
+
button.active = !button.active?
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
window = builder["window1"]
|
30
|
+
window.screen = main_window.screen
|
31
|
+
actions = Gio::SimpleActionGroup.new
|
32
|
+
actions.add_actions([
|
33
|
+
{ :name => "color", :parameter_type => "s", :state => "'red'" },
|
34
|
+
{ :name => "chocolate", :state => "true" },
|
35
|
+
{ :name => "vanilla", :state => "false" },
|
36
|
+
{ :name => "sprinkles" }
|
37
|
+
])
|
38
|
+
|
39
|
+
window.insert_action_group("win", actions)
|
40
|
+
|
41
|
+
if !window.visible?
|
42
|
+
window.show_all
|
43
|
+
else
|
44
|
+
window.destroy
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# Copyright (c) 2015 Ruby-GNOME2 Project Team
|
2
|
+
# This program is licenced under the same licence as Ruby-GNOME2.
|
3
|
+
#
|
4
|
+
=begin
|
5
|
+
= Overlay/Interactive Overlay
|
6
|
+
|
7
|
+
Shows widgets in static positions over a main widget.
|
8
|
+
|
9
|
+
The overlayed widgets can be interactive controls such
|
10
|
+
as the entry in this example, or just decorative, like
|
11
|
+
the big blue label.
|
12
|
+
=end
|
13
|
+
module OverlayDemo
|
14
|
+
def self.run_demo(main_window)
|
15
|
+
window = Gtk::Window.new(:toplevel)
|
16
|
+
window.set_default_size(500, 510)
|
17
|
+
window.set_title("Interactive Overlay")
|
18
|
+
window.screen = main_window.screen
|
19
|
+
|
20
|
+
overlay = Gtk::Overlay.new
|
21
|
+
grid = Gtk::Grid.new
|
22
|
+
overlay.add(grid)
|
23
|
+
|
24
|
+
entry = Gtk::Entry.new
|
25
|
+
|
26
|
+
(0..4).each do |i|
|
27
|
+
(0..4).each do |j|
|
28
|
+
text = "#{5 * j + i}"
|
29
|
+
button = Gtk::Button.new(:label => text)
|
30
|
+
button.set_hexpand(true)
|
31
|
+
button.set_vexpand(true)
|
32
|
+
button.signal_connect "clicked" do |widget|
|
33
|
+
entry.text = widget.label
|
34
|
+
end
|
35
|
+
grid.attach(button, i, j, 1, 1)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
vbox = Gtk::Box.new(:vertical, 10)
|
40
|
+
overlay.add_overlay(vbox)
|
41
|
+
overlay.set_overlay_pass_through(vbox, true)
|
42
|
+
vbox.set_halign(:center)
|
43
|
+
vbox.set_valign(:center)
|
44
|
+
|
45
|
+
label = Gtk::Label.new("<span foreground='blue' weight='ultrabold' font='40'>Numbers</span>")
|
46
|
+
label.set_use_markup(true)
|
47
|
+
vbox.pack_start(label, :expand => false, :fill => false, :padding => 8)
|
48
|
+
|
49
|
+
entry.set_placeholder_text("Your Lucky Number")
|
50
|
+
vbox.pack_start(entry, :expand => false, :fill => false, :padding => 8)
|
51
|
+
|
52
|
+
window.add(overlay)
|
53
|
+
overlay.show_all
|
54
|
+
|
55
|
+
if !window.visible?
|
56
|
+
window.show_all
|
57
|
+
else
|
58
|
+
window.destroy
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|