~ubuntu-branches/debian/sid/calibre/sid

« back to all changes in this revision

Viewing changes to src/calibre/gui2/tweak_book/undo.py

  • Committer: Package Import Robot
  • Author(s): Martin Pitt
  • Date: 2014-02-27 07:48:06 UTC
  • mto: This revision was merged to the branch mainline in revision 74.
  • Revision ID: package-import@ubuntu.com-20140227074806-64wdebb3ptosxhhx
Tags: upstream-1.25.0+dfsg
ImportĀ upstreamĀ versionĀ 1.25.0+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
    def __init__(self, container):
31
31
        self.container = container
32
32
        self.message = None
 
33
        self.rewind_message = None
33
34
 
34
35
class GlobalUndoHistory(QAbstractListModel):
35
36
 
55
56
    def label_for_row(self, row):
56
57
        msg = self.states[row].message
57
58
        if self.pos == row:
58
 
            msg = _('Current state')
 
59
            msg = _('Current state') + ('' if not msg else _(' [was %s]') % msg)
59
60
        elif not msg:
60
61
            msg = _('[Unnamed state]')
61
62
        else:
62
 
            msg = _('Before %s') % msg
 
63
            msg = msg
63
64
        return msg
64
65
 
65
66
    def label_for_container(self, container):
80
81
        self.pos = 0
81
82
        self.reset()
82
83
 
 
84
    def truncate(self):
 
85
        extra = self.states[self.pos+1:]
 
86
        if extra:
 
87
            self.beginRemoveRows(ROOT, self.pos+1, len(self.states) - 1)
 
88
        cleanup(extra)
 
89
        self.states = self.states[:self.pos+1]
 
90
        if extra:
 
91
            self.endRemoveRows()
 
92
 
83
93
    def add_savepoint(self, new_container, message):
84
94
        try:
 
95
            self.states[self.pos].rewind_message = self.states[self.pos].message
85
96
            self.states[self.pos].message = message
86
97
        except IndexError:
87
98
            raise IndexError('The checkpoint stack has an incorrect position pointer. This should never happen: self.pos = %r, len(self.states) = %r' % (
88
99
                self.pos, len(self.states)))
89
 
        extra = self.states[self.pos+1:]
90
 
        if extra:
91
 
            self.beginRemoveRows(ROOT, self.pos+1, len(self.states) - 1)
92
 
        cleanup(extra)
93
 
        self.states = self.states[:self.pos+1]
94
 
        if extra:
95
 
            self.endRemoveRows()
 
100
        self.truncate()
96
101
        self.beginInsertRows(ROOT, self.pos+1, self.pos+1)
97
102
        self.states.append(State(new_container))
98
103
        self.pos += 1
103
108
            self.beginRemoveRows(ROOT, 0, num - 1)
104
109
            cleanup(self.states[:num])
105
110
            self.states = self.states[num:]
 
111
            self.pos -= num
106
112
            self.endRemoveRows()
107
113
 
108
114
    def rewind_savepoint(self):
116
122
            self.pos -= 1
117
123
            cleanup([self.states.pop().container])
118
124
            self.endRemoveRows()
119
 
            self.dataChanged.emit(self.index(self.pos))
 
125
            self.dataChanged.emit(self.index(self.pos), self.index(self.pos))
120
126
            ans = self.current_container
121
 
            ans.message = None
 
127
            self.states[self.pos].message = self.states[self.pos].rewind_message
122
128
            return ans
123
129
 
124
130
    def undo(self):
160
166
    def redo_msg(self):
161
167
        if not self.can_redo:
162
168
            return ''
163
 
        return self.states[self.pos].message or ''
 
169
        return self.states[self.pos + 1].message or _('[Unnamed state]')
 
170
 
 
171
    def update_path_to_ebook(self, path):
 
172
        for state in self.states:
 
173
            state.container.path_to_ebook = path
164
174
 
165
175
class SpacedDelegate(QStyledItemDelegate):
166
176