jid-multi now works, thanks to #pygtk channel
This commit is contained in:
parent
db089f103d
commit
76c7831c49
|
@ -193,28 +193,27 @@ class DataFormWidget(gtk.Alignment, object):
|
||||||
widget = xml.get_widget('item_list_table')
|
widget = xml.get_widget('item_list_table')
|
||||||
treeview = xml.get_widget('item_treeview')
|
treeview = xml.get_widget('item_treeview')
|
||||||
|
|
||||||
listmodel = gtk.ListStore(str, bool)
|
listmodel = gtk.ListStore(str)
|
||||||
for value in field.iter_values():
|
for value in field.iter_values():
|
||||||
# nobody will create several megabytes long stanza
|
# nobody will create several megabytes long stanza
|
||||||
listmodel.insert(999999, (value,False))
|
listmodel.insert(999999, (value,))
|
||||||
|
|
||||||
treeview.set_model(listmodel)
|
treeview.set_model(listmodel)
|
||||||
|
|
||||||
renderer = gtk.CellRendererText()
|
renderer = gtk.CellRendererText()
|
||||||
renderer.set_property('ellipsize', pango.ELLIPSIZE_START)
|
|
||||||
renderer.set_property('editable', True)
|
renderer.set_property('editable', True)
|
||||||
renderer.connect('edited',
|
renderer.connect('edited',
|
||||||
self.on_jid_multi_cellrenderertext_edited, listmodel, field)
|
self.on_jid_multi_cellrenderertext_edited, listmodel, field)
|
||||||
|
|
||||||
treeview.append_column(gtk.TreeViewColumn(None, renderer,
|
treeview.append_column(gtk.TreeViewColumn(None, renderer,
|
||||||
text=0, editable=1))
|
text=0))
|
||||||
|
|
||||||
xml.get_widget('add_button').connect('clicked',
|
xml.get_widget('add_button').connect('clicked',
|
||||||
self.on_jid_multi_add_button_clicked, listmodel, field)
|
self.on_jid_multi_add_button_clicked, treeview, listmodel, field)
|
||||||
xml.get_widget('edit_button').connect('clicked',
|
xml.get_widget('edit_button').connect('clicked',
|
||||||
self.on_jid_multi_edit_button_clicked, treeview)
|
self.on_jid_multi_edit_button_clicked, treeview)
|
||||||
xml.get_widget('remove_button').connect('clicked',
|
xml.get_widget('remove_button').connect('clicked',
|
||||||
self.on_jid_multi_remove_button_clicked, treeview)
|
self.on_jid_multi_remove_button_clicked, treeview, field)
|
||||||
xml.get_widget('clear_button').connect('clicked',
|
xml.get_widget('clear_button').connect('clicked',
|
||||||
self.on_jid_multi_clean_button_clicked, listmodel, field)
|
self.on_jid_multi_clean_button_clicked, listmodel, field)
|
||||||
|
|
||||||
|
@ -310,22 +309,35 @@ class DataFormWidget(gtk.Alignment, object):
|
||||||
old=model[path][0]
|
old=model[path][0]
|
||||||
model[path][0]=newtext
|
model[path][0]=newtext
|
||||||
|
|
||||||
values = field.values
|
values = field.value
|
||||||
|
print values
|
||||||
values[values.index(old)]=newtext
|
values[values.index(old)]=newtext
|
||||||
field.values = values
|
field.value = values
|
||||||
|
print values
|
||||||
|
print field.value
|
||||||
|
|
||||||
def on_jid_multi_add_button_clicked(self, widget, model, field):
|
def on_jid_multi_add_button_clicked(self, widget, treeview, model, field):
|
||||||
iter = model.insert(999999, ("new@jid",))
|
iter = model.insert(999999, ("new@jabber.id",))
|
||||||
field.value += ["new@jid"]
|
treeview.set_cursor(model.get_path(iter), treeview.get_column(0), True)
|
||||||
|
field.value = field.value + ["new@jabber.id"]
|
||||||
|
|
||||||
def on_jid_multi_edit_button_clicked(self, widget, treeview):
|
def on_jid_multi_edit_button_clicked(self, widget, treeview):
|
||||||
model, iter = treeview.get_selection().get_selected()
|
model, iter = treeview.get_selection().get_selected()
|
||||||
assert iter is not None
|
assert iter is not None
|
||||||
|
|
||||||
model[iter][1]=True
|
treeview.set_cursor(model.get_path(iter), treeview.get_column(0), True)
|
||||||
|
|
||||||
def on_jid_multi_remove_button_clicked(self, widget, model, field):
|
def on_jid_multi_remove_button_clicked(self, widget, treeview, field):
|
||||||
pass
|
selection = treeview.get_selection()
|
||||||
|
model = treeview.get_model()
|
||||||
|
deleted = []
|
||||||
|
|
||||||
|
def remove(model, path, iter, deleted):
|
||||||
|
deleted+=model[iter]
|
||||||
|
model.remove(iter)
|
||||||
|
|
||||||
|
selection.selected_foreach(remove, deleted)
|
||||||
|
field.value = (v for v in field.value if v not in deleted) # python2.4 iterator
|
||||||
|
|
||||||
def on_jid_multi_clean_button_clicked(self, widget, model, field):
|
def on_jid_multi_clean_button_clicked(self, widget, model, field):
|
||||||
model.clear()
|
model.clear()
|
||||||
|
|
Loading…
Reference in New Issue