"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)