2006-06-01 Don Allingham <don@gramps-project.org>
* configure.in: add FilterEditor subdir * src/DataViews/_PersonView.py: call filter editor with 'Person' argument * src/FilterEditor/_FilterEditor.py: get functional again * src/glade/rule.glade: clean up ui a bit * src/Filters/_FilterList.py: fix logical condition * src/Filters/_GenericFilter.py: fix inversion svn: r6840
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
2006-06-01 Don Allingham <don@gramps-project.org>
|
||||||
|
* configure.in: add FilterEditor subdir
|
||||||
|
* src/DataViews/_PersonView.py: call filter editor with 'Person'
|
||||||
|
argument
|
||||||
|
* src/FilterEditor/_FilterEditor.py: get functional again
|
||||||
|
* src/glade/rule.glade: clean up ui a bit
|
||||||
|
* src/Filters/_FilterList.py: fix logical condition
|
||||||
|
* src/Filters/_GenericFilter.py: fix inversion
|
||||||
|
|
||||||
2006-05-31 Brian Matherly <brian@gramps-project.org>
|
2006-05-31 Brian Matherly <brian@gramps-project.org>
|
||||||
* src/plugins/vaious: upgrade to new report interface
|
* src/plugins/vaious: upgrade to new report interface
|
||||||
|
|
||||||
|
@ -193,6 +193,7 @@ src/const.py
|
|||||||
src/Makefile
|
src/Makefile
|
||||||
src/RelLib/Makefile
|
src/RelLib/Makefile
|
||||||
src/Config/Makefile
|
src/Config/Makefile
|
||||||
|
src/FilterEditor/Makefile
|
||||||
src/Mime/Makefile
|
src/Mime/Makefile
|
||||||
src/DisplayTabs/Makefile
|
src/DisplayTabs/Makefile
|
||||||
src/DisplayModels/Makefile
|
src/DisplayModels/Makefile
|
||||||
|
@ -206,6 +206,7 @@ class PersonView(PageView.PersonNavView):
|
|||||||
from FilterEditor import FilterEditor
|
from FilterEditor import FilterEditor
|
||||||
|
|
||||||
FilterEditor(
|
FilterEditor(
|
||||||
|
'Person',
|
||||||
const.custom_filters,
|
const.custom_filters,
|
||||||
self.dbstate.db,
|
self.dbstate.db,
|
||||||
self.uistate)
|
self.uistate)
|
||||||
|
@ -282,7 +282,6 @@ class MySelect(gtk.ComboBoxEntry):
|
|||||||
class MyListSelect(gtk.ComboBox):
|
class MyListSelect(gtk.ComboBox):
|
||||||
|
|
||||||
def __init__(self,data_list):
|
def __init__(self,data_list):
|
||||||
print data_list
|
|
||||||
gtk.ComboBox.__init__(self)
|
gtk.ComboBox.__init__(self)
|
||||||
store = gtk.ListStore(str)
|
store = gtk.ListStore(str)
|
||||||
self.set_model(store)
|
self.set_model(store)
|
||||||
@ -324,13 +323,14 @@ class MyEntry(gtk.Entry):
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class FilterEditor(ManagedWindow.ManagedWindow):
|
class FilterEditor(ManagedWindow.ManagedWindow):
|
||||||
def __init__(self, filterdb, db, uistate):
|
def __init__(self, space, filterdb, db, uistate):
|
||||||
|
|
||||||
ManagedWindow.ManagedWindow.__init__(self, uistate, [], FilterEditor)
|
ManagedWindow.ManagedWindow.__init__(self, uistate, [], FilterEditor)
|
||||||
|
|
||||||
self.db = db
|
self.db = db
|
||||||
self.filterdb = FilterList(filterdb)
|
self.filterdb = FilterList(filterdb)
|
||||||
self.filterdb.load()
|
self.filterdb.load()
|
||||||
|
self.space = space
|
||||||
|
|
||||||
self.editor = gtk.glade.XML(const.rule_glade,'filter_list',"gramps")
|
self.editor = gtk.glade.XML(const.rule_glade,'filter_list',"gramps")
|
||||||
self.filter_list = self.editor.get_widget('filters')
|
self.filter_list = self.editor.get_widget('filters')
|
||||||
@ -338,9 +338,13 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
|||||||
self.delete = self.editor.get_widget('delete')
|
self.delete = self.editor.get_widget('delete')
|
||||||
self.test = self.editor.get_widget('test')
|
self.test = self.editor.get_widget('test')
|
||||||
|
|
||||||
|
self.edit.set_sensitive(False)
|
||||||
|
self.delete.set_sensitive(False)
|
||||||
|
self.test.set_sensitive(False)
|
||||||
|
|
||||||
self.set_window(self.editor.get_widget('filter_list'),
|
self.set_window(self.editor.get_widget('filter_list'),
|
||||||
self.editor.get_widget('title'),
|
self.editor.get_widget('title'),
|
||||||
_('User defined filters'))
|
_('%s filters') % _(self.space))
|
||||||
|
|
||||||
self.editor.signal_autoconnect({
|
self.editor.signal_autoconnect({
|
||||||
'on_add_clicked' : self.add_new_filter,
|
'on_add_clicked' : self.add_new_filter,
|
||||||
@ -377,48 +381,50 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
|||||||
def filter_select_row(self,obj):
|
def filter_select_row(self,obj):
|
||||||
store,iter = self.clist.get_selected()
|
store,iter = self.clist.get_selected()
|
||||||
if iter:
|
if iter:
|
||||||
self.edit.set_sensitive(1)
|
self.edit.set_sensitive(True)
|
||||||
self.delete.set_sensitive(1)
|
self.delete.set_sensitive(True)
|
||||||
self.test.set_sensitive(1)
|
self.test.set_sensitive(True)
|
||||||
else:
|
else:
|
||||||
self.edit.set_sensitive(0)
|
self.edit.set_sensitive(False)
|
||||||
self.delete.set_sensitive(0)
|
self.delete.set_sensitive(False)
|
||||||
self.test.set_sensitive(0)
|
self.test.set_sensitive(False)
|
||||||
|
|
||||||
def close_filter_editor(self,obj):
|
def close_filter_editor(self,obj):
|
||||||
self.filterdb.save()
|
self.filterdb.save()
|
||||||
self.window.destroy()
|
|
||||||
reload_custom_filters()
|
reload_custom_filters()
|
||||||
reload_system_filters()
|
reload_system_filters()
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def draw_filters(self):
|
def draw_filters(self):
|
||||||
self.clist.clear()
|
self.clist.clear()
|
||||||
for f in self.filterdb.get_filters():
|
for f in self.filterdb.get_filters(self.space):
|
||||||
self.clist.add([f.get_name(),f.get_comment()],f)
|
self.clist.add([f.get_name(),f.get_comment()],f)
|
||||||
|
|
||||||
def add_new_filter(self,obj):
|
def add_new_filter(self,obj):
|
||||||
the_filter = GenericFilter()
|
the_filter = GenericFilter()
|
||||||
EditFilter(self.db, self.uistate, self.track, the_filter, self.filterdb)
|
EditFilter(self.space, self.db, self.uistate, self.track,
|
||||||
|
the_filter, self.filterdb, self.draw_filters)
|
||||||
|
|
||||||
def edit_filter(self,obj):
|
def edit_filter(self,obj):
|
||||||
store,iter = self.clist.get_selected()
|
store,iter = self.clist.get_selected()
|
||||||
if iter:
|
if iter:
|
||||||
filter = self.clist.get_object(iter)
|
filter = self.clist.get_object(iter)
|
||||||
EditFilter(self.db, self.uistate, self.track, filter, self.filterdb)
|
EditFilter(self.space, self.db, self.uistate, self.track,
|
||||||
|
filter, self.filterdb, self.draw_filters)
|
||||||
|
|
||||||
def test_clicked(self,obj):
|
def test_clicked(self,obj):
|
||||||
store,iter = self.clist.get_selected()
|
store,iter = self.clist.get_selected()
|
||||||
if iter:
|
if iter:
|
||||||
filt = self.clist.get_object(iter)
|
filt = self.clist.get_object(iter)
|
||||||
handle_list = filt.apply(self.db,self.db.get_person_handles(sort_handles=False))
|
handle_list = filt.apply(self.db,self.db.get_person_handles(sort_handles=False))
|
||||||
ShowResults(self,self.db,handle_list,filt.get_name())
|
ShowResults(self.db, self.uistate, self.track, handle_list,
|
||||||
|
filt.get_name())
|
||||||
|
|
||||||
def delete_filter(self,obj):
|
def delete_filter(self,obj):
|
||||||
store,iter = self.clist.get_selected()
|
store,iter = self.clist.get_selected()
|
||||||
if iter:
|
if iter:
|
||||||
filter = self.clist.get_object(iter)
|
filter = self.clist.get_object(iter)
|
||||||
self.filterdb.get_filters().remove(filter)
|
self.filterdb.get_filters(self.space).remove(filter)
|
||||||
self.draw_filters()
|
self.draw_filters()
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@ -428,10 +434,12 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class EditFilter(ManagedWindow.ManagedWindow):
|
class EditFilter(ManagedWindow.ManagedWindow):
|
||||||
|
|
||||||
def __init__(self, db, uistate, track, filter, filterdb):
|
def __init__(self, space, db, uistate, track, filter, filterdb, update):
|
||||||
|
|
||||||
ManagedWindow.ManagedWindow.__init__(self, uistate, [], self)
|
ManagedWindow.ManagedWindow.__init__(self, uistate, [], self)
|
||||||
|
|
||||||
|
self.space = space
|
||||||
|
self.update = update
|
||||||
self.db = db
|
self.db = db
|
||||||
self.filter = filter
|
self.filter = filter
|
||||||
self.filterdb = filterdb
|
self.filterdb = filterdb
|
||||||
@ -465,6 +473,7 @@ class EditFilter(ManagedWindow.ManagedWindow):
|
|||||||
"on_help_filtdef_clicked" : self.on_help_clicked,
|
"on_help_filtdef_clicked" : self.on_help_clicked,
|
||||||
'on_edit_clicked' : self.on_edit_clicked,
|
'on_edit_clicked' : self.on_edit_clicked,
|
||||||
})
|
})
|
||||||
|
|
||||||
if self.filter.get_logical_op() == 'or':
|
if self.filter.get_logical_op() == 'or':
|
||||||
self.logical.set_active(1)
|
self.logical.set_active(1)
|
||||||
elif self.filter.get_logical_op() == 'one':
|
elif self.filter.get_logical_op() == 'one':
|
||||||
@ -492,11 +501,11 @@ class EditFilter(ManagedWindow.ManagedWindow):
|
|||||||
def select_row(self,obj):
|
def select_row(self,obj):
|
||||||
store,iter = self.rlist.get_selected()
|
store,iter = self.rlist.get_selected()
|
||||||
if iter:
|
if iter:
|
||||||
self.edit_btn.set_sensitive(1)
|
self.edit_btn.set_sensitive(True)
|
||||||
self.del_btn.set_sensitive(1)
|
self.del_btn.set_sensitive(True)
|
||||||
else:
|
else:
|
||||||
self.edit_btn.set_sensitive(0)
|
self.edit_btn.set_sensitive(False)
|
||||||
self.del_btn.set_sensitive(0)
|
self.del_btn.set_sensitive(False)
|
||||||
|
|
||||||
def draw_rules(self):
|
def draw_rules(self):
|
||||||
self.rlist.clear()
|
self.rlist.clear()
|
||||||
@ -509,31 +518,38 @@ class EditFilter(ManagedWindow.ManagedWindow):
|
|||||||
return
|
return
|
||||||
self.filter.set_name(n)
|
self.filter.set_name(n)
|
||||||
self.filter.set_comment(unicode(self.comment.get_text()).strip())
|
self.filter.set_comment(unicode(self.comment.get_text()).strip())
|
||||||
for f in self.filterdb.get_filters()[:]:
|
for f in self.filterdb.get_filters(self.space)[:]:
|
||||||
if n == f.get_name():
|
if n == f.get_name():
|
||||||
self.filterdb.get_filters().remove(f)
|
self.filterdb.get_filters(self.space).remove(f)
|
||||||
break
|
break
|
||||||
if self.log_or.get_active():
|
val = self.logical.get_active()
|
||||||
|
if val == 1:
|
||||||
op = 'or'
|
op = 'or'
|
||||||
elif self.log_one.get_active():
|
elif val == 2:
|
||||||
op = 'one'
|
op = 'one'
|
||||||
else:
|
else:
|
||||||
op = 'and'
|
op = 'and'
|
||||||
self.filter.set_logical_op(op)
|
self.filter.set_logical_op(op)
|
||||||
self.filterdb.add(self.filter)
|
self.filterdb.add(self.space,self.filter)
|
||||||
self.parent.draw_filters()
|
self.update()
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def on_add_clicked(self,obj):
|
def on_add_clicked(self,obj):
|
||||||
EditRule(self.db, self.uistate, self.track, self.filterdb,
|
EditRule(self.db, self.uistate, self.track, self.filterdb,
|
||||||
None, _('Add Rule'))
|
None, _('Add Rule'), self.update_rule)
|
||||||
|
|
||||||
def on_edit_clicked(self,obj):
|
def on_edit_clicked(self,obj):
|
||||||
store,iter = self.rlist.get_selected()
|
store,iter = self.rlist.get_selected()
|
||||||
if iter:
|
if iter:
|
||||||
d = self.rlist.get_object(iter)
|
d = self.rlist.get_object(iter)
|
||||||
EditRule(self.db, self.uistate, self.track, self.filterdb,
|
EditRule(self.db, self.uistate, self.track, self.filterdb,
|
||||||
d, _('Edit Rule'))
|
d, _('Edit Rule'), self.update_rule)
|
||||||
|
|
||||||
|
def update_rule(self, old_rule, new_rule):
|
||||||
|
if old_rule:
|
||||||
|
self.filter.delete_rule(old_rule)
|
||||||
|
self.filter.add_rule(new_rule)
|
||||||
|
self.draw_rules()
|
||||||
|
|
||||||
def on_delete_clicked(self,obj):
|
def on_delete_clicked(self,obj):
|
||||||
store,iter = self.rlist.get_selected()
|
store,iter = self.rlist.get_selected()
|
||||||
@ -548,12 +564,13 @@ class EditFilter(ManagedWindow.ManagedWindow):
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class EditRule(ManagedWindow.ManagedWindow):
|
class EditRule(ManagedWindow.ManagedWindow):
|
||||||
def __init__(self, db, uistate, track, filterdb, val, label):
|
def __init__(self, db, uistate, track, filterdb, val, label, update):
|
||||||
|
|
||||||
ManagedWindow.ManagedWindow.__init__(self, uistate, track, EditRule)
|
ManagedWindow.ManagedWindow.__init__(self, uistate, track, EditRule)
|
||||||
|
|
||||||
self.db = db
|
self.db = db
|
||||||
self.filterdb = filterdb
|
self.filterdb = filterdb
|
||||||
|
self.update_rule = update
|
||||||
|
|
||||||
self.active_rule = val
|
self.active_rule = val
|
||||||
self.rule = gtk.glade.XML(const.rule_glade,'rule_editor',"gramps")
|
self.rule = gtk.glade.XML(const.rule_glade,'rule_editor',"gramps")
|
||||||
@ -609,7 +626,7 @@ class EditRule(ManagedWindow.ManagedWindow):
|
|||||||
elif v == _('Source ID:'):
|
elif v == _('Source ID:'):
|
||||||
t = MySource(self.db)
|
t = MySource(self.db)
|
||||||
elif v == _('Filter name:'):
|
elif v == _('Filter name:'):
|
||||||
t = MyFilters(self.filterdb.get_filters())
|
t = MyFilters(self.filterdb.get_filters(self.space))
|
||||||
elif _name2list.has_key(v1):
|
elif _name2list.has_key(v1):
|
||||||
data =_name2list[v1]
|
data =_name2list[v1]
|
||||||
t = MySelect(data.values())
|
t = MySelect(data.values())
|
||||||
@ -737,14 +754,10 @@ class EditRule(ManagedWindow.ManagedWindow):
|
|||||||
value_list = []
|
value_list = []
|
||||||
for x in tlist:
|
for x in tlist:
|
||||||
value_list.append(unicode(x.get_text()))
|
value_list.append(unicode(x.get_text()))
|
||||||
store,iter = self.parent.rlist.get_selected()
|
|
||||||
new_rule = class_obj(value_list)
|
new_rule = class_obj(value_list)
|
||||||
if self.active_rule:
|
|
||||||
rule = self.parent.rlist.get_object(iter)
|
self.update_rule(self.active_rule, new_rule)
|
||||||
self.parent.filter.delete_rule(rule)
|
self.close()
|
||||||
self.parent.filter.add_rule(new_rule)
|
|
||||||
self.parent.draw_rules()
|
|
||||||
self.window.destroy()
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -753,21 +766,23 @@ class EditRule(ManagedWindow.ManagedWindow):
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class ShowResults:
|
class ShowResults(ManagedWindow.ManagedWindow):
|
||||||
def __init__(self,parent,db,handle_list,filtname):
|
def __init__(self, db, uistate, track, handle_list, filtname):
|
||||||
self.parent = parent
|
|
||||||
self.win_key = self
|
ManagedWindow.ManagedWindow.__init__(self, uistate, track, self)
|
||||||
|
|
||||||
self.filtname = filtname
|
self.filtname = filtname
|
||||||
self.glade = gtk.glade.XML(const.rule_glade,'test',"gramps")
|
self.glade = gtk.glade.XML(const.rule_glade,'test',"gramps")
|
||||||
self.window = self.glade.get_widget('test')
|
|
||||||
text = self.glade.get_widget('text')
|
|
||||||
|
|
||||||
Utils.set_titles(self.window, self.glade.get_widget('title'),
|
self.set_window(
|
||||||
|
self.glade.get_widget('test'),
|
||||||
|
self.glade.get_widget('title'),
|
||||||
_('Filter Test'))
|
_('Filter Test'))
|
||||||
|
|
||||||
|
text = self.glade.get_widget('text')
|
||||||
|
|
||||||
self.glade.signal_autoconnect({
|
self.glade.signal_autoconnect({
|
||||||
'on_close_clicked' : self.close,
|
'on_close_clicked' : self.close_window,
|
||||||
"on_test_delete_event" : self.on_delete_event,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
n = []
|
n = []
|
||||||
@ -779,32 +794,10 @@ class ShowResults:
|
|||||||
n.sort ()
|
n.sort ()
|
||||||
text.get_buffer().set_text(''.join(n))
|
text.get_buffer().set_text(''.join(n))
|
||||||
|
|
||||||
self.window.set_transient_for(self.parent.window)
|
self.show()
|
||||||
self.add_itself_to_menu()
|
|
||||||
self.window.show()
|
|
||||||
|
|
||||||
def on_delete_event(self,obj,b):
|
def close_window(self,obj):
|
||||||
self.remove_itself_from_menu()
|
self.close()
|
||||||
|
|
||||||
def close(self,obj):
|
|
||||||
self.remove_itself_from_menu()
|
|
||||||
self.window.destroy()
|
|
||||||
|
|
||||||
def add_itself_to_menu(self):
|
|
||||||
self.parent.child_windows[self.win_key] = self
|
|
||||||
label = self.filtname
|
|
||||||
label = "%s: %s" % (_('Test'),label)
|
|
||||||
self.parent_menu_item = gtk.MenuItem(label)
|
|
||||||
self.parent_menu_item.connect("activate",self.present)
|
|
||||||
self.parent_menu_item.show()
|
|
||||||
self.parent.winsmenu.append(self.parent_menu_item)
|
|
||||||
|
|
||||||
def remove_itself_from_menu(self):
|
|
||||||
del self.parent.child_windows[self.win_key]
|
|
||||||
self.parent_menu_item.destroy()
|
|
||||||
|
|
||||||
def present(self,obj):
|
|
||||||
self.window.present()
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -57,6 +57,8 @@ class FilterList:
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
def add(self,namespace,filt):
|
def add(self,namespace,filt):
|
||||||
|
assert(type(namespace)==str or type(namespace)==unicode)
|
||||||
|
|
||||||
if namespace not in self.filter_namespaces.keys():
|
if namespace not in self.filter_namespaces.keys():
|
||||||
self.filter_namespaces[namespace] = []
|
self.filter_namespaces[namespace] = []
|
||||||
self.filter_namespaces[namespace].append(filt)
|
self.filter_namespaces[namespace].append(filt)
|
||||||
|
@ -98,13 +98,13 @@ class GenericFilter:
|
|||||||
while data:
|
while data:
|
||||||
person = RelLib.Person()
|
person = RelLib.Person()
|
||||||
person.unserialize(data[1])
|
person.unserialize(data[1])
|
||||||
if not task(db,person):
|
if task(db,person):
|
||||||
final_list.append(data[0])
|
final_list.append(data[0])
|
||||||
data = cursor.next()
|
data = cursor.next()
|
||||||
else:
|
else:
|
||||||
for handle in id_list:
|
for handle in id_list:
|
||||||
person = db.get_person_from_handle(handle)
|
person = db.get_person_from_handle(handle)
|
||||||
if not task(db,person):
|
if task(db,person):
|
||||||
final_list.append(handle)
|
final_list.append(handle)
|
||||||
return final_list
|
return final_list
|
||||||
|
|
||||||
|
@ -544,74 +544,12 @@ Exactly one rule must apply</property>
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_default">True</property>
|
<property name="can_default">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
|
<property name="label">gtk-close</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||||
<property name="focus_on_click">True</property>
|
<property name="focus_on_click">True</property>
|
||||||
<property name="response_id">0</property>
|
<property name="response_id">-7</property>
|
||||||
<signal name="clicked" handler="on_close_clicked"/>
|
<signal name="clicked" handler="on_close_clicked"/>
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkAlignment" id="alignment1">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="xalign">0.5</property>
|
|
||||||
<property name="yalign">0.5</property>
|
|
||||||
<property name="xscale">0</property>
|
|
||||||
<property name="yscale">0</property>
|
|
||||||
<property name="top_padding">0</property>
|
|
||||||
<property name="bottom_padding">0</property>
|
|
||||||
<property name="left_padding">0</property>
|
|
||||||
<property name="right_padding">0</property>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkHBox" id="hbox6">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="homogeneous">False</property>
|
|
||||||
<property name="spacing">2</property>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkImage" id="image1">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="stock">gtk-ok</property>
|
|
||||||
<property name="icon_size">4</property>
|
|
||||||
<property name="xalign">0.5</property>
|
|
||||||
<property name="yalign">0.5</property>
|
|
||||||
<property name="xpad">0</property>
|
|
||||||
<property name="ypad">0</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="padding">0</property>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkLabel" id="label29">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes">Apply and close</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="use_markup">False</property>
|
|
||||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
||||||
<property name="wrap">False</property>
|
|
||||||
<property name="selectable">False</property>
|
|
||||||
<property name="xalign">0.5</property>
|
|
||||||
<property name="yalign">0.5</property>
|
|
||||||
<property name="xpad">0</property>
|
|
||||||
<property name="ypad">0</property>
|
|
||||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
||||||
<property name="width_chars">-1</property>
|
|
||||||
<property name="single_line_mode">False</property>
|
|
||||||
<property name="angle">0</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="padding">0</property>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</widget>
|
|
||||||
</child>
|
|
||||||
</widget>
|
|
||||||
</child>
|
|
||||||
</widget>
|
</widget>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user