Added inheritance to plugin dialogs
svn: r824
This commit is contained in:
parent
67376646d1
commit
2781bba5d2
@ -86,20 +86,21 @@ STATUS = "s"
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# ReportPlugins interface class
|
||||
# PluginDialog interface class
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class ReportPlugins:
|
||||
class PluginDialog:
|
||||
"""Displays the dialog box that allows the user to select the
|
||||
report that is desired."""
|
||||
|
||||
def __init__(self,db,active):
|
||||
def __init__(self,db,active,list,msg):
|
||||
"""Display the dialog box, and build up the list of available
|
||||
reports. This is used to build the selection tree on the left
|
||||
hand side of the dailog box."""
|
||||
|
||||
self.db = db
|
||||
self.active = active
|
||||
self.update = None
|
||||
|
||||
self.dialog = libglade.GladeXML(const.pluginsFile,"report")
|
||||
self.dialog.signal_autoconnect({
|
||||
@ -109,42 +110,103 @@ class ReportPlugins:
|
||||
})
|
||||
|
||||
tree = self.dialog.get_widget("tree")
|
||||
self.top = self.dialog.get_widget("report")
|
||||
self.img = self.dialog.get_widget("image")
|
||||
self.description = self.dialog.get_widget("description")
|
||||
self.status = self.dialog.get_widget("report_status")
|
||||
self.label = self.dialog.get_widget("report_label")
|
||||
self.title = self.dialog.get_widget("title")
|
||||
|
||||
self.run_tool = None
|
||||
build_tree(tree,_reports,self.on_node_selected)
|
||||
self.build_tree(tree,list)
|
||||
self.title.set_text(msg)
|
||||
self.top.set_title("%s - GRAMPS" % msg)
|
||||
|
||||
def on_apply_clicked(self,obj):
|
||||
"""Execute the selected report"""
|
||||
|
||||
Utils.destroy_passed_object(obj)
|
||||
if self.run_tool:
|
||||
self.run_tool(self.db,self.active)
|
||||
if self.update:
|
||||
self.run_tool(self.db,self.active,self.update)
|
||||
else:
|
||||
self.run_tool(self.db,self.active)
|
||||
|
||||
def on_node_selected(self,obj):
|
||||
"""Updates the informational display on the right hand side of
|
||||
the dialog box with the description of the selected report"""
|
||||
|
||||
doc = obj.get_data(DOCSTRING)
|
||||
xpm = obj.get_data(IMAGE)
|
||||
status = ": %s" % obj.get_data(STATUS)
|
||||
title = obj.get_data(TITLE)
|
||||
img = self.dialog.get_widget("image")
|
||||
|
||||
self.dialog.get_widget("description").set_text(doc)
|
||||
self.dialog.get_widget("report_status").set_text(status)
|
||||
self.dialog.get_widget("report_label").show()
|
||||
|
||||
(task,cat,title,doc,xpm,status) = obj.get_data(TASK)
|
||||
|
||||
i,m = gtk.create_pixmap_from_xpm_d(gtk.GtkWindow(),None,xpm)
|
||||
img.set(i,m)
|
||||
|
||||
self.description.set_text(doc)
|
||||
self.status.set_text(": %s" % status)
|
||||
self.label.show()
|
||||
self.img.set(i,m)
|
||||
self.title.set_text(title)
|
||||
|
||||
self.dialog.get_widget("title").set_text(title)
|
||||
self.run_tool = obj.get_data(TASK)
|
||||
self.run_tool = task
|
||||
|
||||
def build_tree(self,tree,list):
|
||||
"""Populates a GtkTree with each menu item assocated with a entry
|
||||
in the lists. The list must consist of a tuples with the following
|
||||
format:
|
||||
|
||||
(task_to_call, category of report, report name, description, image, status)
|
||||
|
||||
Items in the same category are grouped under the same submen. The
|
||||
task_to_call is bound to the 'select' callback of the menu entry."""
|
||||
|
||||
# build the tree items and group together based on the category name
|
||||
item_hash = {}
|
||||
for report in list:
|
||||
item = gtk.GtkTreeItem(report[2])
|
||||
item.connect("select",self.on_node_selected)
|
||||
item.set_data(TASK,report)
|
||||
|
||||
if item_hash.has_key(report[1]):
|
||||
item_hash[report[1]].append(item)
|
||||
else:
|
||||
item_hash[report[1]] = [item]
|
||||
|
||||
# add a submenu for each category, and populate it with the GtkTreeItems
|
||||
# that are associated with it.
|
||||
key_list = item_hash.keys()
|
||||
key_list.sort()
|
||||
for key in key_list:
|
||||
top_item = gtk.GtkTreeItem(key)
|
||||
top_item.show()
|
||||
tree.append(top_item)
|
||||
subtree = gtk.GtkTree()
|
||||
subtree.show()
|
||||
top_item.set_subtree(subtree)
|
||||
subtree.show()
|
||||
for item in item_hash[key]:
|
||||
item.show()
|
||||
subtree.append(item)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# ReportPlugins interface class
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class ReportPlugins(PluginDialog):
|
||||
"""Displays the dialog box that allows the user to select the
|
||||
report that is desired."""
|
||||
|
||||
def __init__(self,db,active):
|
||||
"""Display the dialog box, and build up the list of available
|
||||
reports. This is used to build the selection tree on the left
|
||||
hand side of the dailog box."""
|
||||
PluginDialog.__init__(self,db,active,_reports,_("Report Selection"))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# ToolPlugins interface class
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class ToolPlugins:
|
||||
class ToolPlugins(PluginDialog):
|
||||
"""Displays the dialog box that allows the user to select the tool
|
||||
that is desired."""
|
||||
|
||||
@ -153,39 +215,8 @@ class ToolPlugins:
|
||||
reports. This is used to build the selection tree on the left
|
||||
hand side of the dailog box."""
|
||||
|
||||
self.db = db
|
||||
self.active = active
|
||||
PluginDialog.__init__(self,db,active,_tools,_("Tool Selection"))
|
||||
self.update = update
|
||||
|
||||
self.dialog = libglade.GladeXML(const.pluginsFile,"pluginsel")
|
||||
self.dialog.signal_autoconnect({
|
||||
"on_apply_clicked" : self.on_apply_clicked,
|
||||
"on_ok_clicked" : self.on_apply_clicked,
|
||||
"destroy_passed_object" : Utils.destroy_passed_object
|
||||
})
|
||||
|
||||
tree = self.dialog.get_widget("tree")
|
||||
self.run_tool = None
|
||||
build_tree(tree,_tools,self.on_node_selected)
|
||||
|
||||
def on_apply_clicked(self,obj):
|
||||
"""Execute the selected tool."""
|
||||
|
||||
Utils.destroy_passed_object(obj)
|
||||
if self.run_tool:
|
||||
self.run_tool(self.db,self.active,self.update)
|
||||
|
||||
def on_node_selected(self,obj):
|
||||
"""Updates the informational display on the right hand side of
|
||||
the dialog box with the description of the selected tool."""
|
||||
|
||||
doc = obj.get_data(DOCSTRING)
|
||||
title = obj.get_data(TITLE)
|
||||
|
||||
self.dialog.get_widget("description").set_text(doc)
|
||||
self.dialog.get_widget("title").set_text(title)
|
||||
self.run_tool = obj.get_data(TASK)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -198,7 +229,7 @@ class PluginStatus:
|
||||
def __init__(self):
|
||||
import cStringIO
|
||||
|
||||
self.glade = libglade.GladeXML(const.plugfile,"plugstat")
|
||||
self.glade = libglade.GladeXML(const.pluginsFile,"plugstat")
|
||||
self.top = self.glade.get_widget("plugstat")
|
||||
window = self.glade.get_widget("text")
|
||||
|
||||
@ -219,52 +250,6 @@ class PluginStatus:
|
||||
self.top.run_and_close()
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# build_tree
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def build_tree(tree,list,task):
|
||||
"""Populates a GtkTree with each menu item assocated with a entry
|
||||
in the lists. The list must consist of a tuples with the following
|
||||
format:
|
||||
|
||||
(task_to_call, category of report, report name, description, image, status)
|
||||
|
||||
Items in the same category are grouped under the same submen. The
|
||||
task_to_call is bound to the 'select' callback of the menu entry."""
|
||||
|
||||
# build the tree items and group together based on the category name
|
||||
item_hash = {}
|
||||
for report in list:
|
||||
item = gtk.GtkTreeItem(report[2])
|
||||
item.connect("select",task)
|
||||
item.set_data(TASK,report[0])
|
||||
item.set_data(TITLE,report[2])
|
||||
item.set_data(DOCSTRING,report[3])
|
||||
item.set_data(IMAGE,report[4])
|
||||
item.set_data(STATUS,report[5])
|
||||
|
||||
if item_hash.has_key(report[1]):
|
||||
item_hash[report[1]].append(item)
|
||||
else:
|
||||
item_hash[report[1]] = [item]
|
||||
|
||||
# add a submenu for each category, and populate it with the GtkTreeItems
|
||||
# that are associated with it.
|
||||
key_list = item_hash.keys()
|
||||
key_list.sort()
|
||||
for key in key_list:
|
||||
top_item = gtk.GtkTreeItem(key)
|
||||
top_item.show()
|
||||
tree.append(top_item)
|
||||
subtree = gtk.GtkTree()
|
||||
subtree.show()
|
||||
top_item.set_subtree(subtree)
|
||||
subtree.show()
|
||||
for item in item_hash[key]:
|
||||
item.show()
|
||||
subtree.append(item)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -73,7 +73,6 @@ srcselFile = "%s/srcsel.glade" % rootDir
|
||||
findFile = "%s/find.glade" % rootDir
|
||||
mergeFile = "%s/mergedata.glade" % rootDir
|
||||
traceFile = "%s/trace.glade" % rootDir
|
||||
plugfile = "%s/plugstat.glade" % rootDir
|
||||
pluginsDir = "%s/plugins" % rootDir
|
||||
docgenDir = "%s/docgen" % rootDir
|
||||
filtersDir = "%s/filters" % rootDir
|
||||
|
@ -12,222 +12,6 @@
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>pluginsel</name>
|
||||
<title>Tool Selection - GRAMPS</title>
|
||||
<type>GTK_WINDOW_DIALOG</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>True</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
<auto_close>False</auto_close>
|
||||
<hide_on_close>False</hide_on_close>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDialog:vbox</child_name>
|
||||
<name>vbox33</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>4</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<child_name>GnomeDialog:action_area</child_name>
|
||||
<name>hbuttonbox20</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>8</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
<pack>GTK_PACK_END</pack>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button101</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_ok_clicked</handler>
|
||||
<object>pluginsel</object>
|
||||
<last_modification_time>Sun, 11 Mar 2001 22:54:53 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button102</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_apply_clicked</handler>
|
||||
<object>pluginsel</object>
|
||||
<last_modification_time>Sun, 11 Mar 2001 22:54:34 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button103</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>destroy_passed_object</handler>
|
||||
<object>pluginsel</object>
|
||||
<last_modification_time>Sun, 11 Mar 2001 22:54:19 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHPaned</class>
|
||||
<name>hpaned1</name>
|
||||
<handle_size>10</handle_size>
|
||||
<gutter_size>6</gutter_size>
|
||||
<position>0</position>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkTree</class>
|
||||
<name>tree</name>
|
||||
<border_width>5</border_width>
|
||||
<width>250</width>
|
||||
<height>300</height>
|
||||
<selection_mode>GTK_SELECTION_SINGLE</selection_mode>
|
||||
<view_mode>GTK_TREE_VIEW_ITEM</view_mode>
|
||||
<view_line>True</view_line>
|
||||
<child>
|
||||
<shrink>False</shrink>
|
||||
<resize>True</resize>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox34</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<shrink>True</shrink>
|
||||
<resize>True</resize>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>20</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkPixmap</class>
|
||||
<name>image</name>
|
||||
<filename>gramps.xpm</filename>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<build_insensitive>True</build_insensitive>
|
||||
<child>
|
||||
<padding>10</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>title</name>
|
||||
<label>Tool Selection</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>10</xpad>
|
||||
<ypad>10</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator18</name>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>pluginTitle</name>
|
||||
<label></label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>10</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>description</name>
|
||||
<width>300</width>
|
||||
<label>Select a tool from those available on the left.</label>
|
||||
<justify>GTK_JUSTIFY_LEFT</justify>
|
||||
<wrap>True</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0</yalign>
|
||||
<xpad>10</xpad>
|
||||
<ypad>20</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>report</name>
|
||||
@ -491,4 +275,71 @@
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>plugstat</name>
|
||||
<title>Plugin Status - GRAMPS</title>
|
||||
<type>GTK_WINDOW_DIALOG</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>True</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
<auto_close>False</auto_close>
|
||||
<hide_on_close>False</hide_on_close>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDialog:vbox</child_name>
|
||||
<name>vbox37</name>
|
||||
<width>450</width>
|
||||
<height>350</height>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>8</spacing>
|
||||
<child>
|
||||
<padding>4</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<child_name>GnomeDialog:action_area</child_name>
|
||||
<name>hbuttonbox22</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>8</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
<pack>GTK_PACK_END</pack>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button107</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeLess</class>
|
||||
<name>text</name>
|
||||
<width>450</width>
|
||||
<height>350</height>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
||||
|
@ -1,82 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>Project1</name>
|
||||
<program_name>project1</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory>pixmaps</pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>plugstat</name>
|
||||
<title>Plugin Status - GRAMPS</title>
|
||||
<type>GTK_WINDOW_DIALOG</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>True</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
<auto_close>False</auto_close>
|
||||
<hide_on_close>False</hide_on_close>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDialog:vbox</child_name>
|
||||
<name>dialog-vbox1</name>
|
||||
<width>450</width>
|
||||
<height>350</height>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>8</spacing>
|
||||
<child>
|
||||
<padding>4</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<child_name>GnomeDialog:action_area</child_name>
|
||||
<name>dialog-action_area1</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>8</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
<pack>GTK_PACK_END</pack>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button3</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeLess</class>
|
||||
<name>text</name>
|
||||
<width>450</width>
|
||||
<height>350</height>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
Loading…
Reference in New Issue
Block a user