Queen BeeCon Widget/Changelog
Latest revision as of 15:19, 23 February 2011
Changelog for Queen BeeCon Widget. Also see the maemo.org packages page.
[edit] 1.3.3
- New: -
- Changed: For further readability, QBW Logger now outputs "ΒΆ"=chr$(182) instead of "\n"=newlines inside log strings. Only last newline is outputted untranslated.
- Bugfixing: Widget Assertion failed on QBW startup and Animation Stop; fixed
- Bugfixing: System Proxies fetching/clearing logic bugged (again!); fixed
- Bugfixing: No proper reset in DBUS Monitor INIT/DEINIT logic; fixed
[edit] 1.3.2
- New: -
- Changed: Enabling logger verbosity in Logger Verbosity Button in Advanced Settings and Tools Dialog Box enables logging if not enabled on startup by touchlogfile
- Changed: Logger timestamps are now printed in ISO 8601 encoded string, relative to the Coordinated Universal Time (UTC)
- Bugfixing: Version was not displaying in About Box because of font too big; fixed
[edit] 1.3.1
- New: -
- Changed: -
- Bugfixing: Incorrect error "error enabling QBW_SUBSYSTEM_TIMER" report in TIMER subsystem rearm
[edit] 1.3
- New: Ability to sense Phone Orientation and execute scripts accordingly + Relevant configuration parameters (updOnOrientation)
- New: Phone Orientation Parameter Variables substitution for using with scripts which hold $QBW_ORIENTATION_MODE, $QBW_ORIENTATION_STAND, $QBW_ORIENTATION_FACE, $QBW_ORIENTATION_X, $QBW_ORIENTATION_Y, $QBW_ORIENTATION_Z
- New: Ability to sense GPS/Location information and execute scripts accordingly + Relevant configuration parameters (GPSsettings)
- New: GPS/Location Parameter Variables substitution for using with scripts which hold $QBW_LOCATION_FIX current position FIX in string form
- New: Added option to wrap text results and relevant configuration parameter resWrapLongLines
- New: New about box in Advanced Settings dialog Box with Application Name, Description, Version, Buttons for "Visit website" "Report bug" "Donate", Copyright info
- New: Added confirmation in Command Deletion Dialog Box
- New: Added the possibility to completely hide widget and display only the animation when updating (useful for example to draw on-click/press FX frames and visual feedback to buttons)
- New: Parameter Variables substitution for using with scripts which holds the current X position of QBW widget ($QBW_POSITION_X); useful for dynamic update/processing of widget according to its position on screen
- New: Parameter Variables substitution for using with scripts which holds the current Y position of QBW widget ($QBW_POSITION_Y); useful for dynamic update/processing of widget according to its position on screen
- New: Implementation of toggle for multi-click support (quicker click response if disabled); with relevant settings & configuration parameter "multiClick"
- New: Implementation of DBUS methods: reset_rearm_connection
- New: Implementation of DBUS methods: reset_rearm_location
- New: Implementation of DBUS methods: reset_rearm_orientation
- New: Implementation of DBUS methods: reset_rearm_dbus_monitor
- Changed: Complete QBW icons restyle!!!
- Changed: Changed some settings sensitivity logic according to enablement of relevant function
- Changed: Command Input Buffer in Advanced Settings Dialog Box now accepts linebreaks in the input for improved command readability
- Changed: Progress Animation is now not shown if widget is set to invisible
- Changed: @connection events now have their management subsystem and gets activated only for instances requiring it
- Changed: Changed logger verbosity @connection event
- Changed: Restyle in Update Policy Settings
- Changed: UI Restyle in Advanced Settings and Tools Dialog Box
- Changed: UI Restyle in Widget Size Settings
- Changed: UI Restyle in Widget Positioning Settings
- Changed: More verbosity for Pango Markup Language inconsistencies notification (Now instance id and offending command title are displayed)
- Changed: Optimization in wakeup/sleep logic (better error management and notifications)
- Bugfixing: Instance parameters related to commands (instanceTitle, instanceCmd) were not poperly updated when edited both in Advanced Dialog Box and in Command Add/Edit/Delete dialog box; fixed
- Bugfixing: Network connection/disconnection logic; fixed
- Bugfixing: In Advanced Dialg Box, export of command not in list caused SEGFAULT; fixed
[edit] 1.2
- New: Release Candidate to Extras (1.0.53 -> 1.2)
- Changed: Release Candidate to Extras (1.0.53 -> 1.2)
- Bugfixing: Release Candidate to Extras (1.0.53 -> 1.2)
[edit] 1.0.53
- New: Parameter Variables substitution for using with scripts which holds the current width of QBW widget ($QBW_WIDTH); useful for dynamic recalculation of click hotspots
- New: Parameter Variables substitution for using with scripts which holds the current height of QBW widget ($QBW_HEIGHT); useful for dynamic recalculation of click hotspots
- New: Parameter Variables substitution for using with scripts which holds the exit status of the last previous executed command ($QBW_PREVIOUS_EXIT_STATUS)
- New: Added new Network Connection Event condition (NETWORK__PASSTHROUGH) which will trigger the execution of command at every Network Related event. Management of the connection event status will be completely delegated to the command through $QBW_IS_CONNECTED and $QBW_EXEC_REASON=="QBW_CONNECTION_EVENT" Parameter Variables substitution.
- Changed: Optimized "cancel on exec in progress" logic
- Bugfixing: Some network connection status change issues; fixed
[edit] 1.0.52
- New: In Command and Instance import in Advanced Settings and Tools Dialog Box, command title is now checked for existence, if existent "+"s are appendend till name is unique
- New: In Add/Edit Command Dialog box, command title is now checked for existence, if existent, user is now asked for unique name
- Changed: -
- Bugfixing: Both in Settings and in Advanced Settings and Tools Dialog Box, Command Selection button was not correctly re-populated after operations on commands list (add/delete/import); fixed
[edit] 1.0.51
- New: Added Reset/Truncate Logfile action to Logger Verbosity Button in Advanced Settings and Tools Dialog Box
- Changed: -
- Bugfixing: -
[edit] 1.0.5
- New: Possibility to directly modify the "rememberMe" parameter from the output of the executed command (without using the DBUS interface which is much slower) for using with scripts which need to hold/manipulate status or persistency information. Just echo the following string (which will not be displayed) as output of your command "QBW_REMEMBER_ME(<content to be remembered>)" no angle brackets; escape "close round bracket" like this "\)" to store it as ")"
- Changed: Extended warning message in case of inconsistent Pango Markup Language output ("QBW Warning! Possible Pango Markup Language inconsistent/unterminated Tag!")
- Changed: Extended warning message in case of inconsistent/non-UTF-8 output in TestDrive output Buffer ("QBW Warning! Expected/Shown Command Output mismatch. Possible charset different from UTF-8!")
- Bugfixing: QBW re-enable on double-click logic bugged; fixed
[edit] 1.0.4
- New: Implemented the possibility to have the Progress Animation displayed at widget click X,Y coordinates; with relevant configuration parameter "progressAnimationAtClickXY"
- New: Implemented the possibility to hide the background Canvas on click both for Beecons and Snippets with relevant configuration parameter "hideClickCanvas"
- Changed: Some optimizations in QBW at startup, expecially for instances with execute @startup flag; should speed up widget appearance
- Changed: Checks for obsolete instances in configuration file moved to Advanced Settings and Tools Dialog; check is performed upon entering.
- Changed: Some optimizations in progress icon animation logic
- Changed: Some optimization in multiple-clicks management
- Bugfixing: Command output for Test Drive in Advanced Settings and Tools Dialog still buggy and not displaying complete output; fixed
- Bugfixing: Logic for multiple clicks count was a bit bugged; fixed
- Bugfixing: DBUS Signal emission at end of command execution was misplaced ; fixed
- Bugfixing: Logging info incorrect for timeout seconds count function GetSeconds; fixed
[edit] 1.0.3
- New: Added button to change Logger Verbosity in Advanced Settings and Tools Dialog Box
- New: Implementation of Command and Results image orientation angle (w/ relevant configuration parameters)
- New: Added edit box in Settings Dialog for "rememberMe" value. Can now be initialized also from widget and not only via DBUS method
- New: Parameter Variables substitution for using with scripts which holds the number of times a QBW was pressed/clicked: $QBW_CLICKS_COUNT; useful for handling single/double/triple... clicks and behave accordingly (Tested up to 12 ... :) )
- New: Parameter Variables substitution for using with scripts which hold X and Y coordinates where a QBW was pressed/clicked: $QBW_CLICK_X, $QBW_CLICK_Y; useful for handling different arbitrary/dynamic hotspots on widgets via launched shell scripts
- Changed: Now QBW instances with status disabled/minimized (black small 60x60 inactive sleeping bee icon) are enable again on double-click and non on single-click
- Bugfixing: TestDrive in Advanced Settings and Tools Dialog Box was not fetching the whole command output; fixed
- Bugfixing: Typos in "Edit Cmd" Dialog Box title; fixed
- Bugfixing: Not proper memory deallocation of some strings parameter in Settings Dialog; fixed
[edit] 1.0.2
- Source Modules: Changed architecture of source module ... now split into single modules according to QBW subfunctions ... expect some sneaky regressions!!!
- New: Application Logging Subsystem to log file, with different levels of verbosity (v0 v1 v2 v3 v4 from minimum verbosity to maximum) and possibility to enable/disable/reset logging and log file
- New: Parameter Variables substitution for using with scripts which holds Network Connection status: $QBW_IS_CONNECTED (true=QBW Instance is connected to the network (either WLAN or GPRS) false=QBW Instance is NOT connected to the network (either WLAN or GPRS))
- Changed: In Settings Dialog Box changed "Custom(")" to "Custom(Secs)" for custom timer label
- Changed: In Advanced Settings and Tools Dialog Box it's now possible to scroll dialog both vertically and horizontally. So all buttons will be accessible even if you have big fonts
- Changed: In Advanced Settings and Tools Dialog Box added more checks for Import Instance/Command Data (It should now be more restrictive on Import Data consistency/congruency)
- Bugfixing: System Proxy fetching logic bugged; fixed
- Bugfixing: reset_rearm_timer DBUS method call was not disabling timer when timer update was disabled; fixed
- Bugfixing: set_param_uint32 DBUS method call had problems if values = 0; fixed
[edit] 1.0.0.1
- New: Nothing - Release Candidate to Extras (0.1.9.9 -> 1.0.0.1)
- Changed: Nothing - Release Candidate to Extras (0.1.9.9 -> 1.0.0.1)
- Bugfixing: Nothing - Release Candidate to Extras (0.1.9.9 -> 1.0.0.1)
[edit] 0.1.9.9
- New: Added "On Sight" Update Policy (If flagged, content is not updated if widget is out of sight (on other desktop) or if display is locked or in stand-by)
- New: Parameter Variables substitution for using with scripts which holds "On Sight" or "Out Of Sight" status: $QBW_ON_SIGHT (true=QBW Instance is "ON SIGHT", that is widget is on current desktop and display is not locked or on stand by. false=QBW Instance is not on current desktop and visible or display is off or on stand by)
- New: DBUS method "is_on_sight" which returns true (QBW Instance is "ON SIGHT", that is, widget is on current desktop and display is not locked or on stand by) or false (QBW Instance is not on current desktop and visible or display is off or on stand by)
- Changed: Optimized usability of settings for Widget Width and Height
- Changed: Optimized progress animation logic for visibility when instance not On Sight
- Bugfixing: -
[edit] 0.1.9.8
- New: Implemented per-instance progress animation with customizable number of frames, timer, position and possibility to have it shown or hidden (Now every instance can have its own progress animation) + Settings for Hide/Show, frames #, timer, position and basename.
- Changed: Extended error message text to all DBUS methods
- Changed: Now when command or script do not return any output no more "No Output" text gets printed inside the widget
- Bugfixing: Added error message if non existing parameter is supplied to all DBUS methods "set_param_*"
- Bugfixing: Under certain conditions HotSpot Index was not properly reset in case update policies prevented execution of script from happening. Fixed.
[edit] 0.1.9.7
- New: -
- Changed: Line width for widget contours FX when widget pressed set to 1px
- Bugfixing: Reentrancy issues for DBUS Monitor. Fixed
- Bugfixing: "If you enter a long name for the title, the right part of the prefs gui isn't visible anymore and you can't scroll to the now hidden gadgets!". Fixed. Area is now scrollable also horizontally.
- Bugfixing: Issues with positioning of small widgets with respect to bottom and right margins. Fixed.
[edit] 0.1.9.6
- New: REVOLUTION!!! :) Implementation of multiple (9 = grid 3x3) Hot Spots to click on the widget. Clicked Hot Spot Index Position can then be passed to the executed script via Parameter Variables Substitution $QBW_HOTSPOT_PRESS (0=Not Pressed or other update policy,1=Top Left,2=Top Center,3=Top Right,4=Center Left,5=Center,6=Center Right,7=Bottom Left,8=Bottom Center,9=Bottom Right)
- New: Parameter Variables substitution for using with scripts which hold Proxy related information: $QBW_HTTP_PROXY, $QBW_HTTPS_PROXY, $QBW_FTP_PROXY, $QBW_SOCKS_PROXY, $QBW_RTSP_PROXY (In the format <host:port>)
- New: Parameter Variables substitution for using with scripts which hold Proxy related information: $QBW_IGNORE_HOSTS_PROXY (In the format <host1;host2;host...>)
- New: Parameter Variables substitution for using with scripts which hold proxy related information: $QBW_AUTO_CONFIG_PROXY_URL
- New: Parameter Variables substitution for using with scripts which hold status or persistency information stored in configuration via DBUS method call set_param_string string:"rememberMe" string:<rememberthis> : $QBW_REMEMBER_ME. Useful, for example, for remembering values like counters across subsequent command executions.
- Changed: Logic to purge configuration settings of non-existent QBW instances from configuration file. (Check/Purge performed at every entrance in Settings dialog)
- Bugfixing: Reentrancy problem with Settings dialog box. At times, in case of laggy interface, 2 or more instances of dialog were opening. Fixed.
- Bugfixing: Incomplete unreferentiation of DBUS resources. Fixed.
- Bugfixing: Incomplete unreferentiation of callback functions for async command execution and timers. Fixed.
- Bugfixing: Incorrect logic for updating when widget desktop was active/on. It was updating also when active widget's desktop was swept off. Now updates content only if "Update on Desktop" is TRUE and Widget's Desktop is being swept on. Fixed.
[edit] 0.1.9.5
- New: Added supplementary progress images/icons (cycle is "queen-beecon-progress[0-3].png") searching logic in directory storage in this order 1) "~/Mydocs/.images/queen_beecon_dir" 2) "~/.queen_beecon_dir"
- New: Added button in Command Edit dialog to add instance only commands to the list of stored commands
- New: Implementation of following DBUS methods: get_current_results_text (Get current content of results text)
- New: Parameter Variables substitution for using with scripts which holds the current content of results text ($QBW_CURRENT_RESULTS_TEXT=Current content of results text)
- Changed: Default shape for Beecons is now rectangle. Hexagonal cell will be only shown when pressed
- Changed: Shadow/Light effects on widget surface, either when pressed or not, are now fixed in size (~4px)
- Changed: Changed some logic in simple Command Edit dialog box
- Changed: After instance imported, now advanced dialog box closes and reverts back to settings with all parameters reloaded
- Changed: Changed Warning and Information notification in Advanced Settings to display hildon_banner*
- Changed: Changed DBUS connection acquisition for DBUS Monitor.
- Bugfixing: Refined and fixed logic for DBUS Monitor initialization and deinitialization
- Bugfixing: Changed and fixed logic for handling/displaying Exit Code if error spawning asynchronous command
- Bugfixing: New asynchronous execution logic was not releasing file handles. Fixed
[edit] 0.1.9.4
- New: Ability to execute scripts by intercepting specific DBUS broadcasted signals/methods issued by the system or other applications + Relevant configuration parameters (Ex.keyboard lock, slide open/close, ecc.)
- New: Parameter Variables substitution for using with scripts triggered by intercepted DBUS broadcasted signals/methods ($QBW_EXEC_REASON=QBW_DBUS_MONITOR, $QBW_DBUS_VERBOSE_OUTPUT=Verbose Output see WIKI)
- Changed: Changed icons for displaying command execution in progress (shown when script in progress and hidden on execution completion)
- Changed: Package installation now performs an automatic restart of hildon-home process
- Bugfixing: Memory reallocation bugs fixed in new async command execution logic
[edit] 0.1.9.3
- New: Added icon for displaying command execution in progress (shown when script in progress and hidden on execution completion)
- New: Implementation of Asynchronous Non Hildon-Home blocking command execution (Test Drive is still Synchronous for command timing evaluation purposes)
- Changed: -
- Bugfixing: Memory reallocation bugs fixed for all string values management in settigs dialog box
[edit] 0.1.9.2
- New: Added custom timeout in seconds for periodic update, not just predefined list of values
- Changed: Restyle in settings configuration for Update Policies, Fonts & Colors Buttons
- Bugfixing:
[edit] 0.1.9.1
- New: Parameter Variables substitution usable by script (Ex. Own Instance ID, Reason for updating content)
- New: Implementation of Command and Results text orientation angle (w/ relevant configuration parameters)
- New: New extended color dialog for background and foreground colors (Old color selection deprecated; backward compatibility for instances exported from previous releases is guaranteed and settings upgraded as necessary)
- Changed: Restyle in settings configuration for Beecon Command Exit Statuses area & Command Title/Results Settings area + changed color settings appearance
- Bugfixing: Disabled instance (icon) wasn't correctly drawn on startup; fixed
- Bugfixing: Memory deallocation bug for >=3 Exit Status image file beecon_idxge2_ImgFilename; fixed
[edit] 0.1.9
- New: New extended font dialog for command and results labels (Old font selection deprecated; backward compatibility for instances exported from previous releases is guaranteed and settings upgraded as necessary)
- Changed: Due to new font settings implementation, exported instances from this release onward will have their fonts reset to command="Nokia Sans bold italic 12" results="Nokia Sans bold 12" when imported in previous releases
- Bugfixing: Some fixing and cleanup in package install/uninstall
[edit] 0.1.8-testonly-PR1.2
- WARNING This release is for testing purposes only as PR1.2 upgrade brought some instabilities which need forensics!!!
- New: Implementation of DBUS methods: reset_rearm_timer
- New: QBW is now integrated into the N900 system backup/restore features according to standard specifications as better described in SDK "Using Backup Application" http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Generic_Platform_Components/Using_Backup_Application#Custom_back-up_locations
- Changed: Completely revised Timer logic and reset/re-arming for widget periodic auto-update
- Changed: Visual feedback when Beecons pressed; now rectangle gets drawn as well as cell (better chance of noticing feedback for canvas-less Beecons)
- Bugfixing: Fixed segmentation fault if dbus get_position method called and dbus_method_monitor turned on
[edit] 0.1.7-PR1.1.1
- NOTE: Special Build for PR1.1.1
- New: Implementation of Widget Instance visibility toggle and configuration parameter (for showing or hiding the widget also via DBUS)
- New: Implementation of following DBUS methods: dbus_method_monitor, show, hide, wakeup, sleep, update_content, update_layout, exec, set_param_string, set_param_int32, set_param_uint32, set_param_double, set_param_boolean, get_param string, set_position, get_position, get_exit_status
- New: Implementation of following DBUS signals: sig_content_updated
- Changed: Enhanced DBUS implementation for Widget2Widget & System2Widget Inter Process Communication
- Changed: Changed default values for some Update Policies in new QBW instances (updOnStartup now defaults to FALSE; updOnDesktop now defaults to FALSE) to prevent bugged Beecons from freezing hildon-home even after restart
- Respect: To querty12@talk.maemo.org Many, many, many, many, many thanks for supporting QBW IPC implementation
[edit] 0.1.6
- New: Simple DBUS implementation for Widget2Widget & System2Widget Inter Process Communication
- New: Added Widget Instance ID in Settings Dialog Title
- Changed: Compiled Vs. PR1.2
[edit] 0.1.5
- Changed: Thanks "qwerty12" disabled automatic capitalization for all text entry fields
[edit] 0.1.4
- New: Implementation of Widget Instance disabling and minimizing on desktop (click on minimized icon on desktop will wakeup and maximize instance)
- New: Implementation of image/icon scaling function for all images used (Zoom In/Out from 5% to 200% or Fit to Widget Width/Height)
- Bugfixing: In Advanced Maintenance Dialog Box several bugfixes for Import/Export commands and instances,
[edit] 0.1.3
- New: Added possibility to show or hide both snippet's image/text and beecon image/text. This way you can have two images and two text placeholders on widget, for more flexibility in graphic layout
- New: Added supplementary images/icons directory storage "~/Mydocs/.images/queen_beecon_dir". If images/icons without path are not found here then they are searched in "~/.queen_beecon_dir". For easier population via USB of BLUETOOTH File Services.
- New: Added functions in Advanced Maintenance Dialog Box: instance export/import w/ checksum, command export/import w/ checksum, command update with current Test Drive buffer, clipboard operations
- New: Added some confirmation dialogs for critical operations and some notification messages
- New: Added possibility to use different images/icons for Command Exit Statuses >=3 . Basically the Exit Status value will be appended to a fixed image filename and relevant image will be loaded (ex. "queen-beecon-status.png.3" ... 4 ... 5 ...)
- New: Basic Images/Icons for Snippets and Beecon Statuses incorporated into .deb package and installed inside canonical hildon hicolor 48x48 directory
- Bugfixing: Fixed size and positioning of controls in Advanced Maintenance Dialog Box
- Bugfixing: Removed directory purge in "rmnobraco.sh" script
- Bugfixing: Checked and removed some memory leaks and resources deallocation (were causing hildon-home desktop to crash on instance disposal)
- Changed: Restyle and lots of optimization in Settings Dialog Box UI layout
- Changed: Widget's fill gradients when background is enabled
- Changed: Restyle in Advanced Maintenance Dialog Box interface, now more functional and user friendly
- Changed: When opening Advanced Maintenance Dialog Box, command in current instance is automatically copied to the TestDrive command text box
- Changed: Advanced Maintenance Dialog Box changed font to Monospace Bold for the three text views for inproved visibility
[edit] 0.1.2
- New: Implemented Pango Markup Language support for both Command Title and Output Results text (Description HERE)
- New: Basic implementation of Advanced Maintenance Dialog Box (For future use like export/import ...)
- New: Advanced Maintenance Dialog Box: TestDrive mode (to display raw output of predefined or user-defined commands)
- Changed: Had to change description in debian "control" file (Testers Karma-- me for this)
- Changed: Changed logic in settings dialog box, now it doesn't redraw unless strictly necessary and just content and controls which need it. Also quicker transition to main settings when back from child dialog boxes.
[edit] 0.1.1
- Changed: Visual feedback for widget pressure is now also provided for Canvas-less beecons and snippets (button down canvas is displayed when pressed)
- Changed: Changed default size for newly created instances (50px=>100px)
- Changed: Housekeeping for dead/disposed instances is now run on each instance initialization and on class termination (should be more accurate now)
- Bugfixing: Writing/Reading configuration file inconsistencies fixed
- Bugfixing: Correction in images (status/results/title) hide/show logic. If images displayed and then commented out, they kept showing! - FIXED
[edit] 0.1.0
- WARNING! Architecture and readibility of code has been heavily revised for implementing the new functionalities...
- WARNING! Please bear with possible regressions and report bugs to the Maintainer
- New: Implemented the possibility to hide the background Canvas both for Beecons and Snippets
- New: Implemented the possibility to use different icons/images for Beecon's status output instead of just specific background color (Ex. 0=green led, 1=yellow led, 2=red led) (with high positioning versatility)
- New: Implemented the possibility to use icons/images instead of text both for Beecons/Snippets command title and output (with high positioning versatility)
- New: Implemented creation and management of private general purpose directory "~/.queen_beecon_dir" for widget (images/icons/etc.)
- New: Implemented "Update on widget Startup" option for every instance
- New: Implemented basic management/deletion of dead/disposed instances configurations data from config file
- New: Added button "Save & Run" settings dialog which saves settings and contextually triggers command execution
- Changed: Widget Layout is now nicer with better gummy "button-press" like visual feedback using Gradient fill
- Changed: Button Save in settings dialog does not trigger a command execution any more
- Changed: Now command do not get updated after getting back from settings dialog (even after "save"); relevant event only drives updates (manual, timer, desktop, network)
[edit] 0.0.3
- Bugfixing for widget resize(dimensions) and positioning
- Bugfixing for general network related behaviours and content update, even after settings change
- Bugfixing for Command Edit and blank command selector after returning from command edit dialog
- Changed Exit Code output for command from !?0000xxxx to !?xxxx
- Changed Command Output is returned, if any, even if Exit Code less then 0
[edit] 0.0.2
- First Extras-devel release
[edit] 0.0.1
- Initial Basic Queen BeeCon Implementation
- This page was last modified on 23 February 2011, at 15:19.
- This page has been accessed 3,872 times.