⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 undo.py

📁 Python Development Environment (Python IDE plugin for Eclipse). Features editor, code completion, re
💻 PY
字号:
from bike import log
from bike.transformer.save import queueFileToSave

_undoStack = None

def getUndoStack(forceNewStack = 0):
    global _undoStack
    if _undoStack is None or forceNewStack:
        _undoStack = UndoStack()
    return _undoStack

class UndoStackEmptyException: pass

class UndoStack(object):
    def __init__(self):
        self.stack = []
        self.stack.append({})
        self.frame = self.stack[-1]
        self.setUndoBufferSize(10)

    def setUndoBufferSize(self, undoBufferSize):
        self.undoBufferSize = undoBufferSize

    def addSource(self, filename, src):
        if filename not in self.frame:
            self.frame[filename] = src

    def commitUndoFrame(self):
        #restrict size of buffer
        while len(self.stack) > self.undoBufferSize:
            #print "clipping undo stack"
            del self.stack[0]

        if len(self.frame) != 0:
            #print "commitUndoFrame"
            self.stack.append({})
            self.frame = self.stack[-1]

    def undo(self, **opts):
        #print "undo called",self.stack
        if len(self.stack) < 2:
            raise UndoStackEmptyException()
        undoframe = self.stack[-2]
        #print "undoframe is",undoframe
        for filename,src in undoframe.iteritems():
            print >>log.progress, "Undoing:",filename
            queueFileToSave(filename,src)
        self.stack = self.stack[:-2]
        self.stack.append({})
        self.frame = self.stack[-1]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -