13
def new_file(self, ext = ''):
14
fd, tmp = tempfile.mkstemp(ext)
16
self.tmp_files.append(tmp)
20
for f in self.tmp_files:
26
## Singleton implementation of a registry class
32
'history' : collections.deque(maxlen=20),
34
'has_changed' : False,
39
def __init__(self, main_win = None):
40
self.__dict__ = self.__shared_state
41
if main_win: self.main = main_win
45
return self.doc_uid - 1
48
can = bool(self.future)
49
self.main.ui.tb_redo.set_sensitive(can)
53
can = bool(self.history)
54
self.main.ui.tb_undo.set_sensitive(can)
60
self.history = collections.deque(maxlen=20),
61
self.has_changed = True
65
self.history.append(cmd)
69
return self.can_undo()
74
self.history = collections.deque(maxlen=20),
75
self.has_changed = False
78
def save(self, fn = None):
81
self.has_changed = True
82
else: filename = self.filename
83
if not filename: return False
84
if not self.has_changed:
85
self.status("No changes need to be saved.")
89
shelf = shelve.open(filename, 'n')
90
shelf['ls_doc'] = self.ls_doc
91
shelf['doc_dict'] = self.doc_dict
92
shelf['doc_uid'] = self.doc_uid
93
shelf['history'] = self.history
95
self.filename = filename
96
self.status('File "%s" has been saved successfully.' % self.filename)
98
self.status('Unable to save "%s".' % self.filename)
101
self.has_changed = False
104
def open(self, filename):
105
shelf = shelve.open(filename)
107
model = shelf['ts_plot']
108
##TODO: Probably a check on model is needed here
110
self.doc_dict = shelf['doc_dict']
111
self.doc_uid = shelf['doc_uid']
112
self.state = shelf['state'] if 'state' in shelf else ""
113
self.history = shelf['history'] if 'history' in shelf else []
115
self.filename = filename
116
self.has_changed = False
118
except (KeyError, ValueError):
123
self.status('File "%s" has been loaded successfully.' % self.filename)
128
if not self.can_redo(): return False
130
cmd = self.future.pop()
132
self.history.append(cmd)
135
return self.can_redo()
137
def temp_new(self, name):
138
self.temp[name] = TempContext()
139
return self.temp[name]
141
def temp_delete(self, name):
145
if not self.can_undo(): return False
147
cmd = self.history.pop()
149
self.future.append(cmd)
152
return self.can_undo()