2 Shared code for ROX applications
4 http://rox.sourceforge.net
8 Changed the doc string in Menu.py to prefer the new MenuItem based method
9 of defining menus not the old tuple method (Stephen Watson).
13 Added Hungarian translation (Andras Mohari).
17 Made message in AppRun translatable (Andras Mohari).
21 Added launch module, which allows running programs easily using the injector,
22 and made filer.py use 0launch if available (Thomas Leonard; requested by
24 Double-click on a line in the stack-trace display of an error to open the
25 source file in Edit (Thomas Leonard).
29 If pygtk is found, but not gtk, give a better error (Thomas Leonard; reported
34 If 'xterm' isn't available, give a sensible error message when using the
35 su module (Thomas Leonard; reported by Vincent Lefevre).
39 Added ROX-Lib.xml file, which makes it easy to register a CVS copy of ROX-Lib
40 with the 0launch, using '0launch --add-feed' (Thomas Leonard).
42 25-Jul-2005 (Release 2.0.2)
44 Bugfix: Installing MIME handlers under the XDG base dir system didn't
45 work (Stephen Watson).
47 17-Jun-2005 (Release 2.0.1)
49 Send deprecation warnings to stdout, not stderr, so only developers will
50 see them (Thomas Leonard).
54 Fixed deprecation warning in processes.py (Thomas Leonard).
58 Avoid apparent PyGTK bug related to icon themes, may result in a
59 memory leak but probably won't (Stephen Watson).
63 Clean up of icon theme handling (Stephen Watson).
67 Compatability with PyGTK 2.4 retaining backwards compatability with
68 2.2 at least (Ken Hayber, Stephen Watson).
72 Updated Chinese translation (Babyfai Cheung).
76 Added Portuguese translation (José Carlos do Nascimento).
80 Don't try to get pygtk through Zero Install. The injector can be used to
81 choose the implementation of pygtk to use, including a version in Zero
82 Install if desired (Thomas Leonard).
86 MIME handler install now uses basedir (Stephen Watson).
87 Tests use gtk.main() instead of the deprecated gtk.mainloop() (Stephen Watson).
91 Some versions of GTK silently remove '-' from sys.argv (GTK bug #303166).
92 Added a work-around (Thomas Leonard).
96 Put "root" back in su command, but detect what the exact string should be, as
97 Solaris needs something here (reported by Stephen Watson).
101 The default SaveArea.confirm_new_path() now shows an error if the target
102 exists as a directory, instead of asking if you want to overwrite it (Thomas
103 Leonard; reported by Jonatan Liljedahl).
104 Remove "root" from the su command, as some systems call user 0 something else
105 (Thomas Leonard; reported by Jonatan Liljedahl).
109 When getting an icon for saving, specify the size if PyGTK is recent enough.
110 This prevents SVG icons from appearing in huge sizes (Thomas Leonard;
111 requested by John Pettigrew).
112 Bugfix: Theme index parser failed to cope with comments at the start of the
113 file (Thomas Leonard).
117 Compatability fixes for the su module (Stephen Watson).
121 Fixed Zero Install version test in findrox.py (Thomas Leonard).
123 16-Apr-2005 (Release 2.0.0)
125 Run unit tests in alphabetical order as it fixes a strange interaction between them (Stephen Watson).
129 Added unit tests for processes module, based on old tests in Archive (Thomas
134 Changed MakeDist to allow use of other SourceForge accounts (Stephen Watson).
138 Added 'testall' script to run all the unit tests together (Thomas Leonard).
140 23-Mar-2005 (Release 1.9.18)
142 German translation (Guido Schimmels).
146 Added TODO file to track bugs and changes needed for 2.0.0 release.
150 Bugfix: Set default in Options box to OK to avoid triggering a GTK bug
151 (Thomas Leonard, reported by Guido Schimmels).
153 16-Jan-2005 (Release 1.9.17)
155 Added OutputBlocker, which works in a similar way to InputBlocker (Thomas
160 Be consistent about URI escaping. set_uri() is now always passed an unescaped
161 UTF-8 string (Thomas Leonard).
165 Added fixedlist and varlist widgets to OptionsBox (Stephen Watson).
169 Added MIME type matching by file contents (Stephen Watson).
173 If a 'rox' module is in PYTHONPATH, use that without any searching (Thomas
178 Added Chinese translation (Babyfai Cheung).
182 Suppress warning when we use GtkItemFactory under pygtk 2.4 (Stephen Watson).
186 Added tasks.InputBlocker, which triggers when an input source becomes
187 readable (Thomas Leonard).
191 Bugfix: Use only text nodes when getting the tool tip from the Options.xml
192 file (Stephen Watson).
196 Bugfix: Theme subdirectories are separated by ',' not ';' (reported by
201 Bugfix: When a menu has more than one toggle item, only one is updated
202 correctly (Ken Hayber).
206 Replace g.mainloop() and g.mainquit() with g.main() and g.main_quit() as
207 recommended since pygtk 2.0.0 to avoid warnings with pygtk 2.4.0 (Stephen
212 Added options.ListOption to support multi-valued option widgets, such as
213 lists (Stephen Watson).
215 02-Oct-2004 (Release 1.9.16)
217 Cope better with user cancelling su operation. New interface to replace
218 create_su_proxy (Thomas Leonard).
222 The choices module is now deprecated. You can use choices.migrate() to move
223 settings over to the basedir system (Thomas Leonard). Also added
224 basedir.load_first_config(), which works like the old choices.load().
228 Several incompatible changes to the experimental proxy API to make it simpler
231 - Create_su_proxy now returns the MasterObject directly, not the MasterProxy.
232 - You can call finish on the MasterObject (so the MasterProxy isn't needed).
233 - Slave methods no longer take a 'request' argument. Instead, the return
234 value of the function is returned.
235 - Methods can only return one value. dequeue and dequeue_last have been
236 replaced with a 'result' property.
237 - Methods on MasterObject now return a RequestBlocker, not a Queue. This
238 means you just yield the object itself, not object.blocker.
240 Tasks API is no longer experimental, but proxy API is.
244 Added a Help button to the exception dialog, which opens the new Help/Errors
245 file (Thomas Leonard).
249 Bugfix: Failed to call the parent constructor to AbortSave correctly.
253 Simplified su code and interface.
254 New suchild methods: open, close, read, write, chmod and rename, which work
255 just like their normal Python counterparts (Thomas Leonard).
259 Removed code to turn off the separator in the debug dialog. GTK 2.4 doesn't
260 need it, and generates a warning if you use it (Thomas Leonard).
262 27-Aug-2004 (Release 1.9.15)
264 Added spawnvpe and waitpid methods to suchild.
268 If the unit field for a <numentry> option is blank, don't try to translate it
269 (reported by Guido Schimmels).
273 Added 'su' module for performing operations as root.
277 Allow "" as a valid value in a OptionsBox menu (reported by Guido Schimmels).
281 Added 'proxy' module. This allows one Python process to invoke methods on
282 another asynchronously.
283 Added rox.UserAbort exception, to be raised when users cancel something
288 Fix syntax error I caused when I added a docstring (Stephen Watson).
292 Get update-mime-database command through Zero Install, if possible.
296 mime_handler can now uninstall (Stephen Watson).
300 Translate menu items in options (Guido Schimmels).
304 Added <slider> widget to options.
308 Added 'size-group' attribute to Options.xml elements. This allows grouping
309 elements so that their labels all appear the same width.
313 Bugfix: Colour buttons in the Options boxes didn't work with some themes
316 17-Apr-2004 (Release 1.9.14)
318 Added ToggleItem (based on a patch from Ken Hayber).
322 Better <label> widgets (wrapping and icon). Taken from LookAndFeel.
326 Stop themes from overriding the display of the colour-picker buttons in
327 the options box (Rene Ejury).
331 Warn about old versions of findrox.py.
332 Bugfix: Bug in new menu API prevented submenus from working.
334 16-Mar-2004 (Release 1.9.13)
336 Bugfix: Icon themes didn't work with python versions older than 2.2.2
337 (reported by Thomas Zajic).
341 Bugfix: Use filer module to show ROX-Lib help, rather than using os.system,
342 so that it works with Zero Install (reported by Keith Hopper).
346 Added widget_registry to OptionsBox, to provide an easy way to register
347 new option types. Removed build_button in favour of this method.
349 Bugfix: If an error occurred loading the ROX theme at startup it could not
350 be reported, because icon_theme wants debug, debug wants saving, and
351 saving wants icon_theme (reported by Thomas Zajic).
355 Cope with pygtk2.2 API change (Stephen Watson, reported by Guido Schimmels).
359 Added secretentry and button options to the OptionsBox (Stephen Watson).
363 Cope with option values split into multiple DOM text nodes (Rene Ejury).
367 Allow a list of values to be stored in each menu Action. These are used as
368 the arguments to the callback function.
369 If a file's details were recorded (in document.save_last_stat) when it was
370 loaded, make sure they haven't changed when saving. Saving also updates this
371 variable (requested by Arnaud Calvo).
375 Updated examples in documentation for new findrox (Yuri Bongiorno).
379 New API for menus. Instead of passing tuples for menu items, python classes
380 can be used. The old tuple interface is still supported.
384 Don't stop DnD working in the savebox just because no icon can be found
385 (reported by Martin Lucina).
389 Added French translation (Vincent Lefèvre).
393 Also translate <label> elements in the Options box (reported by Arnaud Calvo).
397 Also translate section names in the Options box (reported by Arnaud Calvo).
399 22-Jan-2004 (Release 1.9.12)
401 Added 'tasks' module to provide a light-weight alternative to threads.
402 Bugfix: On non-zero-install systems, the sense of the version check in findrox
407 Added method to MIMEtype to fetch its icon. Install list window for
408 the MIME handler installation uses it (Stephen Watson).
412 Translate text in Options box.
416 Allow ROXLIB_DISABLE_ZEROINSTALL to override looking for ROX-Lib in Zero
417 Install (useful for ROX-Lib developers). Prefer a locally installed version
418 of ROX-Filer to the Zero Install version; this also allows users to select
419 which Zero Install version they want (eg, stable or developer).
420 Moved MIME handler installation into a separate module (mime_handler) and
421 made a few changes to the XML syntax.
425 Added <menu> OptionMenu widget for Options box (Chris Shaffer).
429 Fixed bug in findrox when not using Zero Install (Lionel Bringuier).
433 Escape and unescape URIs, as required by ROX-Filer 2.1.0 (reported by
435 Note that the xds_load_uris() method is now called with escaped URIs.
436 Try to run the filer through Zero Install, if possible.
440 If we can't get pygtk through Zero Install, try the local copy.
444 Added support in mime.py for an application to set MIME-type run
445 actions and thumbnail programs (Stephen Watson).
449 Simplified implementation of saving.SaveFilter by using the new
450 processes.PipeThroughCommand class. The child_run() method of SaveFilter
451 is no longer supported.
452 In processes.PipeThroughCommand, a None input stream gets /dev/null instead
453 of inheriting its parent's stream. The class has a new run_child_with_streams
454 to make overriding the behaviour easier.
455 findrox.py script now warns if ROX-Lib2 version is too old (unless requesting
456 a version too old to have a version number).
460 Changed 'Dismiss' to 'Close' (Chris Shaffer).
461 Bugfix: Error reporting in mime.py failed to import the _ function (reported
462 by Christopher Haines).
463 New AppInfo.py for parsing AppInfo.xml files (Christopher Arndt), InfoWin
464 converted to use it (Stephen Watson).
466 15-Oct-2003 (Release 1.9.11)
468 Bugfix: Python 2.3's new bool type broke options saving (reported by Lars
473 Added PipeThroughCommand class (copied from Archive, with some minor
478 Allow event to be None for Menu.popup. This allows the menu to be activated
479 from the keyboard, using the 'popup-menu' signal.
483 Added French translation in AppInfo.xml (Vincent Lefèvre).
485 03-Oct-2003 (Release 1.9.10)
487 Added support for icon themes (doesn't do inheritance yet).
491 Added some version information to the dialog you get when you run ROX-Lib
496 New bug() function to quickly bring up a debugging prompt.
500 The glob patterns in mime.py are now sorted longest first. Fix for setting
501 icon in the old way when there was no icon (Stephen Watson).
505 Try to cope better with bad hostname setup (reported by Nathan Howell).
509 Added InfoWin.py to provide standardized information window (Stephen Watson).
513 Fall back to old way of setting default icon for older pygtk's (Stephen
518 Added Italian translation (Yuri Bongiorno).
522 Better way to set the default icon.
524 16-Aug-2003 (Release 1.9.9)
526 Give windows a default icon from .DirIcon (Chris Shaffer).
530 Try to get pygtk through ZeroInstall.
534 Updated findrox to use ZeroInstall, if possible.
538 Work out correct application name even if invoked via a symlink. This stops
539 applications from calling themselves 'text_plain', etc (reported by Joe Hill).
541 19-Jul-2003 (Release 1.9.8)
543 Make default menu positioning function keep the pointer inside the menu.
544 Allow stock icons in menus.
548 Added position_fn argument to rox.Menu.popup.
552 Cope with % escaped URIs.
556 Added italian translation in AppInfo.xml (Yuri Bongiorno)
560 When loading data from another application, pass the suggested leafname to
561 xds_load_from_stream().
565 Code tidying, thanks to pychecker.
569 Added fileutils module, which provides an interactive makedirs() function
571 Changed savebox module to use it.
573 16-May-2003 (Release 1.9.7)
575 New icon (Geoff Youngs).
576 Added 'basedir' module for freedesktop.org Base Directory specification.
580 Added functions to read MIME database (Stephen Watson).
582 27-Jan-2003 (Release 1.9.6)
584 Make the default window class the name of the application directory, not
585 'AppRun' (suggested by Albert Wagner).
586 Bugfix: With pygtk-1.99.14, only the first error message from a process
587 would be detected; this meant that ROX-Lib wouldn't detect when the
588 process quit (reported by joehill).
589 Bugfix: <hbox> and <vbox> layouts didn't work in the options box (Allen
594 If python is too old, raise SystemExit instead of quitting.
595 Ensure that True and False are defined.
599 Work around bug in some versions of pygtk that stopped the options window
602 12-Dec-2002 (Release 1.9.5)
604 Upgrade Options box to new style.
608 Bugfix: If an option had an empty value, an exception was thrown on loading
609 (reported by Stephen Watson).
613 Cope with missing input_add_full.
617 Pygtk 1.99.12 seems to more-or-less work now (according to Alastair Porter), so
618 remove the warning for that so we can support RedHat 8.0.
620 20-Oct-2002 (Release 1.9.4)
622 More warnings about old pygtk versions.
623 Added Dialog class (does ref-counting, like Window).
627 Trying to use ROX-Lib2 with earlier versions of python now gives a sensible
632 Make clicking on ROX-Lib itself work again (Christopher Arndt).
636 Updated findrox.py to use pygtk 1.99.13 -- update your programs!
638 25-Aug-2002 (Release 1.9.3)
640 Switch to use new pygtk versioning system (requires pygtk 1.99.13).
644 Added 'processes' module, based on code in Archive, which makes controlling
649 Bugfix: Changing the keys lost any builtin shortcuts (Gtk behaviour has
654 Trap exceptions when activating menu items and report nicely.
658 Bugfix: Remember to call drop_finish() after a drag-and-drop operation.
660 05-Aug-2002 (Release 1.9.2)
662 Renamed XDSLoader module to 'loading' (like 'saving').
663 Added 'mime' module for installing extra MIME information.
664 Bugfix: XDSLoader didn't handle the drag-drop signal, and so only worked for
665 widgets with their own implementation!
669 Show local variables in report_exception, and allow expressions to be
670 evaluated in the context of any frame.
671 Added StringSaver class.
675 Added applet module for creating ROX panel applets.
679 Bugfix: saving code didn't cope with missing images (reported by Musus Umbra).
683 If 'gtk2' isn't available, see if 'gtk' is actually the 2.0 version.
684 Added save_set_permissions to Saveable interface, allowing the default
685 save_to_file to preserve file permissions.
686 Changes to XDSLoader: xds_load_from_stream(name, type, stream)
687 replaces the old xds_load_data(data).
688 Loading files from remote filers works now.
689 Added much improved exception reporting system.
691 19-Jul-2002 (Release 1.9.1)
693 Added support for translations.
697 License change to the LGPL (allows commercial programs to use this library).
698 Added AbortSave exception.
702 Saveable.save_to_file() should raise an exception when saving fails, rather
703 than returning 0. The return value is now ignored (note that raising an
704 exception will still work with 1.9.0).
705 toplevel_unref() ignores any arguments, so it is easier to use as a signal
708 12-Jul-2002 (Release 1.9.0)
710 First release for Gtk+-2.0.