March 3, 2009
This article was contributed by Ben Martin
Trying to debug your own GUI applications can be a pain if you are not
extremely familiar with the toolkit used to make the user
interface. When the code you are working on is also unfamiliar, the
whole experience quickly becomes less than desirable. The GTK+ Parasite tool helps
you to work out the structure of the widgets that comprise a GUI, inspect
and change properties of those widgets, and perform more
in-depth analysis using an embedded Python shell.
The GTK+ toolkit provides an
object-oriented framework for making user interfaces in C.
GTK+ gives you facilities to inspect and change the properties of
objects and supports introspection so you don't need to know about classes
at compile time in order to make use of them at runtime. The GTK+
Parasite attaches itself to a GTK+ application and takes advantage of
these dynamic features to let you inspect and change the interface of
an application as it runs.
GTK+ Parasite doesn't have any official releases yet, but the source
can easily be pulled from its Git repository, compiled and installed
using the standard ./autogen.sh && make autotools
dance. You'll want
to make sure that you have the development packages for PyGtk
installed first in order to get the embedded Python shell
functionality.
To use GTK+ Parasite, add its name to the GTK_MODULES environment
variable and run your GTK+ application as you normally would. For
example:
GTK_MODULES=gtkparasite gedit
Along with your application,
you should see and additional Parasite window with a Widget Tree and
Action List tab and a small area in the lower part of the window with
a Python prompt.
To find out the hierarchy of widgets in your GTK+ application, click
on the Inspect button in the Parasite window and then any part of the
GUI of your GTK+ application. Along with each widget in a tree view
you should see if that widget is realized, mapped and visible, along
with the address of both the X Window of the widget and the GTK+
widget itself. The latter address is very handy because you can right
click on it and "Send Widget to Shell" to obtain a reference to the
widget from the embedded Python interpreter.
The list in the far right of the Widget Tree tab in the Parasite
window lists the properties and their value for the current
widget. Holding the left button down over a property pops up a list of
possible values for you to change it too. On the other hand, if the
range of values for a property is too large, like for an integer
property, no menu is presented and you can enter the value directly.
The Action List tab in Parasite shows you all the GTKAction
objects in the application. For those unfamiliar with the
GTK+ toolkit, a GtkAction object represents a piece of functionality
that can be connected to a menu or toolbar, for example, opening a
Save as dialog or starting a search within the current document. As an
example, running Parasite on the text editor gedit, finding the
FileOpen action in the list and selecting "Send Object to Shell" from
the menu, you can perform the GtkAction by calling the activate method
on the object. You should see the file dialog appear. The embedded
Python shell command should look something like:
>>> parasite.gobj(0xa78980).activate()
where everything up to the
.activate() was added automatically by Parasite when I told it to
send the object to the shell.
If you are writing a custom GTK widget, the "Show Graphic Updates"
button causes any redraws that the application performs to briefly
flash red first. This makes it fairly simple to see if you are drawing
more than you think in order for your widget to update
itself. For example, in gedit, only a rectangle covering the current
line is updated when you type text into the active document, but when
you hit return the current line and everything below it flashes red.
There are a few rough edges to the GUI of GTK+ Parasite, which is to be
expected from such a young application. For example, in the "Action
List" tab, one might expect to be able to simply double-click on an
action to execute it. In addition, left-clicking on a property lets you
either edit the value directly
inline in the cell or if there is a limited number of acceptable values
a popup menu appears allowing you to select a value. While this provides
a consistent user interface for editing though left clicking, it does
mean that you have to click on a property row before editing its value.
One might at first expect a context menu to be available offering such
editing functionality, with the added bonus that you could directly
right click on a property to edit it rather than having to select it
with a left click first.
For such a young application GTK+ Parasite is already
very useful and a great tool for ironing out the kinks in an
application's GTK+ interface. If you are a Python fan, the
embedded Python interpreter lets you tinker with the GTK+ interface
even if the program itself is written in C.
Parasite is developed by Christian Hammond and David Trowbridge.
Activity on the mailing list is
currently on the slow side, but it should pick up as developers
discover this tool.
Comments (none posted)
System Applications
Database Software
Version 1.5 of buzhug has been announced.
"
buzhug is the fastest pure-Python database engine, with a clear and
intuitive syntax (no SQL)
The new release 1.5 brings the following improvements :
- introduce a thread-safe version
- introduce a new syntax for record selection :
record = db(key1=value2[,key2=value2...])
- allow an iterable of records for update
db.update(list_of_records,key1=value1...)"
Full Story (comments: none)
Version 0.4 of Golconde has been announced.
"
I am pleased to announce the first beta release of Golconde, 0.4.
Golconde is a queue based replication solution for PostgreSQL written in
Python 2.6.
It is designed to be loosely coupled and rely upon existing enterprise
messaging systems that have STOMP protocol support. Designed to scale easily
and with multi-data center implementations in mind, the application and
message queues for distribution live outside of the database."
Full Story (comments: none)
Version 2.2 of pgpool-II and pgpoolAdmin have been announced.
"
pgpool-II is a synchronous replication middle ware for PostgreSQL 7.3
or later.
Also pgpoolAdmin 2.2, a GUI tool for pgpool-II 2.2 is available now."
Full Story (comments: none)
Version 3.1.3 of phpMyAdmin has been
announced.
"
phpMyAdmin is a tool written in PHP intended to handle the administration of MySQL over the Web. Currently it can create and drop databases, create/drop/alter tables, delete/edit/add fields, execute any SQL statement, manage keys on fields.
Welcome to phpMyAdmin 3.1.3, a bugfix-only release with updates to 5 languages."
Comments (none posted)
The March 1, 2009 edition of the PostgreSQL Weekly News
is online with the latest PostgreSQL DBMS articles and resources.
Full Story (comments: none)
Version 2.5.2 of pysqlite has been announced.
"
Release focus: minor bugfixes, minor new features.
pysqlite is a DB-API 2.0-compliant database interface for SQLite.
SQLite is a in-process library that implements a self-contained,
serverless, zero-configuration, transactional SQL database
engine."
Full Story (comments: none)
Device Drivers
IBM developerWorks has an
introduction to the Linux generic SCSI driver.
"
Linux provides a generic driver for SCSI devices and an application
programming interface so users can build applications to send SCSI commands
directly to SCSI devices. In this article, the author introduces some of
the SCSI commands and methods of executing SCSI commands when using SCSI
API in Linux. He also provides background on the SCSI client/server model
and the storage SCSI command."
Comments (none posted)
Networking Tools
Version 2.3.3 of Zenoss Core has been
announced.
"
Zenoss Core is an enterprise network and systems management application written in Python/Zope. Zenoss provides an integrated product for monitoring availability, performance, events and configuration across layers and across platforms.
We are proud to announce the Zenoss 2.3.3 maintenance release which fixes over 80 defects."
Comments (none posted)
Security
Version 0.95rc1 of ClamAV, a virus scanner, has been announced.
"
ClamAV 0.95rc1 introduces many bugfixes, improvements and additions."
Full Story (comments: none)
Virtualization Software
Peter Åstrand has announced the launch of the
TigerVNC project.
"
For the last six years, I have worked with the VNC community in
general and the TightVNC project in particular, encouraging
cooperation and unity. We have made great progress. When the TurboVNC
developer and Fedora VNC maintainer joined forces almost a year ago,
we believed we could take this technology to another level of success,
and accelerate development.
Recently, however, it has became clear that the TightVNC project
cannot support this development. This is why we are now announcing the
TigerVNC project."
Full Story (comments: none)
Web Site Development
Version 1.6.0 of spawn-fcgi has been
announced on the lighttpd web site.
"
As mentioned before, we planned to extract spawn-fcgi into its own project and remove it from lighttpd.
Now the first standalone release has been published, starting at version 1.6.0."
Comments (none posted)
Miscellaneous
Version 003 of DeviceKit has been announced.
"
DeviceKit is an abstraction for enumerating devices and listening to
device events. Any application on the system can access the
org.freedesktop.DeviceKit service via the system message bus. On
GNU/Linux, DeviceKit can be considered a simple D-Bus frontend to
udev." This is supposed to be the final release of the project:
"
The
functionality of DeviceKit is going to be merged into the
udev-extras with the only changes being the D-Bus name
as well as the prefix for the GObject library and the
command line tool."
Full Story (comments: none)
Version 1.1.0 of Microlog has been
announced.
"
Microlog is a small logging library for Java ME (J2ME) like Log4j. It has support for logging to console, file, RecordStore, Canvas, Form, Bluetooth, a serial port (Bluetooth, IR, USB), Socket(incl SSL), UDP, Syslog, MMS, SMS, e-mail or to Amazon S3. The long awaited Microlog V1.1.0 release is here. Please download and try it out."
Comments (none posted)
Desktop Applications
Audio Applications
Version 0.3.0 of Invada Studio Plugins has been announced.
"
I've released a new version of the Invada Studio plugins which are a bit cleaner and fix an issue
with gains at maximum not working as
expected. The source now includes the necessary files to allow for deb packages to be built."
Full Story (comments: none)
Business Applications
Version 1.9.4 of the Gnumeric spreadsheet has been announced.
"
This release is a development release with lots and lots of bug fixes.
Also, this version is considerably faster than previous versions in
three ways: (1) when dealing with spreadsheets containing large farms
of VLOOKUP, HLOOKUP, or MATCH calls over the same database, we now
pre-process the database range once and the actual lookups are very
fast; (2) we now only calculate the relevant branch of IF calls,
unless implicit iteration is in effect; (3) large spreadsheets
containing many similar ranges like, for example, A$10:A10, A$10:A11,
..., A$10:A9999 used to hit a degenerate case in our dependency
tracking."
Full Story (comments: none)
Collaboration Software
Version 1.4 of Agilefant has been
announced.
"
Agilefant is a tool for managing agile software development activities, such as: projects, products, releases, iterations and backlogs. It brings together the perspectives of long-term product and release planning and project portfolio management.
Usability and user interface improvements were done to this release. Agilefant's performance is also greatly improved! Also a handful of minor improvements and bug fixes are included."
Comments (none posted)
Version 0.2.7 of gumnut has been
announced.
"
Gumnut is a moderated, distributed, discussion forum that may be used by groups of people to find an agreed positive direction for any decisions that affect that group. Each group may be of any size and associated by geography, common interest, or both."
Comments (none posted)
Desktop Environments
The following new GNOME software has been announced this week:
- Anjuta 2.25.903.0 (bug fixes and documentation work)
- at-spi 1.25.92 (bug fixes and translation work)
- Brasero 2.25.92 (code cleanup, bug fixes and translation work)
- Cheese 2.25.92 (bug fixes and translation work)
- Deskbar-Applet 2.25.92 (bug fixes and translation work)
- Ekiga 3.1.2 (new features, bug fixes and translation work)
- Empathy 2.25.92 (new features, bug fixes and translation work)
- Evince 2.25.92 (bug fixes and translation work)
- Eye of GNOME 2.25.92 (bug fixes, code cleanup and translation work)
- GCalctool 5.25.92 (bug fixes, documentation and translation work)
- Gdl 2.25.92 (bug fixes)
- GLib 2.19.10 (new features, bug fixes and translation work)
- gnome-applets 2.25.92 (bug fixes and translation work)
- GNOME DVB Daemon 0.1.5 (new features and bug fixes)
- gnome-games 2.25.92 (new features, bug fixes and translation work)
- gnome-keyring 2.25.92 (new features, bug fixes and translation work)
- gnome-mud 0.11.2 (bug fixes and translation work)
- GNOME Scan 0.6.2 (new features and bug fixes)
- gnome-settings-daemon 2.25.92 (bug fixes and translation work)
- GTK+ 2.15.5 (new features, bug fixes and translation work)
- gtk-engines 2.17.4 (new features and translation work)
- Libgda 3.99.12 (new features, bug fixes and translation work)
- mousetweaks 2.25.92 (bug fix and translation work)
- Nemiver 0.6.5 (new features, bug fixes and translation work)
- Orca 2.25.92 (bug fixes and translation work)
- seahorse 2.25.92 (new features, bug fixes and translation work)
- seahorse-plugins 2.25.92 (bug fixes, code cleanup and translation work)
You can find more new GNOME software releases at
gnomefiles.org.
Comments (none posted)
The following new KDE software has been announced this week:
You can find more new KDE software releases at
kde-apps.org.
Comments (none posted)
The
announcement has
gone out for the Xfce 4.6 release. "
Xfce 4.6 features a new
configuration backend, a new settings manager, a brand new session manager
and sound mixer as well as several huge improvements of its core
components." An extensive list of changes can be found in
the
changelog.
Comments (5 posted)
The following new Xorg software has been announced this week:
More information can be found on the
X.Org Foundation wiki.
Comments (none posted)
Electronics
Version 0.93 of zParts has been
announced.
"
zParts is an electronic parts inventory system. It is an alternative to using spreadsheet software and has a very high degree of customization. It was created with the electronic hobbyist in mind and even has support for part datasheets and images!
Version 0.93 comes with some big bug fixes that should help things run smoother for all. I'm working towards a system to help first time users get acquainted with zParts and use it well."
Comments (none posted)
Encryption Software
Version 2.0.11 of GnuPG, a GNU tool for secure communication
and data storage, has been announced. Changes include:
"
* Fixed a problem in SCDAEMON which caused unexpected card resets.
* SCDAEMON is now aware of the Geldkarte.
* The SCDAEMON option --allow-admin is now used by default.
* GPGCONF now restarts SCdaemon if necessary.
* The default cipher algorithm in GPGSM is now again 3DES. This is
due to interoperability problems with Outlook 2003 which still
can't cope with AES."
Full Story (comments: none)
Games
Version 1.9.0-beta6 of Doomsday Engine has been
announced.
"
A Windows/Unix/Mac OS X game engine for 2.5d first person shooters such as DOOM, Heretic and Hexen. Lets you enjoy the original games using modern technology e.g. OpenGL, 3D models, unlimited framerate, high-resolution graphics, simulated radiosity."
Comments (none posted)
Version 0.13.0 of ScummVM has been
announced.
"
ScummVM is a cross-platform interpreter for several point-and-click adventure engines. This includes all SCUMM-based adventures by LucasArts, Simon the Sorcerer 1&2 by AdventureSoft, Beneath a Steel Sky and Broken Sword 1&2 by Revolution, and many more.
As we turned to a 6 months release cycle, our newest and best ScummVM version is ready for you!
A couple of new engines were added, and besides 2 Humongous Entertainment titles, we now support The 7th Guest and Bud Tucker in Double Trouble."
Comments (none posted)
GUI Packages
Version 4.5 of the Qt toolkit has been
announced. "
Qt 4.5 includes several new features, but sees the greatest improvement via a concerted effort to increase performance across the entire framework. Significant performance enhancements were made to the graphics system, data handling, and the web engine. These improvements result in an appreciable performance increase in Qt-based applications." The Qt Creator 1.0 release is also available.
Comments (3 posted)
Interoperability
Version 1.1.16 of Wine has been
announced. Changes include:
"
Improved SANE scanner support.
Support for digital CD audio playback.
Improved cookies management in Wininet.
Support for building stand-alone 16-bit modules.
Many fixes to the regression tests on Windows.
Various bug fixes."
Comments (none posted)
Medical Applications
Version 0.4.0 of the GNUmed medical record system has been
announced.
"
This release provides nice and stable new features:
* can show log file from client on demand
* can merge two patients into one
* can edit existing progress note on any encounter
* can access text expansion macros by startof-keyword (will show a list for selection)
* has new hook "after_new_doc_created"
* has minimum HIPAA compliance
* has waiting list
* has random access to plugins
* has screenshots on Linux include window decoration
* has local "installer" for tarball
* has a large part of the user interface translated to Brazilian Portuguese".
Comments (none posted)
Multimedia
Version 0.5.30 of Elisa Media Center has been announced.
"
This release is a "light weight" release, meaning it is pushed through
our automatic plugin update system. That is why there is no new Elisa
windows installer nor any new packages: use the existing ones for
0.5.27; with the default configuration, they should upgrade
automatically to 0.5.30."
Full Story (comments: none)
Music Applications
Version 0.4 of mingus has been announced.
"
Mingus is an advanced, cross-platform music theory and notation
package for Python with MIDI file and playback support. It can be used
to play around with music theory, to build editors, educational tools
and other applications that need to process and/or play music. It can
also be used to create sheet music with LilyPond."
Full Story (comments: none)
Digital Photography
Version 0.8.0 beta1 of hugin has been
announced. The project description states:
"
Panorama stitching and more. A powerful software package for creation and processing of panoramic images. Similar to the windows programs PTGui and PTAssembler."
Comments (none posted)
Video Applications
Version 0.8.5 (also know as "the fourth beta release") of the Gnash flash
player has been released. There's lots of new features, including improved
performance, support for saving media files to disk, new codecs, and more;
see
the announcement for
details.
Comments (12 posted)
Web Browsers
Should GNOME adopt a web browser component? If so, which one? Benjamin
Otte takes on this question with
a detailed
look at Webkit and Mozilla but comes to no clear conclusion.
"
Regardless of which project were to be chosen, my expectation would
be that if we were to start now, it would take 5 experienced GNOME
developers roughly a year to get this work to a point were it would hold up
against today's requirements of the web. For Webkit, this would mostly
require writing source code. For Mozilla, both writing code and
evangelizing inside their community would be necessary." (Thanks to
Paul Wise).
Comments (23 posted)
Languages and Tools
C
Version 2.5 of the LLVM compiler is out. "
LLVM 2.5 includes an amazing collection of bug fixes, performance
improvements (both in the compiler itself and in the generated code)
and new features. Some highlights include a new XCore backend,
significantly improved llvm-gcc GFortran support, code generator
support for arbitrary sized integers (e.g. i71), support for acting on
overflow of integer operations, an amazing new 'Writing an LLVM
Compiler Backend' document, and many many other things." See
the release
notes for details.
Full Story (comments: 5)
Caml
The March 3, 2009 edition of the Caml Weekly News
is out with new articles about the Caml language.
Full Story (comments: none)
Java
Version 1.4.1 of IcedTea6 has been announced, it includes bug fixes and
some rewritten code.
"
The IcedTea6 project provides a harness to build the source code from
OpenJDK6 (http://openjdk.java.net) using Free Software build tools."
Full Story (comments: none)
Perl
Development release #14 of Rakudo Perl, an implementation of Perl 6 on the
Parrot Virtual Machine, has been
announced.
"
This is the fourteenth development release of Rakudo Perl, but it's the first release independent from Parrot releases. We will continue to follow a monthly release cycle, with each release to be code named after a Perl Mongers group."
Comments (none posted)
PHP
Version 5.2.9 of PHP has been
announced.
"
This release focuses on improving the stability of the PHP 5.2.x branch with over 50 bug fixes, several of which are security related. All users of PHP are encouraged to upgrade to this release."
Comments (none posted)
Python
The February 26, 2009 edition of the Python-URL! is online with
a new collection of Python article links.
Full Story (comments: none)
The March 3, 2009 edition of the Python-URL! is online with
a new collection of Python article links.
Full Story (comments: none)
Tcl/Tk
The February 25, 2009 edition of the Tcl-URL! is online with new
Tcl/Tk articles and resources.
Full Story (comments: none)
Cross Compilers
Version 2.9.0 RC1 of
SDCC
has been announced.
"
SDCC is a retargettable, optimizing ANSI - C compiler that targets the Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs. Work is in progress on supporting the Microchip PIC16 and PIC18 series."
Comments (none posted)
Editors
A pretest release of Emacs 23.0.91 has been
announced
"
This is the second pretest for what will be the Emacs 23.1 release.
Pretesters: please send an email to me reporting success or failure on
your build platform."
Comments (none posted)
Profilers
Version 3.4.1 of Valgrind has been announced.
"
Valgrind is an open-source suite of simulation based debugging and
profiling tools. 3.4.1 fixes some regressions and assertion failures
in debug info reading in 3.4.0, most notably incorrect stack traces
on amd64-linux on older (glibc-2.3 based) systems. A number of other
bugs, including some in the new exp-ptrcheck tool, have also been fixed."
Full Story (comments: none)
Test Suites
The February, 2009 release of the The Linux Test Project has been
announced.
"
The Linux Test Project is a group aimed at testing and improving Linux. The goal of the LTP is to deliver a suite of automated testing tools for Linux as well as publishing the results of tests we run. LTP invites community to contribute in new horizons.
The Linux Test Project test suite has been released for the month of
FEBRUARY 2009. Please see ltp/INSTALL file carefully, as, there has been
multiple changes for building/installing the test suite."
Comments (none posted)
Version Control
Version 1.6.2 of the GIT distributed version control system has been
announced.
"
With the next major release, "git push" into a branch that is
currently checked out will be refused by default. You can choose
what should happen upon such a push by setting the configuration
variable receive.denyCurrentBranch in the receiving repository.
To ease the transition plan, the receiving repository of such a
push running this release will issue a big warning when the
configuration variable is missing."
Full Story (comments: none)
Page editor: Forrest Cook
Next page: Linux in the news>>