3 Shared code for ROX applications
5 http://rox.sourceforge.net
9 German translation (Guido Schimmels).
13 Added TODO file to track bugs and changes needed for 2.0.0 release.
17 Bugfix: Set default in Options box to OK to avoid triggering a GTK bug
18 (Thomas Leonard, reported by Guido Schimmels).
20 16-Jan-2005 (Release 1.9.17)
22 Added OutputBlocker, which works in a similar way to InputBlocker (Thomas
27 Be consistent about URI escaping. set_uri() is now always passed an unescaped
28 UTF-8 string (Thomas Leonard).
32 Added fixedlist and varlist widgets to OptionsBox (Stephen Watson).
36 Added MIME type matching by file contents (Stephen Watson).
40 If a 'rox' module is in PYTHONPATH, use that without any searching (Thomas
45 Added Chinese translation (Babyfai Cheung).
49 Suppress warning when we use GtkItemFactory under pygtk 2.4 (Stephen Watson).
53 Added tasks.InputBlocker, which triggers when an input source becomes
54 readable (Thomas Leonard).
58 Bugfix: Use only text nodes when getting the tool tip from the Options.xml
59 file (Stephen Watson).
63 Bugfix: Theme subdirectories are separated by ',' not ';' (reported by
68 Bugfix: When a menu has more than one toggle item, only one is updated
69 correctly (Ken Hayber).
73 Replace g.mainloop() and g.mainquit() with g.main() and g.main_quit() as
74 recommended since pygtk 2.0.0 to avoid warnings with pygtk 2.4.0 (Stephen
79 Added options.ListOption to support multi-valued option widgets, such as
80 lists (Stephen Watson).
82 02-Oct-2004 (Release 1.9.16)
84 Cope better with user cancelling su operation. New interface to replace
85 create_su_proxy (Thomas Leonard).
89 The choices module is now deprecated. You can use choices.migrate() to move
90 settings over to the basedir system (Thomas Leonard). Also added
91 basedir.load_first_config(), which works like the old choices.load().
95 Several incompatible changes to the experimental proxy API to make it simpler
98 - Create_su_proxy now returns the MasterObject directly, not the MasterProxy.
99 - You can call finish on the MasterObject (so the MasterProxy isn't needed).
100 - Slave methods no longer take a 'request' argument. Instead, the return
101 value of the function is returned.
102 - Methods can only return one value. dequeue and dequeue_last have been
103 replaced with a 'result' property.
104 - Methods on MasterObject now return a RequestBlocker, not a Queue. This
105 means you just yield the object itself, not object.blocker.
107 Tasks API is no longer experimental, but proxy API is.
111 Added a Help button to the exception dialog, which opens the new Help/Errors
112 file (Thomas Leonard).
116 Bugfix: Failed to call the parent constructor to AbortSave correctly.
120 Simplified su code and interface.
121 New suchild methods: open, close, read, write, chmod and rename, which work
122 just like their normal Python counterparts (Thomas Leonard).
126 Removed code to turn off the separator in the debug dialog. GTK 2.4 doesn't
127 need it, and generates a warning if you use it (Thomas Leonard).
129 27-Aug-2004 (Release 1.9.15)
131 Added spawnvpe and waitpid methods to suchild.
135 If the unit field for a <numentry> option is blank, don't try to translate it
136 (reported by Guido Schimmels).
140 Added 'su' module for performing operations as root.
144 Allow "" as a valid value in a OptionsBox menu (reported by Guido Schimmels).
148 Added 'proxy' module. This allows one Python process to invoke methods on
149 another asynchronously.
150 Added rox.UserAbort exception, to be raised when users cancel something
155 Fix syntax error I caused when I added a docstring (Stephen Watson).
159 Get update-mime-database command through Zero Install, if possible.
163 mime_handler can now uninstall (Stephen Watson).
167 Translate menu items in options (Guido Schimmels).
171 Added <slider> widget to options.
175 Added 'size-group' attribute to Options.xml elements. This allows grouping
176 elements so that their labels all appear the same width.
180 Bugfix: Colour buttons in the Options boxes didn't work with some themes
183 17-Apr-2004 (Release 1.9.14)
185 Added ToggleItem (based on a patch from Ken Hayber).
189 Better <label> widgets (wrapping and icon). Taken from LookAndFeel.
193 Stop themes from overriding the display of the colour-picker buttons in
194 the options box (Rene Ejury).
198 Warn about old versions of findrox.py.
199 Bugfix: Bug in new menu API prevented submenus from working.
201 16-Mar-2004 (Release 1.9.13)
203 Bugfix: Icon themes didn't work with python versions older than 2.2.2
204 (reported by Thomas Zajic).
208 Bugfix: Use filer module to show ROX-Lib help, rather than using os.system,
209 so that it works with Zero Install (reported by Keith Hopper).
213 Added widget_registry to OptionsBox, to provide an easy way to register
214 new option types. Removed build_button in favour of this method.
216 Bugfix: If an error occurred loading the ROX theme at startup it could not
217 be reported, because icon_theme wants debug, debug wants saving, and
218 saving wants icon_theme (reported by Thomas Zajic).
222 Cope with pygtk2.2 API change (Stephen Watson, reported by Guido Schimmels).
226 Added secretentry and button options to the OptionsBox (Stephen Watson).
230 Cope with option values split into multiple DOM text nodes (Rene Ejury).
234 Allow a list of values to be stored in each menu Action. These are used as
235 the arguments to the callback function.
236 If a file's details were recorded (in document.save_last_stat) when it was
237 loaded, make sure they haven't changed when saving. Saving also updates this
238 variable (requested by Arnaud Calvo).
242 Updated examples in documentation for new findrox (Yuri Bongiorno).
246 New API for menus. Instead of passing tuples for menu items, python classes
247 can be used. The old tuple interface is still supported.
251 Don't stop DnD working in the savebox just because no icon can be found
252 (reported by Martin Lucina).
256 Added French translation (Vincent Lefèvre).
260 Also translate <label> elements in the Options box (reported by Arnaud Calvo).
264 Also translate section names in the Options box (reported by Arnaud Calvo).
266 22-Jan-2004 (Release 1.9.12)
268 Added 'tasks' module to provide a light-weight alternative to threads.
269 Bugfix: On non-zero-install systems, the sense of the version check in findrox
274 Added method to MIMEtype to fetch its icon. Install list window for
275 the MIME handler installation uses it (Stephen Watson).
279 Translate text in Options box.
283 Allow ROXLIB_DISABLE_ZEROINSTALL to override looking for ROX-Lib in Zero
284 Install (useful for ROX-Lib developers). Prefer a locally installed version
285 of ROX-Filer to the Zero Install version; this also allows users to select
286 which Zero Install version they want (eg, stable or developer).
287 Moved MIME handler installation into a separate module (mime_handler) and
288 made a few changes to the XML syntax.
292 Added <menu> OptionMenu widget for Options box (Chris Shaffer).
296 Fixed bug in findrox when not using Zero Install (Lionel Bringuier).
300 Escape and unescape URIs, as required by ROX-Filer 2.1.0 (reported by
302 Note that the xds_load_uris() method is now called with escaped URIs.
303 Try to run the filer through Zero Install, if possible.
307 If we can't get pygtk through Zero Install, try the local copy.
311 Added support in mime.py for an application to set MIME-type run
312 actions and thumbnail programs (Stephen Watson).
316 Simplified implementation of saving.SaveFilter by using the new
317 processes.PipeThroughCommand class. The child_run() method of SaveFilter
318 is no longer supported.
319 In processes.PipeThroughCommand, a None input stream gets /dev/null instead
320 of inheriting its parent's stream. The class has a new run_child_with_streams
321 to make overriding the behaviour easier.
322 findrox.py script now warns if ROX-Lib2 version is too old (unless requesting
323 a version too old to have a version number).
327 Changed 'Dismiss' to 'Close' (Chris Shaffer).
328 Bugfix: Error reporting in mime.py failed to import the _ function (reported
329 by Christopher Haines).
330 New AppInfo.py for parsing AppInfo.xml files (Christopher Arndt), InfoWin
331 converted to use it (Stephen Watson).
333 15-Oct-2003 (Release 1.9.11)
335 Bugfix: Python 2.3's new bool type broke options saving (reported by Lars
340 Added PipeThroughCommand class (copied from Archive, with some minor
345 Allow event to be None for Menu.popup. This allows the menu to be activated
346 from the keyboard, using the 'popup-menu' signal.
350 Added French translation in AppInfo.xml (Vincent Lefèvre).
352 03-Oct-2003 (Release 1.9.10)
354 Added support for icon themes (doesn't do inheritance yet).
358 Added some version information to the dialog you get when you run ROX-Lib
363 New bug() function to quickly bring up a debugging prompt.
367 The glob patterns in mime.py are now sorted longest first. Fix for setting
368 icon in the old way when there was no icon (Stephen Watson).
372 Try to cope better with bad hostname setup (reported by Nathan Howell).
376 Added InfoWin.py to provide standardized information window (Stephen Watson).
380 Fall back to old way of setting default icon for older pygtk's (Stephen
385 Added Italian translation (Yuri Bongiorno).
389 Better way to set the default icon.
391 16-Aug-2003 (Release 1.9.9)
393 Give windows a default icon from .DirIcon (Chris Shaffer).
397 Try to get pygtk through ZeroInstall.
401 Updated findrox to use ZeroInstall, if possible.
405 Work out correct application name even if invoked via a symlink. This stops
406 applications from calling themselves 'text_plain', etc (reported by Joe Hill).
408 19-Jul-2003 (Release 1.9.8)
410 Make default menu positioning function keep the pointer inside the menu.
411 Allow stock icons in menus.
415 Added position_fn argument to rox.Menu.popup.
419 Cope with % escaped URIs.
423 Added italian translation in AppInfo.xml (Yuri Bongiorno)
427 When loading data from another application, pass the suggested leafname to
428 xds_load_from_stream().
432 Code tidying, thanks to pychecker.
436 Added fileutils module, which provides an interactive makedirs() function
438 Changed savebox module to use it.
440 16-May-2003 (Release 1.9.7)
442 New icon (Geoff Youngs).
443 Added 'basedir' module for freedesktop.org Base Directory specification.
447 Added functions to read MIME database (Stephen Watson).
449 27-Jan-2003 (Release 1.9.6)
451 Make the default window class the name of the application directory, not
452 'AppRun' (suggested by Albert Wagner).
453 Bugfix: With pygtk-1.99.14, only the first error message from a process
454 would be detected; this meant that ROX-Lib wouldn't detect when the
455 process quit (reported by joehill).
456 Bugfix: <hbox> and <vbox> layouts didn't work in the options box (Allen
461 If python is too old, raise SystemExit instead of quitting.
462 Ensure that True and False are defined.
466 Work around bug in some versions of pygtk that stopped the options window
469 12-Dec-2002 (Release 1.9.5)
471 Upgrade Options box to new style.
475 Bugfix: If an option had an empty value, an exception was thrown on loading
476 (reported by Stephen Watson).
480 Cope with missing input_add_full.
484 Pygtk 1.99.12 seems to more-or-less work now (according to Alastair Porter), so
485 remove the warning for that so we can support RedHat 8.0.
487 20-Oct-2002 (Release 1.9.4)
489 More warnings about old pygtk versions.
490 Added Dialog class (does ref-counting, like Window).
494 Trying to use ROX-Lib2 with earlier versions of python now gives a sensible
499 Make clicking on ROX-Lib itself work again (Christopher Arndt).
503 Updated findrox.py to use pygtk 1.99.13 -- update your programs!
505 25-Aug-2002 (Release 1.9.3)
507 Switch to use new pygtk versioning system (requires pygtk 1.99.13).
511 Added 'processes' module, based on code in Archive, which makes controlling
516 Bugfix: Changing the keys lost any builtin shortcuts (Gtk behaviour has
521 Trap exceptions when activating menu items and report nicely.
525 Bugfix: Remember to call drop_finish() after a drag-and-drop operation.
527 05-Aug-2002 (Release 1.9.2)
529 Renamed XDSLoader module to 'loading' (like 'saving').
530 Added 'mime' module for installing extra MIME information.
531 Bugfix: XDSLoader didn't handle the drag-drop signal, and so only worked for
532 widgets with their own implementation!
536 Show local variables in report_exception, and allow expressions to be
537 evaluated in the context of any frame.
538 Added StringSaver class.
542 Added applet module for creating ROX panel applets.
546 Bugfix: saving code didn't cope with missing images (reported by Musus Umbra).
550 If 'gtk2' isn't available, see if 'gtk' is actually the 2.0 version.
551 Added save_set_permissions to Saveable interface, allowing the default
552 save_to_file to preserve file permissions.
553 Changes to XDSLoader: xds_load_from_stream(name, type, stream)
554 replaces the old xds_load_data(data).
555 Loading files from remote filers works now.
556 Added much improved exception reporting system.
558 19-Jul-2002 (Release 1.9.1)
560 Added support for translations.
564 License change to the LGPL (allows commercial programs to use this library).
565 Added AbortSave exception.
569 Saveable.save_to_file() should raise an exception when saving fails, rather
570 than returning 0. The return value is now ignored (note that raising an
571 exception will still work with 1.9.0).
572 toplevel_unref() ignores any arguments, so it is easier to use as a signal
575 12-Jul-2002 (Release 1.9.0)
577 First release for Gtk+-2.0.