exit from pyview by ESC
[lfm.git] / ChangeLog
blob3f70d36aff9f10b698217ab629171bdc0e696468
1 Mon Sep  3 23:03:32 2007  Iñigo Serna  <inigoserna@telefonica.net>
3         * lfm/__init__.py: version 2.0
4         * lfm/lfm.py:
5         * setup.py:
6         * PKG-INFO: 
8 Mon Sep  3 22:59:56 2007  Iñigo Serna  <inigoserna@telefonica.net>
10         * README: update documentation to describe new features, changes, etc
11         * README.pyview: 
12         * NEWS:
13         * TODO:
14         * lfm.1: 
15         * pyview.1: 
17 Sun Sep  2 20:12:56 2007  Iñigo Serna  <inigoserna@telefonica.net>
19         * lfm/config.py: added new file types extensions
21 Sun Sep  2 17:23:01 2007  Iñigo Serna  <inigoserna@telefonica.net>
23         * lfm/actions.py (findgrep): panelize: clean code
25 Sun Sep  2 17:13:43 2007  Iñigo Serna  <inigoserna@telefonica.net>
27         * lfm/actions.py (__do_change_perms): refactor: new function
29 Sun Sep  2 17:05:56 2007  Iñigo Serna  <inigoserna@telefonica.net>
31         * lfm/actions.py (show_dirs_size): simplify code
33 Sun Sep  2 16:02:15 2007  Iñigo Serna  <inigoserna@telefonica.net>
35         * lfm/pyview.py (PyView.run): fix bug: goto line/byte 0
37 Sat Sep  1 15:57:56 2007  Iñigo Serna  <inigoserna@telefonica.net>
39         * lfm/pyview.py (PyView): use standard lib logging module in debug
40         messages
42 Sat Sep  1 15:53:16 2007  Iñigo Serna  <inigoserna@telefonica.net>
44         * lfm/pyview.py (FileView.show_text_wrap): simplify and clean code
45         * lfm/pyview.py (FileView.show_text_nowrap): 
46         * lfm/pyview.py (FileView.show_hex): 
47         * lfm/pyview.py (FileView.run): 
49 Sat Sep  1 13:36:40 2007  Iñigo Serna  <inigoserna@telefonica.net>
51         * lfm/pyview.py (FileView.show_str): fix bug: sometimes a blank
52         space was added
54 Fri Aug 31 23:53:11 2007  Iñigo Serna  <inigoserna@telefonica.net>
56         * lfm/messages.py (EntryLine.manage_keys): refresh app display
57         after canceling completion
59 Fri Aug 31 23:48:01 2007  Iñigo Serna  <inigoserna@telefonica.net>
61         * lfm/messages.py (cursor_show2): move from lfm.py
62         * lfm/messages.py (cursor_show): 
63         * lfm/messages.py (cursor_hide): 
65 Fri Aug 31 13:23:46 2007  Iñigo Serna  <inigoserna@telefonica.net>
67         * lfm/files.py (__do_sort): fix bug: "sort_mix_cases = 1 
68         performance degrades on larger dirs". Reported by Andrey
69         Skvortsov. This speeds up loading directory contents quite a lot
70         
71 Fri Aug 31 10:32:45 2007  Iñigo Serna  <inigoserna@telefonica.net>
73         * lfm/files.py: move all constants to the top of the module
75 Fri Aug 31 10:26:43 2007  Iñigo Serna  <inigoserna@telefonica.net>
77         * lfm/files.py (get_rdev): clean code
79 Fri Aug 31 02:02:34 2007  Iñigo Serna  <inigoserna@telefonica.net>
81         * lfm/files.py (mkdtemp): use more secure tempfile.mkdtemp
82         * lfm/vfs.py (init): use files.mkdtemp
83         * lfm/vfs.py (copy): 
84         * lfm/vfs.py (pan_init): 
85         * lfm/vfs.py (pan_copy): 
86         * lfm/files.py (mktemp): use more secure tempfile.mkstemp
87         * lfm/pyview.py (create_temp_for_stdin): 
88         * lfm/vfs.py (regenerate_file): as files.mktemp calls
89         tempfile.mkstemp we don't need modify mask too
91 Fri Aug 31 01:20:55 2007  Iñigo Serna  <inigoserna@telefonica.net>
93         * lfm/actions.py (do_change_perms): refactoring: new function
95 Thu Aug 30 23:36:10 2007  Iñigo Serna  <inigoserna@telefonica.net>
97         * lfm/actions.py (cursor_right): now pressing cursor_right 
98         is the same as pressing enter
100 Thu Aug 30 22:37:06 2007  Iñigo Serna  <inigoserna@telefonica.net>
102         * lfm/actions.py (Tree.run): fix bug: catch window resize
103         * lfm/actions.py (Tree.__calculate_dims): refactor method
105 Thu Aug 30 20:01:55 2007  Iñigo Serna  <inigoserna@telefonica.net>
107         * lfm/actions.py (touch_file): fix bug: escape filenames
108         with chars $ ". Reported by Andrey Skvortsov
109         * lfm/actions.py (open_shell): 
110         * lfm/actions.py (do_special_view_file): 
111         * lfm/actions.py (do_view_file): 
112         * lfm/actions.py (do_edit_file): 
113         * lfm/actions.py (do_execute_file): 
114         * lfm/actions.py (do_something_on_file): 
115         * lfm/actions.py (do_show_file_info.show_info): 
117 Thu Aug 30 18:30:26 2007  Iñigo Serna  <inigoserna@telefonica.net>
119         * lfm/lfm.py (Vfs.get_file): refactoring: new method
120         * lfm/lfm.py (Vfs.get_fullpathfile): refactoring: new method
121         * lfm/utils.py (get_escaped_filename): refactoring: new functions
122         * lfm/utils.py (get_escaped_command): 
123         * lfm/utils.py (run_on_current_file): 
125 Thu Aug 30 16:41:43 2007  Iñigo Serna  <inigoserna@telefonica.net>
127         * lfm/pyview.py (FileView.__init__): fix bug: pyview messages.py 
128         couldn't access window dimensions so it crashed
129         * lfm/pyview.py (InternalView.__init__):
131 Thu Aug 30 11:35:32 2007  Iñigo Serna  <inigoserna@telefonica.net>
133         * lfm/lfm.py (usage): make error message more visible
135 Thu Aug 30 11:30:15 2007  Iñigo Serna  <inigoserna@telefonica.net>
137         * lfm/lfm: check python version 2.3 or higher
138         * lfm/pyview: check python version 2.3 or higher
140 Thu Aug 30 11:13:49 2007  Iñigo Serna  <inigoserna@telefonica.net>
142         * lfm/lfm.py (Pane.load_tabs_with_paths): fix bug: don't show ugly
143         traceback crash when user starts "lfm path" and has no permissions
144         to enter. Show error message and default to current directory
145         * lfm/lfm.py (TabVfs.init): propagate error back
147 Thu Aug 30 10:20:44 2007  Iñigo Serna  <inigoserna@telefonica.net>
149         * lfm/lfm.py (lfm_start): modified the sequence in which tabs are
150         created and filled with path contents. Prepare code to support
151         sessions in a future
152         * lfm/lfm.py (main): 
153         * lfm/lfm.py (Lfm.__init__): pane contents are not filled in the
154         constructor anymore. Lfm.load_paths must be called explicitly
155         * lfm/lfm.py (Lfm.load_paths): new method
156         * lfm/lfm.py (Pane.load_tabs_with_paths): new method
157         * lfm/lfm.py (Pane.__init__): 
158         * lfm/lfm.py (TabVfs.__init__): self.init is not called in the
159         constructor anymore. Pane.load_tabs_with_paths must be called
160         explicitly
162         * lfm/lfm.py (Vfs.init_dir): the awful hack used here to get
163         preferences the first time is not needed anymore
164         * lfm/lfm.py (TabVfs.init): 
166 Thu Aug 30 01:56:17 2007  Iñigo Serna  <inigoserna@telefonica.net>
168         * lfm/utils.py (do_findgrep): escape '-' character in grep patterns
170 Thu Aug 30 01:51:36 2007  Iñigo Serna  <inigoserna@telefonica.net>
172         * lfm/config.py: back to original '.lfmrc' configuration file name
174 Thu Aug 30 01:28:11 2007  Iñigo Serna  <inigoserna@telefonica.net>
176         * lfm/lfm.py (Vfs.enter_dir): Refactor code from actions.py to
177         these new methods
178         * lfm/lfm.py (Vfs.exit_dir): 
179         * lfm/actions.py (cursor_left): 
180         * lfm/actions.py (cursor_right): 
181         * lfm/actions.py (enter): 
183         * lfm/lfm.py (Vfs.enter_dir): fix bug: "if you try to enter a
184         directory with insufficient permissions, after the error message
185         is closed the cursorline refreshes to the first line""
186         This bug was first observed by Andrey, fixed by me
188 Thu Aug 30 01:13:13 2007  Iñigo Serna  <inigoserna@telefonica.net>
190         * lfm/lfm.py (Vfs.init): mark method as virtual
192 Thu Aug 30 00:57:20 2007  Iñigo Serna  <inigoserna@telefonica.net>
194         * lfm/lfm.py (Vfs.init_dir): error dialog must be in UI class
195         * lfm/lfm.py (TabVfs.init):
197 Wed Aug 29 17:41:26 2007  Iñigo Serna  <inigoserna@telefonica.net>
199         * lfm/messages.py (CommonWindow.__init__): change curses.COLS and
200         curses.LINES by app.maxw and app.maxh fixing the position of
201         dialogs in maximized terminals.
202         Curses.{COLS|LINES} are constants defined at curses library start
203         and they don't modify their values when window resizes
204         * lfm/messages.py (FixSizeCommonWindow.__init__): 
205         * lfm/messages.py (FixSizeProgressBarWindow.__init__):
206         * lfm/messages.py (FixSizeProgressBarWindow.show):
207         * lfm/messages.py (Yes_No_Buttons.__init__): 
208         * lfm/messages.py (Entry.__init__): 
209         * lfm/messages.py (get_a_key):
210         * lfm/messages.py (confirm):
211         * lfm/messages.py (confirm_all(:)
212         * lfm/messages.py (confirm_all_none):
213         * lfm/messages.py (DoubleEntry):
214         * lfm/messages.py (SelectItem):
215         * lfm/messages.py (FindfilesWin):
216         * lfm/messages.py (MenuWin):
217         * lfm/messages.py (ChangePerms):
218         
219 Mon Aug 27 23:07:24 2007  Iñigo Serna  <inigoserna@telefonica.net>
221         * lfm/lfm.py (StatusBar.display): fix crashes when filenames are
222         not encoded with same codec than LC tells us
223         * lfm/lfm.py (Pane.display_tabs): 
224         * lfm/lfm.py (Pane.display_files): 
225         * lfm/lfm.py (Pane.get_fileinfo_str_short): 
226         * lfm/lfm.py (Pane.get_fileinfo_str_long): 
227         * lfm/utils.py (encode): util functions to encode/decode filenames
228         * lfm/utils.py (decode): 
230 Mon Aug 27 21:11:06 2007  Iñigo Serna  <inigoserna@telefonica.net>
232         * lfm/lfm.py (Pane.manage_keys): the most expected fix to the
233         problems when maximizing windows. It was a stupid
234         curses.doupdate() missed. Andrey Skvortsov did it again!
235         Thanks, I ought you a beer.
237 Mon Aug 27 20:56:52 2007  Iñigo Serna  <inigoserna@telefonica.net>
239         * lfm/__init__.py:  support locale. Andrey Skvortsov
240         * lfm/lfm.py (StatusBar.display):
241         * lfm/lfm.py (Pane.display_tabs): 
242         * lfm/lfm.py (Pane.display_files): 
243         * lfm/lfm.py (Vfs.get_fileinfo_str_short): 
244         * lfm/lfm.py (Vfs.get_fileinfo_str_long): 
245         
246 Mon Aug 27 20:03:50 2007  Iñigo Serna  <inigoserna@telefonica.net>
248         * lfm/lfm.py (Pane.__calculate_dims): right pane fill to the
249         last column in terminal if their number is odd. Andrey Skvortsov
250         * lfm/lfm.py (Pane.__calculate_columns): 
252 Mon Aug 27 19:58:02 2007  Iñigo Serna  <inigoserna@telefonica.net>
254         * lfm/lfm.py (Lfm.quit_program): refactoring: new method
256 Mon Aug 27 17:52:18 2007  Iñigo Serna  <inigoserna@telefonica.net>
258         * lfm/actions.py (select_group): clean code. Andrey Skvortsov
260 Mon Aug 27 17:20:02 2007  Iñigo Serna  <inigoserna@telefonica.net>
262         * lfm/lfm.py (Vfs.get_fileinfo_str_short): clean code
263         * lfm/lfm.py (Vfs.get_fileinfo_str_long): 
265 Mon Aug 27 16:53:50 2007  Iñigo Serna  <inigoserna@telefonica.net>
267         * lfm/lfm.py (Pane.display_files): colorize by files
268         extension. By Andrey Skvortsov
269         * lfm/lfm.py (Pane.get_filetypecolorpair): new function
270         * lfm/lfm.py (Lfm.init_ui): added colors for files by extension
271         * lfm/config.py: added option color_files
272         * lfm/config.py: added colors for fiels by extension
274 Mon Aug 27 16:42:12 2007  Iñigo Serna  <inigoserna@telefonica.net>
276         * lfm/lfm.py (Pane.display_files): replace old code with Andrey's
277         beautiful and clean code'
278         * lfm/lfm.py (Pane.__calculate_scrollbar_dims): 
280 Mon Aug 27 13:47:36 2007  Iñigo Serna  <inigoserna@telefonica.net>
282         * lfm/config.py (load): consider path expand. Andrey Skvortsov
284 Mon Aug 27 13:40:55 2007  Iñigo Serna  <inigoserna@telefonica.net>
286         * lfm/actions.py (new_tab): Correct English messages. 
287         Andrey Skvortsov
288         * lfm/actions.py (close_tab): 
290 Mon Aug 27 12:41:26 2007  Iñigo Serna  <inigoserna@telefonica.net>
292         * lfm/compress.py (PackagerTBZ2): user -i (--ignore-zeros) flag to 
293         avoid spureous warnings. Andrey Skvortsov
294         * lfm/compress.py (PackagerTGZ): 
296 Tue Jul 31 01:19:11 2007  Iñigo Serna  <inigoserna@telefonica.net>
298         * lfm/files.py (get_fs_info): fix crash when "df" shows entries in
299         two different lines (dev is too large, f.e. in lvm2 volumes)
301 Tue Jul 31 00:17:22 2007  Iñigo Serna  <inigoserna@telefonica.net>
303         * lfm/lfm.py (Vfs.__init__): fix a stupid bug
305 Tue Jul 31 00:12:16 2007  Iñigo Serna  <inigoserna@telefonica.net>
307         * lfm/lfm.py (Lfm.run): simplify code
308         * lfm/lfm.py (Pane.init_ui): 
309         * lfm/lfm.py (Pane.display_tabs): 
310         * lfm/lfm.py (Pane.display_cursorbar): 
312 Mon Jul 30 23:11:09 2007  Iñigo Serna  <inigoserna@telefonica.net>
314         * lfm/lfm.py (Lfm.init_ui): rewrite code to not repeat default
315         colors in config.py
317 Mon Jul 30 12:25:15 2007  Iñigo Serna  <inigoserna@telefonica.net>
319         * lfm/messages.py (EntryLine.manage_keys): added keycode 127, 
320         as konsole interprets backspace as such, again Andrey Skvortsov
322 Mon Jul 30 11:57:39 2007  Iñigo Serna  <inigoserna@telefonica.net>
324         * lfm/lfm.py (Pane.manage_keys): python suggests to use while 1 
325         to while True in speed sensitive routines. Nicely noticed by
326         Andrey Skvortsov
328 Mon Jul 30 11:54:53 2007  Iñigo Serna  <inigoserna@telefonica.net>
330         * lfm/compress.py (PackagerZIP): zip flag needs to be -q instead 
331         of -X, catched by Andrey Skvortsov
333 Mon Jul 30 11:52:07 2007  Iñigo Serna  <inigoserna@telefonica.net>
335         * lfm/vfs.py (exit): 'ans' variable initilization was missing,
336         catched by Andrey Skvortsov
338 Sat May 14 00:10:45 2005  Iñigo Serna  <inigoserna@telefonica.net>
340         * lfm/actions.py (do_execute_file): fixed bug
342 Fri May 13 00:32:59 2005  Iñigo Serna  <inigoserna@telefonica.net>
344         * lfm/utils.py (do_findgrep): fixed stupid bug, status was missing
346 Fri May 13 00:24:46 2005  Iñigo Serna  <inigoserna@telefonica.net>
348         * lfm/utils.py (IPC): new InterProcessCommunication API
349         * lfm/utils.py (ProcessBaseLoop): use IPC class, clean code
350         * lfm/utils.py (ProcessFunc): use IPC class, clean code
352 Thu May 12 23:50:37 2005  Iñigo Serna  <inigoserna@telefonica.net>
354         * lfm/actions.py (show_dirs_size):
355         FIXED BUG: if stopped by user len(results) < len(dirs)
357 Thu May 12 00:20:21 2005  Iñigo Serna  <inigoserna@telefonica.net>
359         * lfm/utils.py (ProcessBaseLoop.check_keys): fixed bug
361 Mon May  9 00:21:39 2005  Iñigo Serna  <inigoserna@telefonica.net>
363         * lfm/utils.py (run_thread): old API deleted
364         * lfm/utils.py (ProcessLoop): old API deleted
366 Mon May  9 00:17:28 2005  Iñigo Serna  <inigoserna@telefonica.net>
368         * lfm/vfs.py (init): adapted to new ProcessFunc, code cleaned, 
369         improved error handling
370         * lfm/vfs.py (regenerate_file): 
372 Mon May  9 00:14:00 2005  Iñigo Serna  <inigoserna@telefonica.net>
374         * lfm/utils.py (do_compress_uncompress_file): cleaned and
375         rewritten to use ProcessUnCompressLoop
376         * lfm/utils.py (compress_uncompress_file): 
377         * lfm/utils.py (do_uncompress_dir): 
378         * lfm/utils.py (uncompress_dir): 
379         * lfm/utils.py (do_compress_dir): 
380         * lfm/utils.py (compress_dir): 
382 Sun May  8 23:55:20 2005  Iñigo Serna  <inigoserna@telefonica.net>
384         * lfm/utils.py (do_findgrep): adapted to new ProcessFunc, code
385         cleaned, improved error handling
386         * lfm/utils.py (do_find): 
388 Sun May  8 23:49:47 2005  Iñigo Serna  <inigoserna@telefonica.net>
390         * lfm/actions.py (findgrep): improve errors handling
392 Sun May  8 23:43:23 2005  Iñigo Serna  <inigoserna@telefonica.net>
394         * lfm/actions.py (do_execute_file): use new ProcessFunc
396 Sun May  8 23:41:37 2005  Iñigo Serna  <inigoserna@telefonica.net>
398         * lfm/utils.py (ProcessFunc): cleaned and improved
399         * lfm/utils.py (run_shell): cleaned and improved
401 Sun May  8 23:40:11 2005  Iñigo Serna  <inigoserna@telefonica.net>
403         * lfm/actions.py (show_dirs_size): use ProcessDirSizeLoop
404         * lfm/actions.py (do_show_dirs_size): 
406 Sun May  8 23:38:45 2005  Iñigo Serna  <inigoserna@telefonica.net>
408         * lfm/actions.py (copy): cleaned and rewritten to use Process*Loop API
409         * lfm/actions.py (move): 
410         * lfm/actions.py (rename): 
411         * lfm/actions.py (delete): 
413 Sun May  8 23:01:29 2005  Iñigo Serna  <inigoserna@telefonica.net>
415         * lfm/files.py (copy): code cleaning and function arguments arranged
416         * lfm/files.py (move): 
417         * lfm/files.py (delete): 
419 Sun May  8 22:27:22 2005  Iñigo Serna  <inigoserna@telefonica.net>
421         * lfm/utils.py (ProcessBaseLoop): new base virtual class
422         * lfm/utils.py (ProcessDirSizeLoop: new API
423         * lfm/utils.py (ProcessUnCompressLoop): 
424         * lfm/utils.py (ProcessCopyMoveLoop): 
425         * lfm/utils.py (ProcessRenameLoop): 
426         * lfm/utils.py (ProcessDeleteLoop): 
428 Sun May  1 16:42:41 2005  Iñigo Serna  <inigoserna@telefonica.net>
430         * lfm/utils.py (ProcessLoop.show_win): use progressbar window
431         * lfm/utils.py (ProcessLoop.process_output): 
433         * lfm/messages.py (FixSizeProgressBarWindow): new dialog
434         * lfm/messages.py (winprogress_nokey): wrapper for FixSizeProgressBarWindow
436 Sun May  1 01:18:47 2005  Iñigo Serna  <inigoserna@telefonica.net>
438         * lfm/utils.py (do_uncompress_dir): 
439         * lfm/utils.py (do_compress_dir): 
440         FIXED BUG: delete garbage if user stops process
441         * lfm/compress.py (PackagerBase.delete_uncompress_temp): 
442         * lfm/compress.py (PackagerBase.delete_compress_temp): 
443         * lfm/vfs.py (exit): 
444         * lfm/vfs.py (regenerate_file): 
446 Sun May  1 00:19:23 2005  Iñigo Serna  <inigoserna@telefonica.net>
448         * lfm/utils.py (ProcessFunc.check_keys): fixed typo
450 Sat Apr 30 22:54:28 2005  Iñigo Serna  <inigoserna@telefonica.net>
452         * lfm/actions.py (do_special_view_file): use run_dettached
453         and don't show crap messages from started app
454         * lfm/utils.py (run_dettached): new function
456 Sat Apr 30 16:55:14 2005  Iñigo Serna  <inigoserna@telefonica.net>
458         * lfm/utils.py (do_findgrep): 
459         FIXED BUG: special chars should be escaped, f.e. \ ( ) [ ]
461 Sat Apr 30 16:25:36 2005  Iñigo Serna  <inigoserna@telefonica.net>
463         * lfm/actions.py (enter): 
464         FIXED BUG: "enter" tries to create a vfs from a simple
465         bzipped or gzipped file
467 Sat Apr 30 13:12:08 2005  Iñigo Serna  <inigoserna@telefonica.net>
469         * lfm/utils.py (do_find): FIXED BUG: crashed when no results
470         * lfm/utils.py (do_findgrep): 
472 Fri Apr 29 00:55:47 2005  Iñigo Serna  <inigoserna@telefonica.net>
474         * lfm/actions.py (create_link): fixed a bug
476 Fri Apr  1 00:02:14 2005  Iñigo Serna  <inigoserna@telefonica.net>
478         * lfm/utils.py (do_findgrep): 
479         FIXED BUG: when found a match in a binary file, the output text is
480         not formatted in the way we wanted
482 Wed Mar 30 22:42:44 2005  Iñigo Serna  <inigoserna@telefonica.net>
484         * lfm/files.py (get_fileinfo_dict): fixed a typo
486 Wed Mar 30 21:40:13 2005  Iñigo Serna  <inigoserna@telefonica.net>
488         * lfm/utils.py (do_findgrep): using new ProcessFunc and run_shell
489         * lfm/utils.py (do_find): 
491         * lfm/utils.py (do_compress_uncompress_file): using new
492         ProcessFunc and run_shell
493         * lfm/utils.py (do_uncompress_dir): 
494         * lfm/utils.py (do_compress_dir): 
495         * lfm/utils.py (compress_uncompress_file): using new ProcessLoop
496         * lfm/utils.py (uncompress_dir): 
497         * lfm/utils.py (compress_dir): 
499         * lfm/vfs.py (init): using new utils.do_uncompress_dire
500         * lfm/vfs.py (regenerate_file): using new ProcessFunc
502         * lfm/actions.py (show_dirs_size): using new ProcessLoop
503         * lfm/actions.py (do_execute_file): using new ProcessFunc
505 Wed Mar 30 21:34:30 2005  Iñigo Serna  <inigoserna@telefonica.net>
507         * lfm/utils.py (ProcessLoop): rewritten
508         * lfm/utils.py (ProcessFunc): rewritten
509         * lfm/utils.py (run_shell): rewritten, to be executed inside ProcessFunc
511 Wed Mar 30 21:31:51 2005  Iñigo Serna  <inigoserna@telefonica.net>
513         * lfm/utils.py (ProcessBase): removed
514         * lfm/utils.py (ProcessShell): removed, run_shell inside ProcessFunc
516 Wed Mar 30 21:27:20 2005  Iñigo Serna  <inigoserna@telefonica.net>
518         * lfm/actions.py (delete): cosmetic changes
520 Tue Mar 29 23:28:07 2005  Iñigo Serna  <inigoserna@telefonica.net>
522         * lfm/messages.py (confirm_all): add a skip_all option
523         * lfm/messages.py (confirm_all): fix a silly bug ord 
524         * lfm/messages.py (confirm): 
526 Mon Mar 28 03:26:25 2005  Iñigo Serna  <inigoserna@telefonica.net>
528         * lfm/utils.py (compress_uncompress_file): now use ProcessLoop
529         * lfm/utils.py (uncompress_dir): 
530         * lfm/utils.py (compress_dir): 
532 Mon Mar 28 03:26:14 2005  Iñigo Serna  <inigoserna@telefonica.net>
534         * lfm/utils.py (do_compress_uncompress_file): now use ProcessShell
535         * lfm/utils.py (do_uncompress_dir): 
536         * lfm/utils.py (do_compress_dir): 
537         * lfm/utils.py (do_findgrep): 
538         * lfm/utils.py (do_find): 
539         * lfm/actions.py (do_execute_file):
540         * lfm/vfs.py (regenerate_file):
542 Mon Mar 28 03:23:53 2005  Iñigo Serna  <inigoserna@telefonica.net>
544         * lfm/utils.py (ProcessBase.init_gui): obbey gui flag
545         * lfm/utils.py (ProcessBase.end_gui): 
546         * lfm/utils.py (ProcessBase.show_win): 
547         * lfm/utils.py (ProcessBase.animate_cursor): 
548         * lfm/utils.py (ProcessBase.check_keys): 
550 Mon Mar 28 03:22:57 2005  Iñigo Serna  <inigoserna@telefonica.net>
552         * lfm/utils.py (ProcessShell): execute a shell command.
553         Obsoletes run_shell function
555 Thu Mar 24 01:31:47 2005  Iñigo Serna  <inigoserna@telefonica.net>
557         * lfm/actions.py (show_dirs_size): use ProcessLoop
558         * lfm/actions.py (do_show_dirs_size): 
560 Thu Mar 24 01:29:06 2005  Iñigo Serna  <inigoserna@telefonica.net>
562         * lfm/utils.py (ProcessBase): abstract class to execute functions
563         or commands in background. It will obsolete run_thread, run_shell
564         and run_loop
565         * lfm/utils.py (ProcessFunc): execute a function
566         * lfm/utils.py (ProcessLoop): execute a loop
568 Thu Mar 24 01:26:47 2005  Iñigo Serna  <inigoserna@telefonica.net>
570         * lfm/utils.py (loop_child_process): function name changed,
571         "child_process" is now "loop_child_process"
572         * lfm/utils.py (run_loop): use "loop_child_process"
573         * lfm/utils.py (get_shell_output): delete old debug print 
574         * lfm/utils.py (get_shell_output2): delete old debug print
576 Wed Mar 23 01:06:46 2005  Iñigo Serna  <inigoserna@telefonica.net>
578         * lfm/actions.py (do_execute_file): use run_shell
579         * lfm/actions.py (do_do_execute_file): removed, not needed anymore
581 Wed Mar 23 00:08:20 2005  Iñigo Serna  <inigoserna@telefonica.net>
583         * lfm/actions.py (show_dirs_size): function rewritten using 
584         run_loop, but don't work as child can't modify app data
585         * lfm/actions.py (do_show_dirs_size): new function
587 Tue Mar 22 22:03:17 2005  Iñigo Serna  <inigoserna@telefonica.net>
589         * lfm/actions.py (show_dirs_size): clean code
590         * lfm/files.py (__get_size): use get_shell_output2
591         * lfm/files.py (get_fileinfo): pardir_flag and show_dirs_size 
592         are boolean now, not int
593         * lfm/utils.py (get_shell_output2): new function
594         get output from a command run in shell, no stderr
596 Tue Mar 22 21:04:44 2005  Iñigo Serna  <inigoserna@telefonica.net>
598         * lfm/actions.py (findgrep): clean code
599         * lfm/utils.py (do_findgrep): clean code, call run_shell now
600         * lfm/utils.py (do_find): 
602 Tue Mar 22 21:01:03 2005  Iñigo Serna  <inigoserna@telefonica.net>
604         * lfm/utils.py (run_shell): added return_output flag
605         if true return output, else return status
607 Tue Mar 22 20:00:33 2005  Iñigo Serna  <inigoserna@telefonica.net>
609         * lfm/__init__.py (sysprogs): added xargs
611 Tue Mar 22 17:49:16 2005  Iñigo Serna  <inigoserna@telefonica.net>
613         * lfm/files.py: moved 'findgrep' and 'find' functions to utils.py
614         * lfm/utils.py (do_findgrep): moved function from files.py,
615         name changed to avoid collision
616         * lfm/utils.py (do_find): moved function from files.py,
617         name changed to avoid collision
618         * lfm/actions.py (findgrep): use functions from utils.py
620 Tue Mar 22 17:30:57 2005  Iñigo Serna  <inigoserna@telefonica.net>
622         * lfm/utils.py (get_shell_output): moved from old files.py:exec_cmd2
623         * lfm/files.py (exec_cmd2): moved to utils.py:get_shell_output
624         * lfm/files.py (exec_cmd): removed function
625         * lfm/preferences.py (Preferences.check_progs): 
626         use utils.py:get_shell_output
628 Tue Mar 22 17:10:01 2005  Iñigo Serna  <inigoserna@telefonica.net>
630         * lfm/__init__.py (sysprogs): added find, grep, egrep, which
631         * lfm/__init__.py (defaultprogs): removed find, grep, egrep
632         * lfm/actions.py (findgrep): use 'find' and 'egrep' 
633         from __init__.py:sysprogs
635 Tue Mar 22 16:51:34 2005  Iñigo Serna  <inigoserna@telefonica.net>
637         * lfm/__init__.py (sysprogs): hardcoding is a bad idea
638         "tar, bzip2, gzip, zip, unzip, rar, grep, find" defined here
639         * lfm/compress.py: use __init__.py:sysprogs
640         * lfm/pyview.py (FileView.__find): use __init__.py:sysprogs
642 Tue Mar 22 14:30:13 2005  Iñigo Serna  <inigoserna@telefonica.net>
644         * lfm/pyview.py (FileView.__init__): grep is harcoded now, 
645         no need to look for it => faster start
646         * lfm/pyview.py (FileView.__find): changed os.popen for os.popen3
647         to capture error if grep is not found
648         * lfm/pyview.py (exec_cmd): removed, not needed anymore
650 Tue Mar 22 13:23:20 2005  Iñigo Serna  <inigoserna@telefonica.net>
652         * lfm/vfs.py (init): 
653         FIXED BUG: make this work after last changes in run_shell 
654         * lfm/vfs.py (regenerate_file): 
656 Tue Mar 22 13:03:57 2005  Iñigo Serna  <inigoserna@telefonica.net>
658         * lfm/utils.py (run_shell): changes to run inside run_loop
659         * lfm/utils.py (do_compress_uncompress_file): 
660         * lfm/utils.py (do_uncompress_dir): 
661         * lfm/utils.py (uncompress_dir): 
662         * lfm/utils.py (do_compress_dir): 
663         * lfm/utils.py (compress_dir): 
665 Tue Mar 22 13:03:09 2005  Iñigo Serna  <inigoserna@telefonica.net>
667         * lfm/utils.py (run_loop): new API to execute a function for
668         each element in a list
669         * lfm/utils.py (child_process): 
671 Tue Mar 22 13:02:53 2005  Iñigo Serna  <inigoserna@telefonica.net>
673         * lfm/utils.py (run_thread): some stylist changes
675 Mon Mar 21 23:34:33 2005  Iñigo Serna  <inigoserna@telefonica.net>
677         * lfm/messages.py (EntryLine.show): 
678         FIXED BUG: EntryLine wasn't showed completely
680 Mon Mar 21 23:24:41 2005  Iñigo Serna  <inigoserna@telefonica.net>
682         * lfm/pyview.py (InternalView.init_curses): 
683         FIXED BUG: crash in file info if long file name
685 Mon Mar 21 22:59:26 2005  Iñigo Serna  <inigoserna@telefonica.net>
687         * lfm/lfm.py (LfmApp): 
688         FIXED BUG: "lfm path1 path2" didn't work because shell lfm
689         function returned a string of args instead of a list which is
690         what we were asking for
692 Mon Mar 21 01:03:32 2005  Iñigo Serna  <inigoserna@telefonica.net>
694         * lfm/actions.py (general_menu): new option: Regenerate programs
695         removed option: Save config, it's superfluous
696         * lfm/preferences.py (Preferences.__init__): 
697         don't use defaultprogs directly, make a copy instead,
698         so we could regenerate them
700 Mon Mar 21 00:57:46 2005  Iñigo Serna  <inigoserna@telefonica.net>
702         * lfm/lfm.py (Lfm.__init__): 
703         don't check default programs at start so start is faster now
705 Sun Mar 20 23:51:36 2005  Iñigo Serna  <inigoserna@telefonica.net>
707         * lfm/__init__.py (defaultprogs): tar, gzip, bzip2, zip, unzip
708         removed, these are system programs and must exist, so we don't 
709         check for them
711 Sun Mar 20 21:24:00 2005  Iñigo Serna  <inigoserna@telefonica.net>
713         * lfm/utils.py (run_shell): show error
714         FIXED BUG: get error if program finishes prematuraly
716 Sun Mar 20 19:38:55 2005  Iñigo Serna  <inigoserna@telefonica.net>
718         * setup.py (setup): added forgotten lfm/compress
720 Sun Mar 20 18:04:30 2005  Iñigo Serna  <inigoserna@telefonica.net>
722         * lfm/utils.py (run_shell): new function to execute command
723         in shell, run_thread will be obsoleted
725 Sun Mar 20 17:59:19 2005  Iñigo Serna  <inigoserna@telefonica.net>
727         * lfm/vfs.py (init):  updated to new compressing API, nicer code
728         * lfm/vfs.py (exit): 
729         * lfm/vfs.py (regenerate_file): 
731 Sun Mar 20 17:50:59 2005  Iñigo Serna  <inigoserna@telefonica.net>
733         * lfm/actions.py (cursor_right): updated to new compression API
734         * lfm/actions.py (enter): 
735         * lfm/actions.py (file_menu): added RAR un/compression
737 Sun Mar 20 17:46:15 2005  Iñigo Serna  <inigoserna@telefonica.net>
739         * lfm/utils.py (do_compress_uncompress_file): update to new
740         compression API
741         * lfm/utils.py (compress_uncompress_file): 
742         * lfm/utils.py (do_uncompress_dir): 
743         * lfm/utils.py (uncompress_dir): 
744         * lfm/utils.py (do_compress_dir): 
745         * lfm/utils.py (compress_dir): 
747 Sun Mar 20 17:46:15 2005  Iñigo Serna  <inigoserna@telefonica.net>
749         * lfm/compress.py: new source file, un/compressing staff
750         The new API is more modular and easier to use
751         Supported packagers: TBZ2, BZ2, TGZ, GZ, ZIP, RAR
753 Sun Mar 20 17:43:24 2005  Iñigo Serna  <inigoserna@telefonica.net>
755         * lfm/utils.py (run_thread): 
756         FIXED BUG: args passed to messages.win_nokey
758 Sun Mar 20 17:42:04 2005  Iñigo Serna  <inigoserna@telefonica.net>
760         * lfm/__init__.py (DATE): updated
762 Sat Mar 19 15:34:05 2005  Iñigo Serna  <inigoserna@telefonica.net>
764         * default.css: new file: style sheet to build html docs 
765         
766 Thu Oct 14 00:45:57 2004  Iñigo Serna  <inigoserna@telefonica.net>
768         * lfm/vfs.py (init): 
769         FIXED BUG: stopping vfs creation, doesn't return to original dir
770         
771 Thu Oct 14 00:05:30 2004  Iñigo Serna  <inigoserna@telefonica.net>
773         * lfm/actions.py (general_menu): 
774         FIXED BUG: reload configuration after modifying it
776 Thu Oct 14 00:00:55 2004  Iñigo Serna  <inigoserna@telefonica.net>
778         * lfm/messages.py (win): fixed a typo
780 Wed Oct 13 23:59:23 2004  Iñigo Serna  <inigoserna@telefonica.net>
782         * lfm/lfm.py (Panel.manage_keys): speed up cursor move and try not
783         to waste much CPU
785 Mon Aug  2 00:28:37 2004  Iñigo Serna  <inigoserna@telefonica.net>
786         * lfm/lfm.py.ok: deleted old files
787         * patches/*:
789 Mon Jul 26 18:20:06 2004  Iñigo Serna  <inigoserna@telefonica.net>
791         * setup.py: man pages must be installed in $PREFIX/share/man
793 Wed Jul 21 19:26:38 2004  Iñigo Serna  <inigoserna@telefonica.net>
795         * lfm/files.py (fix_chars_in_filename): 
796         FIX for debian bug #260401: some chars in filename make lfm crash
797         see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=260401
798         for more info
799         * lfm/files.py (get_fileinfo_dict): use fix_chars_in_filename
800         * lfm/lfm.py (Lfm.__show_bars): 
803 Sat Jul  3 11:45:28 2004  Iñigo Serna  <inigoserna@telefonica.net>
805         * lfm.1, pyview.1: man files, thanks to Sebastien Bacher for them
806         * setup.py: more metadata for pypi, install man files
808 Fri Jul  2 00:50:01 2004  Iñigo Serna  <inigoserna@telefonica.net>
810         * lfm/lfm.py (Panel.__get_fileinfo_str_long): limit length of
811         owner and group strings
813 Thu Jul  1 11:50:52 2004  Iñigo Serna  <inigoserna@telefonica.net>
815         * lfm/messages.py (MenuWin.__init__): fixed another crash because
816         of fucking curses.cur_set() returning ERR
818 Wed Jun 30 22:24:05 2004  Iñigo Serna  <inigoserna@telefonica.net>
820         * setup.py: upgrade to version 0.91
821         * PKG-INFO:
822         * lfm/__init__.py: 
824 Wed Jun 30 22:21:26 2004  Iñigo Serna  <inigoserna@telefonica.net>
826         * README: documentation updated, use reST for easy generation of HTML
827         * README.pyview: 
828         * TODO: 
829         * NEWS: 
831 Mon Jun 28 00:31:55 2004  Iñigo Serna  <inigoserna@telefonica.net>
833         * lfm/preferences.py (Preferences.__init__): 
834         new option: show_dotfiles flag
835         * lfm/lfm.py (Panel.init_dir): 
836         * lfm/files.py (get_dir): 
838 Sun Jun 27 23:41:21 2004  Iñigo Serna  <inigoserna@telefonica.net>
840         * lfm/preferences.py (Preferences.__init__): 
841         new option: detach_terminal_at_exec flag
842         * lfm/actions.py (do_special_view_file): use detach_terminal_at_exec
844 Sun Jun 27 20:03:11 2004  Iñigo Serna  <inigoserna@telefonica.net>
846         * lfm/preferences.py (Preferences.load): apps and file types can
847         be stored in configuration now
848         * lfm/preferences.py (Preferences.save): 
850 Sun Jun 27 18:45:37 2004  Iñigo Serna  <inigoserna@telefonica.net>
852         * lfm/pyview.py (PyView): always write debug info to pyview-log.debug
854 Sun Jun 27 18:27:49 2004  Iñigo Serna  <inigoserna@telefonica.net>
856         * lfm/__init__.py (defaultprogs): now each app only has one
857         associated program, not a list of programs. 
858         WARNING: this breaks old .lfmrc, but speeds up start
859         * lfm/lfm.py (Lfm.__init__): check for valid programs
860         * lfm/preferences.py (Preferences.__init__): only loads default
861         progs, but don't check them
862         * lfm/preferences.py (Preferences.check_progs): changed function
863         name from 'check_defaultprogs'
864         * lfm/actions.py (do_special_view_file): warn when can't open
865         special file and default to pager view
867 Sun Jun 27 16:34:11 2004  Iñigo Serna  <inigoserna@telefonica.net>
869         * lfm/preferences.py (Preferences.load): 
870         BUG FIXED: didn't load sort mode
872 Sun Jun 27 15:23:19 2004  Iñigo Serna  <inigoserna@telefonica.net>
874         * lfm/messages.py (ChangePerms.manage_keys): show users and groups
875         sorted alphabetically
877 Sun Jun 27 14:57:18 2004  Iñigo Serna  <inigoserna@telefonica.net>
879         * lfm/actions.py (file_menu): add support for uncompress in other panel
880         * lfm/utils.py (uncompress_dir): 
881         * lfm/utils.py (do_uncompress_dir): 
883 Sun Jun 27 03:10:27 2004  Iñigo Serna  <inigoserna@telefonica.net>
885         * lfm/lfm.py: resizing implemented in lfm
886         * lfm/actions.py (keytable): 
887         * lfm/actions.py (resize_window): 
888         * lfm/lfm.py (Lfm.resize): 
889         * lfm/lfm.py (Panel.do_resize): 
890         * lfm/lfm.py (Lfm.__show_bars): 
891         * lfm/lfm.py (Panel.show): 
892         * lfm/lfm.py (Panel.__showbar): 
893         * lfm/lfm.py (Panel.__calculate_columns): new useful functions
894         * lfm/lfm.py (Panel.__calculate_dims): 
896 Sun Jun 27 02:10:06 2004  Iñigo Serna  <inigoserna@telefonica.net>
898         * lfm/lfm.py (Lfm.__init__): eliminated deleted references to
899         columns positions
900         * lfm/preferences.py (Preferences.__init__): 
901         * lfm/preferences.py (Preferences.load): 
902         * lfm/preferences.py (Preferences.save): 
904 Sat Jun 26 23:49:49 2004  Iñigo Serna  <inigoserna@telefonica.net>
906         * lfm/lfm.py (Panel.show): 
907           - 1-panel view changed, now filename has more space
908           - file info formatting has been translated here
909         * lfm/lfm.py (Panel.__showbar): 
910           file info formatting has been translated here
911         * lfm/lfm.py (Panel.__get_fileinfo_str_long): get file info
912           formatted string, 1-panel version
913         * lfm/lfm.py (Panel.__get_fileinfo_str_short): get file info
914           formatted string, 2-panel version
915         * lfm/files.py (get_fileinfo_dict): 
916           - changed function name from 'get_fileinfo_str'
917           - now this function only returns info, not a formatted string
918         * lfm/files.py (get_fileinfostr_short): function eliminated, use
919         'get_fileinfo_dict' instead
921 Sat Jun 26 21:18:00 2004  Iñigo Serna  <inigoserna@telefonica.net>
922         
923         * pyview.py (FileView): 
924           - resizing implemented in pyview
925           - amount of info is reduced in function of window size
926         * pyview.py (FileView.show_hex): show as much bytes as window size allows
928 Sat Jun 26 20:57:56 2004  Iñigo Serna  <inigoserna@telefonica.net>
930         * messages.py (get_a_key): ESC now closes dialogs
931         * messages.py (confirm): 
932         * messages.py (confirm_all): 
933         * messages.py (Yes_No_Buttons.manage_keys): 
934         * messages.py (EntryLine.manage_keys): 
935         * messages.py (SelectItem.manage_keys): 
936         * messages.py (FindfilesWin.manage_keys): 
937         * messages.py (MenuWin.manage_keys): 
938         * messages.py (ChangePerms.manage_keys): 
939         * pyview.py (InternalView.run): 
941 Sat Jun 26 16:27:34 2004  Iñigo Serna  <inigoserna@telefonica.net>
943         * utils.py (compress_uncompress_file): 
944           FIXED BUG: 'app' wasn't passed to 'run_thread'
945         * actions.py (Tree.run): 
946           FIXED BUG: Ctrl-T Ctrl-T crashes tree view
948 Thu Dec  4 01:41:28 2003  Iñigo Serna  <inigo@inigo.katxi.org>
950         * README: add " surrounding $* in bash function to allow lfm
951         start at dirs with space characters in name
953 Thu Dec  4 00:37:26 2003  Iñigo Serna  <inigo@inigo.katxi.org>
955         * lfm/files.py (findgrep): fixed bug: grep with '-' char in pattern,
956         it was interpreted as grep option
958 Tue Dec  2 22:46:19 2003  Iñigo Serna  <inigo@inigo.katxi.org>
960         * lfm/actions.py (select_bookmark): select bookmark from a menu.
961         Function associated to key Ctrl-D
963 Tue Dec  2 00:11:07 2003  Iñigo Serna  <inigo@inigo.katxi.org>
965         * lfm/actions.py (rename): new feature
967 Tue Dec  2 00:08:57 2003  Iñigo Serna  <inigo@inigo.katxi.org>
969         * lfm/actions.py (swap_panels): fixed a bug introduced when 
970         lfm.py:panel.init_curses changed
972 Tue Dec  2 00:04:51 2003  Iñigo Serna  <inigo@inigo.katxi.org>
974         * lfm/lfm.py: moved keys actions to actions.py file
975         * lfm/actions.py: keys actions
976         * lfm/utils.py: run_thread, un/compress functions
977         * lfm/vfs.py: vfs functions
979 Sun Apr 27 02:30:46 2003  Iñigo Serna  <inigo@inigo.katxi.org>
981         * lfm/files.py (get_fileinfostr_short): fixed bug when files > 1Gb size
983 Sun Apr 27 00:26:09 2003  Iñigo Serna  <inigo@inigo.katxi.org>
985         * lfm/__init__.py: coltbl is now here
987 Sun Apr 27 00:20:55 2003  Iñigo Serna  <inigo@inigo.katxi.org>
989         * lfm/lfm.py (cursor_show): wrappers over curses.curs_set() with
990         * lfm/lfm.py (cursor_hide): try-except protection
992 Sat Apr 26 23:10:05 2003  Iñigo Serna  <inigo@inigo.katxi.org>
994         * setup.py (classifiers): added classifiers
996 Sat Apr 26 23:08:37 2003  Iñigo Serna  <inigo@inigo.katxi.org>
998         * *.py: added "# -*- coding: iso-8859-15 -*-" to conform with PEP 0263
1000 Wed Sep  4 01:04:57 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1002         * lfm/__init__.py (VERSION): released version 0.9
1003         * lfm/setup.py: 
1005 Mon Sep  2 17:24:04 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1007         * lfm/messages.py (Entry.run): don't append '*' to historic
1008         * lfm/messages.py (DoubleEntry.run): 
1010 Mon Sep  2 17:22:55 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1012         * lfm/lfm.py (sort): Fix bug: fix cursor bar position after sorting
1014 Tue Aug 20 16:50:57 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1016         * lfm/pyview.py (InternalView.__validate_buf): simplify code:
1017         if a: a = 0; else: a = 1 => a = not a
1018         * lfm/messages.py (confirm): 
1019         * lfm/messages.py (EntryLine.manage_keys): 
1020         * lfm/lfm.py (Lfm.run): 
1021         * lfm/lfm.py (Panel.manage_keys): 
1023 Tue Aug 20 16:37:23 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1025         * lfm/pyview.py (FileView.__move_lines): now pyview only shows last
1026         line at the end of the file. It showed blank screen before. I've 
1027         written code which changes this behaviour to show last 'screen' of
1028         lines, but it is commented because I don't like it
1030 Tue Aug 20 16:16:04 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1032         * lfm/pyview.py (FileView.run): new feature: go to / set bookmarks
1033         * lfm/pyview.py (FileView.__init__): initialize bookmarks with -1
1034         * lfm/pyview.py (FileView.run): new feature: shell
1036 Tue Aug 20 16:13:37 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1038         * lfm/pyview.py (PyView): read from stdin implemented
1039         * lfm/pyview.py (FileView.__init__): 
1040         * lfm/pyview.py (FileView.show): show 'STDIN' as file name and path
1041         when reading from stdin
1042         * lfm/pyview.py (read_stdin): new function
1043         * lfm/pyview.py (create_temp_for_stdin): new function
1045 Tue Aug 20 12:21:14 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1047         * lfm/pyview.py (FileView.run): cosmetic changes in string
1048         * lfm/lfm.py (Panel.manage_keys): 
1050 Tue Aug 20 12:18:38 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1052         * lfm/pyview.py (FileView.show): move 'bytes' information one char left
1054 Tue Aug 20 12:11:00 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1056         * lfm/pyview.py (FileView.__get_lines_text): Fix bug: last char in file
1057         is not showed. Erasing '\n\r' chars when loading lines with rstrip() 
1058         instead of [:-1]
1059         * lfm/pyview.py (FileView.__get_prev_lines_text): 
1060         * lfm/pyview.py (FileView.__get_line_length): 
1061         * lfm/pyview.py (FileView.__get_1line): 
1062         * lfm/pyview.py (FileView.__get_file_info): Fix bug: number of lines
1063         in file was +1.
1064         * lfm/pyview.py (FileView.run): modified cursor down, page next, end
1066 Sat Aug 17 19:33:33 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1068         * lfm/lfm.py (run_thread): Fix bug: create temporary files with 
1069         mask 0066, i.e. only owner can read/write them
1070         * lfm/lfm.py (do_compress_dir): 
1071         * lfm/lfm.py (vfs_regenerate_file): 
1073 Sat Aug 17 19:20:39 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1075         * lfm/lfm.py (vfs_init): Fix bug: create directories with perms 0700
1076         to avoid other people read them
1077         * lfm/lfm.py (vfs_copy): 
1078         * lfm/lfm.py (vfs_pan_init): 
1079         * lfm/lfm.py (vfs_pan_copy): 
1081 Sat Aug 17 17:19:43 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1083         * lfm/lfm.py (LfmApp): Fix bug: when lfm exits after checking command
1084         line options, make 'lfm' shell script don't show path error
1085         * lfm/lfm.py (lfm_exit): new function
1087 Sat Aug 17 15:37:48 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1089         * lfm/lfm.py (compress_dir): don't compress '..' directory
1091 Sat Aug 17 15:34:47 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1093         * lfm/lfm.py (compress_dir): Fix bug: don't check 'tar' if un/zip
1094         * lfm/lfm.py (vfs_init):
1096 Sat Aug 17 14:26:48 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1098         * lfm/lfm.py (vfs_init): modified to allow zip-files vfs
1099         * lfm/lfm.py (vfs_regenerate_file): 
1101 Sat Aug 17 14:17:41 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1103         * lfm/lfm.py (compress_dir): modified to allow compress to zip-files
1104         * lfm/lfm.py (do_compress_dir): 
1105         * lfm/lfm.py (uncompress_dir): modified to allow uncompress zip-files
1106         * lfm/lfm.py (do_uncompress_dir): 
1107         * lfm/lfm.py (check_compressed_tarfile):
1108         * lfm/__init__.py (defaultprogs): zip and unzip programs added
1109         * lfm/lfm.py (Panel.manage_keys): added zip functionalities to file menu
1111 Sat Aug 17 12:32:38 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1113         * setup.py: use python2 as default interpreter
1114         * lfm/lfm: 
1115         * lfm/pyview: 
1116         * lfm/lfm.py: 
1117         * lfm/pyview.py: 
1119 Fri Aug 16 13:37:34 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1121         * lfm/lfm.py (vfs_init): show correct filename when an error occurs
1122         while uncompressing file
1124 Wed Aug 14 18:55:22 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1126         * lfm/lfm.py (vfs_exit): added 'rebuild vfs' question / option
1127         * lfm/preferences.py (Preferences.__init__): added 'ask_rebuild_vfs'
1128         confirmation and 'rebuild_vfs' option flags
1129         * README: modified accordingly to new behaviour
1131 Wed Aug 14 18:44:40 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1133         * lfm/__init__.py: email address changed: <inigoserna@telefonica.net>
1134         * lfm/pyview.py:
1135         * lfm/lfm.py:
1136         * setup.py:
1137         * README: 
1138         * README.pyview:: 
1140 Wed Aug 14 18:06:35 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1142         * lfm/lfm.py (Panel.manage_keys): Fix bug: when un/compressing files
1143         cursorbar must remain in the same file
1145 Wed Aug 14 17:11:02 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1147         * lfm/lfm.py (do_special_view_file): fork twice to avoid zombie processes
1148         * lfm/files.py (exec_cmd): new threaded exec command to avoid zombie
1149         processes
1150         * lfm/preferences.py (Preferences.check_defaultprogs): 
1151         use files.exec_cmd instead of os.popen4
1152         * lfm/pyview.py (exec_cmd): idem
1153         * lfm/pyview.py (FileView.__init__):
1155 Wed Aug 14 17:10:19 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1157         * setup.py: execute setup with python2
1159 Mon Aug 12 23:00:10 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1161         Applied some good patches from Bartosz Oler (liar@furrynet.org):
1163         1. colors customization: Now you can customize the colors lfm use in
1164         the configuration file, 'colors' section. Each color is defined by
1165         a string with its name. It looks like this:
1166                 element foreground_color background_color
1168         * lfm/lfm.py (Lfm.init_curses): Removed old static colors initialization
1169         * lfm/lfm.py (Lfm.run): Preferences loading has been moved from here
1170         * lfm/lfm.py (Lfm.__init__): ... to here
1171         * lfm/lfm.py (Lfm.set_color): New function that returns curses color 
1172         if exists, otherwise return default.
1173         * lfm/preferences.py (Preferences.__init__): default colors
1174         * lfm/preferences.py (Preferences.load): read colors from configuration
1175         file or use default colors
1176         * lfm/preferences.py (Preferences.save): save used colors to configuration
1177         file
1179         2. Allow preferences values to contain colons in the configuration file.
1181         * lfm/preferences.py (Preferences.load): Allow preferences values to
1182         contain colons.
1184         3. Lack of a bookmark's definition shouldn't be an error.
1185         
1186         * lfm/preferences.py (Preferences.load): "Lack of a bookmark's 
1187         definition shouldn't be an error. I.e. I have only few bookmarks
1188         and it annoyed me when lfm was printing: 'Bad bookmark blah, blah...'.
1189         Now, message is printed only if directory doesn't exist."
1190         
1191 Thu Mar  7 19:24:22 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1193         * lfm/lfm.py (Panel.init_dir): Fix bug: when, at start, lfm can't enter
1194         into a dir due to directory permissions
1196 Thu Mar  7 18:57:31 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1198         * lfm/pyview.py (FileView.__init__): Fix bug: when user hasn't permissions
1199         to read file, exit gracefully instead of crashing
1201 Wed Mar  6 13:57:56 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1203         * lfm/messages.py (FixSizeCommonWindow.__init__): fix len(text) problem
1205 Tue Mar  5 13:43:57 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1207         * README: added " to the 'cd' command in the lfm() shell function to
1208         allow changing to dir containing spaces
1210 Tue Mar  5 13:31:13 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1212         * lfm/messages.py (SelectItem.show): Added win refresh to assure window
1213         refresh properly
1214         * lfm/messages.py (FindfilesWin.show): 
1216 Tue Mar  5 13:20:41 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1218         * lfm/messages.py (SelectItem.show): Fix bug: crash if len(line) ==
1219         width of cursorbar window
1221 Tue Mar  5 13:00:26 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1223         * lfm/lfm.py (do_execute_file): eliminate extra '"'
1225 Sun Mar  3 22:19:49 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1227         * lfm/__init__.py (VERSION): release version 0.8
1229 Sun Mar  3 22:17:21 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1231         * lfm/lfm.py (do_uncompress_dir): well, it seems '-C' is not a valid 
1232         option to specify output directory in not gnu tars, so change code
1234 Sun Mar  3 20:30:09 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1236         * lfm/lfm.py (Panel.manage_keys): eliminate 'y' feature (un/crypt)
1238 Sun Mar  3 00:24:12 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1240         * lfm/lfm.py (Panel.manage_keys): tree panel implemented
1241         * lfm/lfm.py (Tree): new class to implement a tree panel
1243 Sat Mar  2 13:36:17 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1245         * lfm/pyview.py (FileView.run): fix bug: page up / down don't scroll
1246         correctly in wrap mode if line doesn't fix in screen
1248 Thu Feb 28 23:32:36 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1250         * lfm/lfm: new scripts
1251         * lfm/pyview: 
1252         * lfm/lfm.py: 
1253         * lfm/pyview.py: 
1254         * lfm/__init__.py: contain globals
1256 Thu Feb 28 20:32:31 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1258         * lfm/files.py (do_copy): restore not to copy directory mode, times, 
1259         owner and group attributes, because it fails when copying from not
1260         writable fs
1262 Thu Feb 28 19:06:43 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1264         * lfm/messages.py (win_nokey): now uses FixSizeCommonWindow
1266 Thu Feb 28 19:06:32 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1268         * lfm/messages.py (FixSizeCommonWindow): new message window class to 
1269         show work in progress
1271 Thu Feb 28 18:25:39 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1273         * lfm/lfm.py (Panel.manage_keys): fix 'show same dir in two panels' 
1274         with vfs
1276 Thu Feb 28 18:21:48 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1278         * lfm/lfm.py (vfs_copy): new functions
1279         * lfm/lfm.py (vfs_pan_copy): 
1281 Thu Feb 28 18:00:00 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1283         * lfm/lfm.py (findgrep): panelize vfs implemented
1284         * lfm/lfm.py (vfs_regenerate_file): 
1286 Thu Feb 28 17:59:21 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1288         * lfm/lfm.py (vfs_pan_init): new functions
1289         * lfm/lfm.py (vfs_pan_regenerate): 
1291 Thu Feb 28 15:36:40 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1293         * lfm/lfm.py (findgrep): fix bug: if selected file has a ':' in name
1295 Thu Feb 28 14:32:27 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1297         * lfm/lfm.py (vfs_regenerate_file): check if it can regenerate vfs file
1298         before doing it
1300 Thu Feb 28 13:42:27 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1302         * lfm/files.py (move): fix bug: catching an exception after not been 
1303         able to copy => it crashed when trying to delete copied files
1305 Thu Feb 28 13:33:25 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1307         * lfm/messages.py (CommonWindow.__init__): fix bug: if #lines of 
1308         text > dialog.width
1310 Thu Feb 28 12:22:49 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1312         * lfm/lfm.py (run_thread): now message appear in a dialog, clean up
1313         function
1315 Thu Feb 28 11:41:17 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1317         * lfm/messages.py (CommonWindow): added option not to wait for a key
1318         * lfm/messages.py (win_nokey): new function
1320 Thu Feb 28 01:41:09 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1322         * lfm/lfm.py (Lfm.run): vfs implemented!!!
1323         * lfm/lfm.py (Lfm.show_bars): 
1324         * lfm/lfm.py (Panel.show): 
1325         * lfm/lfm.py (Panel.init_dir): 
1326         * lfm/lfm.py (Panel.refresh_panel): 
1327         * lfm/lfm.py (Panel.manage_keys): 
1328         * lfm/lfm.py (Panel.show_info): 
1330 Wed Feb 27 17:31:57 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1332         * lfm/lfm.py (do_uncompress_dir): added tar '-C' option to specify
1333         output directory. Does it work in not gnu tars?
1334         * lfm/lfm.py (vfs_init): new functions
1335         * lfm/lfm.py (vfs_exit): 
1336         * lfm/lfm.py (vfs_regenerate_file): 
1337         * lfm/lfm.py (vfs_join): 
1338         * lfm/files.py (mktemp): new function, wrapper to tempfile.mktemp
1340 Wed Feb 27 01:26:25 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1342         * lfm/files.py (do_copy): change 'shutil.copytree' by own code
1343         when walking tree to fix next bug:
1344         "Overwrite dirs when moving or copying => walk dirs
1345         f.e.    panel1:   dir/a      panel2:   dir/b
1346                              /b                   /c
1347         Now when moving dir from panel1 to panel2, the 'dir' destination
1348         is overwritten, so 'c'-file is lost. This is not the desired
1349         behaviour"
1350         
1351 Tue Feb 26 15:55:13 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1353         * lfm/messages.py (SelectItem.show): fix bug: "messages.SelectItem, 
1354         messages.FindfilesWin, messages.MenuWin, messages.ChangePerms:
1355         upperleft corner disappears"
1356         * lfm/messages.py (FindfilesWin.show): 
1357         * lfm/messages.py (MenuWin.show): 
1358         * lfm/messages.py (ChangePerms.show): 
1360 Tue Feb 26 14:10:20 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1362         * lfm/messages.py (ChangePerms.manage_keys): change cursor movement 
1363         behaviour, now it's circular
1365 Tue Feb 26 13:43:17 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1367         * lfm/pyview.py (FileView.show_chr): changing 'addch' by 'addstr'
1368         shows individual chars >= 0xA0 (meta chars) correctly, neither in 
1369         reversed video or as 2 chars
1370         * lfm/pyview.py (FileView.show_str):
1371         * lfm/pyview.py (FileView.show_hex):
1373 Tue Feb 26 13:13:57 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1375         * lfm/pyview.py (FileView.run): fix bug: "if wrap mode => fix prev/next 
1376         page & up/down cursor". Now they move to screen lines, not to physical
1377         lines
1378         * lfm/pyview.py (FileView.show_text_wrap): new functions
1379         * lfm/pyview.py (FileView.show_text_nowrap): 
1380         * lfm/pyview.py (FileView.__get_1line): 
1381         * lfm/pyview.py (FileView.__get_line_length): 
1382         * lfm/pyview.py (FileView.__get_prev_lines_text): 
1384 Mon Feb 25 12:47:32 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1386         * lfm/lfm.py (Panel.refresh_panel): fix bug: if panel2 shows 'a' 
1387         directory and in panel1 'a' is moved or deleted, lfm crashes
1389 Mon Feb 25 12:10:48 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1391         * lfm/lfm.py (DATE): change copyright date to years 2001-2
1392         * lfm/pyview.py (DATE): 
1394 Mon Feb 25 11:54:15 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1396         * lfm/pyview.py (FileView.show): fix bug when filename length is too big
1397         * lfm/messages.py (CommonWindow.__init__): 
1399 Sat Feb 23 16:21:46 2002  Iñigo Serna  <inigo@lethe.infernus.org>
1401         * lfm/lfm.py (Panel.manage_keys): after moving a file cursor goes to next
1402         file in panel, as deletion does
1404 Sun Nov 25 19:40:19 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1406         * lfm/lfm.py (VERSION): release of version 0.7
1407         * lfm/pyview.py (VERSION): upgraded to version 0.3
1409 Sun Nov 25 19:40:19 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1411         * lfm/files.py (complete): fix complete code. It works ok now
1412         * lfm/lfm.py (doEntry): 
1413         * lfm/lfm.py (doDoubleEntry): 
1414         * lfm/messages.py (EntryLine): 
1415         * lfm/messages.py (Entry): 
1416         * lfm/messages.py (DoubleEntry): 
1417         
1418 Sun Nov 25 15:48:34 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1420         * lfm/lfm.py (do_something_on_file): change to initial behaviour:
1421         do_someting_on_file has not to capture output or been executed 
1422         inside other thread. Old code remains comented
1424 Sun Nov 25 02:16:54 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1426         * lfm/files.py (complete): fix a bug when trying to complete something
1427         that is not a valid path
1429 Sun Nov 25 01:49:29 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1431         * lfm/lfm.py (do_something_on_file): capture output & option to show it
1432         * lfm/lfm.py (do_do_something_on_file): new function to be run inside
1433         run_thread
1435 Sun Nov 25 01:17:53 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1437         * lfm/preferences.py (Preferences.__init__): added new preference:
1438         show_output_after_exec, defaults to yes
1440 Sun Nov 25 00:27:18 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1442         * lfm/pyview.py (InternalView.__validate_buf): added option not to center
1444 Sat Nov 24 18:37:07 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1446         * lfm/lfm.py (do_something_on_file): chdir to file path before 
1447         doing something on file
1449 Sat Nov 24 18:24:39 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1451         * lfm/lfm.py (do_uncompress_dir): remove tar 'v' flag when 
1452         * lfm/lfm.py (do_compress_dir):   un/compressing tar files
1454 Sun Nov 18 22:15:47 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1456         * lfm/lfm.py (Panel.manage_keys): fix cursor position after
1457         deleting files
1459 Sun Nov 18 18:33:07 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1461         * lfm/pyview.py (FileView.show_text): fixed other bug in wrapped mode
1463 Sun Nov 18 13:01:23 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1465         * lfm/pyview.py (FileView.__init__): if file is empty exists gracefully
1467 Sun Nov 18 12:57:09 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1469         * lfm/pyview.py (FileView.show): fix path printing if it's too big
1471 Thu Nov  1 15:30:06 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1473         * lfm/lfm.py (Panel.manage_keys): now copy, move, delete can be stopped
1475 Thu Nov  1 13:56:23 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1477         * lfm/files.py (__get_size): capture errors
1479 Thu Nov  1 13:01:31 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1481         * lfm/lfm.py (compress_dir): now compress directories can be stopped
1482         * lfm/lfm.py (do_compress_dir): 
1484 Thu Nov  1 12:54:33 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1486         * lfm/messages.py (CommonWindow.__init__): fix a bug: 
1487         when len(title) > len(text)
1489 Thu Nov  1 12:26:16 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1491         * lfm/lfm.py (uncompress_dir): now uncompress tar files can be stopped
1492         * lfm/lfm.py (do_uncompress_dir): 
1494 Thu Nov  1 12:10:14 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1496         * lfm/lfm.py (run_thread.thread_quit_handler): added a 0.05 secs
1497         sleep to avoid wasting resources silly
1499 Thu Nov  1 11:55:24 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1501         * lfm/lfm.py (compress_uncompress_file): now un/compress can be stopped
1502         * lfm/lfm.py (do_compress_uncompress_file): 
1504 Mon Oct 29 00:50:03 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1506         * lfm/lfm.py (compress_dir): fix bug: tar cvf - dir | gzip >dir.tar.gz
1507         when compressing directories did tar processes remain, it seems it was
1508         because of the '>' redirection awaiting eternally to completition
1510 Sun Oct 28 12:15:49 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1512         * lfm/lfm.py (uncompress_dir): check errors
1513         * lfm/lfm.py (compress_dir): 
1515 Sun Oct 28 11:50:24 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1517         * lfm/lfm.py (compress_uncompress_file): check errors
1519 Sun Oct 28 11:20:42 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1521         * lfm/files.py (findgrep): use popen3 instead of popen and forget
1522         * lfm/files.py (find):     stderr output
1524 Sun Oct 28 02:29:38 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1526         * lfm/lfm.py: change popen2.popen[34] by os.popen[34] functions
1527         * lfm/pyview.py: 
1528         * lfm/preferences.py: 
1530 Sat Oct 27 16:24:39 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1532         * lfm/pyview.py (VERSION): upgraded to v0.2
1534 Sat Oct 27 16:48:39 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1536         * lfm/pyview.py (FileView.run): added find and find next / previous
1538 Sat Oct 27 16:23:25 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1540         * lfm/pyview.py (FileView.__find): new functions
1541         * lfm/pyview.py (FileView.__find_next):
1542         * lfm/pyview.py (FileView.__find_previous): 
1544 Sat Oct 27 15:45:57 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1546         * lfm/pyview.py (FileView.__init__): check for 'grep'
1548 Sat Oct 27 15:45:16 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1550         * README.pyview (Keys): added find information
1552 Sat Oct 27 12:35:31 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1554         * lfm/pyview.py (PYVIEW_README): update help
1556 Sat Oct 20 23:27:00 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1558         * lfm/pyview.py (FileView.show_str): don't show '\r' in dos text files
1560 Thu Aug 23 00:59:59 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1562         * lfm/lfm.py (Panel.manage_keys): added compress directory to
1563         * lfm/lfm.py (compress_dir):      .tar.bz2
1565 Thu Aug 23 00:42:43 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1567         * lfm/lfm.py (Panel.manage_keys): added README.pyview to help
1569 Thu Aug 23 00:34:09 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1571         * lfm/pyview.py (InternalView): allow scrolling if buffer
1572         doesn't fit in body window
1574 Thu Aug 23 00:22:19 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1576         * README.pyview: new file, documentation for pyview
1578 Wed Aug 22 18:28:34 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1580         * lfm/lfm.py (Panel.show_info): fixed a small bug when showing info
1581         of a file on /
1583 Wed Aug 22 16:52:47 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1585         * lfm/pyview.py (FileView.__get_file_info): speed up function,
1586         before it was very slow on large files
1588 Wed Aug 22 00:22:17 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1590         * lfm/lfm.py (Panel.do_show_file_info): implemented 'show file info'
1592 Tue Aug 21 21:28:39 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1594         * lfm/pyview.py (InternalView.__validate_buf): check for lines not to
1595         be wider than screen width
1597 Tue Aug 21 20:53:43 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1599         * lfm/files.py (get_user_fullname): new function
1601 Tue Aug 21 20:11:30 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1603         * lfm/pyview.py: 'import messages' must be inside a try clause
1604         to avoid raising an exception in lfm, I suppose because lfm
1605         imports messages module before
1607 Tue Aug 21 19:28:30 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1609         * lfm/lfm.py (show_fs_info): new function
1610         * lfm/lfm.py (Panel.manage_keys): rewrite 'show filesystems info'
1611         to use internal viewer
1613 Tue Aug 21 01:42:15 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1615         * lfm/pyview.py (InternalView): new viewer class to use internally
1617 Mon Aug 20 20:32:58 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1619         * lfm/preferences.py (Preferences.check_defaultprogs): 
1620         fixed a bug
1622 Mon Aug 20 20:31:37 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1624         * lfm/lfm.py (Lfm.run): default configuration is now saved
1625         inmediately
1627 Mon Aug 20 20:25:36 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1629         * lfm/lfm.py (defaultprogs): default pager changed to pyview
1630         because this is the best one ;-)
1632 Mon Aug 20 20:23:02 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1634         * lfm/pyview.py (View.run): implemented 'goto line / byte'
1636 Sun Aug 19 16:19:10 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1638         * lfm/pyview.py: start of the lfm viewer to be used both internally
1639         and externally as a standalone program -> 'pyview'
1641 Sun Aug 19 15:12:18 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1643         * lfm/lfm.py (Panel.manage_keys): change help behaviour to allow
1644         to read README, NEWS, TODO, ChangeLog or COPYING files
1646 Sun Aug 19 14:17:19 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1648         * lfm/lfm.py (do_special_view_file): new function to show special
1649         files: html, graphics, ...
1650         * lfm/lfm.py (defaultprogs): defined new programs
1651         * lfm/lfm.py (filetypes): defined new file types
1653 Sun Aug 19 12:22:11 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1655         * lfm/messages.py (EntryLine.manage_keys): added Ctrl-D key to
1656         delete the whole content of the EntryLine
1658 Sat Aug 18 19:36:50 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1660         * lfm/files.py (findgrep): fixed a bug around filename with "
1661         in grep call
1663 Sat Aug 18 19:31:01 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1665         * lfm/lfm.py (Panel.manage_keys): implemented help
1667 Tue Aug  7 19:43:40 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1669         * lfm/lfm.py (VERSION): release of version 0.5
1671 Tue Aug  7 19:02:39 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1673         * setup.py (DOC_FILES): setup.py must install docs
1675 Tue Aug  7 18:23:20 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1677         * lfm/files.py (__get_size): 'b' is not a valid flag for 'du -s'
1678         in solaris, so get Kb and convert to bytes by hand
1680 Mon Aug  6 00:11:18 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1682         * lfm/lfm.py (check_compressed_tarfile): new function splitted
1683         from uncompress_dir for future uses
1685 Sun Aug  5 20:52:36 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1687         * lfm/messages.py (FindfilesWin.manage_keys): fixed what 'enter'
1688         returns
1690 Sun Aug  5 20:28:23 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1692         * lfm/lfm.py (Panel.manage_keys): implemented 'show filesystems
1693         info'
1694         * lfm/messages.py (show_fs_info): new function
1695         * lfm/files.py (get_fs_info): new function
1697 Sun Aug  5 18:34:32 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1699         * NEWS: added a new file with changes between versions
1701 Sun Aug  5 18:23:11 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1703         * lfm/lfm.py (findgrep): fix a bug causing a crash when find and/or
1704         grep returns nothing
1706 Sun Aug  5 18:00:02 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1708         * lfm/files.py (move): when a problem appears while copying files,
1709         then don't delete original file but do it with the destination, 
1710         because it is only partially written
1712 Mon Jul 23 21:27:10 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1714         * lfm/lfm.py (Panel.manage_keys): change x and q behaviour when
1715         exiting. Now x exits to dir. in panel, q not
1717 Mon Jul 23 20:56:18 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1719         * lfm/lfm.py (do_something_on_file): 
1720         * lfm/lfm.py (compress_uncompress_file): 
1721         * lfm/lfm.py (uncompress_dir): 
1722         * lfm/lfm.py (compress_dir): 
1723         * lfm/lfm.py (show_dirs_size): 
1724         * lfm/lfm.py (findgrep): 
1725         * lfm/lfm.py (sort): new functions to simplify Panel.manage_keys
1727 Mon Jul 23 01:21:35 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1729         * lfm/lfm.py (Panel.manage_keys): implement 'p' in file menu:
1730         change permissions, owner or group
1731         * lfm/messages.py (ChangePerms): new window class
1732         * lfm/files.py (get_owners): new functions
1733         * lfm/files.py (get_groups): 
1734         * lfm/files.py (set_perms): 
1735         * lfm/files.py (set_owner_group): 
1737 Sun Jul 22 19:31:30 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1739         * lfm/lfm.py (Panel.manage_keys): File and General menu
1740         File menu: @, g, b, x, c
1741         General menu: /, #, s, o, c, a
1743 Sun Jul 22 14:31:36 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1745         * lfm/messages.py (MenuWin): new window class to show file and
1746         general menu
1748 Sun Jul 22 13:47:23 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1750         * lfm/preferences.py (Preferences.check_defaultprogs): use
1751         popen2.popen3 instead of os.popen to avoid messages in
1752         stderr
1754 Sun Jul 22 13:45:55 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1756         * lfm/files.py (findgrep): rewrite function not to show any
1757         error to stderr. 2>/dev/null only works in bash-type shells
1759 Sun Jul 22 03:34:40 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1761         * README: added info about changing directory at exit time
1763 Sun Jul 22 01:40:27 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1765         * lfm/lfm.py, lfm/files.py, lfm/messages.py,lfm/preferences.py: 
1766         document modules
1768 Sun Jul 22 01:28:00 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1770         * lfm/lfm.py (main): now lfm returns current path if exists via
1771         'q' or F10 keys
1773 Sat Jul 21 23:24:54 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1775         * lfm/preferences.py (Preferences): now preferences class has
1776         its own file
1777         * lfm/preferences.py (Preferences.check_defaultprogs): implemented
1778         * lfm/preferences.py (Preferences.load): implemented
1779         * lfm/preferences.py (Preferences.save): implemented
1780         * lfm/preferences.py (Preferences.edit): basic implementation
1781         using file edition
1783 Sat Jul 21 16:39:46 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1785         * lfm/lfm.py (Preferences.__init__): default pager changed to 'less'
1787 Fri Jul 20 19:15:31 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1789         * lfm/lfm.py (Panel.manage_keys): find/grep implemented,
1790         except panelize option
1791         * lfm/files.py (findgrep): new functions
1792         * lfm/files.py (find): 
1793         * lfm/messages.py (FindfilesWin): new class to show find/grep
1794         results
1796 Thu Jul 19 20:38:11 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1798         * lfm/lfm.py (Panel.manage_keys): manage home and end properly 
1799         * lfm/messages.py (EntryLine.manage_keys): 
1801 Thu Jul 19 18:14:00 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1803         * lfm/lfm.py (VERSION): version 0.4
1805 Thu Jul 19 18:00:16 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1807         * lfm/messages.py (confirm_all): new function
1808         * lfm/lfm.py (Panel.manage_keys): overwrite all implemented in 
1809         copy and move
1811 Thu Jul 19 01:33:21 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1813         * lfm/files.py (complete): completition function. After a couple
1814         of days it works ok now
1815         * lfm/lfm.py (doEntry): 
1816         * lfm/lfm.py (doDoubleEntry): new wrappers to parse paths to feed
1817         Entry and DoubleEntry classes with proper values for completition
1818         * lfm/messages.py (Entry): 
1819         * lfm/messages.py (DoubleEntry): modified to support completition
1821 Tue Jul 17 17:20:43 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1823         * lfm/lfm.py (Panel.show): scroll bars in panels (not interactive)
1825 Sun Jul 15 03:15:04 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1827         * lfm/messages.py (Yes_no_Buttons): new class
1828         * lfm/messages.py (EntryLine): new class to ease entries with
1829         many entry lines
1830         * lfm/messages.py (Entry): rewrite to use upper classes
1831         * lfm/messages.py (DoubleEntry): new class
1833 Sat Jul 14 20:12:55 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1835         * lfm/lfm.py (Panel.manage_keys): when some dirs are selected
1836          and 'show dirs size', only show size of the selected dirs
1838 Sat Jul 14 12:07:17 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1840         * lfm/lfm.py (Panel.manage_keys): added 'special regards' ;-)
1842 Wed Jul 11 19:23:15 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1844         * lfm/lfm.py (Panel.manage_keys): fix a problem with enter key
1846 Tue Jul 10 18:53:29 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1848         * lfm/lfm.py (Panel.manage_keys): fixed a problem when
1849         using files which names contain spaces
1851 Tue Jul 10 01:36:07 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1853         * lfm/lfm.py (Panel.manage_keys): #: show dirs size
1855 Tue Jul 10 00:49:02 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1857         * setup.py: using distutils
1859 Tue Jul 10 00:47:56 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1861         * lfm/lfm.py (Panel.manage_keys): create/edit link implemented
1863 Tue Jul 10 00:47:16 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1865         * lfm/files.py (modify_link): 
1866         * lfm/files.py (create_link): added functions
1868 Fri Jul  6 00:30:09 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1870         * lfm.py (app): version 0.3
1872 Thu Jul  5 19:38:17 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1874         * messages.py (Entry): add historic support
1876 Thu Jul  5 18:37:29 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1878         * lfm.py (Panel.manage_keys): do something on file implemented
1880 Tue Jul  3 01:38:47 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1882         * messages.py (Entry): rewrite class using curses.pad
1884 Tue Jul  3 01:07:42 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1886         * messages.py (confirm): rewrite function using curses.pad
1888 Tue Jul  3 01:05:27 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1890         * messages.py (error): 
1891         * messages.py (win): 
1892         * messages.py (notyet): rewritten to use new CommonWindow class
1894 Tue Jul  3 01:06:31 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1896         * messages.py (CommonWindow): new class
1898 Mon Jul  2 22:25:28 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1900         * lfm.py (Panel.manage_keys): 
1901         * files.py (copy): 
1902         * files.py (move): added overwrite pref to copy and move
1904 Mon Jul  2 20:14:15 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1906         * lfm.py (Panel.manage_keys): added confirmation pref to delete
1908 Mon Jul  2 19:55:30 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1910         * lfm.py (Panel.manage_keys): touch file implemented
1912 Mon Jul  2 19:20:38 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1914         * lfm.py (Panel.__init_dir): sort info saved in session
1916 Mon Jul  2 18:34:07 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1918         * files.py (__do_sort): fix bug with size and date sorting
1920 Mon Jul  2 00:49:02 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1922         * files.py (__do_sort): implement mix filename cases in sorting;
1923         implement reversed name, size and date sorting; fix bug in sorting
1924         by size or date when 2 or more files have the same size or date
1926 Mon Jul  2 00:47:56 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1928         * files.py (sort_dir): implement mix files and dirs while sorting
1930 Mon Jul  2 00:46:16 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1932         * messages.py (entry.manage_keys): added Ctrl-C key to quit window
1934 Sat Jun 30 13:57:44 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1936         * lfm.py (Panel.manage_keys): go to file (Ctrl-S) implemented
1938 Sat Jun 30 13:43:11 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1940         * lfm.py (Panel.manage_keys): go to / set bookmarks implemented
1942 Sat Jun 30 13:16:41 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1944         * lfm.py (Preferences.__init__): start preferences support
1946 Fri Jun 29 00:43:19 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1948         * lfm.py (Panel.manage_keys): implemented de/select group functions
1950 Thu Jun 28 23:36:58 2001  Iñigo Serna  <inigo@lethe.infernus.org>
1952         * The day of the first public release is coming, so I must start
1953         this ChangeLog file