2 Shared code for ROX applications
4 http://rox.sourceforge.net
8 Be consistent about URI escaping. set_uri() is now always passed an unescaped
9 UTF-8 string (Thomas Leonard).
13 Added fixedlist and varlist widgets to OptionsBox (Stephen Watson).
17 Added MIME type matching by file contents (Stephen Watson).
21 If a 'rox' module is in PYTHONPATH, use that without any searching (Thomas
26 Added Chinese translation (Babyfai Cheung).
30 Suppress warning when we use GtkItemFactory under pygtk 2.4 (Stephen Watson).
34 Added tasks.InputBlocker, which triggers when an input source becomes
35 readable (Thomas Leonard).
39 Bugfix: Use only text nodes when getting the tool tip from the Options.xml
40 file (Stephen Watson).
44 Bugfix: Theme subdirectories are separated by ',' not ';' (reported by
49 Bugfix: When a menu has more than one toggle item, only one is updated
50 correctly (Ken Hayber).
54 Replace g.mainloop() and g.mainquit() with g.main() and g.main_quit() as
55 recommended since pygtk 2.0.0 to avoid warnings with pygtk 2.4.0 (Stephen
60 Added options.ListOption to support multi-valued option widgets, such as
61 lists (Stephen Watson).
63 02-Oct-2004 (Release 1.9.16)
65 Cope better with user cancelling su operation. New interface to replace
66 create_su_proxy (Thomas Leonard).
70 The choices module is now deprecated. You can use choices.migrate() to move
71 settings over to the basedir system (Thomas Leonard). Also added
72 basedir.load_first_config(), which works like the old choices.load().
76 Several incompatible changes to the experimental proxy API to make it simpler
79 - Create_su_proxy now returns the MasterObject directly, not the MasterProxy.
80 - You can call finish on the MasterObject (so the MasterProxy isn't needed).
81 - Slave methods no longer take a 'request' argument. Instead, the return
82 value of the function is returned.
83 - Methods can only return one value. dequeue and dequeue_last have been
84 replaced with a 'result' property.
85 - Methods on MasterObject now return a RequestBlocker, not a Queue. This
86 means you just yield the object itself, not object.blocker.
88 Tasks API is no longer experimental, but proxy API is.
92 Added a Help button to the exception dialog, which opens the new Help/Errors
93 file (Thomas Leonard).
97 Simplified su code and interface.
98 New suchild methods: open, close, read, write, chmod and rename, which work
99 just like their normal Python counterparts (Thomas Leonard).
103 Removed code to turn off the separator in the debug dialog. GTK 2.4 doesn't
104 need it, and generates a warning if you use it (Thomas Leonard).
106 27-Aug-2004 (Release 1.9.15)
108 Added spawnvpe and waitpid methods to suchild.
112 If the unit field for a <numentry> option is blank, don't try to translate it
113 (reported by Guido Schimmels).
117 Added 'su' module for performing operations as root.
121 Allow "" as a valid value in a OptionsBox menu (reported by Guido Schimmels).
125 Added 'proxy' module. This allows one Python process to invoke methods on
126 another asynchronously.
127 Added rox.UserAbort exception, to be raised when users cancel something
132 Fix syntax error I caused when I added a docstring (Stephen Watson).
136 Get update-mime-database command through Zero Install, if possible.
140 mime_handler can now uninstall (Stephen Watson).
144 Translate menu items in options (Guido Schimmels).
148 Added <slider> widget to options.
152 Added 'size-group' attribute to Options.xml elements. This allows grouping
153 elements so that their labels all appear the same width.
157 Bugfix: Colour buttons in the Options boxes didn't work with some themes
160 17-Apr-2004 (Release 1.9.14)
162 Added ToggleItem (based on a patch from Ken Hayber).
166 Better <label> widgets (wrapping and icon). Taken from LookAndFeel.
170 Stop themes from overriding the display of the colour-picker buttons in
171 the options box (Rene Ejury).
175 Warn about old versions of findrox.py.
176 Bugfix: Bug in new menu API prevented submenus from working.
178 16-Mar-2004 (Release 1.9.13)
180 Bugfix: Icon themes didn't work with python versions older than 2.2.2
181 (reported by Thomas Zajic).
185 Bugfix: Use filer module to show ROX-Lib help, rather than using os.system,
186 so that it works with Zero Install (reported by Keith Hopper).
190 Added widget_registry to OptionsBox, to provide an easy way to register
191 new option types. Removed build_button in favour of this method.
193 Bugfix: If an error occurred loading the ROX theme at startup it could not
194 be reported, because icon_theme wants debug, debug wants saving, and
195 saving wants icon_theme (reported by Thomas Zajic).
199 Cope with pygtk2.2 API change (Stephen Watson, reported by Guido Schimmels).
203 Added secretentry and button options to the OptionsBox (Stephen Watson).
207 Cope with option values split into multiple DOM text nodes (Rene Ejury).
211 Allow a list of values to be stored in each menu Action. These are used as
212 the arguments to the callback function.
213 If a file's details were recorded (in document.save_last_stat) when it was
214 loaded, make sure they haven't changed when saving. Saving also updates this
215 variable (requested by Arnaud Calvo).
219 Updated examples in documentation for new findrox (Yuri Bongiorno).
223 New API for menus. Instead of passing tuples for menu items, python classes
224 can be used. The old tuple interface is still supported.
228 Don't stop DnD working in the savebox just because no icon can be found
229 (reported by Martin Lucina).
233 Added French translation (Vincent Lefèvre).
237 Also translate <label> elements in the Options box (reported by Arnaud Calvo).
241 Also translate section names in the Options box (reported by Arnaud Calvo).
243 22-Jan-2004 (Release 1.9.12)
245 Added 'tasks' module to provide a light-weight alternative to threads.
246 Bugfix: On non-zero-install systems, the sense of the version check in findrox
251 Added method to MIMEtype to fetch its icon. Install list window for
252 the MIME handler installation uses it (Stephen Watson).
256 Translate text in Options box.
260 Allow ROXLIB_DISABLE_ZEROINSTALL to override looking for ROX-Lib in Zero
261 Install (useful for ROX-Lib developers). Prefer a locally installed version
262 of ROX-Filer to the Zero Install version; this also allows users to select
263 which Zero Install version they want (eg, stable or developer).
264 Moved MIME handler installation into a separate module (mime_handler) and
265 made a few changes to the XML syntax.
269 Added <menu> OptionMenu widget for Options box (Chris Shaffer).
273 Fixed bug in findrox when not using Zero Install (Lionel Bringuier).
277 Escape and unescape URIs, as required by ROX-Filer 2.1.0 (reported by
279 Note that the xds_load_uris() method is now called with escaped URIs.
280 Try to run the filer through Zero Install, if possible.
284 If we can't get pygtk through Zero Install, try the local copy.
288 Added support in mime.py for an application to set MIME-type run
289 actions and thumbnail programs (Stephen Watson).
293 Simplified implementation of saving.SaveFilter by using the new
294 processes.PipeThroughCommand class. The child_run() method of SaveFilter
295 is no longer supported.
296 In processes.PipeThroughCommand, a None input stream gets /dev/null instead
297 of inheriting its parent's stream. The class has a new run_child_with_streams
298 to make overriding the behaviour easier.
299 findrox.py script now warns if ROX-Lib2 version is too old (unless requesting
300 a version too old to have a version number).
304 Changed 'Dismiss' to 'Close' (Chris Shaffer).
305 Bugfix: Error reporting in mime.py failed to import the _ function (reported
306 by Christopher Haines).
307 New AppInfo.py for parsing AppInfo.xml files (Christopher Arndt), InfoWin
308 converted to use it (Stephen Watson).
310 15-Oct-2003 (Release 1.9.11)
312 Bugfix: Python 2.3's new bool type broke options saving (reported by Lars
317 Added PipeThroughCommand class (copied from Archive, with some minor
322 Allow event to be None for Menu.popup. This allows the menu to be activated
323 from the keyboard, using the 'popup-menu' signal.
327 Added French translation in AppInfo.xml (Vincent Lefèvre).
329 03-Oct-2003 (Release 1.9.10)
331 Added support for icon themes (doesn't do inheritance yet).
335 Added some version information to the dialog you get when you run ROX-Lib
340 New bug() function to quickly bring up a debugging prompt.
344 The glob patterns in mime.py are now sorted longest first. Fix for setting
345 icon in the old way when there was no icon (Stephen Watson).
349 Try to cope better with bad hostname setup (reported by Nathan Howell).
353 Added InfoWin.py to provide standardized information window (Stephen Watson).
357 Fall back to old way of setting default icon for older pygtk's (Stephen
362 Added Italian translation (Yuri Bongiorno).
366 Better way to set the default icon.
368 16-Aug-2003 (Release 1.9.9)
370 Give windows a default icon from .DirIcon (Chris Shaffer).
374 Try to get pygtk through ZeroInstall.
378 Updated findrox to use ZeroInstall, if possible.
382 Work out correct application name even if invoked via a symlink. This stops
383 applications from calling themselves 'text_plain', etc (reported by Joe Hill).
385 19-Jul-2003 (Release 1.9.8)
387 Make default menu positioning function keep the pointer inside the menu.
388 Allow stock icons in menus.
392 Added position_fn argument to rox.Menu.popup.
396 Cope with % escaped URIs.
400 Added italian translation in AppInfo.xml (Yuri Bongiorno)
404 When loading data from another application, pass the suggested leafname to
405 xds_load_from_stream().
409 Code tidying, thanks to pychecker.
413 Added fileutils module, which provides an interactive makedirs() function
415 Changed savebox module to use it.
417 16-May-2003 (Release 1.9.7)
419 New icon (Geoff Youngs).
420 Added 'basedir' module for freedesktop.org Base Directory specification.
424 Added functions to read MIME database (Stephen Watson).
426 27-Jan-2003 (Release 1.9.6)
428 Make the default window class the name of the application directory, not
429 'AppRun' (suggested by Albert Wagner).
430 Bugfix: With pygtk-1.99.14, only the first error message from a process
431 would be detected; this meant that ROX-Lib wouldn't detect when the
432 process quit (reported by joehill).
433 Bugfix: <hbox> and <vbox> layouts didn't work in the options box (Allen
438 If python is too old, raise SystemExit instead of quitting.
439 Ensure that True and False are defined.
443 Work around bug in some versions of pygtk that stopped the options window
446 12-Dec-2002 (Release 1.9.5)
448 Upgrade Options box to new style.
452 Bugfix: If an option had an empty value, an exception was thrown on loading
453 (reported by Stephen Watson).
457 Cope with missing input_add_full.
461 Pygtk 1.99.12 seems to more-or-less work now (according to Alastair Porter), so
462 remove the warning for that so we can support RedHat 8.0.
464 20-Oct-2002 (Release 1.9.4)
466 More warnings about old pygtk versions.
467 Added Dialog class (does ref-counting, like Window).
471 Trying to use ROX-Lib2 with earlier versions of python now gives a sensible
476 Make clicking on ROX-Lib itself work again (Christopher Arndt).
480 Updated findrox.py to use pygtk 1.99.13 -- update your programs!
482 25-Aug-2002 (Release 1.9.3)
484 Switch to use new pygtk versioning system (requires pygtk 1.99.13).
488 Added 'processes' module, based on code in Archive, which makes controlling
493 Bugfix: Changing the keys lost any builtin shortcuts (Gtk behaviour has
498 Trap exceptions when activating menu items and report nicely.
502 Bugfix: Remember to call drop_finish() after a drag-and-drop operation.
504 05-Aug-2002 (Release 1.9.2)
506 Renamed XDSLoader module to 'loading' (like 'saving').
507 Added 'mime' module for installing extra MIME information.
508 Bugfix: XDSLoader didn't handle the drag-drop signal, and so only worked for
509 widgets with their own implementation!
513 Show local variables in report_exception, and allow expressions to be
514 evaluated in the context of any frame.
515 Added StringSaver class.
519 Added applet module for creating ROX panel applets.
523 Bugfix: saving code didn't cope with missing images (reported by Musus Umbra).
527 If 'gtk2' isn't available, see if 'gtk' is actually the 2.0 version.
528 Added save_set_permissions to Saveable interface, allowing the default
529 save_to_file to preserve file permissions.
530 Changes to XDSLoader: xds_load_from_stream(name, type, stream)
531 replaces the old xds_load_data(data).
532 Loading files from remote filers works now.
533 Added much improved exception reporting system.
535 19-Jul-2002 (Release 1.9.1)
537 Added support for translations.
541 License change to the LGPL (allows commercial programs to use this library).
542 Added AbortSave exception.
546 Saveable.save_to_file() should raise an exception when saving fails, rather
547 than returning 0. The return value is now ignored (note that raising an
548 exception will still work with 1.9.0).
549 toplevel_unref() ignores any arguments, so it is easier to use as a signal
552 12-Jul-2002 (Release 1.9.0)
554 First release for Gtk+-2.0.