mirror of
https://github.com/lalbornoz/roar.git
synced 2024-12-23 04:46:37 +00:00
MiRCARTCanvas{,Journal}.py: fix {un,re}do regarding brush sizes >(1,1).
This commit is contained in:
parent
e7b7e05234
commit
1099341b5d
@ -102,7 +102,6 @@ class MiRCARTCanvas(wx.Panel):
|
||||
patchOld[1:] = self._getMapCell(patchOld[0])
|
||||
self._setMapCell(absMapPoint, *patch[1:])
|
||||
self._drawPatch(patch, eventDc, tmpDc, atPoint)
|
||||
self.parentFrame.onCanvasUpdate()
|
||||
if isInherit:
|
||||
return patchOld
|
||||
# }}}
|
||||
@ -118,6 +117,7 @@ class MiRCARTCanvas(wx.Panel):
|
||||
event, mapPoint, self.brushColours, self.brushSize, \
|
||||
event.Dragging(), event.LeftIsDown(), event.RightIsDown())
|
||||
self.canvasJournal.merge(mapPatches, eventDc, tmpDc, mapPoint)
|
||||
self.parentFrame.onCanvasUpdate()
|
||||
self.parentFrame.onCanvasMotion(event, mapPoint)
|
||||
# }}}
|
||||
# {{{ onMouseWindowEvent(self, event): XXX
|
||||
@ -168,7 +168,9 @@ class MiRCARTCanvas(wx.Panel):
|
||||
# }}}
|
||||
# {{{ redo(self): XXX
|
||||
def redo(self):
|
||||
return self.canvasJournal.redo()
|
||||
result = self.canvasJournal.redo()
|
||||
self.parentFrame.onCanvasUpdate()
|
||||
return result
|
||||
# }}}
|
||||
# {{{ resize(self, newCanvasSize): XXX
|
||||
def resize(self, newCanvasSize):
|
||||
@ -191,7 +193,9 @@ class MiRCARTCanvas(wx.Panel):
|
||||
# }}}
|
||||
# {{{ undo(self): XXX
|
||||
def undo(self):
|
||||
return self.canvasJournal.undo()
|
||||
result = self.canvasJournal.undo()
|
||||
self.parentFrame.onCanvasUpdate()
|
||||
return result
|
||||
# }}}
|
||||
|
||||
# {{{ __del__(self): destructor method
|
||||
|
@ -35,18 +35,23 @@ class MiRCARTCanvasJournal():
|
||||
patch[0], patch, eventDc, tmpDc, (0, 0), True)
|
||||
self.patchesTmp = []
|
||||
# }}}
|
||||
# {{{ _pushTmp(self, atPoint, patch): XXX
|
||||
def _pushTmp(self, absMapPoint):
|
||||
self.patchesTmp.append([absMapPoint, None, None, None])
|
||||
# {{{ _pushTmp(self, atPoint): XXX
|
||||
def _pushTmp(self, atPoint):
|
||||
self.patchesTmp.append([atPoint, None, None, None])
|
||||
# }}}
|
||||
# {{{ _pushUndo(self, atPoint, patchUndo, patchRedo): XXX
|
||||
def _pushUndo(self, atPoint, patchUndo, patchRedo):
|
||||
# {{{ _pushUndo(self, atPoint, patches): XXX
|
||||
def _pushUndo(self, atPoint, patches):
|
||||
if self.patchesUndoLevel > 0:
|
||||
del self.patchesUndo[0:self.patchesUndoLevel]
|
||||
self.patchesUndoLevel = 0
|
||||
absMapPoint = self._relMapPointToAbsMapPoint(patchUndo[0], atPoint)
|
||||
self.patchesUndo.insert(0, [ \
|
||||
[absMapPoint, *patchUndo[1:]], [absMapPoint, *patchRedo[1:]]])
|
||||
patchesUndo = []
|
||||
for patch in patches:
|
||||
absMapPoint = self._relMapPointToAbsMapPoint(patch[0][0], atPoint)
|
||||
patchesUndo.append([ \
|
||||
[absMapPoint, *patch[0][1:]], \
|
||||
[absMapPoint, *patch[1][1:]]])
|
||||
if len(patchesUndo) > 0:
|
||||
self.patchesUndo.insert(0, patchesUndo)
|
||||
# }}}
|
||||
# {{{ _relMapPointToAbsMapPoint(self, relMapPoint, atPoint): XXX
|
||||
def _relMapPointToAbsMapPoint(self, relMapPoint, atPoint):
|
||||
@ -54,6 +59,7 @@ class MiRCARTCanvasJournal():
|
||||
# }}}
|
||||
# {{{ merge(self, mapPatches, eventDc, tmpDc, atPoint): XXX
|
||||
def merge(self, mapPatches, eventDc, tmpDc, atPoint):
|
||||
patchesUndo = []
|
||||
for mapPatch in mapPatches:
|
||||
mapPatchTmp = mapPatch[0]
|
||||
if mapPatchTmp:
|
||||
@ -71,15 +77,17 @@ class MiRCARTCanvasJournal():
|
||||
patchUndo = \
|
||||
self.parentCanvas.onJournalUpdate(mapPatchTmp, \
|
||||
absMapPoint, patch, eventDc, tmpDc, atPoint, True)
|
||||
self._pushUndo(atPoint, patchUndo, patch)
|
||||
patchesUndo.append([patchUndo, patch])
|
||||
if len(patchesUndo) > 0:
|
||||
self._pushUndo(atPoint, patchesUndo)
|
||||
# }}}
|
||||
# {{{ redo(self): XXX
|
||||
def redo(self):
|
||||
if self.patchesUndoLevel > 0:
|
||||
self.patchesUndoLevel -= 1
|
||||
redoPatch = self.patchesUndo[self.patchesUndoLevel][1]
|
||||
self.parentCanvas.onJournalUpdate(False, \
|
||||
redoPatch[0], redoPatch, None, None, (0, 0))
|
||||
for patch in self.patchesUndo[self.patchesUndoLevel]:
|
||||
self.parentCanvas.onJournalUpdate(False, \
|
||||
patch[1][0], patch[1], None, None, (0, 0))
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
@ -97,10 +105,11 @@ class MiRCARTCanvasJournal():
|
||||
# {{{ undo(self): XXX
|
||||
def undo(self):
|
||||
if self.patchesUndo[self.patchesUndoLevel] != None:
|
||||
undoPatch = self.patchesUndo[self.patchesUndoLevel][0]
|
||||
patches = self.patchesUndo[self.patchesUndoLevel]
|
||||
self.patchesUndoLevel += 1
|
||||
self.parentCanvas.onJournalUpdate(False, \
|
||||
undoPatch[0], undoPatch, None, None, (0, 0))
|
||||
for patch in patches:
|
||||
self.parentCanvas.onJournalUpdate(False, \
|
||||
patch[0][0], patch[0], None, None, (0, 0))
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
Loading…
Reference in New Issue
Block a user