cat /dev/maxilys

A glance in the mind of a KDE/Linux developer to see how ideas turn into code.

2006-09-08

KDE: And again...

No, I won't release any new version of Serenity today or tomorrow... But I already made modifications to the version I use. Already!

Just the day after I released Serenity 1.2, I kinda felt that the so-called Zen borders of the widgets weren't so zen after all. They were in fact too hard. Here came the first patch: I made them wider so they look smoother.

Still, that wasn't enough to justify an official update. I did some more modifications.

I started to use KMail and KNode instead of Thunderbird. Why KMail? That's because Thunderbird didn't allow me any more to type all the accented characters I was used to. To type the very common french รป ("u" with a circonflexe accent), I had to copy and paste it from outside Thunderbird. I did it once, twice, thrice... And no more. KMail offered me the full support of my keyboard through KDE.

The transition was however a bit rough. When I asked KMail to import all the mails from Thunderbird, it took hours! KMail imported absolutely everything: mails, newsgroups... and all the available files! I had archives for my mailing lists which went back to 2004 --one with over 16000 mails-- and it took so much time that I killed KMail several times when I was obviously slow to react.

Creating filters for my mailing lists was another issue. I forgot once or twice to tell what to do with the mails matching the criterions I entered, KMail accepted it and I found myself wondering why some filters did nothing. And the fact that KMail wants by default that all the defined criterions apply to filter a mail didn't help either. Everything was correct but the mails couldn't match all the criterions together and the filter didn't work.

After that, I dealt with the usual toolbar bloat --I left nothing more than "Compose", "Reply", "Mark all as read" and the useful "Mark as SPAM".-- and I could start to feel at home after a little trip through the Jungle of Options.

Next, I had to set up KNode. I couldn't use Thunderbird any more or it would mess with my mails. That what easier because the filters are somewhat already defined... but I couldn't avoid another trip through the Jungle of Options. I treated the toolbar the same way I did with KMail: "Compose", "Reply", "Jump to next unread" and "Load all" --since KNode doesn't do it automatically. That's more than enough, I added the "Jump" action because KNode doesn't do it by itself when you click on a newsgroup otherwise there would be no more than 3 icons in my toolbar. As for feeling at home, I will when I'll be able to sort the newsgroups by hand... and through another means than inserting a number in front of the name of each newsgroup.

All this led me to more patches for Serenity. The reason: KNode is ugly! The big blocky panel resizers made my eyes bleed and the tiny buttons on top of the panels finished the job. These widgets could definitively not stay on screen with their pointy corners hurting my eyes. That was another job for Serenity.

The tiny buttons were relatively easy to style once I found another style which takes care of them: Domino. (Hi, Michael!) Well, I first made extensive researches in KNode sources to find the class of the widgets. ("KDockButton_Private" for those who are interested.) Then I searched through my "database" of styles and through KDE's default styles. Only Domino knew what a KDockButton_Private is. The way these widgets are handled in Domino isn't obvious but I understood how to recognize them. A little more digging into KDE sources and that was it! Serenity could handle these ugly widgets and turn them into something nice with new symbols.

The panel resizers were a totally different story. I already saw what they were somewhere while I was looking for KDockButton_Private but I spent quite some time turning around before I realized I had already found it. Needless to say that this so-called "panel resizer" widget is another proof of the (twisted) imagination of KDE's developers. It isn't a "real" widget with a class of its own but only a sub-widget of another one --drawn on the fly--, almost out of reach of a style plugin. For those interested in details, it's a QFrame of which the name() is "pannerdivider". Once you know that, it's easy to catch its QEvent::Paint in your event filter to do what you want about it. And what I did was to re-design all the resizers/splitters within Serenity in order that they become more visible.

The last thing I did in Serenity is almost invisible. Well, in our world of free standards, we shouldn't see much of them but Konqueror recognize these proprietary extensions of the CSS standard to change the colors of the scrollbar on an HTML page. I already did something for the slider. This time, I added the scrollbar groove and the arrow colors. The somewhat standard style of KDE doesn't do as good as Serenity. I'm proud of myself... :-D ...and of Konqueror which does better than Firefox. For me who enjoy --I don't know why-- seeing my widgets with unexpected colors, the colored scrollbars are another (futile) reason to prefer Konqueror. (See for yourself how the style you use handles them.)

It's way too early to make an update... so I'm going to find some more lost widgets... to justify it. ;-)

0 Comments:

Post a Comment

<< Home