|
A KPhotoAlbum developer sprint leads to various developments, including a new viewer and support for image "stacks". Initial lyrics support and a new "Albums" applet in Amarok 2.0. Support for export to OpenDocument text and HTML formats for certain file types in Okular. More functionality in the Plasma "Engine Explorer", an application for data engine development. More work on the "grouping taskbar" and "Weather" applet for Plasma, and new features in the wallpaper configuration dialog. A new Plasma wallpaper plugin, "Mandelbrot fractal viewer" based on Eigen. Lots of new settings across KWin-Composite effects. Start of code for a "Plasma loader" in Raptor. Experiments with using Jabber to propose/find network games in KSirK. Support for subprojects with CMake, and a generic "Source Formatter" plugin (with multiple backends) in KDevelop 4. Start of an OpenSync plugin for Akonadi. An Akonadi "server configuration" KControl module, intended for use in KDE System Settings. Support for adding files through command-line arguments in Ark. "Instant search" is implemented in KCharSelect. More work on a new IRC implementation, and improved Kiosk support in Kopete. NEPOMUK query service, and kosdwidget move to kdereview. Import of "LokaRest", an experimental framework to access RESTful web services. A new application, kReMail, is added to playground/pim. Import of "deKorator" KWin window decoration engine to playground/artwork, and a KDE4 port of Kvkbd into playground/utils. KColorEdit 2.0 is released.
|
Rob Scheepmaker introduces his work on "Extenders in Plasma":
|
I've been working on Extenders for my Google Summer of Code project, and while there are still a couple of known (and probably also unknown) problems, they are basically ready for use. I'd like to take this opportunity to explain and show what this extender thing actually is, and why it is awesome.
Thanks to extenders, it is now very easy for applet developers to embed relocatable widgets in your applet. Any QGraphicsWidget can be wrapped in a so-called "ExtenderItem", which allows the widget to be simply dragged anywhere by the user. Items that have been "detached" this way, can live on even when the applet that created them goes away, and can even be persistent between sessions. Widgets can also be reordered by the user, they can be collapsed and expanded, and custom actions can be registered for easy interaction. Take a look at the following simple screencast to get an idea about what all this means.
What is shown here is the kuiserver applet I made to test the extender API. It is located in KDE SVN playground at the moment (if you'd like to test it), but it will most likely move to kdebase for 4.2. The kuiserver can show any KJob, which can be file transfers (as shown here), but also the burning of a CD, the rendering of a 3d image - basically anything that takes some time. As you can see, the jobs that are shown can be moved around, detached (in which case they are persistent, so you'll see them again even after you restart your computer), and returned to its source (the little question mark icon, since there's no icon yet for "return to source"). Also, a couple of custom actions are registered by the applet to its ExtenderItems, allowing the user to pause, resume and stop its transfers.
One of the nice things about extenders is that they require very little work for a developer to use. Thanks to all the great feedback from the rest of the Plasma team, it has a very neat and easy to use API, where basically all you have to do is instantiate an Extender, and start adding ExtenderItems to it. For a more complete picture on how to approach extenders, you can take a look at the TechBase tutorial I wrote. It's still a bit of a work in progress, but I think it might be useful. The tutorial shows how to create a stripped down version of the kuiserver applet shown in the screencast.
So where to go from here? Well, there are lot's of places that extenders might be useful. To name a few: The notify applet. Imagine being notified of an important email, and being able to just drag that notification to somewhere on your desktop, or a ToDo applet on your panel, so you'll remember to answer that email once you've finished what you're working on. Or a system monitor applet, where you can simply detach the sensors that you are interested in. Or, since Plasma is all about clocks, a clock where you can detach different timezones. And once all kinds of applets start using this, you have the freedom to just drop almost any part of almost any applet together as you see fit. And that's the kind of flexibility Plasma is all about!
|
|
Parker Coates writes about his KDE game, "Killbots":
|
My name is Parker Coates. I'm 25 years old. I currently live in Sherbrooke, Québec, Canada. I program ultra-violet wastewater disinfection equipment for a living.
I've been working on my game, Killbots, on and off for the last two years. It's actually the first and only thing I've ever written in C++. I had just read a great introduction to C++ book and wanted to start a new project to test what I'd learned. I was a KDE user and had recently discovered the game "robots", so I thought a "robots" clone in KDE would be a great start.
In case your unfamiliar, "robots" is a classic, turn-based, UNIX console game in which the player tries to avoid being killed by attacking robots. The player cannot attack the robots directly, but instead must get them to collide with one another or the rubble of previous collisions. The game itself is quite simple, but can be surprisingly entertaining. The GTK port of "robots", GNOME Robots, added several new twists to the game, including two classes of robots, pushable junkheaps, and safe teleports, all of which have been included Killbots.
The game was originally called KRobots, a name which, interestingly enough, is now used by this non-KDE project: http://freshmeat.net/projects/krobots/. It was written in KDE3/Qt3 using QCanvas and used raster images for sprites. Due to my lack of experience with C++ and Qt, I ended up rewriting the entire application twice, because I kept coding myself into corners due poor design decisions.
By the time I had created something reasonably playable, I learned that the future lay with KDE4/Qt4, so I once again abandoned the existing code and started a fresh rewrite to KDE4 and QGraphicsView which was brand new at the time. SVG theming, custom rulesets, highscores and animations were slowly added. The application was renamed to Killbots, and eventually became respectable enough to move into the SVN playground. While there it has continued to gain polish, features and documentation and is now nearly release worthy.
Okay, so that was the introduction, now onto asking for favours.
First and foremost, i'd greatly appreciate having Killbots reviewed. Interface, game play, documentation and usability reviews are all welcome, but a code review would be most appreciated. As I mentioned, this is my first C++ application, so i'm extremely interested in any comments or suggestions on the code and/or application design. I'm a bit of a perfectionist, so i'd be glad to hear about even nit-picky issues or inconsistencies. Ideas for potential new features are also welcome, but lower priority.
Second, i'd like some input on what the logical next step is for Killbots. I remember there being a list of requirements somewhere that a game needed to meet before being considered for inclusion in KDEGames, but I can't seem to find it now. Does such a list exist?
There has also been talk lately of dividing KDE Games into "Minimal", "Extended", and "Extra" submodules. Obviously Killbots wouldn't fit in the Minimal set, but I question whether it would even be popular enough to go into the Extended set. I'm a bit apprehensive about the Extra submodule though, as it's my understanding that these would actually live in Extragear, which isn't automatically translated/packaged/released with the main KDE project. Thoughts on this would be appreciated.
Third is artwork. I've already spoken to Eugene Trounev about creating a new default theme, but if anyone else is interested in making a theme, the more the merrier. There are even basic instructions on how to do in the game handbook. I'm also in need of an application icon and icons for my three custom actions: "teleport", "teleport safely", and "wait out round". Any help with any of these would be greatly appreciated.
|
|
|