vr-corelib 0.0.36
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|