|
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.
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.
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!
|
|