2 Shared code for ROX applications
4 http://rox.sourceforge.net
8 Bugfix: spurious argument when installing SendTo handler under Zero
9 Install (Stephen Watson, reported by Andras Mohari)
13 When installing a type handler under Zero Install, make sure to pass the
14 arguments to the program and run 0launch in console mode (Stephen Watson).
18 Added mime.get_type_handler(), which uses the same algorithm as ROX-Filer to
19 find the handler for a file (Ken Hayber and Thomas Leonard).
23 New class Setting in rox.session is an option tied to a ROX-Session setting
28 Added rox.session module for communicating with ROX-Session.
29 Added method for applets to determine the panel orientation (Stephen Watson).
33 Set sys.excepthook to our graphical exception explorer so that untrapped
34 exceptions are reported nicely.
38 Save box now selects icon from same icon theme as ROX-Filer (Stephen Watson).
42 When saving a file to a FAT filesystem, the chmod would fail. Log a warning
43 instead of aborting (Thomas Leonard; reported by QS Computing).
47 Better detection of the MIME-types/MIME-thumb location when installing
48 type handlers (Stephen Watson).
52 Added rox.isappdir() function to test the validity of an AppDir (Stephen
54 EXPERIMENTAL code for installing MIME handlers via 0launch (Stephen Watson).
58 Changed the doc string in Menu.py to prefer the new MenuItem based method
59 of defining menus not the old tuple method (Stephen Watson).
63 Added Hungarian translation (Andras Mohari).
67 Made message in AppRun translatable (Andras Mohari).
71 Added launch module, which allows running programs easily using the injector,
72 and made filer.py use 0launch if available (Thomas Leonard; requested by
74 Double-click on a line in the stack-trace display of an error to open the
75 source file in Edit (Thomas Leonard).
79 If pygtk is found, but not gtk, give a better error (Thomas Leonard; reported
84 If 'xterm' isn't available, give a sensible error message when using the
85 su module (Thomas Leonard; reported by Vincent Lefevre).
89 Added ROX-Lib.xml file, which makes it easy to register a CVS copy of ROX-Lib
90 with the 0launch, using '0launch --add-feed' (Thomas Leonard).
92 25-Jul-2005 (Release 2.0.2)
94 Bugfix: Installing MIME handlers under the XDG base dir system didn't
95 work (Stephen Watson).
97 17-Jun-2005 (Release 2.0.1)
99 Send deprecation warnings to stdout, not stderr, so only developers will
100 see them (Thomas Leonard).
104 Fixed deprecation warning in processes.py (Thomas Leonard).
108 Avoid apparent PyGTK bug related to icon themes, may result in a
109 memory leak but probably won't (Stephen Watson).
113 Clean up of icon theme handling (Stephen Watson).
117 Compatability with PyGTK 2.4 retaining backwards compatability with
118 2.2 at least (Ken Hayber, Stephen Watson).
122 Updated Chinese translation (Babyfai Cheung).
126 Added Portuguese translation (José Carlos do Nascimento).
130 Don't try to get pygtk through Zero Install. The injector can be used to
131 choose the implementation of pygtk to use, including a version in Zero
132 Install if desired (Thomas Leonard).
136 MIME handler install now uses basedir (Stephen Watson).
137 Tests use gtk.main() instead of the deprecated gtk.mainloop() (Stephen Watson).
141 Some versions of GTK silently remove '-' from sys.argv (GTK bug #303166).
142 Added a work-around (Thomas Leonard).
146 Put "root" back in su command, but detect what the exact string should be, as
147 Solaris needs something here (reported by Stephen Watson).
151 The default SaveArea.confirm_new_path() now shows an error if the target
152 exists as a directory, instead of asking if you want to overwrite it (Thomas
153 Leonard; reported by Jonatan Liljedahl).
154 Remove "root" from the su command, as some systems call user 0 something else
155 (Thomas Leonard; reported by Jonatan Liljedahl).
159 When getting an icon for saving, specify the size if PyGTK is recent enough.
160 This prevents SVG icons from appearing in huge sizes (Thomas Leonard;
161 requested by John Pettigrew).
162 Bugfix: Theme index parser failed to cope with comments at the start of the
163 file (Thomas Leonard).
167 Compatability fixes for the su module (Stephen Watson).
171 Fixed Zero Install version test in findrox.py (Thomas Leonard).
173 16-Apr-2005 (Release 2.0.0)
175 Run unit tests in alphabetical order as it fixes a strange interaction between them (Stephen Watson).
179 Added unit tests for processes module, based on old tests in Archive (Thomas
184 Changed MakeDist to allow use of other SourceForge accounts (Stephen Watson).
188 Added 'testall' script to run all the unit tests together (Thomas Leonard).
190 23-Mar-2005 (Release 1.9.18)
192 German translation (Guido Schimmels).
196 Added TODO file to track bugs and changes needed for 2.0.0 release.
200 Bugfix: Set default in Options box to OK to avoid triggering a GTK bug
201 (Thomas Leonard, reported by Guido Schimmels).
203 16-Jan-2005 (Release 1.9.17)
205 Added OutputBlocker, which works in a similar way to InputBlocker (Thomas
210 Be consistent about URI escaping. set_uri() is now always passed an unescaped
211 UTF-8 string (Thomas Leonard).
215 Added fixedlist and varlist widgets to OptionsBox (Stephen Watson).
219 Added MIME type matching by file contents (Stephen Watson).
223 If a 'rox' module is in PYTHONPATH, use that without any searching (Thomas
228 Added Chinese translation (Babyfai Cheung).
232 Suppress warning when we use GtkItemFactory under pygtk 2.4 (Stephen Watson).
236 Added tasks.InputBlocker, which triggers when an input source becomes
237 readable (Thomas Leonard).
241 Bugfix: Use only text nodes when getting the tool tip from the Options.xml
242 file (Stephen Watson).
246 Bugfix: Theme subdirectories are separated by ',' not ';' (reported by
251 Bugfix: When a menu has more than one toggle item, only one is updated
252 correctly (Ken Hayber).
256 Replace g.mainloop() and g.mainquit() with g.main() and g.main_quit() as
257 recommended since pygtk 2.0.0 to avoid warnings with pygtk 2.4.0 (Stephen
262 Added options.ListOption to support multi-valued option widgets, such as
263 lists (Stephen Watson).
265 02-Oct-2004 (Release 1.9.16)
267 Cope better with user cancelling su operation. New interface to replace
268 create_su_proxy (Thomas Leonard).
272 The choices module is now deprecated. You can use choices.migrate() to move
273 settings over to the basedir system (Thomas Leonard). Also added
274 basedir.load_first_config(), which works like the old choices.load().
278 Several incompatible changes to the experimental proxy API to make it simpler
281 - Create_su_proxy now returns the MasterObject directly, not the MasterProxy.
282 - You can call finish on the MasterObject (so the MasterProxy isn't needed).
283 - Slave methods no longer take a 'request' argument. Instead, the return
284 value of the function is returned.
285 - Methods can only return one value. dequeue and dequeue_last have been
286 replaced with a 'result' property.
287 - Methods on MasterObject now return a RequestBlocker, not a Queue. This
288 means you just yield the object itself, not object.blocker.
290 Tasks API is no longer experimental, but proxy API is.
294 Added a Help button to the exception dialog, which opens the new Help/Errors
295 file (Thomas Leonard).
299 Bugfix: Failed to call the parent constructor to AbortSave correctly.
303 Simplified su code and interface.
304 New suchild methods: open, close, read, write, chmod and rename, which work
305 just like their normal Python counterparts (Thomas Leonard).
309 Removed code to turn off the separator in the debug dialog. GTK 2.4 doesn't
310 need it, and generates a warning if you use it (Thomas Leonard).
312 27-Aug-2004 (Release 1.9.15)
314 Added spawnvpe and waitpid methods to suchild.
318 If the unit field for a <numentry> option is blank, don't try to translate it
319 (reported by Guido Schimmels).
323 Added 'su' module for performing operations as root.
327 Allow "" as a valid value in a OptionsBox menu (reported by Guido Schimmels).
331 Added 'proxy' module. This allows one Python process to invoke methods on
332 another asynchronously.
333 Added rox.UserAbort exception, to be raised when users cancel something
338 Fix syntax error I caused when I added a docstring (Stephen Watson).
342 Get update-mime-database command through Zero Install, if possible.
346 mime_handler can now uninstall (Stephen Watson).
350 Translate menu items in options (Guido Schimmels).
354 Added <slider> widget to options.
358 Added 'size-group' attribute to Options.xml elements. This allows grouping
359 elements so that their labels all appear the same width.
363 Bugfix: Colour buttons in the Options boxes didn't work with some themes
366 17-Apr-2004 (Release 1.9.14)
368 Added ToggleItem (based on a patch from Ken Hayber).
372 Better <label> widgets (wrapping and icon). Taken from LookAndFeel.
376 Stop themes from overriding the display of the colour-picker buttons in
377 the options box (Rene Ejury).
381 Warn about old versions of findrox.py.
382 Bugfix: Bug in new menu API prevented submenus from working.
384 16-Mar-2004 (Release 1.9.13)
386 Bugfix: Icon themes didn't work with python versions older than 2.2.2
387 (reported by Thomas Zajic).
391 Bugfix: Use filer module to show ROX-Lib help, rather than using os.system,
392 so that it works with Zero Install (reported by Keith Hopper).
396 Added widget_registry to OptionsBox, to provide an easy way to register
397 new option types. Removed build_button in favour of this method.
399 Bugfix: If an error occurred loading the ROX theme at startup it could not
400 be reported, because icon_theme wants debug, debug wants saving, and
401 saving wants icon_theme (reported by Thomas Zajic).
405 Cope with pygtk2.2 API change (Stephen Watson, reported by Guido Schimmels).
409 Added secretentry and button options to the OptionsBox (Stephen Watson).
413 Cope with option values split into multiple DOM text nodes (Rene Ejury).
417 Allow a list of values to be stored in each menu Action. These are used as
418 the arguments to the callback function.
419 If a file's details were recorded (in document.save_last_stat) when it was
420 loaded, make sure they haven't changed when saving. Saving also updates this
421 variable (requested by Arnaud Calvo).
425 Updated examples in documentation for new findrox (Yuri Bongiorno).
429 New API for menus. Instead of passing tuples for menu items, python classes
430 can be used. The old tuple interface is still supported.
434 Don't stop DnD working in the savebox just because no icon can be found
435 (reported by Martin Lucina).
439 Added French translation (Vincent Lefèvre).
443 Also translate <label> elements in the Options box (reported by Arnaud Calvo).
447 Also translate section names in the Options box (reported by Arnaud Calvo).
449 22-Jan-2004 (Release 1.9.12)
451 Added 'tasks' module to provide a light-weight alternative to threads.
452 Bugfix: On non-zero-install systems, the sense of the version check in findrox
457 Added method to MIMEtype to fetch its icon. Install list window for
458 the MIME handler installation uses it (Stephen Watson).
462 Translate text in Options box.
466 Allow ROXLIB_DISABLE_ZEROINSTALL to override looking for ROX-Lib in Zero
467 Install (useful for ROX-Lib developers). Prefer a locally installed version
468 of ROX-Filer to the Zero Install version; this also allows users to select
469 which Zero Install version they want (eg, stable or developer).
470 Moved MIME handler installation into a separate module (mime_handler) and
471 made a few changes to the XML syntax.
475 Added <menu> OptionMenu widget for Options box (Chris Shaffer).
479 Fixed bug in findrox when not using Zero Install (Lionel Bringuier).
483 Escape and unescape URIs, as required by ROX-Filer 2.1.0 (reported by
485 Note that the xds_load_uris() method is now called with escaped URIs.
486 Try to run the filer through Zero Install, if possible.
490 If we can't get pygtk through Zero Install, try the local copy.
494 Added support in mime.py for an application to set MIME-type run
495 actions and thumbnail programs (Stephen Watson).
499 Simplified implementation of saving.SaveFilter by using the new
500 processes.PipeThroughCommand class. The child_run() method of SaveFilter
501 is no longer supported.
502 In processes.PipeThroughCommand, a None input stream gets /dev/null instead
503 of inheriting its parent's stream. The class has a new run_child_with_streams
504 to make overriding the behaviour easier.
505 findrox.py script now warns if ROX-Lib2 version is too old (unless requesting
506 a version too old to have a version number).
510 Changed 'Dismiss' to 'Close' (Chris Shaffer).
511 Bugfix: Error reporting in mime.py failed to import the _ function (reported
512 by Christopher Haines).
513 New AppInfo.py for parsing AppInfo.xml files (Christopher Arndt), InfoWin
514 converted to use it (Stephen Watson).
516 15-Oct-2003 (Release 1.9.11)
518 Bugfix: Python 2.3's new bool type broke options saving (reported by Lars
523 Added PipeThroughCommand class (copied from Archive, with some minor
528 Allow event to be None for Menu.popup. This allows the menu to be activated
529 from the keyboard, using the 'popup-menu' signal.
533 Added French translation in AppInfo.xml (Vincent Lefèvre).
535 03-Oct-2003 (Release 1.9.10)
537 Added support for icon themes (doesn't do inheritance yet).
541 Added some version information to the dialog you get when you run ROX-Lib
546 New bug() function to quickly bring up a debugging prompt.
550 The glob patterns in mime.py are now sorted longest first. Fix for setting
551 icon in the old way when there was no icon (Stephen Watson).
555 Try to cope better with bad hostname setup (reported by Nathan Howell).
559 Added InfoWin.py to provide standardized information window (Stephen Watson).
563 Fall back to old way of setting default icon for older pygtk's (Stephen
568 Added Italian translation (Yuri Bongiorno).
572 Better way to set the default icon.
574 16-Aug-2003 (Release 1.9.9)
576 Give windows a default icon from .DirIcon (Chris Shaffer).
580 Try to get pygtk through ZeroInstall.
584 Updated findrox to use ZeroInstall, if possible.
588 Work out correct application name even if invoked via a symlink. This stops
589 applications from calling themselves 'text_plain', etc (reported by Joe Hill).
591 19-Jul-2003 (Release 1.9.8)
593 Make default menu positioning function keep the pointer inside the menu.
594 Allow stock icons in menus.
598 Added position_fn argument to rox.Menu.popup.
602 Cope with % escaped URIs.
606 Added italian translation in AppInfo.xml (Yuri Bongiorno)
610 When loading data from another application, pass the suggested leafname to
611 xds_load_from_stream().
615 Code tidying, thanks to pychecker.
619 Added fileutils module, which provides an interactive makedirs() function
621 Changed savebox module to use it.
623 16-May-2003 (Release 1.9.7)
625 New icon (Geoff Youngs).
626 Added 'basedir' module for freedesktop.org Base Directory specification.
630 Added functions to read MIME database (Stephen Watson).
632 27-Jan-2003 (Release 1.9.6)
634 Make the default window class the name of the application directory, not
635 'AppRun' (suggested by Albert Wagner).
636 Bugfix: With pygtk-1.99.14, only the first error message from a process
637 would be detected; this meant that ROX-Lib wouldn't detect when the
638 process quit (reported by joehill).
639 Bugfix: <hbox> and <vbox> layouts didn't work in the options box (Allen
644 If python is too old, raise SystemExit instead of quitting.
645 Ensure that True and False are defined.
649 Work around bug in some versions of pygtk that stopped the options window
652 12-Dec-2002 (Release 1.9.5)
654 Upgrade Options box to new style.
658 Bugfix: If an option had an empty value, an exception was thrown on loading
659 (reported by Stephen Watson).
663 Cope with missing input_add_full.
667 Pygtk 1.99.12 seems to more-or-less work now (according to Alastair Porter), so
668 remove the warning for that so we can support RedHat 8.0.
670 20-Oct-2002 (Release 1.9.4)
672 More warnings about old pygtk versions.
673 Added Dialog class (does ref-counting, like Window).
677 Trying to use ROX-Lib2 with earlier versions of python now gives a sensible
682 Make clicking on ROX-Lib itself work again (Christopher Arndt).
686 Updated findrox.py to use pygtk 1.99.13 -- update your programs!
688 25-Aug-2002 (Release 1.9.3)
690 Switch to use new pygtk versioning system (requires pygtk 1.99.13).
694 Added 'processes' module, based on code in Archive, which makes controlling
699 Bugfix: Changing the keys lost any builtin shortcuts (Gtk behaviour has
704 Trap exceptions when activating menu items and report nicely.
708 Bugfix: Remember to call drop_finish() after a drag-and-drop operation.
710 05-Aug-2002 (Release 1.9.2)
712 Renamed XDSLoader module to 'loading' (like 'saving').
713 Added 'mime' module for installing extra MIME information.
714 Bugfix: XDSLoader didn't handle the drag-drop signal, and so only worked for
715 widgets with their own implementation!
719 Show local variables in report_exception, and allow expressions to be
720 evaluated in the context of any frame.
721 Added StringSaver class.
725 Added applet module for creating ROX panel applets.
729 Bugfix: saving code didn't cope with missing images (reported by Musus Umbra).
733 If 'gtk2' isn't available, see if 'gtk' is actually the 2.0 version.
734 Added save_set_permissions to Saveable interface, allowing the default
735 save_to_file to preserve file permissions.
736 Changes to XDSLoader: xds_load_from_stream(name, type, stream)
737 replaces the old xds_load_data(data).
738 Loading files from remote filers works now.
739 Added much improved exception reporting system.
741 19-Jul-2002 (Release 1.9.1)
743 Added support for translations.
747 License change to the LGPL (allows commercial programs to use this library).
748 Added AbortSave exception.
752 Saveable.save_to_file() should raise an exception when saving fails, rather
753 than returning 0. The return value is now ignored (note that raising an
754 exception will still work with 1.9.0).
755 toplevel_unref() ignores any arguments, so it is easier to use as a signal
758 12-Jul-2002 (Release 1.9.0)
760 First release for Gtk+-2.0.