vr-corelib 0.0.36
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 +7 -0
- data/Demo.rb +41 -0
- data/doc/images/add.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/glade/Demo.glade +52 -0
- data/img/image-x-generic.png +0 -0
- data/lib/Dialog.rb +157 -0
- data/lib/GladeGUI.rb +358 -0
- data/lib/IconHash.rb +22 -0
- data/lib/SimpleComboBoxEntry.rb +14 -0
- data/lib/Thread.rb +59 -0
- data/lib/Widget.rb +37 -0
- data/lib/treeview/FileTreeView.rb +91 -0
- data/lib/treeview/IterMethods.rb +82 -0
- data/lib/treeview/ListView.rb +90 -0
- data/lib/treeview/ModelRow.rb +31 -0
- data/lib/treeview/TreeIter.rb +33 -0
- data/lib/treeview/TreeView.rb +43 -0
- data/lib/treeview/ViewCommon.rb +351 -0
- data/lib/treeview/columns/CalendarCol.rb +88 -0
- data/lib/treeview/columns/CellRendererCombo.rb +66 -0
- data/lib/treeview/columns/CellRendererDate.rb +45 -0
- data/lib/treeview/columns/CellRendererObject.rb +57 -0
- data/lib/treeview/columns/CellRendererPhone.rb +45 -0
- data/lib/treeview/columns/CellRendererPixbuf.rb +16 -0
- data/lib/treeview/columns/CellRendererProgress.rb +17 -0
- data/lib/treeview/columns/CellRendererSpin.rb +37 -0
- data/lib/treeview/columns/CellRendererText.rb +38 -0
- data/lib/treeview/columns/CellRendererToggle.rb +47 -0
- data/lib/treeview/columns/ComboCol.rb +43 -0
- data/lib/treeview/columns/CurrencyCol.rb +23 -0
- data/lib/treeview/columns/DateCol.rb +20 -0
- data/lib/treeview/columns/ImageCol.rb +30 -0
- data/lib/treeview/columns/ProgressCol.rb +27 -0
- data/lib/treeview/columns/SpinCol.rb +11 -0
- data/lib/treeview/columns/TextCol.rb +64 -0
- data/lib/treeview/columns/TreeViewColumn.rb +108 -0
- data/lib/treeview/columns/glade/CalendarCol.glade +133 -0
- data/lib/treeview/columns/glade/ImageCol.glade +16 -0
- data/lib/treeview/columns/glade/TextCol.glade +77 -0
- data/main.rb +3 -0
- data/vr-corelib.rb +7 -0
- data/vrlib.rb +7 -0
- metadata +138 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module VR
|
4
|
+
|
5
|
+
class DateCol
|
6
|
+
|
7
|
+
attr_accessor :date
|
8
|
+
|
9
|
+
def initialize(date, format = "%Y-%m-%d")
|
10
|
+
set_date(date, format)
|
11
|
+
end
|
12
|
+
|
13
|
+
def set_date(date, format = "%Y-%m-%d")
|
14
|
+
@date = date
|
15
|
+
# gsub!(self, @date.strftime(format))
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
module VR
|
3
|
+
|
4
|
+
class ImageCol #< Gdk::Pixbuf
|
5
|
+
|
6
|
+
include GladeGUI
|
7
|
+
|
8
|
+
def initialize(image)
|
9
|
+
# super(File.dirname(__FILE__) + "/../../../img/image-x-generic.png")
|
10
|
+
@image1 = image
|
11
|
+
end
|
12
|
+
|
13
|
+
def show()
|
14
|
+
load_glade(__FILE__)
|
15
|
+
set_glade_variables()
|
16
|
+
@builder["window1"].resize 500, 360
|
17
|
+
show_window()
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_s
|
21
|
+
"<Img>"
|
22
|
+
end
|
23
|
+
|
24
|
+
# def visual_attributes
|
25
|
+
# { :pixbuf => self }
|
26
|
+
# end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
# ==The VR Module hold all the classes of the vrlib gem. The most useful APIs are:
|
3
|
+
#
|
4
|
+
# ===GladeGUI -- loads glade form
|
5
|
+
# ===VR::ListView -- makes Gtk::TreeView easy!
|
6
|
+
# ===VR::Dialog -- Dialog boxes: Message Box, Ok Box, Folder selector etc.
|
7
|
+
|
8
|
+
module VR
|
9
|
+
|
10
|
+
# This class is simply a wrapper for an Integer. It signals VR::Listview's
|
11
|
+
# and VR::Treeviews constructor to make this column a progressbar using
|
12
|
+
# VR::CellRendererProgress. For example, whwn you create a VR::ListView,
|
13
|
+
# you can pass VR::Progress as a column type:
|
14
|
+
#
|
15
|
+
# @view = VR::ListView.new(String, VR::Progress, Gdk::Pixbif)
|
16
|
+
#
|
17
|
+
# This makes model_col #1 a progress bar. When you set the value of the column,
|
18
|
+
# provide an integer value from 0 to 100:
|
19
|
+
#
|
20
|
+
# @view.add_row("Hello World", 65, @pixbuf)
|
21
|
+
#
|
22
|
+
#
|
23
|
+
|
24
|
+
class ProgressCol < Integer
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
|
2
|
+
module VR
|
3
|
+
|
4
|
+
# The TextCol class is a simple text editor for editing strings of data:
|
5
|
+
#
|
6
|
+
# http://visualruby.net/img/textcol.jpg
|
7
|
+
#
|
8
|
+
# It is a very useful class when you want to display and edit long strings
|
9
|
+
# of data in a VR::ListView. To create a coulmn of long strings in a VR::ListView,
|
10
|
+
# simply define the column type as VR::TextCol:
|
11
|
+
#
|
12
|
+
# @view = VR::ListView.new(:name => String, :quote => VR::TextCol)
|
13
|
+
# row = @view.add_row
|
14
|
+
# row[:name] = "Eric"
|
15
|
+
# row[:quote] = VR::TextCol.new("I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. - Umberto Eco) ")
|
16
|
+
#
|
17
|
+
# The above listview will only display the first 20 characters of the quote, so
|
18
|
+
# it won't destroy the appearance of the listview. When a user clicks on the
|
19
|
+
# quote column, a window like the one above will appear.
|
20
|
+
#
|
21
|
+
# See the example project, "listview_objects" for more.
|
22
|
+
|
23
|
+
class TextCol
|
24
|
+
|
25
|
+
include GladeGUI
|
26
|
+
|
27
|
+
attr_accessor :text, :length_to_display
|
28
|
+
#
|
29
|
+
# - text - String value of the field
|
30
|
+
# - length_to_display - Integer number of characters to display in the listview. Default: 20
|
31
|
+
#
|
32
|
+
def initialize(text, length_to_display = 20)
|
33
|
+
@length_to_display = length_to_display
|
34
|
+
@text = text
|
35
|
+
end
|
36
|
+
|
37
|
+
def show()
|
38
|
+
load_glade(__FILE__)
|
39
|
+
set_glade_variables()
|
40
|
+
@builder["window1"].resize 650, 360
|
41
|
+
show_window()
|
42
|
+
end
|
43
|
+
|
44
|
+
# The to_s method outputs the string that is shown in the VR::ListView. By default
|
45
|
+
# it will display the first 20 characters of the string. If you
|
46
|
+
# want to change the number of characters it displays, change the
|
47
|
+
# value of the length_to_display variable.
|
48
|
+
|
49
|
+
def to_s
|
50
|
+
(@text.size > @length_to_display ? @text[0, @length_to_display - 4] + "..." : @text).gsub("\n"," ")
|
51
|
+
end
|
52
|
+
|
53
|
+
def buttonSave__clicked(*args) # :nodoc:
|
54
|
+
get_glade_variables()
|
55
|
+
destroy_window()
|
56
|
+
end
|
57
|
+
|
58
|
+
def <=>(text_col)
|
59
|
+
self.text <=> text_col.text
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
module VR
|
2
|
+
|
3
|
+
class TreeViewColumn < Gtk::TreeViewColumn
|
4
|
+
|
5
|
+
def initialize(view, model_col, sym, type)
|
6
|
+
super()
|
7
|
+
self.title = sym.to_s.gsub("_", " ").split(' ').map {|w| w.capitalize }.join(' ') # My Title
|
8
|
+
@view = view
|
9
|
+
self.resizable = true
|
10
|
+
cols = (type.is_a? Hash) ? type : {sym => type}
|
11
|
+
cols.each_pair do |symb, type|
|
12
|
+
a = [model_col, self, @view, symb]
|
13
|
+
if type == Gdk::Pixbuf
|
14
|
+
ren = VR::CellRendererPixbuf.new(*a)
|
15
|
+
self.pack_start( ren, false )
|
16
|
+
self.add_attribute( ren, :pixbuf, model_col)
|
17
|
+
elsif type == TrueClass
|
18
|
+
ren = VR::CellRendererToggle.new(*a)
|
19
|
+
self.pack_start( ren, false )
|
20
|
+
self.add_attribute( ren, :active, model_col)
|
21
|
+
elsif type == VR::SpinCol
|
22
|
+
ren = VR::CellRendererSpin.new(*a)
|
23
|
+
self.pack_start( ren, false )
|
24
|
+
self.add_attribute( ren, :adjustment, model_col)
|
25
|
+
self.set_cell_data_func(ren) do |col, renderer, model, iter|
|
26
|
+
fmt = "%.#{renderer.digits}f"
|
27
|
+
renderer.text = fmt % iter[renderer.model_col].value
|
28
|
+
end
|
29
|
+
elsif type == VR::ComboCol
|
30
|
+
r = VR::CellRendererCombo.new(*a)
|
31
|
+
self.pack_start( r, false )
|
32
|
+
self.set_cell_data_func(r) do |col, ren, model, iter|
|
33
|
+
ren.text = iter[ren.model_col].selected.to_s
|
34
|
+
end
|
35
|
+
elsif type == VR::ProgressCol
|
36
|
+
r = VR::CellRendererProgress.new(*a)
|
37
|
+
self.pack_start( r, false )
|
38
|
+
self.add_attribute( r, :value, model_col)
|
39
|
+
elsif type == DateTime
|
40
|
+
r = VR::CellRendererDate.new(*a)
|
41
|
+
self.pack_start( r, false )
|
42
|
+
self.set_cell_data_func(r) do |col, ren, model, iter|
|
43
|
+
ren.text = iter[ren.model_col].strftime(ren.date_format)
|
44
|
+
end
|
45
|
+
elsif type == String or type == Float or type == Integer or type == Fixnum
|
46
|
+
r = VR::CellRendererText.new(*a)
|
47
|
+
self.pack_start( r, false )
|
48
|
+
self.add_attribute( r, :text, model_col)
|
49
|
+
else #user defined object
|
50
|
+
r = VR::CellRendererObject.new(*a)
|
51
|
+
self.pack_start( r, false )
|
52
|
+
self.set_cell_data_func(r) do |col, ren, model, iter|
|
53
|
+
ren.render_object(iter)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
model_col = model_col + 1
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def width=(w) #pixels
|
61
|
+
self.sizing = Gtk::TreeViewColumn::FIXED
|
62
|
+
self.fixed_width = w
|
63
|
+
end
|
64
|
+
|
65
|
+
def sortable=(is_sortable)
|
66
|
+
self.sort_column_id = cell_renderers[0].model_col
|
67
|
+
self.clickable = is_sortable
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
#class VR::TreeViewColumn < Gtk::TreeViewColumn
|
74
|
+
|
75
|
+
# TYPES = {
|
76
|
+
# Gdk::Pixbuf => VR::CellRendererPixbuf,
|
77
|
+
# TrueClass => VR::CellRendererToggle,
|
78
|
+
# Gtk::Adjustment => VR::CellRendererSpin,
|
79
|
+
# VR::Combo => VR::CellRendererCombo,
|
80
|
+
# VR::Progress => VR::CellRendererProgress
|
81
|
+
# }
|
82
|
+
#
|
83
|
+
# ATTR = {
|
84
|
+
# VR::CellRendererPixbuf => "pixbuf",
|
85
|
+
# VR::CellRendererToggle => "active",
|
86
|
+
# VR::CellRendererSpin => "adjustment",
|
87
|
+
# VR::CellRendererText => "text",
|
88
|
+
# VR::CellRendererProgress => "value"
|
89
|
+
# }
|
90
|
+
|
91
|
+
|
92
|
+
# def initialize(view, model_col, *args)
|
93
|
+
# super()
|
94
|
+
# self.resizable = true
|
95
|
+
# args = args.flatten
|
96
|
+
# args.each do |type|
|
97
|
+
# t = TYPES.key?(type) ? TYPES[type] : VR::CellRendererText
|
98
|
+
# ren = t.new(model_col, view)
|
99
|
+
# self.pack_start( ren, false )
|
100
|
+
# self.add_attribute( ren, ATTR[t], model_col) if ATTR.key?(t)
|
101
|
+
# model_col = model_col + 1
|
102
|
+
# if t.is_a VR::Cell
|
103
|
+
# end
|
104
|
+
# end
|
105
|
+
#end
|
106
|
+
|
107
|
+
|
108
|
+
#end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<interface>
|
3
|
+
<requires lib="gtk+" version="2.16"/>
|
4
|
+
<!-- interface-naming-policy project-wide -->
|
5
|
+
<object class="GtkAdjustment" id="hour">
|
6
|
+
<property name="lower">1</property>
|
7
|
+
<property name="upper">12</property>
|
8
|
+
<property name="step_increment">1</property>
|
9
|
+
</object>
|
10
|
+
<object class="GtkAdjustment" id="minute">
|
11
|
+
<property name="upper">59</property>
|
12
|
+
<property name="step_increment">1</property>
|
13
|
+
</object>
|
14
|
+
<object class="GtkWindow" id="window1">
|
15
|
+
<property name="modal">True</property>
|
16
|
+
<property name="window_position">center-always</property>
|
17
|
+
<property name="decorated">False</property>
|
18
|
+
<signal name="destroy" handler="destroy_window"/>
|
19
|
+
<child>
|
20
|
+
<object class="GtkVBox" id="vbox2">
|
21
|
+
<property name="visible">True</property>
|
22
|
+
<child>
|
23
|
+
<object class="GtkCalendar" id="date">
|
24
|
+
<property name="visible">True</property>
|
25
|
+
<property name="can_focus">True</property>
|
26
|
+
<property name="year">2012</property>
|
27
|
+
<property name="month">2</property>
|
28
|
+
<property name="day">11</property>
|
29
|
+
</object>
|
30
|
+
<packing>
|
31
|
+
<property name="position">0</property>
|
32
|
+
</packing>
|
33
|
+
</child>
|
34
|
+
<child>
|
35
|
+
<object class="GtkHBox" id="hboxTime">
|
36
|
+
<property name="visible">True</property>
|
37
|
+
<child>
|
38
|
+
<object class="GtkSpinButton" id="spinbutton1">
|
39
|
+
<property name="visible">True</property>
|
40
|
+
<property name="can_focus">True</property>
|
41
|
+
<property name="invisible_char">•</property>
|
42
|
+
<property name="adjustment">hour</property>
|
43
|
+
<property name="climb_rate">1</property>
|
44
|
+
<property name="numeric">True</property>
|
45
|
+
</object>
|
46
|
+
<packing>
|
47
|
+
<property name="position">0</property>
|
48
|
+
</packing>
|
49
|
+
</child>
|
50
|
+
<child>
|
51
|
+
<object class="GtkSpinButton" id="spinbutton2">
|
52
|
+
<property name="visible">True</property>
|
53
|
+
<property name="can_focus">True</property>
|
54
|
+
<property name="invisible_char">•</property>
|
55
|
+
<property name="adjustment">minute</property>
|
56
|
+
<property name="numeric">True</property>
|
57
|
+
</object>
|
58
|
+
<packing>
|
59
|
+
<property name="padding">5</property>
|
60
|
+
<property name="position">1</property>
|
61
|
+
</packing>
|
62
|
+
</child>
|
63
|
+
<child>
|
64
|
+
<object class="GtkCheckButton" id="am">
|
65
|
+
<property name="label" translatable="yes">am</property>
|
66
|
+
<property name="visible">True</property>
|
67
|
+
<property name="can_focus">True</property>
|
68
|
+
<property name="receives_default">False</property>
|
69
|
+
<property name="draw_indicator">True</property>
|
70
|
+
</object>
|
71
|
+
<packing>
|
72
|
+
<property name="position">2</property>
|
73
|
+
</packing>
|
74
|
+
</child>
|
75
|
+
<child>
|
76
|
+
<object class="GtkCheckButton" id="pm">
|
77
|
+
<property name="label" translatable="yes">pm</property>
|
78
|
+
<property name="visible">True</property>
|
79
|
+
<property name="can_focus">True</property>
|
80
|
+
<property name="receives_default">False</property>
|
81
|
+
<property name="draw_indicator">True</property>
|
82
|
+
</object>
|
83
|
+
<packing>
|
84
|
+
<property name="position">3</property>
|
85
|
+
</packing>
|
86
|
+
</child>
|
87
|
+
</object>
|
88
|
+
<packing>
|
89
|
+
<property name="padding">5</property>
|
90
|
+
<property name="position">1</property>
|
91
|
+
</packing>
|
92
|
+
</child>
|
93
|
+
<child>
|
94
|
+
<object class="GtkHButtonBox" id="hbuttonbox1">
|
95
|
+
<property name="visible">True</property>
|
96
|
+
<property name="spacing">8</property>
|
97
|
+
<property name="layout_style">center</property>
|
98
|
+
<child>
|
99
|
+
<object class="GtkButton" id="buttonSave">
|
100
|
+
<property name="label" translatable="yes">Save</property>
|
101
|
+
<property name="visible">True</property>
|
102
|
+
<property name="can_focus">True</property>
|
103
|
+
<property name="receives_default">True</property>
|
104
|
+
</object>
|
105
|
+
<packing>
|
106
|
+
<property name="expand">False</property>
|
107
|
+
<property name="fill">False</property>
|
108
|
+
<property name="position">0</property>
|
109
|
+
</packing>
|
110
|
+
</child>
|
111
|
+
<child>
|
112
|
+
<object class="GtkButton" id="buttonCancel">
|
113
|
+
<property name="label" translatable="yes">Cancel</property>
|
114
|
+
<property name="visible">True</property>
|
115
|
+
<property name="can_focus">True</property>
|
116
|
+
<property name="receives_default">True</property>
|
117
|
+
</object>
|
118
|
+
<packing>
|
119
|
+
<property name="expand">False</property>
|
120
|
+
<property name="fill">False</property>
|
121
|
+
<property name="position">1</property>
|
122
|
+
</packing>
|
123
|
+
</child>
|
124
|
+
</object>
|
125
|
+
<packing>
|
126
|
+
<property name="padding">5</property>
|
127
|
+
<property name="position">2</property>
|
128
|
+
</packing>
|
129
|
+
</child>
|
130
|
+
</object>
|
131
|
+
</child>
|
132
|
+
</object>
|
133
|
+
</interface>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<interface>
|
3
|
+
<requires lib="gtk+" version="2.16"/>
|
4
|
+
<!-- interface-naming-policy project-wide -->
|
5
|
+
<object class="GtkWindow" id="window1">
|
6
|
+
<property name="visible">True</property>
|
7
|
+
<property name="modal">True</property>
|
8
|
+
<signal name="destroy" handler="destroy_window"/>
|
9
|
+
<child>
|
10
|
+
<object class="GtkImage" id="image1">
|
11
|
+
<property name="visible">True</property>
|
12
|
+
<property name="stock">gtk-missing-image</property>
|
13
|
+
</object>
|
14
|
+
</child>
|
15
|
+
</object>
|
16
|
+
</interface>
|
@@ -0,0 +1,77 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<interface>
|
3
|
+
<requires lib="gtk+" version="2.16"/>
|
4
|
+
<!-- interface-naming-policy project-wide -->
|
5
|
+
<object class="GtkWindow" id="window1">
|
6
|
+
<property name="title" translatable="yes">Edit Text</property>
|
7
|
+
<property name="modal">True</property>
|
8
|
+
<property name="window_position">center-always</property>
|
9
|
+
<property name="type_hint">menu</property>
|
10
|
+
<signal name="destroy" handler="destroy_window"/>
|
11
|
+
<child>
|
12
|
+
<object class="GtkHBox" id="hbox1">
|
13
|
+
<property name="visible">True</property>
|
14
|
+
<child>
|
15
|
+
<object class="GtkVBox" id="vbox1">
|
16
|
+
<property name="visible">True</property>
|
17
|
+
<child>
|
18
|
+
<object class="GtkTextView" id="text">
|
19
|
+
<property name="visible">True</property>
|
20
|
+
<property name="can_focus">True</property>
|
21
|
+
<property name="wrap_mode">word</property>
|
22
|
+
</object>
|
23
|
+
<packing>
|
24
|
+
<property name="padding">6</property>
|
25
|
+
<property name="position">0</property>
|
26
|
+
</packing>
|
27
|
+
</child>
|
28
|
+
<child>
|
29
|
+
<object class="GtkHButtonBox" id="hbuttonbox1">
|
30
|
+
<property name="visible">True</property>
|
31
|
+
<property name="spacing">7</property>
|
32
|
+
<property name="layout_style">end</property>
|
33
|
+
<child>
|
34
|
+
<object class="GtkButton" id="buttonSave">
|
35
|
+
<property name="label" translatable="yes">Save</property>
|
36
|
+
<property name="visible">True</property>
|
37
|
+
<property name="can_focus">True</property>
|
38
|
+
<property name="receives_default">True</property>
|
39
|
+
</object>
|
40
|
+
<packing>
|
41
|
+
<property name="expand">False</property>
|
42
|
+
<property name="fill">False</property>
|
43
|
+
<property name="position">0</property>
|
44
|
+
</packing>
|
45
|
+
</child>
|
46
|
+
<child>
|
47
|
+
<object class="GtkButton" id="buttonCancel">
|
48
|
+
<property name="label" translatable="yes">Cancel</property>
|
49
|
+
<property name="visible">True</property>
|
50
|
+
<property name="can_focus">True</property>
|
51
|
+
<property name="receives_default">True</property>
|
52
|
+
<signal name="clicked" handler="destroy_window"/>
|
53
|
+
</object>
|
54
|
+
<packing>
|
55
|
+
<property name="expand">False</property>
|
56
|
+
<property name="fill">False</property>
|
57
|
+
<property name="position">1</property>
|
58
|
+
</packing>
|
59
|
+
</child>
|
60
|
+
</object>
|
61
|
+
<packing>
|
62
|
+
<property name="expand">False</property>
|
63
|
+
<property name="fill">False</property>
|
64
|
+
<property name="padding">5</property>
|
65
|
+
<property name="position">1</property>
|
66
|
+
</packing>
|
67
|
+
</child>
|
68
|
+
</object>
|
69
|
+
<packing>
|
70
|
+
<property name="padding">7</property>
|
71
|
+
<property name="position">0</property>
|
72
|
+
</packing>
|
73
|
+
</child>
|
74
|
+
</object>
|
75
|
+
</child>
|
76
|
+
</object>
|
77
|
+
</interface>
|