Cut long lines
svn: r5730
This commit is contained in:
parent
ab51961c95
commit
bc05ec703a
@ -1,8 +1,10 @@
|
|||||||
2006-01-12 Richard Taylor <rjt-gramps@thegrindstone.me.uk>
|
2006-01-12 Richard Taylor <rjt-gramps@thegrindstone.me.uk>
|
||||||
* src/ObjectSelector/_ObjectSelectorWindow.py: initial outline of ObjectSelector
|
* src/ObjectSelector/_ObjectSelectorWindow.py: initial outline of
|
||||||
* src/ObjectSelector/_PersonPreviewFrame.py: initial outline of ObjectSelector
|
ObjectSelector
|
||||||
* src/ObjectSelector/_PersonSearchCriteriaWidget.py: initial outline of ObjectSelector
|
* src/ObjectSelector/_PersonPreviewFrame.py: initial outline of
|
||||||
|
ObjectSelector
|
||||||
|
* src/ObjectSelector/_PersonSearchCriteriaWidget.py: initial
|
||||||
|
outline of ObjectSelector
|
||||||
|
|
||||||
2006-01-12 Alex Roitman <shura@gramps-project.org>
|
2006-01-12 Alex Roitman <shura@gramps-project.org>
|
||||||
* src/ViewManager.py: Connect undo handler to the menu item.
|
* src/ViewManager.py: Connect undo handler to the menu item.
|
||||||
|
@ -261,7 +261,8 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
db.DB_INIT_MPOOL|db.DB_INIT_LOCK|\
|
db.DB_INIT_MPOOL|db.DB_INIT_LOCK|\
|
||||||
db.DB_INIT_LOG|db.DB_INIT_TXN|db.DB_RECOVER
|
db.DB_INIT_LOG|db.DB_INIT_TXN|db.DB_RECOVER
|
||||||
|
|
||||||
self.undolog = "%s.log" % name
|
self.undolog = "%s.undo" % name
|
||||||
|
self.redolog = "%s.redo" % name
|
||||||
env_name = os.path.expanduser(const.bsddbenv_dir)
|
env_name = os.path.expanduser(const.bsddbenv_dir)
|
||||||
if not os.path.isdir(env_name):
|
if not os.path.isdir(env_name):
|
||||||
os.mkdir(env_name)
|
os.mkdir(env_name)
|
||||||
@ -375,7 +376,8 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
|
|
||||||
self.undodb = db.DB()
|
self.undodb = db.DB()
|
||||||
self.undodb.open(self.undolog, db.DB_RECNO, db.DB_CREATE)
|
self.undodb.open(self.undolog, db.DB_RECNO, db.DB_CREATE)
|
||||||
|
self.redodb = db.DB()
|
||||||
|
self.redodb.open(self.redolog, db.DB_RECNO, db.DB_CREATE)
|
||||||
callback(0.5)
|
callback(0.5)
|
||||||
|
|
||||||
self.metadata = self.open_table(self.full_name, "meta", no_txn=True)
|
self.metadata = self.open_table(self.full_name, "meta", no_txn=True)
|
||||||
@ -664,9 +666,9 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
preserving the change in the passed transaction.
|
preserving the change in the passed transaction.
|
||||||
"""
|
"""
|
||||||
if not self.readonly:
|
if not self.readonly:
|
||||||
data = self.reference_map.get(str(main_key),txn=self.txn)
|
old_data = self.reference_map.get(str(main_key),txn=self.txn)
|
||||||
if not transaction.batch:
|
if not transaction.batch:
|
||||||
transaction.add(REFERENCE_KEY,str(key),cPickle.dumps(data))
|
transaction.add(REFERENCE_KEY,str(key),old_data,None)
|
||||||
transaction.reference_del.append(str(key))
|
transaction.reference_del.append(str(key))
|
||||||
|
|
||||||
def _add_reference(self,key,data,transaction):
|
def _add_reference(self,key,data,transaction):
|
||||||
@ -681,7 +683,7 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
if transaction.batch:
|
if transaction.batch:
|
||||||
self.reference_map.put(str(key),data,txn=self.txn)
|
self.reference_map.put(str(key),data,txn=self.txn)
|
||||||
else:
|
else:
|
||||||
transaction.add(REFERENCE_KEY,str(key),None)
|
transaction.add(REFERENCE_KEY,str(key),None,data)
|
||||||
transaction.reference_add.append(str(key),data)
|
transaction.reference_add.append(str(key),data)
|
||||||
|
|
||||||
def reindex_reference_map(self):
|
def reindex_reference_map(self):
|
||||||
@ -798,6 +800,15 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
self.metadata = None
|
self.metadata = None
|
||||||
self.db_is_open = False
|
self.db_is_open = False
|
||||||
|
|
||||||
|
def _do_remove_object(self,handle,trans,dmap,key,del_list):
|
||||||
|
self._delete_primary_from_reference_map(handle,trans)
|
||||||
|
if not self.readonly:
|
||||||
|
handle = str(handle)
|
||||||
|
if not trans.batch:
|
||||||
|
old_data = dmap.get(handle,txn=self.txn)
|
||||||
|
trans.add(key,handle,old_data,None)
|
||||||
|
del_list.append(handle)
|
||||||
|
|
||||||
def _del_person(self,handle):
|
def _del_person(self,handle):
|
||||||
self.person_map.delete(str(handle),txn=self.txn)
|
self.person_map.delete(str(handle),txn=self.txn)
|
||||||
|
|
||||||
@ -902,11 +913,12 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
old_data = None
|
old_data = None
|
||||||
else:
|
else:
|
||||||
old_data = data_map.get(handle,txn=self.txn)
|
old_data = data_map.get(handle,txn=self.txn)
|
||||||
transaction.add(key,handle,old_data)
|
new_data = obj.serialize()
|
||||||
|
transaction.add(key,handle,old_data,new_data)
|
||||||
if old_data:
|
if old_data:
|
||||||
update_list.append((handle,obj.serialize()))
|
update_list.append((handle,new_data))
|
||||||
else:
|
else:
|
||||||
add_list.append((handle,obj.serialize()))
|
add_list.append((handle,new_data))
|
||||||
return old_data
|
return old_data
|
||||||
|
|
||||||
def _do_commit(self,add_list,db_map):
|
def _do_commit(self,add_list,db_map):
|
||||||
@ -1050,17 +1062,24 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
self.txn = None
|
self.txn = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
print "Doing it"
|
print "Undoing it"
|
||||||
self.txn = self.env.txn_begin()
|
self.txn = self.env.txn_begin()
|
||||||
GrampsDbBase.undo(self)
|
GrampsDbBase.undo(self)
|
||||||
self.txn.commit()
|
self.txn.commit()
|
||||||
self.txn = None
|
self.txn = None
|
||||||
|
|
||||||
|
def redo(self):
|
||||||
|
print "Redoing it"
|
||||||
|
self.txn = self.env.txn_begin()
|
||||||
|
GrampsDbBase.redo(self)
|
||||||
|
self.txn.commit()
|
||||||
|
self.txn = None
|
||||||
|
|
||||||
def undo_reference(self,data,handle):
|
def undo_reference(self,data,handle):
|
||||||
if data == None:
|
if data == None:
|
||||||
self.reference_map.delete(handle,txn=self.txn)
|
self.reference_map.delete(handle,txn=self.txn)
|
||||||
else:
|
else:
|
||||||
self.reference_map.put(handl,data,txn=self.txn)
|
self.reference_map.put(handle,data,txn=self.txn)
|
||||||
|
|
||||||
def undo_data(self,data,handle,db_map,signal_root):
|
def undo_data(self,data,handle,db_map,signal_root):
|
||||||
if data == None:
|
if data == None:
|
||||||
|
@ -373,11 +373,12 @@ class GrampsDbBase(GrampsDBCallback):
|
|||||||
old_data = None
|
old_data = None
|
||||||
else:
|
else:
|
||||||
old_data = data_map.get(handle)
|
old_data = data_map.get(handle)
|
||||||
transaction.add(key,handle,old_data)
|
new_data = obj.serialize()
|
||||||
|
transaction.add(key,handle,old_data,new_data)
|
||||||
if old_data:
|
if old_data:
|
||||||
update_list.append((handle,obj.serialize()))
|
update_list.append((handle,new_data))
|
||||||
else:
|
else:
|
||||||
add_list.append((handle,obj.serialize()))
|
add_list.append((handle,new_data))
|
||||||
return old_data
|
return old_data
|
||||||
|
|
||||||
def commit_person(self,person,transaction,change_time=None):
|
def commit_person(self,person,transaction,change_time=None):
|
||||||
@ -1164,6 +1165,7 @@ class GrampsDbBase(GrampsDBCallback):
|
|||||||
"""
|
"""
|
||||||
if self.undoindex == -1 or self.readonly:
|
if self.undoindex == -1 or self.readonly:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
transaction = self.translist[self.undoindex]
|
transaction = self.translist[self.undoindex]
|
||||||
|
|
||||||
mapbase = (self.person_map, self.family_map, self.source_map,
|
mapbase = (self.person_map, self.family_map, self.source_map,
|
||||||
@ -1173,18 +1175,53 @@ class GrampsDbBase(GrampsDBCallback):
|
|||||||
subitems = transaction.get_recnos()
|
subitems = transaction.get_recnos()
|
||||||
subitems.reverse()
|
subitems.reverse()
|
||||||
for record_id in subitems:
|
for record_id in subitems:
|
||||||
(key, handle, data) = transaction.get_record(record_id)
|
(key,handle,old_data,new_data) = transaction.get_record(record_id)
|
||||||
if key == REFERENCE_KEY:
|
if key == REFERENCE_KEY:
|
||||||
self.undo_reference(data,handle)
|
self.undo_reference(old_data,handle)
|
||||||
else:
|
else:
|
||||||
self.undo_data(data,handle,mapbase[key],_sigbase[key])
|
self.undo_data(old_data,handle,mapbase[key],_sigbase[key])
|
||||||
|
|
||||||
if self.undo_callback:
|
if self.undo_callback:
|
||||||
if self.undoindex == -1:
|
if self.undoindex == -1:
|
||||||
self.undo_callback(None)
|
self.undo_callback(None)
|
||||||
else:
|
else:
|
||||||
|
new_transaction = self.translist[self.undoindex]
|
||||||
|
self.undo_callback(_("_Undo %s")
|
||||||
|
% new_transaction.get_description())
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def redo(self):
|
||||||
|
"""
|
||||||
|
Accesses the last undone transaction, and reverts the data to
|
||||||
|
the state before the transaction was undone.
|
||||||
|
"""
|
||||||
|
if self.undoindex == _UNDO_SIZE or self.readonly:
|
||||||
|
return False
|
||||||
|
|
||||||
|
self.undoindex +=1
|
||||||
transaction = self.translist[self.undoindex]
|
transaction = self.translist[self.undoindex]
|
||||||
self.undo_callback(_("_Undo %s") % transaction.get_description())
|
if transaction == None:
|
||||||
|
return False
|
||||||
|
|
||||||
|
mapbase = (self.person_map, self.family_map, self.source_map,
|
||||||
|
self.event_map, self.media_map, self.place_map)
|
||||||
|
|
||||||
|
subitems = transaction.get_recnos()
|
||||||
|
for record_id in subitems:
|
||||||
|
(key,handle,old_data,new_data) = transaction.get_record(record_id)
|
||||||
|
if key == REFERENCE_KEY:
|
||||||
|
self.undo_reference(new_data,handle)
|
||||||
|
else:
|
||||||
|
self.undo_data(new_data,handle,mapbase[key],_sigbase[key])
|
||||||
|
|
||||||
|
if self.undo_callback:
|
||||||
|
if self.undoindex == _UNDO_SIZE:
|
||||||
|
self.undo_callback(None)
|
||||||
|
else:
|
||||||
|
self.undo_callback(_("_Undo %s")
|
||||||
|
% transaction.get_description())
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def undo_reference(self,data,handle):
|
def undo_reference(self,data,handle):
|
||||||
@ -1321,16 +1358,16 @@ class GrampsDbBase(GrampsDBCallback):
|
|||||||
person = self.get_person_from_handle(handle)
|
person = self.get_person_from_handle(handle)
|
||||||
self.genderStats.uncount_person (person)
|
self.genderStats.uncount_person (person)
|
||||||
if not transaction.batch:
|
if not transaction.batch:
|
||||||
transaction.add(PERSON_KEY,handle,person.serialize())
|
transaction.add(PERSON_KEY,handle,person.serialize(),None)
|
||||||
transaction.person_del.append(str(handle))
|
transaction.person_del.append(str(handle))
|
||||||
|
|
||||||
def _do_remove_object(self,handle,trans,dmap,key,del_list):
|
def _do_remove_object(self,handle,trans,dmap,key,del_list):
|
||||||
self._delete_primary_from_reference_map(handle,transaction)
|
self._delete_primary_from_reference_map(handle,trans)
|
||||||
if not self.readonly:
|
if not self.readonly:
|
||||||
handle = str(handle)
|
handle = str(handle)
|
||||||
if not trans.batch:
|
if not trans.batch:
|
||||||
old_data = dmap.get(handle)
|
old_data = dmap.get(handle)
|
||||||
trans.add(key,handle,old_data)
|
trans.add(key,handle,old_data,None)
|
||||||
del_list.append(handle)
|
del_list.append(handle)
|
||||||
|
|
||||||
def remove_source(self,handle,transaction):
|
def remove_source(self,handle,transaction):
|
||||||
@ -1751,14 +1788,19 @@ class Transaction:
|
|||||||
"""
|
"""
|
||||||
self.msg = msg
|
self.msg = msg
|
||||||
|
|
||||||
def add(self, type, handle, data):
|
def add(self, type, handle, old_data, new_data):
|
||||||
"""
|
"""
|
||||||
Adds a commit operation to the Transaction. The type is a constant
|
Adds a commit operation to the Transaction. The type is a constant
|
||||||
that indicates what type of PrimaryObject is being added. The handle
|
that indicates what type of PrimaryObject is being added. The handle
|
||||||
is the object's database handle, and the data is the tuple returned
|
is the object's database handle, and the data is the tuple returned
|
||||||
by the object's serialize method.
|
by the object's serialize method.
|
||||||
"""
|
"""
|
||||||
self.last = self.db.append(cPickle.dumps((type,handle,data),1))
|
self.last = self.db.append(cPickle.dumps((type,
|
||||||
|
handle,
|
||||||
|
old_data,
|
||||||
|
new_data),
|
||||||
|
1)
|
||||||
|
)
|
||||||
if self.first == None:
|
if self.first == None:
|
||||||
self.first = self.last
|
self.first = self.last
|
||||||
|
|
||||||
|
@ -93,6 +93,7 @@ uidefault = '''<ui>
|
|||||||
</menu>
|
</menu>
|
||||||
<menu action="EditMenu">
|
<menu action="EditMenu">
|
||||||
<menuitem action="Undo"/>
|
<menuitem action="Undo"/>
|
||||||
|
<menuitem action="Redo"/>
|
||||||
<separator/>
|
<separator/>
|
||||||
<placeholder name="CommonEdit"/>
|
<placeholder name="CommonEdit"/>
|
||||||
<menuitem action="CmpMerge"/>
|
<menuitem action="CmpMerge"/>
|
||||||
@ -314,6 +315,7 @@ class ViewManager:
|
|||||||
('Export', gtk.STOCK_SAVE_AS, '_Export', "<control>e", None, self.export_data),
|
('Export', gtk.STOCK_SAVE_AS, '_Export', "<control>e", None, self.export_data),
|
||||||
('Abandon', gtk.STOCK_REVERT_TO_SAVED, '_Abandon changes and quit'),
|
('Abandon', gtk.STOCK_REVERT_TO_SAVED, '_Abandon changes and quit'),
|
||||||
('Undo', gtk.STOCK_UNDO, '_Undo', '<control>z', None, self.undo),
|
('Undo', gtk.STOCK_UNDO, '_Undo', '<control>z', None, self.undo),
|
||||||
|
('Redo', gtk.STOCK_REDO, '_Redo', '<shift><control>z', None, self.redo),
|
||||||
('CmpMerge', None, '_Compare and merge'),
|
('CmpMerge', None, '_Compare and merge'),
|
||||||
('FastMerge', None, '_Fast merge'),
|
('FastMerge', None, '_Fast merge'),
|
||||||
('ScratchPad', gtk.STOCK_PASTE, '_ScratchPad', None, None, self.scratchpad),
|
('ScratchPad', gtk.STOCK_PASTE, '_ScratchPad', None, None, self.scratchpad),
|
||||||
@ -824,6 +826,9 @@ class ViewManager:
|
|||||||
def undo(self,obj):
|
def undo(self,obj):
|
||||||
self.state.db.undo()
|
self.state.db.undo()
|
||||||
|
|
||||||
|
def redo(self,obj):
|
||||||
|
self.state.db.redo()
|
||||||
|
|
||||||
def export_data(self,obj):
|
def export_data(self,obj):
|
||||||
import Exporter
|
import Exporter
|
||||||
Exporter.Exporter(self.state,self.uistate)
|
Exporter.Exporter(self.state,self.uistate)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user