gtk3 3.0.9-x86-mingw32 → 3.1.0-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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/ext/gtk3/rb-gtk3-private.h +1 -0
  3. data/ext/gtk3/rb-gtk3-spin-button.c +85 -0
  4. data/ext/gtk3/rb-gtk3.c +3 -0
  5. data/lib/2.2/gtk3.so +0 -0
  6. data/lib/2.3/gtk3.so +0 -0
  7. data/lib/gtk3/deprecated.rb +0 -8
  8. data/lib/gtk3/loader.rb +1 -7
  9. data/lib/gtk3/tree-model.rb +2 -0
  10. data/sample/gtk-demo/TODO +10 -10
  11. data/sample/gtk-demo/assistant.rb +44 -39
  12. data/sample/gtk-demo/builder.rb +71 -50
  13. data/sample/gtk-demo/button_box.rb +39 -28
  14. data/sample/gtk-demo/clipboard.rb +139 -46
  15. data/sample/gtk-demo/colorsel.rb +50 -36
  16. data/sample/gtk-demo/css_accordion.rb +18 -17
  17. data/sample/gtk-demo/css_basics.rb +60 -47
  18. data/sample/gtk-demo/css_multiplebgs.rb +92 -71
  19. data/sample/gtk-demo/css_pixbufs.rb +61 -48
  20. data/sample/gtk-demo/css_shadows.rb +63 -50
  21. data/sample/gtk-demo/cursors.rb +95 -64
  22. data/sample/gtk-demo/dialog.rb +95 -78
  23. data/sample/gtk-demo/drawingarea.rb +138 -171
  24. data/sample/gtk-demo/editable_cells.rb +169 -130
  25. data/sample/gtk-demo/entry_buffer.rb +15 -13
  26. data/sample/gtk-demo/entry_completion.rb +22 -17
  27. data/sample/gtk-demo/expander.rb +39 -31
  28. data/sample/gtk-demo/filtermodel.rb +67 -63
  29. data/sample/gtk-demo/font_features.rb +91 -60
  30. data/sample/gtk-demo/glarea.rb +277 -0
  31. data/sample/gtk-demo/headerbar.rb +17 -15
  32. data/sample/gtk-demo/hypertext.rb +146 -167
  33. data/sample/gtk-demo/iconview.rb +132 -91
  34. data/sample/gtk-demo/iconview_edit.rb +49 -38
  35. data/sample/gtk-demo/infobar.rb +81 -62
  36. data/sample/gtk-demo/links.rb +35 -30
  37. data/sample/gtk-demo/list_store.rb +169 -114
  38. data/sample/gtk-demo/listbox.rb +183 -0
  39. data/sample/gtk-demo/main.rb +32 -21
  40. data/sample/gtk-demo/markup.rb +65 -52
  41. data/sample/gtk-demo/menus.rb +57 -58
  42. data/sample/gtk-demo/modelbutton.rb +11 -9
  43. data/sample/gtk-demo/modelbutton.ui +3 -0
  44. data/sample/gtk-demo/overlay.rb +39 -32
  45. data/sample/gtk-demo/overlay2.rb +68 -54
  46. data/sample/gtk-demo/panes.rb +56 -68
  47. data/sample/gtk-demo/pickers.rb +46 -45
  48. data/sample/gtk-demo/pixbufs.rb +27 -25
  49. data/sample/gtk-demo/popover.rb +70 -63
  50. data/sample/gtk-demo/printing.rb +94 -69
  51. data/sample/gtk-demo/revealer.rb +46 -38
  52. data/sample/gtk-demo/rotated_text.rb +75 -54
  53. data/sample/gtk-demo/scale.rb +10 -8
  54. data/sample/gtk-demo/search_entry.rb +195 -0
  55. data/sample/gtk-demo/search_entry2.rb +71 -59
  56. data/sample/gtk-demo/sidebar.rb +20 -19
  57. data/sample/gtk-demo/sizegroup.rb +36 -35
  58. data/sample/gtk-demo/spinbutton.rb +128 -0
  59. data/sample/gtk-demo/spinner.rb +55 -40
  60. data/sample/gtk-demo/stack.rb +11 -8
  61. data/sample/gtk-demo/textmask.rb +14 -13
  62. data/sample/gtk-demo/textscroll.rb +16 -12
  63. data/sample/gtk-demo/theming_style_classes.rb +14 -12
  64. data/sample/gtk-demo/transparent.rb +17 -13
  65. data/sample/misc/treemodelfilter.rb +1 -1
  66. metadata +24 -19
@@ -66,6 +66,7 @@
66
66
  <object class="GtkModelButton">
67
67
  <property name="visible">1</property>
68
68
  <property name="action-name">win.color</property>
69
+ <property name="action-target">'red'</property>
69
70
  <property name="text">Red</property>
70
71
  <property name="inverted">1</property>
71
72
  </object>
@@ -74,6 +75,7 @@
74
75
  <object class="GtkModelButton">
75
76
  <property name="visible">1</property>
76
77
  <property name="action-name">win.color</property>
78
+ <property name="action-target">'green'</property>
77
79
  <property name="text">Green</property>
78
80
  <property name="inverted">1</property>
79
81
  </object>
@@ -82,6 +84,7 @@
82
84
  <object class="GtkModelButton">
83
85
  <property name="visible">1</property>
84
86
  <property name="action-name">win.color</property>
87
+ <property name="action-target">'blue'</property>
85
88
  <property name="text">Blue</property>
86
89
  <property name="inverted">1</property>
87
90
  </object>
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2015 Ruby-GNOME2 Project Team
1
+ # Copyright (c) 2015-2016 Ruby-GNOME2 Project Team
2
2
  # This program is licenced under the same licence as Ruby-GNOME2.
3
3
  #
4
4
  =begin
@@ -10,52 +10,59 @@ The overlayed widgets can be interactive controls such
10
10
  as the entry in this example, or just decorative, like
11
11
  the big blue label.
12
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
13
+ class OverlayDemo
14
+ def initialize(main_window)
15
+ @window = Gtk::Window.new(:toplevel)
16
+ @window.set_default_size(500, 510)
17
+ @window.title = "Interactive Overlay"
18
+ @window.screen = main_window.screen
19
19
 
20
20
  overlay = Gtk::Overlay.new
21
- grid = Gtk::Grid.new
22
- overlay.add(grid)
21
+ initialize_grid
22
+ overlay.add(@grid)
23
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
24
+ @entry = Gtk::Entry.new
25
+ @entry.placeholder_text = "Your Lucky Number"
38
26
 
39
27
  vbox = Gtk::Box.new(:vertical, 10)
40
28
  overlay.add_overlay(vbox)
41
29
  overlay.set_overlay_pass_through(vbox, true)
42
- vbox.set_halign(:center)
43
- vbox.set_valign(:center)
30
+ vbox.halign = :center
31
+ vbox.valign = :center
44
32
 
45
33
  label = Gtk::Label.new("<span foreground='blue' weight='ultrabold' font='40'>Numbers</span>")
46
- label.set_use_markup(true)
34
+ label.use_markup = true
47
35
  vbox.pack_start(label, :expand => false, :fill => false, :padding => 8)
48
36
 
49
- entry.set_placeholder_text("Your Lucky Number")
50
- vbox.pack_start(entry, :expand => false, :fill => false, :padding => 8)
37
+ vbox.pack_start(@entry, :expand => false, :fill => false, :padding => 8)
51
38
 
52
- window.add(overlay)
39
+ @window.add(overlay)
53
40
  overlay.show_all
41
+ end
54
42
 
55
- if !window.visible?
56
- window.show_all
43
+ def run
44
+ if !@window.visible?
45
+ @window.show_all
57
46
  else
58
- window.destroy
47
+ @window.destroy
48
+ end
49
+ end
50
+
51
+ private
52
+
53
+ def initialize_grid
54
+ @grid = Gtk::Grid.new
55
+ (0..4).each do |i|
56
+ (0..4).each do |j|
57
+ text = (5 * j + i).to_s
58
+ button = Gtk::Button.new(:label => text)
59
+ button.hexpand = true
60
+ button.vexpand = true
61
+ button.signal_connect "clicked" do |widget|
62
+ @entry.text = widget.label
63
+ end
64
+ @grid.attach(button, i, j, 1, 1)
65
+ end
59
66
  end
60
67
  end
61
68
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2015 Ruby-GNOME2 Project Team
1
+ # Copyright (c) 2015-2016 Ruby-GNOME2 Project Team
2
2
  # This program is licenced under the same licence as Ruby-GNOME2.
3
3
  #
4
4
  =begin
@@ -7,69 +7,83 @@
7
7
  Another example of an overlay with some decorative
8
8
  and some interactive controls.
9
9
  =end
10
- module Overlay2Demo
11
- def self.run_demo(_main_window)
12
- window = Gtk::Window.new(:toplevel)
13
- window.set_default_size(500, 510)
14
- window.set_title("Decorative Overlay")
10
+ class Overlay2Demo
11
+ def initialize(_main_window)
12
+ @window = Gtk::Window.new(:toplevel)
13
+ @window.set_default_size(500, 510)
14
+ @window.title = "Decorative Overlay"
15
15
 
16
- overlay = Gtk::Overlay.new
16
+ @overlay = Gtk::Overlay.new
17
17
 
18
18
  sw = Gtk::ScrolledWindow.new
19
19
  sw.set_policy(:automatic, :automatic)
20
20
 
21
- text = Gtk::TextView.new
22
- buffer = text.buffer
23
- buffer.text = "Dear Diary..."
21
+ initialize_textview
24
22
 
25
- tag = buffer.create_tag("top-margin", "pixels-above-lines" => 0)
23
+ @window.add(@overlay)
24
+ @overlay.add(sw)
25
+ sw.add(@text)
26
26
 
27
- word_end = buffer.start_iter
28
- word_end.forward_word_end
29
- buffer.apply_tag(tag, buffer.start_iter, word_end)
30
-
31
- window.add(overlay)
32
- overlay.add(sw)
33
- sw.add(text)
34
-
35
- image = Gtk::Image.new(:resource => "/overlay2/decor1.png")
36
- overlay.add_overlay(image)
37
- overlay.set_overlay_pass_through(image, true)
38
- image.set_halign(:start)
39
- image.set_valign(:start)
40
-
41
- image = Gtk::Image.new(:resource => "/overlay2/decor2.png")
42
- overlay.add_overlay(image)
43
- overlay.set_overlay_pass_through(image, true)
44
- image.set_halign(:end)
45
- image.set_valign(:end)
46
-
47
- adjustment = Gtk::Adjustment.new(0, 0, 100, 1, 1, 0)
48
- adjustment.signal_connect "value-changed" do |widget|
27
+ generate_image_in_overlay("/overlay2/decor1.png", :start)
28
+ generate_image_in_overlay("/overlay2/decor2.png", :end)
29
+
30
+ generate_adjustment
31
+ generate_scale_in_overlay
32
+
33
+ @overlay.show_all
34
+ end
35
+
36
+ def run
37
+ if !@window.visible?
38
+ @window.show_all
39
+ else
40
+ @window.destroy
41
+ end
42
+ @window
43
+ end
44
+
45
+ private
46
+
47
+ def generate_image_in_overlay(resource, position)
48
+ image = Gtk::Image.new(:resource => resource)
49
+ @overlay.add_overlay(image)
50
+ @overlay.set_overlay_pass_through(image, true)
51
+ image.halign = position
52
+ image.valign = position
53
+ end
54
+
55
+ def generate_adjustment
56
+ @adjustment = Gtk::Adjustment.new(0, 0, 100, 1, 1, 0)
57
+ @adjustment.signal_connect "value-changed" do |widget|
49
58
  value = widget.value
50
- text.set_left_margin(value)
51
- tag.set_property("pixels-above-lines", value)
59
+ @text.set_left_margin(value)
60
+ @tag.set_property("pixels-above-lines", value)
52
61
  end
62
+ @adjustment.value = 100
63
+ end
53
64
 
54
- scale = Gtk::Scale.new(:horizontal, adjustment)
55
- scale.set_draw_value(false)
65
+ def generate_scale_in_overlay
66
+ scale = Gtk::Scale.new(:horizontal, @adjustment)
67
+ scale.draw_value = false
56
68
  scale.set_size_request(120, -1)
57
- scale.set_margin_start(20)
58
- scale.set_margin_end(20)
59
- scale.set_margin_bottom(20)
60
- overlay.add_overlay(scale)
61
- scale.set_halign(:start)
62
- scale.set_valign(:end)
63
- scale.set_tooltip_text("Margin")
64
-
65
- adjustment.value = 100
66
- overlay.show_all
67
-
68
- if !window.visible?
69
- window.show_all
70
- else
71
- window.destroy
72
- end
73
- window
69
+ scale.margin_start = 20
70
+ scale.margin_end = 20
71
+ scale.margin_bottom = 20
72
+ @overlay.add_overlay(scale)
73
+ scale.halign = :start
74
+ scale.valign = :end
75
+ scale.tooltip_text = "Margin"
76
+ end
77
+
78
+ def initialize_textview
79
+ @text = Gtk::TextView.new
80
+ buffer = @text.buffer
81
+ buffer.text = "Dear Diary..."
82
+
83
+ @tag = buffer.create_tag("top-margin", "pixels-above-lines" => 0)
84
+
85
+ word_end = buffer.start_iter
86
+ word_end.forward_word_end
87
+ buffer.apply_tag(@tag, buffer.start_iter, word_end)
74
88
  end
75
89
  end
@@ -14,27 +14,27 @@
14
14
  widget, and allows you to adjust the options for each side of
15
15
  each widget.
16
16
  =end
17
- module PanesDemo
18
- def self.run_demo(main_window)
19
- window = Gtk::Window.new(:toplevel)
20
- window.screen = main_window.screen
21
- window.title = "Paned Widgets"
22
- window.border_width = 0
17
+ class PanesDemo
18
+ def initialize(main_window)
19
+ @window = Gtk::Window.new(:toplevel)
20
+ @window.screen = main_window.screen
21
+ @window.title = "Paned Widgets"
22
+ @window.border_width = 0
23
23
 
24
24
  vbox = Gtk::Box.new(:vertical, 0)
25
- window.add(vbox)
25
+ @window.add(vbox)
26
26
 
27
27
  vpaned = Gtk::Paned.new(:vertical)
28
28
  vbox.pack_start(vpaned, :expand => true, :fill => true, :padding => 0)
29
29
  vpaned.border_width = 5
30
30
 
31
- hpaned = Gtk::Paned.new(:horizontal)
32
- vpaned.add1(hpaned)
31
+ @hpaned = Gtk::Paned.new(:horizontal)
32
+ vpaned.add1(@hpaned)
33
33
 
34
34
  frame = Gtk::Frame.new
35
35
  frame.shadow_type = :in
36
36
  frame.set_size_request(60, 60)
37
- hpaned.add1(frame)
37
+ @hpaned.add1(frame)
38
38
 
39
39
  button = Gtk::Button.new(:label => "_Hi there", :use_underline => true)
40
40
  frame.add(button)
@@ -42,7 +42,7 @@ module PanesDemo
42
42
  frame = Gtk::Frame.new
43
43
  frame.shadow_type = :in
44
44
  frame.set_size_request(80, 60)
45
- hpaned.add2(frame)
45
+ @hpaned.add2(frame)
46
46
 
47
47
  frame = Gtk::Frame.new
48
48
  frame.shadow_type = :in
@@ -50,88 +50,76 @@ module PanesDemo
50
50
  vpaned.add2(frame)
51
51
 
52
52
  # Now create toggle buttons to control sizing
53
- buttons = create_pane_options(hpaned,
54
- "Horizontal",
53
+ buttons = create_pane_options("Horizontal",
55
54
  "Left",
56
55
  "Right")
57
56
  vbox.pack_start(buttons, :expand => false, :fill => false, :padding => 0)
58
- buttons = create_pane_options(hpaned,
59
- "Vertical",
57
+ buttons = create_pane_options("Vertical",
60
58
  "Top",
61
59
  "Bottom")
62
60
  vbox.pack_start(buttons, :expand => false, :fill => false, :padding => 0)
63
61
  vbox.show_all
62
+ end
64
63
 
65
- if !window.visible?
66
- window.show_all
64
+ def run
65
+ if !@window.visible?
66
+ @window.show_all
67
67
  else
68
- window.destroy
68
+ @window.destroy
69
69
  end
70
- window
70
+ @window
71
71
  end
72
72
 
73
- def self.create_pane_options(paned, frame_label, label1, label2)
74
- child1 = paned.child1
75
- child2 = paned.child2
73
+ private
76
74
 
75
+ def create_pane_options(frame_label, label1, label2)
76
+ child1 = @hpaned.child1
77
+ child2 = @hpaned.child2
77
78
  frame = Gtk::Frame.new(frame_label)
78
79
  frame.border_width = 4
79
80
 
80
- table = Gtk::Grid.new
81
- frame.add(table)
81
+ @table = Gtk::Grid.new
82
+ frame.add(@table)
82
83
 
83
84
  label = Gtk::Label.new(label1)
84
- table.attach(label, 0, 0, 1, 1)
85
-
86
- check_button = Gtk::CheckButton.new("_Resize")
87
- check_button.use_underline = true
88
- table.attach(check_button, 0, 1, 1, 1)
89
- check_button.signal_connect "toggled" do
90
- resize = paned.child_get_property(child1, "resize")
91
- shrink = paned.child_get_property(child1, "shrink")
92
-
93
- paned.remove(child1)
94
- paned.pack1(child1, :resize => !resize, :shrink => shrink)
95
- end
96
-
97
- check_button = Gtk::CheckButton.new("_Shrink")
98
- check_button.use_underline = true
99
- table.attach(check_button, 0, 2, 1, 1)
100
- check_button.active = true
101
- check_button.signal_connect "toggled" do
102
- resize = paned.child_get_property(child1, "resize")
103
- shrink = paned.child_get_property(child1, "shrink")
85
+ @table.attach(label, 0, 0, 1, 1)
104
86
 
105
- paned.remove(child1)
106
- paned.pack1(child1, :resize => resize, :shrink => !shrink)
107
- end
87
+ check_button(:resize, false, child1, 0, 1)
88
+ check_button(:shrink, true, child1, 0, 2)
108
89
 
109
90
  label = Gtk::Label.new(label2)
110
- table.attach(label, 1, 0, 1, 1)
91
+ @table.attach(label, 1, 0, 1, 1)
111
92
 
112
- check_button = Gtk::CheckButton.new("_Resize")
113
- check_button.use_underline = true
114
- table.attach(check_button, 1, 1, 1, 1)
115
- check_button.active = true
116
- check_button.signal_connect "toggled" do
117
- resize = paned.child_get_property(child2, "resize")
118
- shrink = paned.child_get_property(child2, "shrink")
119
-
120
- paned.remove(child2)
121
- paned.pack2(child2, :resize => !resize, :shrink => shrink)
122
- end
93
+ check_button(:resize, true, child2, 1, 1)
94
+ check_button(:shrink, true, child2, 1, 2)
95
+ frame
96
+ end
123
97
 
124
- check_button = Gtk::CheckButton.new("_Shrink")
98
+ def check_button(type, active, child, xposition, yposition)
99
+ is_resize = (type == :resize)
100
+ label = is_resize ? "_Resize" : "_Shrink"
101
+ check_button = Gtk::CheckButton.new(label)
125
102
  check_button.use_underline = true
126
- table.attach(check_button, 1, 2, 1, 1)
127
- check_button.active = true
103
+ check_button.active = active
104
+ @table.attach(check_button, xposition, yposition, 1, 1)
128
105
  check_button.signal_connect "toggled" do
129
- resize = paned.child_get_property(child2, "resize")
130
- shrink = paned.child_get_property(child2, "shrink")
131
-
132
- paned.remove(child2)
133
- paned.pack2(child2, :resize => resize, :shrink => !shrink)
106
+ is_child1 = (@hpaned.child1 == child)
107
+
108
+ resize = @hpaned.child_get_property(child, "resize")
109
+ shrink = @hpaned.child_get_property(child, "shrink")
110
+
111
+ if is_resize
112
+ resize = !resize
113
+ else
114
+ shrink = !shrink
115
+ end
116
+
117
+ @hpaned.remove(child)
118
+ if is_child1
119
+ @hpaned.pack1(child, :resize => resize, :shrink => shrink)
120
+ else
121
+ @hpaned.pack2(child, :resize => resize, :shrink => shrink)
122
+ end
134
123
  end
135
- frame
136
124
  end
137
125
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2015 Ruby-GNOME2 Project Team
1
+ # Copyright (c) 2015-2016 Ruby-GNOME2 Project Team
2
2
  # This program is licenced under the same licence as Ruby-GNOME2.
3
3
  #
4
4
  =begin
@@ -7,64 +7,65 @@
7
7
  These widgets are mainly intended for use in preference dialogs.
8
8
  They allow to select colors, fonts, files, directories and applications.
9
9
  =end
10
- module PickersDemo
11
- def self.run_demo(main_window)
12
- window = Gtk::Window.new(:toplevel)
13
- window.screen = main_window.screen
14
- window.set_title("Pickers")
15
- window.set_border_width(10)
10
+ class PickersDemo
11
+ def initialize(main_window)
12
+ @window = Gtk::Window.new(:toplevel)
13
+ @window.screen = main_window.screen
14
+ @window.title = "Pickers"
15
+ @window.border_width = 10
16
16
 
17
- table = Gtk::Grid.new
18
- table.set_row_spacing(3)
19
- table.set_column_spacing(10)
20
- window.add(table)
17
+ initialize_grid
21
18
 
22
- label = Gtk::Label.new("Color:")
23
- label.set_halign(:start)
24
- label.set_valign(:center)
25
- label.set_hexpand(true)
19
+ label = generate_label("Color:")
26
20
  picker = Gtk::ColorButton.new
27
- table.attach(label, 0, 0, 1, 1)
28
- table.attach(picker, 1, 0, 1, 1)
21
+ @table.attach(label, 0, 0, 1, 1)
22
+ @table.attach(picker, 1, 0, 1, 1)
29
23
 
30
- label = Gtk::Label.new("Font:")
31
- label.set_halign(:start)
32
- label.set_valign(:center)
33
- label.set_hexpand(true)
24
+ label = generate_label("Font:")
34
25
  picker = Gtk::FontButton.new
35
- table.attach(label, 0, 1, 1, 1)
36
- table.attach(picker, 1, 1, 1, 1)
26
+ @table.attach(label, 0, 1, 1, 1)
27
+ @table.attach(picker, 1, 1, 1, 1)
37
28
 
38
- label = Gtk::Label.new("File:")
39
- label.set_halign(:start)
40
- label.set_valign(:center)
41
- label.set_hexpand(true)
29
+ label = generate_label("File:")
42
30
  picker = Gtk::FileChooserButton.new("Pick a file", :open)
43
- table.attach(label, 0, 2, 1, 1)
44
- table.attach(picker, 1, 2, 1, 1)
31
+ @table.attach(label, 0, 2, 1, 1)
32
+ @table.attach(picker, 1, 2, 1, 1)
45
33
 
46
- label = Gtk::Label.new("Folder:")
47
- label.set_halign(:start)
48
- label.set_valign(:center)
49
- label.set_hexpand(true)
34
+ label = generate_label("Folder:")
50
35
  picker = Gtk::FileChooserButton.new("Pick a folder", :select_folder)
51
- table.attach(label, 0, 3, 1, 1)
52
- table.attach(picker, 1, 3, 1, 1)
36
+ @table.attach(label, 0, 3, 1, 1)
37
+ @table.attach(picker, 1, 3, 1, 1)
53
38
 
54
- label = Gtk::Label.new("Mail:")
55
- label.set_halign(:start)
56
- label.set_valign(:center)
57
- label.set_hexpand(true)
39
+ label = generate_label("Mail:")
58
40
  picker = Gtk::AppChooserButton.new("x-scheme-handler/mailto")
59
41
  picker.set_show_dialog_item(true)
60
- table.attach(label, 0, 4, 1, 1)
61
- table.attach(picker, 1, 4, 1, 1)
42
+ @table.attach(label, 0, 4, 1, 1)
43
+ @table.attach(picker, 1, 4, 1, 1)
44
+ end
62
45
 
63
- if !window.visible?
64
- window.show_all
46
+ def run
47
+ if !@window.visible?
48
+ @window.show_all
65
49
  else
66
- window.destroy
50
+ @window.destroy
67
51
  end
68
- window
52
+ @window
53
+ end
54
+
55
+ private
56
+
57
+ def initialize_grid
58
+ @table = Gtk::Grid.new
59
+ @table.row_spacing = 3
60
+ @table.column_spacing = 10
61
+ @window.add(@table)
62
+ end
63
+
64
+ def generate_label(label)
65
+ label = Gtk::Label.new(label)
66
+ label.set_halign(:start)
67
+ label.set_valign(:center)
68
+ label.set_hexpand(true)
69
+ label
69
70
  end
70
71
  end