* src/EditPerson.py: Add support for inline editing
* src/EventEdit.py: Don't commit events here - should be commited elsewhere * src/ListModel.py: Add support for table callback functions to update data after inline editing svn: r4447
This commit is contained in:
parent
3fe467503f
commit
f1bdbd1ebd
@ -1,3 +1,10 @@
|
|||||||
|
2005-04-30 Don Allingham <don@gramps-project.org>
|
||||||
|
* src/EditPerson.py: Add support for inline editing
|
||||||
|
* src/EventEdit.py: Don't commit events here - should be commited
|
||||||
|
elsewhere
|
||||||
|
* src/ListModel.py: Add support for table callback functions
|
||||||
|
to update data after inline editing
|
||||||
|
|
||||||
2005-04-29 Alex Roitman <shura@gramps-project.org>
|
2005-04-29 Alex Roitman <shura@gramps-project.org>
|
||||||
* src/edit_person.glade: Compact name edit button.
|
* src/edit_person.glade: Compact name edit button.
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
import cPickle as pickle
|
import cPickle as pickle
|
||||||
import os
|
import os
|
||||||
import locale
|
import locale
|
||||||
|
from sets import Set
|
||||||
from gettext import gettext as _
|
from gettext import gettext as _
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@ -52,7 +53,6 @@ import GrampsKeys
|
|||||||
import GrampsMime
|
import GrampsMime
|
||||||
import ImageSelect
|
import ImageSelect
|
||||||
import AutoComp
|
import AutoComp
|
||||||
import ListModel
|
|
||||||
import RelLib
|
import RelLib
|
||||||
import Sources
|
import Sources
|
||||||
import DateEdit
|
import DateEdit
|
||||||
@ -68,7 +68,7 @@ import EventEdit
|
|||||||
import AddrEdit
|
import AddrEdit
|
||||||
|
|
||||||
from QuestionDialog import WarningDialog, ErrorDialog, SaveDialog, QuestionDialog2
|
from QuestionDialog import WarningDialog, ErrorDialog, SaveDialog, QuestionDialog2
|
||||||
|
from ListModel import ListModel, NOSORT, COMBO, TEXT, TOGGLE
|
||||||
from DdTargets import DdTargets
|
from DdTargets import DdTargets
|
||||||
|
|
||||||
|
|
||||||
@ -413,12 +413,6 @@ class EditPerson:
|
|||||||
self.child_windows = {}
|
self.child_windows = {}
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
event_list = []
|
|
||||||
#for col in self.event_list.get_columns():
|
|
||||||
# event_list.append(self.event_trans.find_key(col.get_title()))
|
|
||||||
#if not self.db.readonly:
|
|
||||||
# self.db.metadata['event_order'] = event_list
|
|
||||||
|
|
||||||
#self.gallery.close()
|
#self.gallery.close()
|
||||||
self.close_child_windows()
|
self.close_child_windows()
|
||||||
self.remove_itself_from_winsmenu()
|
self.remove_itself_from_winsmenu()
|
||||||
@ -834,14 +828,25 @@ class EditPerson:
|
|||||||
|
|
||||||
def update_lists(self):
|
def update_lists(self):
|
||||||
"""Updates the person's lists if anything has changed"""
|
"""Updates the person's lists if anything has changed"""
|
||||||
if self.lists_changed:
|
self.person.set_alternate_names(self.name_box.data)
|
||||||
self.person.set_alternate_names(self.nlist)
|
self.person.set_url_list(self.url_box.data)
|
||||||
self.person.set_url_list(self.ulist)
|
self.person.set_attribute_list(self.attr_box.data)
|
||||||
self.person.set_attribute_list(self.alist)
|
self.person.set_address_list(self.addr_box.data)
|
||||||
self.person.set_address_list(self.plist)
|
|
||||||
#self.person.set_event_list(self.elist)
|
self.person.set_birth_handle(None)
|
||||||
# self.person.set_birth_handle(self.birth.get_handle())
|
self.person.set_death_handle(None)
|
||||||
# self.person.set_death_handle(self.death.get_handle())
|
elist = self.event_box.data[:]
|
||||||
|
for event in elist:
|
||||||
|
if event.get_name() == "Birth":
|
||||||
|
self.person.set_birth_handle(event.get_handle())
|
||||||
|
self.event_box.data.remove(event)
|
||||||
|
if event.get_name() == "Death":
|
||||||
|
self.person.set_death_handle(event.get_handle())
|
||||||
|
self.event_box.data.remove(event)
|
||||||
|
elist = []
|
||||||
|
for val in self.event_box.data:
|
||||||
|
elist.append(val.get_handle())
|
||||||
|
self.person.set_event_list(elist)
|
||||||
|
|
||||||
def on_apply_person_clicked(self,obj):
|
def on_apply_person_clicked(self,obj):
|
||||||
|
|
||||||
@ -869,7 +874,6 @@ class EditPerson:
|
|||||||
idval = unicode(self.gid.get_text())
|
idval = unicode(self.gid.get_text())
|
||||||
|
|
||||||
name = self.pname
|
name = self.pname
|
||||||
|
|
||||||
if idval != self.person.get_gramps_id():
|
if idval != self.person.get_gramps_id():
|
||||||
person = self.db.get_person_from_gramps_id(idval)
|
person = self.db.get_person_from_gramps_id(idval)
|
||||||
if not person:
|
if not person:
|
||||||
@ -1012,9 +1016,8 @@ class EditPerson:
|
|||||||
if not self.lds_sealing.are_equal(lds_ord):
|
if not self.lds_sealing.are_equal(lds_ord):
|
||||||
self.person.set_lds_sealing(self.lds_sealing)
|
self.person.set_lds_sealing(self.lds_sealing)
|
||||||
|
|
||||||
if self.lists_changed:
|
self.person.set_source_reference_list(self.srcreflist)
|
||||||
self.person.set_source_reference_list(self.srcreflist)
|
self.update_lists()
|
||||||
self.update_lists()
|
|
||||||
|
|
||||||
if not self.person.get_handle():
|
if not self.person.get_handle():
|
||||||
self.db.add_person(self.person, trans)
|
self.db.add_person(self.person, trans)
|
||||||
@ -1023,6 +1026,10 @@ class EditPerson:
|
|||||||
self.person.set_gramps_id(self.db.find_next_person_gramps_id())
|
self.person.set_gramps_id(self.db.find_next_person_gramps_id())
|
||||||
self.db.commit_person(self.person, trans)
|
self.db.commit_person(self.person, trans)
|
||||||
n = self.person.get_primary_name().get_regular_name()
|
n = self.person.get_primary_name().get_regular_name()
|
||||||
|
|
||||||
|
for event in self.event_box.get_changed_objects():
|
||||||
|
self.db.commit_event(event,trans)
|
||||||
|
|
||||||
self.db.transaction_commit(trans,_("Edit Person (%s)") % n)
|
self.db.transaction_commit(trans,_("Edit Person (%s)") % n)
|
||||||
if self.callback:
|
if self.callback:
|
||||||
self.callback(self,self.retval)
|
self.callback(self,self.retval)
|
||||||
@ -1272,7 +1279,7 @@ class ListBox:
|
|||||||
self.name = NameDisplay.displayer.display(self.person)
|
self.name = NameDisplay.displayer.display(self.person)
|
||||||
self.db = parent.db
|
self.db = parent.db
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.list_model = ListModel.ListModel(
|
self.list_model = ListModel(
|
||||||
obj, titles, self.select_row, self.update)
|
obj, titles, self.select_row, self.update)
|
||||||
self.blist = button_list
|
self.blist = button_list
|
||||||
self.node_map = {}
|
self.node_map = {}
|
||||||
@ -1281,9 +1288,14 @@ class ListBox:
|
|||||||
self.blist[0].connect('clicked',self.add)
|
self.blist[0].connect('clicked',self.add)
|
||||||
self.blist[1].connect('clicked',self.update)
|
self.blist[1].connect('clicked',self.update)
|
||||||
self.blist[2].connect('clicked',self.delete)
|
self.blist[2].connect('clicked',self.delete)
|
||||||
|
self.change_list = Set()
|
||||||
|
|
||||||
|
def get_changed_objects(self):
|
||||||
|
return list(self.change_list)
|
||||||
|
|
||||||
def add_object(self,item):
|
def add_object(self,item):
|
||||||
self.data.append(item)
|
self.data.append(item)
|
||||||
|
self.change_list.add(item)
|
||||||
|
|
||||||
def select_row(self,obj):
|
def select_row(self,obj):
|
||||||
store, node = obj.get_selected()
|
store, node = obj.get_selected()
|
||||||
@ -1305,7 +1317,7 @@ class ListBox:
|
|||||||
self.node_map = {}
|
self.node_map = {}
|
||||||
for item in self.data:
|
for item in self.data:
|
||||||
node = self.list_model.add(self.display_data(item),item)
|
node = self.list_model.add(self.display_data(item),item)
|
||||||
self.node_map[str(item)] = node
|
self.node_map[item] = node
|
||||||
if self.data:
|
if self.data:
|
||||||
self.list_model.select_row(0)
|
self.list_model.select_row(0)
|
||||||
self.set_label()
|
self.set_label()
|
||||||
@ -1322,12 +1334,14 @@ class ListBox:
|
|||||||
self.redraw()
|
self.redraw()
|
||||||
|
|
||||||
def edit_callback(self,data):
|
def edit_callback(self,data):
|
||||||
self.data.append(data)
|
self.changed = True
|
||||||
|
self.change_list.add(data)
|
||||||
|
if data not in self.data:
|
||||||
|
self.data.append(data)
|
||||||
self.redraw()
|
self.redraw()
|
||||||
try:
|
try:
|
||||||
self.list_model.select_iter(self.node_map[str(data)])
|
self.list_model.select_iter(self.node_map[data])
|
||||||
except:
|
except:
|
||||||
print self.node_map, data
|
|
||||||
print "Edit callback failed"
|
print "Edit callback failed"
|
||||||
|
|
||||||
def set_label(self):
|
def set_label(self):
|
||||||
@ -1393,11 +1407,11 @@ class ReorderListBox(ListBox):
|
|||||||
class AttrListBox(ListBox):
|
class AttrListBox(ListBox):
|
||||||
|
|
||||||
titles = [
|
titles = [
|
||||||
# Title Sort Column Min Width, Type
|
# Title Sort Col, Size, Type
|
||||||
(_('Attribute'), ListModel.NOSORT, 200, ListModel.TEXT),
|
(_('Attribute'), NOSORT, 200, TEXT),
|
||||||
(_('Value'), ListModel.NOSORT, 350, ListModel.TEXT),
|
(_('Value'), NOSORT, 350, TEXT),
|
||||||
(_('Source'), ListModel.NOSORT, 50, ListModel.TOGGLE),
|
(_('Source'), NOSORT, 50, TOGGLE),
|
||||||
(_('Note'), ListModel.NOSORT, 50, ListModel.TOGGLE),
|
(_('Note'), NOSORT, 50, TOGGLE),
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, parent, person, obj, label, button_list):
|
def __init__(self, parent, person, obj, label, button_list):
|
||||||
@ -1425,35 +1439,52 @@ class AttrListBox(ListBox):
|
|||||||
return [const.display_pattr(attr.get_type()), attr.get_value(),
|
return [const.display_pattr(attr.get_type()), attr.get_value(),
|
||||||
has_source, has_note]
|
has_source, has_note]
|
||||||
|
|
||||||
|
|
||||||
class EventListBox(ReorderListBox):
|
class EventListBox(ReorderListBox):
|
||||||
|
|
||||||
evalues = [
|
|
||||||
# Title Sort Column Min Width, Type
|
|
||||||
(_('Event'), ListModel.NOSORT, 125, ListModel.COMBO),
|
|
||||||
(_('Description'), ListModel.NOSORT, 150, ListModel.TEXT),
|
|
||||||
(_('Date'), ListModel.NOSORT, 100, ListModel.TEXT),
|
|
||||||
(_('Place'), ListModel.NOSORT, 100, ListModel.TEXT),
|
|
||||||
(_('Source'), ListModel.NOSORT, 50, ListModel.TOGGLE),
|
|
||||||
(_('Note'), ListModel.NOSORT, 50, ListModel.TOGGLE)
|
|
||||||
]
|
|
||||||
|
|
||||||
titles = ['Event', 'Description','Date','Place','Source','Note']
|
titles = ['Event', 'Description','Date','Place','Source','Note']
|
||||||
|
|
||||||
def __init__(self,parent,person,obj,label,button_list):
|
def __init__(self,parent,person,obj,label,button_list):
|
||||||
|
|
||||||
self.trans = TransTable.TransTable(self.titles)
|
self.trans = TransTable.TransTable(self.titles)
|
||||||
|
|
||||||
self.data = []
|
self.data = []
|
||||||
if person.get_birth_handle():
|
if person.get_birth_handle():
|
||||||
self.data.append(person.get_birth_handle())
|
event = parent.db.get_event_from_handle(person.get_birth_handle())
|
||||||
|
self.data.append(event)
|
||||||
if person.get_death_handle():
|
if person.get_death_handle():
|
||||||
self.data.append(person.get_death_handle())
|
event = parent.db.get_event_from_handle(person.get_death_handle())
|
||||||
|
self.data.append(event)
|
||||||
for val in person.get_event_list():
|
for val in person.get_event_list():
|
||||||
self.data.append(val)
|
self.data.append(parent.db.get_event_from_handle(val))
|
||||||
|
|
||||||
|
evalues = [
|
||||||
|
# Title Sort Col Size, Type Argument
|
||||||
|
(_('Event'), NOSORT, 100, COMBO, const.personalEvents, self.set_name),
|
||||||
|
(_('Description'), NOSORT, 140, TEXT, None, self.set_description),
|
||||||
|
(_('Date'), NOSORT, 100, TEXT, None, self.set_date),
|
||||||
|
(_('Place'), NOSORT, 100, TEXT, None, self.set_place),
|
||||||
|
(_('Source'), NOSORT, 50, TOGGLE),
|
||||||
|
(_('Note'), NOSORT, 50, TOGGLE),
|
||||||
|
]
|
||||||
|
|
||||||
ReorderListBox.__init__(self, parent, person, obj, label,
|
ReorderListBox.__init__(self, parent, person, obj, label,
|
||||||
button_list, self.evalues, DdTargets.EVENT)
|
button_list, evalues, DdTargets.EVENT)
|
||||||
|
|
||||||
|
def set_name(self,index,value):
|
||||||
|
self.data[index].set_name(value)
|
||||||
|
self.change_list.add(self.data[index])
|
||||||
|
|
||||||
|
def set_description(self,index,value):
|
||||||
|
self.data[index].set_description(value)
|
||||||
|
self.change_list.add(self.data[index])
|
||||||
|
|
||||||
|
def set_place(self,index,value):
|
||||||
|
self.data[index].set_description(value)
|
||||||
|
self.change_list.add(self.data[index])
|
||||||
|
|
||||||
|
def set_date(self,index,value):
|
||||||
|
self.data[index].set_date(value)
|
||||||
|
self.change_list.add(self.data[index])
|
||||||
|
|
||||||
def add(self,obj):
|
def add(self,obj):
|
||||||
"""Brings up the EventEditor for a new event"""
|
"""Brings up the EventEditor for a new event"""
|
||||||
@ -1469,34 +1500,16 @@ class EventListBox(ReorderListBox):
|
|||||||
event = self.list_model.get_object(node)
|
event = self.list_model.get_object(node)
|
||||||
EventEdit.EventEditor(
|
EventEdit.EventEditor(
|
||||||
self.parent, self.name, const.personalEvents,
|
self.parent, self.name, const.personalEvents,
|
||||||
const.personal_events,event, None, 0,
|
const.personal_events, event, None, 0,
|
||||||
self.edit_callback, noedit=self.db.readonly)
|
self.edit_callback, noedit=self.db.readonly)
|
||||||
|
|
||||||
def redraw(self):
|
def display_data(self,event):
|
||||||
"""redraw_event_list - Update both the birth and death place combo
|
pname = place_title(self.db,event)
|
||||||
boxes for any changes that occurred in the 'Event Edit' window.
|
has_note = event.get_note()
|
||||||
Make sure not to allow the editing of a birth event to change
|
has_source = len(event.get_source_references())> 0
|
||||||
any values in the death event, and vice versa. Since updating a
|
return [const.display_pevent(event.get_name()),
|
||||||
combo list resets its present value, this code will have to save
|
event.get_description(), event.get_date(),
|
||||||
and restore the value for the event *not* being edited."""
|
pname, has_source, has_note]
|
||||||
|
|
||||||
self.list_model.clear()
|
|
||||||
self.node_map = {}
|
|
||||||
for handle in self.data:
|
|
||||||
event = self.db.get_event_from_handle(handle)
|
|
||||||
if not event:
|
|
||||||
print "couldn't find",handle
|
|
||||||
pname = place_title(self.db,event)
|
|
||||||
has_note = event.get_note()
|
|
||||||
has_source = len(event.get_source_references())> 0
|
|
||||||
data = [const.display_pevent(event.get_name()),
|
|
||||||
event.get_description(), event.get_date(),
|
|
||||||
pname, has_source, has_note]
|
|
||||||
node = self.list_model.add(data, event)
|
|
||||||
self.node_map[handle] = node
|
|
||||||
if self.data:
|
|
||||||
self.list_model.select_row(0)
|
|
||||||
self.set_label()
|
|
||||||
|
|
||||||
def unpickle(self, data):
|
def unpickle(self, data):
|
||||||
foo = pickle.loads(data);
|
foo = pickle.loads(data);
|
||||||
@ -1512,14 +1525,14 @@ class EventListBox(ReorderListBox):
|
|||||||
class NameListBox(ReorderListBox):
|
class NameListBox(ReorderListBox):
|
||||||
|
|
||||||
titles = [
|
titles = [
|
||||||
# Title Sort Column Min Width, Type
|
# Title Sort Col Size, Type
|
||||||
(_('Family Name'), ListModel.NOSORT, 225, ListModel.TEXT),
|
(_('Family Name'), NOSORT, 225, TEXT),
|
||||||
(_('Prefix'), ListModel.NOSORT, 50, ListModel.TEXT),
|
(_('Prefix'), NOSORT, 50, TEXT),
|
||||||
(_('Given Name'), ListModel.NOSORT, 200, ListModel.TEXT),
|
(_('Given Name'), NOSORT, 200, TEXT),
|
||||||
(_('Suffix'), ListModel.NOSORT, 50, ListModel.TEXT),
|
(_('Suffix'), NOSORT, 50, TEXT),
|
||||||
(_('Type'), ListModel.NOSORT, 100, ListModel.TEXT),
|
(_('Type'), NOSORT, 100, TEXT),
|
||||||
(_('Source'), ListModel.NOSORT, 50, ListModel.TOGGLE),
|
(_('Source'), NOSORT, 50, TOGGLE),
|
||||||
(_('Note'), ListModel.NOSORT, 50, ListModel.TOGGLE),
|
(_('Note'), NOSORT, 50, TOGGLE),
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self,parent,person,obj,label,button_list):
|
def __init__(self,parent,person,obj,label,button_list):
|
||||||
@ -1555,14 +1568,14 @@ class NameListBox(ReorderListBox):
|
|||||||
class AddressListBox(ReorderListBox):
|
class AddressListBox(ReorderListBox):
|
||||||
|
|
||||||
titles = [
|
titles = [
|
||||||
# Title Sort Column Min Width, Type
|
# Title Sort Col Size, Type
|
||||||
(_('Date'), ListModel.NOSORT, 175, ListModel.TEXT),
|
(_('Date'), NOSORT, 175, TEXT),
|
||||||
(_('Address'), ListModel.NOSORT, 150, ListModel.TEXT),
|
(_('Address'), NOSORT, 150, TEXT),
|
||||||
(_('City'), ListModel.NOSORT, 100, ListModel.TEXT),
|
(_('City'), NOSORT, 100, TEXT),
|
||||||
(_('State/Province'),ListModel.NOSORT, 75, ListModel.TEXT),
|
(_('State/Province'),NOSORT, 75, TEXT),
|
||||||
(_('Country'), ListModel.NOSORT, 100, ListModel.TEXT),
|
(_('Country'), NOSORT, 100, TEXT),
|
||||||
(_('Source'), ListModel.NOSORT, 50, ListModel.TOGGLE),
|
(_('Source'), NOSORT, 50, TOGGLE),
|
||||||
(_('Note'), ListModel.NOSORT, 50, ListModel.TOGGLE),
|
(_('Note'), NOSORT, 50, TOGGLE),
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self,parent,person,obj,label,button_list):
|
def __init__(self,parent,person,obj,label,button_list):
|
||||||
@ -1599,9 +1612,9 @@ class AddressListBox(ReorderListBox):
|
|||||||
class UrlListBox(ReorderListBox):
|
class UrlListBox(ReorderListBox):
|
||||||
|
|
||||||
titles = [
|
titles = [
|
||||||
# Title Sort Column Min Width, Type
|
# Title Sort Col Size, Type
|
||||||
(_('Path'), ListModel.NOSORT, 250, ListModel.TEXT),
|
(_('Path'), NOSORT, 250, TEXT),
|
||||||
(_('Description'), ListModel.NOSORT, 100, ListModel.TEXT),
|
(_('Description'), NOSORT, 100, TEXT),
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self,parent,person,obj,label,button_list):
|
def __init__(self,parent,person,obj,label,button_list):
|
||||||
|
@ -87,9 +87,8 @@ class EventEditor:
|
|||||||
for v in elist:
|
for v in elist:
|
||||||
values[v] = 1
|
values[v] = 1
|
||||||
for vv in self.db.get_person_event_type_list():
|
for vv in self.db.get_person_event_type_list():
|
||||||
if vv not in ("Birth","Death"):
|
v = _(vv)
|
||||||
v = _(vv)
|
values[v] = 1
|
||||||
values[v] = 1
|
|
||||||
|
|
||||||
self.elist = values.keys()
|
self.elist = values.keys()
|
||||||
self.elist.sort()
|
self.elist.sort()
|
||||||
@ -325,7 +324,6 @@ class EventEditor:
|
|||||||
"before you can save the event"))
|
"before you can save the event"))
|
||||||
return
|
return
|
||||||
|
|
||||||
trans = self.db.transaction_begin()
|
|
||||||
#self.date = self.dp.parse(unicode(self.date_field.get_text()))
|
#self.date = self.dp.parse(unicode(self.date_field.get_text()))
|
||||||
ecause = unicode(self.cause_field.get_text())
|
ecause = unicode(self.cause_field.get_text())
|
||||||
eplace_obj = self.get_place(self.place_field,trans)
|
eplace_obj = self.get_place(self.place_field,trans)
|
||||||
@ -357,11 +355,10 @@ class EventEditor:
|
|||||||
|
|
||||||
self.update_event(ename,self.date,eplace_obj,edesc,enote,eformat,
|
self.update_event(ename,self.date,eplace_obj,edesc,enote,eformat,
|
||||||
epriv,ecause,trans)
|
epriv,ecause,trans)
|
||||||
self.db.transaction_commit(trans,_("Edit Event"))
|
|
||||||
|
|
||||||
self.close(obj)
|
self.close(obj)
|
||||||
if self.callback:
|
if self.callback:
|
||||||
self.callback(self.event.get_handle())
|
self.callback(self.event)
|
||||||
|
|
||||||
def update_event(self,name,date,place,desc,note,format,priv,cause,trans):
|
def update_event(self,name,date,place,desc,note,format,priv,cause,trans):
|
||||||
if place:
|
if place:
|
||||||
@ -373,8 +370,7 @@ class EventEditor:
|
|||||||
self.event.set_place_handle("")
|
self.event.set_place_handle("")
|
||||||
self.parent.lists_changed = 1
|
self.parent.lists_changed = 1
|
||||||
|
|
||||||
if self.event.get_name() not in [self.trans.find_key(name),
|
if self.event.get_name() not in [self.trans.find_key(name)]:
|
||||||
"Birth","Death"]:
|
|
||||||
self.event.set_name(self.trans.find_key(name))
|
self.event.set_name(self.trans.find_key(name))
|
||||||
self.parent.lists_changed = 1
|
self.parent.lists_changed = 1
|
||||||
|
|
||||||
|
@ -48,7 +48,8 @@ class ListModel:
|
|||||||
self.mylist.append(TYPE_STRING)
|
self.mylist.append(TYPE_STRING)
|
||||||
self.data_index += 1
|
self.data_index += 1
|
||||||
self.mylist.append(TYPE_PYOBJECT)
|
self.mylist.append(TYPE_PYOBJECT)
|
||||||
|
|
||||||
|
self.function = {}
|
||||||
self.tree.set_rules_hint(True)
|
self.tree.set_rules_hint(True)
|
||||||
self.model = None
|
self.model = None
|
||||||
self.selection = None
|
self.selection = None
|
||||||
@ -73,26 +74,37 @@ class ListModel:
|
|||||||
cnum = 0
|
cnum = 0
|
||||||
for name in dlist:
|
for name in dlist:
|
||||||
if len(name) == 3:
|
if len(name) == 3:
|
||||||
name = (name[0],name[1],name[2],TEXT)
|
name = (name[0],name[1],name[2],TEXT,False, None)
|
||||||
|
elif len(name) == 4:
|
||||||
|
name = (name[0],name[1],name[2],name[3],False, None)
|
||||||
|
|
||||||
if name[0] and name[3] == TOGGLE:
|
if name[0] and name[3] == TOGGLE:
|
||||||
renderer = gtk.CellRendererToggle()
|
renderer = gtk.CellRendererToggle()
|
||||||
column = gtk.TreeViewColumn(name[0],renderer)
|
column = gtk.TreeViewColumn(name[0],renderer)
|
||||||
column.add_attribute(renderer,'active',cnum)
|
column.add_attribute(renderer,'active',cnum)
|
||||||
elif gtk26 and name[3] == COMBO:
|
elif gtk26 and name[3] == COMBO:
|
||||||
|
store = gtk.ListStore(str)
|
||||||
|
model = gtk.ListStore(str,TYPE_OBJECT)
|
||||||
|
for val in name[4]:
|
||||||
|
model.append((val,store))
|
||||||
|
self.function[cnum] = name[5]
|
||||||
renderer = gtk.CellRendererCombo()
|
renderer = gtk.CellRendererCombo()
|
||||||
renderer.set_property('model',model)
|
renderer.set_property('model',model)
|
||||||
renderer.set_property('text_column',0)
|
renderer.set_property('text_column',0)
|
||||||
renderer.set_property('editable',True)
|
|
||||||
renderer.set_fixed_height_from_font(True)
|
renderer.set_fixed_height_from_font(True)
|
||||||
|
renderer.set_property('editable',True)
|
||||||
renderer.connect('edited',self.edited_cb, cnum)
|
renderer.connect('edited',self.edited_cb, cnum)
|
||||||
column = gtk.TreeViewColumn(name[0],renderer,text=cnum)
|
column = gtk.TreeViewColumn(name[0],renderer,text=cnum)
|
||||||
column.set_reorderable(True)
|
column.set_reorderable(True)
|
||||||
else:
|
else:
|
||||||
renderer = gtk.CellRendererText()
|
renderer = gtk.CellRendererText()
|
||||||
renderer.set_property('editable',True)
|
|
||||||
renderer.set_fixed_height_from_font(True)
|
renderer.set_fixed_height_from_font(True)
|
||||||
renderer.connect('edited',self.edited_cb, cnum)
|
if name[5]:
|
||||||
|
renderer.set_property('editable',True)
|
||||||
|
renderer.connect('edited',self.edited_cb, cnum)
|
||||||
|
self.function[cnum] = name[5]
|
||||||
|
else:
|
||||||
|
renderer.set_property('editable',False)
|
||||||
column = gtk.TreeViewColumn(name[0],renderer,text=cnum)
|
column = gtk.TreeViewColumn(name[0],renderer,text=cnum)
|
||||||
column.set_reorderable(True)
|
column.set_reorderable(True)
|
||||||
column.set_min_width(name[2])
|
column.set_min_width(name[2])
|
||||||
@ -122,6 +134,8 @@ class ListModel:
|
|||||||
|
|
||||||
def edited_cb(self, cell, path, new_text, col):
|
def edited_cb(self, cell, path, new_text, col):
|
||||||
self.model[path][col] = new_text
|
self.model[path][col] = new_text
|
||||||
|
if self.function.has_key(col):
|
||||||
|
self.function[col](int(path),new_text)
|
||||||
|
|
||||||
def unselect(self):
|
def unselect(self):
|
||||||
self.selection.unselect_all()
|
self.selection.unselect_all()
|
||||||
|
Loading…
Reference in New Issue
Block a user