I am working under Ankur India for this GSoC, trying to bring easy localization support for programs which do not use gettext. In essence, this means, for Mozilla applications (like Thunderbird, Seamonkey, Firefox), all android applications, it will be easier to make them available to people who want to use it in some other language than English. Initially, the idea is to write a library that allows us to do this easily by performing queries for finding the localized string for a specific locale and making some simple calls to update the translation of a string. This library will then be integrated into Lokalize. The library needs to be written in a reusable way, so I am writing the library in GLib, so that other translation applications, which use C, like gtranslator, can also make use of it for providing localization support for non .po files. The idea is to make the library support file format plugins, or backends. There will be a backend for Mozilla DTD files, one for Mozilla properties files. Both of these are used by applications like Firefox for localization. There will also be backends for stuff like android app string resources, and apple .string files, but for now, the first two backends are the primary targets.
A very long time since my last blog post. This is to inform everyone that NIT Durgapur GLUG is organizing its FOSS festival, Mukti ’12 from February 3 to 5. The fest will be a good learning experience for those starting out with free software, and introduce them to a lot of areas in which they can make a difference. There are beginner as well as intermediate workshops on getting started with KDE development, Android development, internationalization and localization, and documentation. We have organized an overnight hackfest where we will produce lots of code and fix many bugs while having loads of fun and frolic.
I often work on vi, and also do a lot of work through the konsole. At such times, selecting the entire code, copying it, and pasting it on paste.kde.org seems like … uhm… too much work. The plasma pastebin applet offers a nice alternative, it has support for multiple backends(even image uploads). But even then, i have to select the text and drag-drop it on the applet. Most often, its a trouble to do this with text from konsole. Also, its too much work to use a mouse (I know there are people who are as lazy as me, and find typing letters at the keyboard easier than playing with the mouse :-) ).
$ git diff | kpaste
$ kpaste abc.cpp -x
$ kpaste -i -o
$ kpaste -l python
I created a hackergotchi for myself in Krita yesterday using the particle brush, and I’m posting this to see how it looks on the planet ;-)
As some of you may know, I am working to implement tab grouping in Rekonq using a Panorama view. After so many days of not blogging, I thought I should post an update. I have a screenshot to show. Not very attractive though, looks very very blank, but its still something. At this stage, Rekonq just shows the sessions and thumbnails of the tab – including the deactivated ones. I haven’t been able to find a nice way to show the deactivated sessions – i know it looks clumsy :-) Right now I am working on beautifying the UI, using QGraphicsView for it. Any cool UI ideas are welcome. Here’s the screenshot
And here’s how the session file for the same is stored internally
<!DOCTYPE sessionFile> <sessionFile> <session title="" active="true"> <tab title="Maths 'N' Tech Club | NIT Durgapur" url="http://localhost/mntc/"/> <tab title="Fedora Project Homepage" url="http://fedoraproject.org/"/> <tab title="Downloads" current="true" url="about:downloads"/> <tab title="Test Page for the Apache HTTP Server on Fedora" url="http://localhost/"/> </session> <session title="" current="true"> <tab title="Twitter / Home" url="http://twitter.com/"/> <tab title="Bookmarks" current="true" url="about:bookmarks"/> </session> <session title="" active="true"> <tab title="Planet KDE" current="true" url="http://planetkde.org/"/> </session> </sessionFile>
Do send in your awesome ideas/criticism that might help me improve :-)
I’m writing this to blog about my progress, though there is nothing much spectacular to blog about. One great thing is, a first version of the backend code for session management is in place now. Sadly, there is no UI yet to access it. Now I am working on the UI written using QGraphicsView. Hope I’ll be able to come out with something usable in a week. Also, I and my mentor Pierre Rossi were discussing about storing the session data inside Nepomuk instead of storing them locally. We decided to mark this as a TODO for after the initial commit.
Bye Planet folks! Hope to blog again soon.
I have come up with this model as the solution to the problem of persistent session storage and tab grouping –
Sessions in Rekonq will be of two types – dead sessions and live sessions. Sessions of both kinds will be showed in a unified panorama-view
Let me describe each kind of session in detail –
- Dead sessions – These are displayed as grayed-out in the panorama view. Basically, the dead session views are read-only, so that one can have a look at the tabs in it. These sessions are not yet loaded. When we click on the load button, the session gets loaded in Rekonq and opens up in a new window. Now the dead session becomes a live session.
- Live sessions – These sessions correspond to open windows. When a new window opens, a live session starts. Dead sessions can be loaded to live sessions, whilst creating a window and opening all the tabs of that session in it. Tabs can be closed or drag-dropped in the panorama view between live sessions. Since live sessions can be mapped to windows, any changes in the window affects the live session, and vice-versa. When a window is closed, its live session becomes a dead session. This can also be done through a panorama view. We can also add new live sessions from the panorama view. The sessions that were live when Rekonq was closed are loaded as live sessions automatically when Rekonq starts the next time.
This hybrid system of managing sessions has quite a few advantages over traditional session management like in Kate or Konqueror –
- Tab grouping is made easy. When the tab clutter increases, one can go to the panorama view, create a new session, and drag-drop tabs into it.
- The division of tabs into activities like ‘work’, ‘study’, ‘games’ can take place using sessions, while loading only the ones relevant at a time. Thus memory and bandwidth is saved by not needing to have all tabs open at once.