eboxy Release Notes ------------------- 0.4.1 ----- - This release fixes several minor bugs and adds some small features. It should be fully backwards-compatible with existing skins and plugins. 0.4.0 ----- - There have been substantial internal changes to the code in this version. Most importantly, all of the SDL and SDL_gui specific code has been split out into an "interface plugin" system. Interface plugins are separate from eboxy's existing "generic" plugins, and in theory an interface plugin for any kind of input/output device could be created. Currently the only interface plugin available is the SDL_gui one, however future versions will add more. - eboxy 0.4 is not backwards-compatible with existing generic plugins. This is because the way the old plugin code accepted returned strings from plugins was flawed in a way that resulted in memory leaks, as eboxy could not be sure if it was safe to free the memory associated with these strings. Fixing this required breaking compatibility, however it should not be difficult to fix any existing plugin code to work with 0.4. See the "eboxy Extension Guide" (extensionguide-html/index.html or extensionguide.txt in eboxy/docs/en/) for further details. - eboxy 0.4.0 should be backwards compatible with existing skins, provided that any plugins that they use have been upgraded as discussed above. - The documentation has been converted to DocBook format, and the layout has changed slightly. The documentation is still in eboxy/docs/en, however the HTML versions are in their own subdirectories (userguide-html and extensionguide-html). Plain text versions are still provided. - There is a new configure option --with-plugin-path which lets you specify the directory where eboxy should look for plugins. This is useful if you wish to run eboxy 0.4 side-by-side with eboxy 0.3.x. Generic plugins are loaded from their own subdirectory "generic" under this directory; likewise, interface plugins are in an "interface" subdirectory. - eboxy 0.4.0 has much improved scripting language, particularly in the area of expressions - see the documentation for in-depth details. One change from previous versions is that you are no longer required to put quotes around numbers (they are now accepted as literals), and there are now literals for true and false as well. 0.3.9 ----- - This release fixes a long-standing build bug that forced people to link SDL_gui against libstdc++ at build time. The cause of this was eboxy's configure script, which attempted to test whether SDL_gui was installed using C instead of C++. This is now fixed, so you don't need to mess around with any special steps when installing SDL_gui anymore. My apologies for any inconvenience this silly bug caused. - One new feature has been added - the textfield widget has a new validchars property, which allows you to specify a regular expression to verify entered characters against. For example, if you set validchars to "[0-9]" on a textfield, the user would only be able to enter numbers into that textfield. This does not have any effect on setting the text property of a textfield directly, however. The validchars property is available in the XML file and in scripts. - The documentation has not been updated for this release, because my system is no longer capable of compiling the old LinuxDoc SGML format. (In the 0.4 development version the documentation has already been converted to DocBook so this will not be an issue in future.) 0.3.8 ----- - This is a minor bugfix release only. See the changelog for details. 0.3.7 ----- - This release introduces a number of important new capabilities for plugin developers. These include dynamic widget and page creation at runtime, execution of script code, and the ability to query and enumerate various things that were previously not exposed. - The widget type names (as returned by typeOfObject and the type property) have been changed to line up with the names used in the XML file. For most of the names this was just a change to lower-case. - A number of other minor features have been added. See the changelog for more details. - There were a significant number of bugs fixed in this release. For this reason, all users are recommended to upgrade. 0.3.6 ----- - This is primarily a bugfix and minor feature update release. See the changelog for the full list of changes. This should largely be a drop-in replacement for 0.3.5 with no modifications to the configuration required. 0.3.5 ----- - This version introduces configurable keyboard key bindings and a new action system. The names of some of the existing actions (previously only used when using a LIRC remote) have been changed, so if you use LIRC to control eboxy you will need to update your ~/.lircrc file. The changes from previous versions are as follows: Old Name New Name ------------ ------------- enter accept up prev down next listprev item_prev listnext item_next listprevpage item_prevpage listnextpage item_nextpage listfirst item_first listlast item_last Many other actions have also been introduced. See the documentation for details. (In case you are wondering, the reason for changing the names of these was because they are now applicable to other widgets, eg. textfields). - The default keyboard controls are different from the hard-coded ones used in previous versions. The new default keyboard key mapping is: Escape quit Enter accept Left prev Right next Up item_prev Down item_next PageUp item_prevpage PageDown item_nextpage Home item_first End item_last If you want to change the keyboard key bindings, edit the file ~/.eboxy/keys (eboxy needs to be run once in order to create it). Details of how to edit this file are in the user guide (eboxy/docs/en/index.html or index.txt). - At long last, a file browser plugin has been added to eboxy. You can try out a simple demo in skins/fontbrowser (double click or use the Enter key to select items in the list). See the documentation for the plugin (plugins/filebrowser/filebrowser.txt) for details. - There is now a new way of loading plugins. It is described in full in the user guide, but basically instead of a line in a script, you put a element into the XML, either within the page in which you wish to use it (only loaded while the page is visible) or in the system section (always loaded while eboxy is running). The major benefit of this is that it allows you to have scripts bound to events that the plugin fires. The old loadplugin script command still works as in previous versions, but the new method is the preferred way to use plugins. See the user guide for further details. - The documentation has been updated with some information on working around problems with eboxy and window focus under X. See the "Known Issues" section of the user guide. - 0.3.5 should be backwards-compatible with all plugins compiled for 0.3.4, and should work fine with existing XML skins. 0.3.4 ----- - This release breaks binary compatibility with plugins. This was necessary due to the changes to the way methods are handled. Methods can now have arguments passed into them, and can return values back. To bring existing plugins up to speed, you will need to link them against the updated plugin client library, include the updated header, and change your calls to registerMethodDL as appropriate. One important thing you need to do is to change the method function signatures. Previously, you would have had something like this: int methodfn(const char *sender)... Now, you need to change that to: const char *methodfn(const char *sender, int numargs, const char *args[])... Note that you _must_ do this or your code will cause a crash at some point - the compiler will not warn you about this, as the functions are dynamically loaded. As you can see, you now return a string from methods. This string can be got at in scripts. It is not mandatory, simply return and empty string ("") if you don't want to return anything. Do not return NULL, and be sure not to miss any "return 0" lines left over from the old code. - One of the main motivations for introducing better methods was for the new listbox widgets. These should allow for much greater flexibility - you can now provide the user with a choice from a runtime-modifiable list of items. For example, you could make a plugin that used a listbox widget to provide a list of files to choose from. 0.3.3 ----- - This release fixes some major bugs; it is recommended that all users upgrade especially if you are currently using 0.3.2 (which introduced several of the bugs fixed by 0.3.3). - Plugins are no longer automatically unloaded when the application hides (when exechide is used in a script) or when a new XML file is loaded. This should never have been done in the first place. 0.3.2 ----- General: - There have been some major improvements in documentation for this release. There are two new LinuxDoc-style manuals to be found in eboxy/docs/en - index.html (or .txt) is the user manual and extensions.html (or .txt) describes how to extend eboxy with plugins. - Events (other than the new system events) are now threaded. This means that you can run external programs and wait until they complete without freezing up the GUI, so if you want to you can now properly display status from a running application in eboxy. - LIRC remote button events are now ignored when the application is hidden (while an application started using exechide in a script is running) or when eboxy does not have input focus, ie. if you are using another application. This is different to previous versions where running any external program from a script at all would disable LIRC events until the program finished execution. - eboxy now initialises the audio device by default. If you do not want this then use the --noaudio switch. - The system methods focusnext, focusprevious and selectfocused are now queued - that is when control returns to the script they are not guaranteed to have finished. - The script parser now prints out the line number when an error occurs. The errors are still just as confusing, though (to be worked on). For plugin developers: - The plugin interface has changed significantly. See the new plugin API documentation in eboxy/docs/en/extensions.html (or .txt). - The widget type names have changed: "ebButton" is now "Button", "ebText" is now "Label", "ebPicture" is now "Picture". You would only see these if you were developing a plugin and used typeOfObject() or findObject() with a type specified.