Add the total size
[pysize.git] / pysize / core / history.py
blob3764432efed019572fe8ff8dae26de6567755194
1 # This program is free software; you can redistribute it and/or modify
2 # it under the terms of the GNU General Public License as published by
3 # the Free Software Foundation; either version 2 of the License, or
4 # (at your option) any later version.
6 # This program is distributed in the hope that it will be useful,
7 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 # GNU Library General Public License for more details.
11 # You should have received a copy of the GNU General Public License
12 # along with this program; if not, write to the Free Software
13 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
15 # See the COPYING file for license information.
17 # Copyright (c) 2006 Guillaume Chazarain <guichaz@yahoo.fr>
19 from pysize.core.pysize_fs_tree import pysize_tree
20 from pysize.core.observable import observable
22 # [(fullpaths, name)]
23 history = []
24 next_insertion_index = 0
25 history_observable = observable()
27 def add_entry(tree):
28 global next_insertion_index
29 fp = tree.fullpaths
30 if not fp:
31 return
32 same = next_insertion_index and fp == history[next_insertion_index - 1][0]
33 if not same:
34 if next_insertion_index == len(history):
35 # History is being written
36 history.append(None)
37 else:
38 paths, name = history[next_insertion_index]
39 if fp != paths:
40 # History took another path, clear the remaining forward history
41 del history[next_insertion_index + 1:]
42 history[next_insertion_index] = fp, tree.root.get_name()
43 next_insertion_index += 1
44 history_observable.fire_observers(next_insertion_index, history)
46 def go_to_history(index):
47 global next_insertion_index
48 entry = history[index][0]
49 next_insertion_index = index + 1
50 history_observable.fire_observers(next_insertion_index, history)
51 return entry
53 def forward():
54 if len(history) > next_insertion_index:
55 return go_to_history(next_insertion_index)
57 def back():
58 if next_insertion_index > 1:
59 return go_to_history(next_insertion_index - 2)