"Fossies" - the Fresh Open Source Software Archive 
Member "pysize-0.2/pysize/core/history.py" (11 Mar 2007, 2124 Bytes) of package /linux/privat/old/pysize-0.2.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
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.
5 #
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.
10 #
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.
14 #
15 # See the COPYING file for license information.
16 #
17 # Copyright (c) 2006, 2007 Guillaume Chazarain <guichaz@yahoo.fr>
18
19 from pysize.core.observable import observable
20
21 # [(fullpaths, name)]
22 history = []
23 next_insertion_index = 0
24 history_observable = observable()
25
26 def add_entry(tree):
27 global next_insertion_index
28 fp = tree.fullpaths
29 if not fp:
30 return
31 same = next_insertion_index and fp == history[next_insertion_index - 1][0]
32 if not same:
33 if next_insertion_index == len(history):
34 # History is being written
35 history.append(None)
36 else:
37 paths, name = history[next_insertion_index]
38 if fp != paths:
39 # History took another path, clear the remaining forward history
40 del history[next_insertion_index + 1:]
41 history[next_insertion_index] = fp, tree.root.get_name()
42 next_insertion_index += 1
43 history_observable.fire_observers(next_insertion_index, history)
44
45 def go_to_history(index):
46 global next_insertion_index
47 entry = history[index][0]
48 next_insertion_index = index + 1
49 history_observable.fire_observers(next_insertion_index, history)
50 return entry
51
52 def forward():
53 if len(history) > next_insertion_index:
54 return go_to_history(next_insertion_index)
55
56 def back():
57 if next_insertion_index > 1:
58 return go_to_history(next_insertion_index - 2)