prev
Issue 64
24th June 2007
by Danny Allen
next


This Week...
Introductions of a Dictionary, Photoframe, and Facebook Plasmoids, and a Weather and Solid DataEngine in Plasma. Usability improvements and optimisations in KListView, used for icon views in Konqueror and Dolphin. The start of a shared, common location for vocabulary files across KDE-Edu applications, with initial implementation in Kanagram. Support for application-specific caches in the Icon Cache implementation, and further progress in the KOrganizer Theming and KRDC Summer of Code projects. Better support for ALSA in KMix. Umbrello gets support for SQL code generation. The start of enhanced animation support in KPresenter. Scripting interaction with Yahoo! web services to provide weather and stock quote information in KSpread. Advancements in the KTorrent port to KDE 4. The creation of the PopUpDropper, a context-sensitive drag-and-drop widget in Amarok. Import of kollagame, a game development IDE. Systemsettings is moved to kdereview as a possible replacement for KControl in KDE 4.

Aaron J. Seigo continues the updates of previous weeks, giving us the third installment of his Plasma progress series:
This week the bulk of interesting work in Plasma happened in DataEngines and Phase/Animator.

DataEngines are plugins that get loaded on an as-needed-basis to provide access to specific bodies of information. This week we saw DataEngines for looking up the meanings of words in online dictionaries, facebook updates, weather information (currently only Canada, but it is fully extensible to include other country information) and hardware events (interfaces with Solid).

With these engines, a Plasmoid can ask to be connected to specific pieces of information and all the data fetching, processing, updating and clean up is handled for it. The interface is also identical regardless of the type of information so there is no need to learn different library interfaces to create different kinds of applets.

Phase/Animator is a system to provide centralized management of animations and other graphical effects. Like DataEngines, Phase/Animator is also plugin-based for flexibility and makes it very easy to add animations to Plasmoids and other desktop elements.
Download Phase in Plasma video (24.6 MB, AVI)

Animating a whole item is one line of code while animating an element within an item is ~3 lines of code. Animations for appearing, disappearing, slide outs, etc.. are provided and it is extensible to easily add more. This gives us the ability to provide consistent, efficient and pervasive effects on the desktop while also allowing them to be turned off (or otherwise chnaged) with the flick of a configuration switch, which is pretty important for thin client systems or accessibility concerns.

Thomas Georgiou writes about one of the many Plasma applets springing up, the Dictionary Plasmoid:
On the 18th June, Summer vacation started for me so I suddenly received a large amount of free time. The week before I had read that KDict was not going to be in KDE 4. As I had used KDict before and found it useful, I thought that replacing KDict would be a not-so-hard project to start developing on KDE with. At the same time, I also wanted to work on Plasma, the new, cool thing, so I decided to merge the two and write a dictionary Plasmoid. My friend, Jeff Cooper also wanted to get into KDE development so I asked him to help me.

On Monday, we easily wrote the plain text version of the Dict engine in a few hours after figuring out how to do TCP sockets in Qt. We were surprised at how easy it was to get working. That night, we started writing the beginnings of the applet until biological limits such as sleep overcame our enthusiasm about hacking on KDE. On Tuesday, we talked to Aaron J. Seigo on IRC about putting it into SVN. We then sent the engine to the Plasma (panel-devel) mailing list where we received some helpful responses on how we could improve the engine.

After we fixed a few things and resent the engine, Aaron committed it into playground. I also applied for a SVN account that day and received it that night. We were now able to commit directly to SVN. We continued hacking until we fell asleep that night too. On Wednesday, we committed the Dictionary applet and made the engine have pretty HTML output once we realized HTML was usable in the applet. We also added animation support in 1 line by using Phase. We continuously hacked at the applet and engine at a steady pace through Thursday. On Friday, I changed the layout/look of the applet after I received a cool mockup from the Oxygen team and Jeff recorded the screencast. On Saturday, I kept implementing cool new features like pages (which I just committed the preliminary version of) and dictionary selection, and I wrote these paragraphs.
Download Dictionary Plasmoid video (2.8 MB, MPEG)

The Dictionary applet mainly consists of 2 widgets, a word lineedit and a definition lineedit that is hidden until a definition comes from the engine. It currently looks ugly since the new background rendering code was committed to Plasma on Friday and the Oxygen team did not have enough time in the couple hours before the screencast was recorded to make a nice background. The word lineedit has instructional text that behaves like it does not exist except for a bug that is being currently worked on where the text sometimes stays grey. The definition lineedit is animated using Phase (that took only 1 line of code!) and has links to other related words given by the dictionary. There is also a bug with the definition lineedit disappearing leaving artifacts that is actively being worked on (an hour is not enough time to fix a bug that I had no idea about). The definition lineedit gets its text from the Dict engine. The Dict engine interfaces with dict.org using a Qt TCP Socket and can get definitions from various quality dictionaries that it hosts (but the applet can only select one right now... this is another feature that I will work on after I finish pages).



Getting started with KDE/Plasma development was extremely easy thanks to Qt, KDE's easy to use libraries, and the continuous help from Aaron and others in the #plasma IRC channel. If you want to start devloping or contributing for Plasma or KDE, just drop in to the #plasma or #kde4-devel channel on Freenode or visit http://techbase.kde.org/Contribute.

Thomas Moenicke introduces his work on bindings for PHP, PHP-Qt:
I am writing language bindings which allow one to write Qt and KDE GUI applications using the command-line version of PHP. Version 5 of PHP offers substantial object orientation and a C/C++ like syntax on one hand, and introspection and the easy-to-use nature of a scripting language on the other; PHP 5 is capable of far more than its normal job in web environments.

I hope not only to bring PHP into the KDE and Qt worlds, but also to bring Qt and KDE into the PHP world; thereby exposing people to KDE which may not otherwise have such exposure.

Currently developers using PHP-Qt can use a number of Qt technologies including meta objects, overriding virtual methods, most non-template classes, and slots. In the near future I will implement user-generated signals, write more examples and tutorials, and improve overall stablity. Also Katrina Niolet and I are working together on adding support for template based classes such as QList and QVector.

Long term goals for PHP-Qt include:
  • Support for QtDesigner based interfaces
  • Ability to extend desktop software, such as Plasma, with PHP.
  • Experimenting with combining Web and Desktop in new and innovative ways.
PHP-Qt builds upon the smoke library, which is is written specifically for developing Qt/KDE language bindings. It is already used by other KDE bindings projects and does an excellent job as can be seen in QtRuby, Korundum and Qyoto with Qt4; Smoke has also been used in Qt3 bindings as well.

There are already several projects which have started developing GUI applications with PHP-Qt, including a configuration application for Gentoo and translation tools for web environments. Additionally, Katrina Niolet is developing IQuiP on top of PHP-Qt which allows one to write AJAX applications with the PHP-Qt API. Since both PHP-Qt and IQuiP share the same API it is theoretically possible to run a large number of applications both on the web and on the desktop without a single line of code modification.


This is the last digest before the hackaton and talks extravaganza that is Akademy 2007, which starts Saturday, 30th of June in Glasgow, Scotland and will therefore be the location of Issue 65. See you there!


Statistics
Commits: 2974 by 238 developers, 6511 lines modified, 1575 new files.
Open Bugs: 13986
Open Wishes: 12765
Bugs Opened: 226 in the last 7 days.
Bugs Closed: 157 in the last 7 days.

Commit Summary
Module Commits
/trunk/KDE
1076
/trunk/extragear
388
/trunk/l10n-kde4
233
/trunk/playground
222
/branches/work
187
/branches/extragear
153
/branches/stable
144
/trunk/koffice
128
/trunk/l10n-kde3
108
/trunk/www
102
Lines Developer Commits
662
Gilles Caulier
293
371
Laurent Montel
164
231
Aaron J. Seigo
81
90
Oswald Buddenhagen
63
147
Andreas Pakulat
62
140
Allen Winter
54
105
Thomas Georgiou
49
102
Dirk Mueller
48
55
Christian Ehrlicher
45
92
Pino Toscano
43

Internationalisation (i18n) Status
Language Percentage Complete
Swedish
99.49%
Portuguese
98.80%
Dutch
93.72%
Spanish
92.14%
Greek
92.24%
Estonian
91.45%
Danish
88.19%
German
86.75%
Italian
84.17%
French
81.28%

Bug Killers and Buzz
Bug Killer Number Of Bugs Closed
Christian Esken
17
Ferdinand Gassauer
13
Thomas McGuire
11
Jan Kundrát
10
Oliver Kellogg
10
Sebastian Trueg
9
Mark Kretschmann
8
Oswald Buddenhagen
8
Marek Laane
8
Kevin Funk
7

Program Buzz
Amarok
  5645
Kopete
  3828
K3B
  3550
Kate
  3520
KMail
  3450
KDevelop
  2555
Kaffeine
  1728
Kontact
  1655
Kicker
  1654
Quanta
  1600


Person Buzz
David Faure
  746
Stephan Kulow
  662
Adriaan de Groot
  625
Allen Winter
  564
Jeff Mitchell
  540
Aaron J. Seigo
  518
Waldo Bastian
  466
George Staikos
  314
Robert Knight
  308
Luboš Luňák
  254
Commit Countries

Commit Demographics
Sex
92.8 %       Male
7.93 %       (unknown)
0.402 %       Female
Motivation
45.9 %       (unknown)
38.0 %       Volunteer
17.1 %       Commercial
 
Ages
79.0 %       (unknown)
12.4 %       25 to 34
5.70 %       18 to 24
2.19 %       45 to 54
1.75 %       35 to 44


Contents
  Bug Fixes Features Optimise Security Other
Accessibility
Development Tools [*] [*] [*]
Educational [*] [*]
Graphics [*] [*]
KDE-Base [*] [*] [*]
KDE-PIM [*] [*]
Office [*] [*]
Konqueror [*]
Multimedia [*] [*] [*]
Networking Tools [*] [*] [*]
User Interface [*]
Utilities [*] [*]
Games [*] [*] [*]
Other


Bug Fixes
Multimedia
Michael Pyne committed changes in /trunk/KDE/kdemultimedia/juk:
Port bugfix for bug 116181 (Internet cover search doesn't work) to KDE 4. You can't see the thumbnails at this point but double-clicking still sets the cover like it should.

I still need to rename the files on Friday but I'm closing the bug now.
Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 678286
View Visual Changes (to 1 file)

Networking Tools
Urs Wolfer committed a change to /branches/work/soc-krdc/krdc/vnc/vncclientthread.cpp:
Some few lines, but a lot of work...
Fix crash if you for example connected to a host that no existed or if you entered a wrong password.
Diff Revision 678875

Joris Guisson committed changes in /branches/extragear/kde3/network/ktorrent/libktorrent:
Make sure QM cannot start torrents which are currently moving their data files.
Bug 146997: Data lost when changing the download directory
Diffs: 1, 2, 3, 4 Revision 678949

Office
Boudewijn Rempt committed a change to /branches/koffice/1.6/koffice/krita/ui/squeezedcombobox.cpp:
Fix crash in squeezedcombobox when motif or cde style is selected. Not relevant for trunk, because there we'll stop using squeezedcombobox Real Soon Now.