KDE-CVS-Digest

Weekly View of KDE CVS commits

March 7, 2003

This Week:

More merges from safari to
khtml.
Kdevelop gets more templates, Quanta
gets better action toolbars and Umbrello gets new code generators.
Plus a large number of bug fixes.

Stephan Kulow has posted a
dummy release plan for 3.2 with
no dates. For some insight into his intentions, he posted this note to the kde-core-devel list.

I'd like to have your attention for this graph:
http://bugs.kde.org/reports.cgi?product=-All-&output=show_chart&datasets=NEW
And that's only the number of confirmed bugs, the number of unconfirmed ones
is even bigger and gives even more impressing graphs.
Please don't start to think about bug reports when the feature freeze for 3.2 starts.
Currently you have a chance to have the bugs reproduced and fixed within your
production system or close them right away _for two releases_ in one go.
BTW: if you wondered why I haven't yet started to write schedules for 3.2 - I will
start to think about releasing 3.2 when the bug graph stagnates on a low level.
When 3.1 was released with 2300 confirmed bugs, how does 1000 for 3.2 sound
to you?
This weekend the formula one season starts. How about we start our bug race
season this weekend too? And I want to see it even more exciting than the
ferrari celebration sport! Currently you can get in the top 15 with as few as
5 closed bug reports. Close your 5 bugs today.
Just two little reminders:
* you can subscribe to kde-bugs-dist@kde.org if you want
to help with first level support - here you see all incoming bugs, so you can
close the invalid ones, the report questions or the duplicates right away. This helps
a lot in keeping the database clean while the usual developers miss the time (and it
has less volume than kde-cvs :)
* the irc channel #kde-devel on irc.kde.org is there for your questions how to fix
a bug best or to offer your help in testing patches. Don't hestitate to join, but
stay on topic.

How many developers are contributing to the KDE project? Waldo Bastian noted:

About a month ago it was asked how many active KDE contributors there are.
Since that time we keep track of KDE CVS account usage for commits. About a
month later I can report that since then CVS commits from 292 different CVS
accounts have been registered.
Keep in mind that there are also people contributing to KDE without having a
CVS account.

This includes the web site maintainers, the numerous translators, and all the developers.
The cvs commits, broken down by section is as follows:

This number includes discussion on the kde-cvs list as well as any commits. Usually there are about 2000 commits a week.

JuK (pronounced jook) is a jukebox and music manager for the KDE desktop similar to jukebox software
on other platforms such as iTunes « or RealOne «. It is now included in the KDE project in kdemultimedia/juk.

This was getting a bit too big...
1) Added new arbitrary highlighting code (it's arbitrary in the sense that
kate doesn't determine the location of the highlighting, as it does with
the syntax highlighting). This provides basic font attribute
support at the moment, plus intelligent cursors and ranges which could
potentially be used for 3rd party parsers. I'm working towards a KTextEditor
API, but would like to see some usage of this to make sure I'm on the
right track. If you would like to try it in your app, you'll have to
install the new headers manually.
See the new headers for documentation; also change the static const bool
at the start of katesearch.cpp and do a search to see this in action.
More optimisation to come but I think it's respectable for the simplest
cases (ie. where there is a) no or b) one usage of the api)
2) Cleanups from the removal of the dynamic word wrapping bar
3) Copyright change to katelinerange.* (commited the wrong one before,
if you wrote the original linerange struct before I started working on it
I'm of course happy to add you)
CCMAIL:kwrite-devel@mail.kde.org
CCMAIL:quanta-devel@mail.kde.org
Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18

New Java code generator from Brian Thomas <thomas-AT-mail630.gsfc.nasa.gov>
- Proper conversion of UML typeNames to Java standard (e.g. "string" -> "String"
and "bool" -> "boolean")
- Proper consideration of roles in generation of fields
- Generates methods with Java name syntax (e.g. "getName" instead of "getname" or
"getNAME").
- Accessor methods both for association roles and class attributes generated
as appropriate.
- Multiplicity, Scope and Changeablity considered properly for generation of
methods
- Self-association (e.g. at_Associations) will be used properly to generate
methods.
- Commenting much more extensive. Carries documentation on attributes,
associations,
classes into the generated code document. Lots of auto-generated commenting.
- better organization (IMO) of output methods (tries to group methods by type,
although there are cases where it doesnt group as well as I would like).
Diffs: 1, 2

Add "HTMLTidy" script action and place it on the Edit Toolbar/Editor context menu.
Action configutation and starting fixes:
- Do not mix Selected text with Current Document for script action inputs.
- Add an error message if the script action cannot be started.
- Enable the "Apply" button when the icon for action is changed.
- Ask for saving when closing the dialog with "Cancel"
Diffs: 1, 2, 3, 4, 5, 6, 7

I wanted to make sure you caught this. We have completely redesigned Quanta's
programmable actions interface. Previously we had added the ability to put
new actions directly on the toolbar but there were still serious problems
with the interface. For one there was no visual feedback while adding actions
to toolbars until closing the dialog with the OK button. Additionally there
was no way to edit the toolbars without closing the dialog and there was no
access to keyboard shortcuts without closing the action dialog, opening the
shortcuts dialog and searching for the action. We believe many users did not
even know the actions could have keyboard shortcuts.
What we did is remove the listbox from the left and replace it with a tree. On
top it opens with "All" collapsed and the first toolbar expanded and then
listing the successive toolbars which can be expanded to view/edit/add/remove
their actions. The second column of the tree widget shows any assigned
keyboard shortcuts. Selecting an action makes it editable on the right side
of the dialog. There is a context menu on the tree to add, remove or edit
toolbars. To the right we've replaced the confusing tabs for tag/script/text
with a dropdown above which then sets the proper configuration panel in the
lower right. We believe it was confusing to users who may have thought that a
combination of actions was available. On the right side in the middle is the
editor for keyboard shortcuts as well as a list of all toolbars containing
that action. The action can be added or removed from toolbars.

Add the 'set personal contact' support to kaddressbook. Now the user can
create an contact with his own data, mark it as 'personal contact' and
other programs like kmail, korn etc. can use these data directly in future
versions.
Diffs: 1, 2, 3, 4, 5, 6

Tobias Koenig committed a change to kdepim/kmail

Add the special KAddressBook->KMail dcop methods from the kroupware branch,
to let KAddressBook talk with the Kolab server. I hope this was the right way
to go. If not, please inform me by private mail (don't read kde-cvs).
Diffs: 1, 2, 3

This one is big!
Modified GVPixmap so that it stores the image as a QImage instead of a QPixmap.
This had to be done to implement file saving and rotation.
Merged GVFitPixmapView into GVScrollPixmapView and got rid of
GVPixmapViewStack.
Need to do some renaming/cleaning now...
Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14

Klaas Freitag committed a change to kdegraphics/kooka

readme file that describes building and installing with the KADMOS ocr/icr lib
Diff

This is a document of the kivio stencil format that I have gotten from the code.
From what I have seen this is pretty much accurate and any mistakes are most likely
to be features missing in the kivio engine. If you have any problems with this document
please update it. Also I chose KWord format because its easier to manage the document
in an outline format, and makes it easier for printing. I also SUCK at html :)
Diff

Make POST work in some cases.
See before and after on:
http://examples.macromedia.com/petmarket
(must have Flash 6)
This does not handle POST where the data gets returned anywhere except back to
the plugin. That is, it doesn't allow the post results to appear in a browser
frame yet. This is because I left:
// FIXME
there which of course doesn't do much. It's all documented though. Also
these functions only support "http" and "https" and nothing else. I have no
personal intention to go any further with this, but I think it's supposed to
be possible to do other URLs too, at least that's what I figured from reading
the specs.
One other thing that does not work is plugins which put the POST data in a file
and pass the file name in to be POSTed. I just haven't written the header
parser here. If you find a site that uses it, show me, send beer/pizza, and
I'll do that for you too.
CCMAIL: kfm-devel@kde.org,49746-done@bugs.kde.org
Refer to Bug 49746 - NPN_PostURLNotify not initiating NPP_NewStream with Flash 6 Linux plugin
Diffs: 1, 2, 3

Another size related hack. This seems to make everyone happy. Now mplayer
plugin loads and operates as well as Crossover. The new approach is to set
the canvas to 1600x1200 if the size is unspecified (this works around
Crossover problems with resizing to larger than the original canvas setting),
but telling the plugin that it is 0x0, which is what some plugins expect. It
seems that all plugins can scale upwards, but many have troubles scaling down.
That being said, the trailers on apple.com still don't work, but it appears to
be mplayer specific now. I think mplayer is actually crashing, but even if not,
it's giving a lot of errors in the console. The trailer shows up momentarily
as a very small video in the top-left of the view, then just disappears
silently. Playing local files works fine (.wmv, .mpg, .mov, etc).
Hopefully this patch finally makes everyone happy. I have successfully tested:
flash6
realplugin
mplayerplugin
crossover
djvu
tclplug
acrobat plugin
swfdec mozilla plugin
Remains to be tested: plugger (if it's even worth it...)
And they all seem to work well now. I can't find many problems other than the
missing jre which is probably not going to be solved any time soon (so no
real live connect support). I would like to backport the changes from the past
5-6 days to the 3.1-branch. I'll do so tonight if I don't hear any negative
feedback.
CCMAIL: j.spaandonk@chello.nl, kdekorte@yahoo.com, fgouget@codeweavers.com, kfm-devel@mail.kde.org
Diff

Merged in List, Completion and ContextImp and ActivationImp changes from
Safari.
Leaving the old ArgumentsImp version as is for now... storing the
arguments & length as normal properties in the case does not add a
significant overhead, and some tests rely on these being normal properties
which can be deleted.
Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14

Merged in the garbage collector from Safari, with some fixes.
The use of the zeroIfFree flag in the union in CollectorCell was
conflicting with ValueImp::refcount. This was causing crashes/leaks in
some situations. Instead of a union we now use the VI_DESTRUCTED flag in
ValueImp, and the _vd pointer to store the link to the next cell in the
free list.
Diffs: 1, 2

Can now play some basic flashes
(note: VERY basic - there is no sound, there are timing problems for animations
and it doesn't repaint invalidated regions)
Diffs: 1, 2, 3, 4

George Staikos committed a change to kdenonbeta/kswfdec/kswfplay

Implement a context menu and repaint events. This is probably a bit slower
now, but more correct. Optimisation comes later.
Also added the code to extract the sound. It's raw PCM 44.1kHz. Anyone know
arts well enough and want to hook this up? :) I can explain it in detail, and
show an example that uses SDL.
Diffs: 1, 2, 3

Remove a lot of code duplication and lay the groundwork for a _LOT_ more:
introducing KopeteOnlineStatus. The class is intended to be extremely
lightweight, implicitly shared and value-based; the header file does not
include ANY other .h files to keep compilation speed fast.
KopeteOnlineStatus encapsulates the local status, the status icon, the
description, and the libkopete-wide status in a single object that can be
passed around everywhere. There's also preliminary support for a caption()
to be used in menus, but that part is incomplete, so you can disregard it
for now (except that you should provide *something* to the constructor).
In the protocols that make heavy use of switch() to convert between internal
status and the Kopete status the gain is already enourmous. This applies to
MSN, Jabber and Gadu. These were also the easiest to port (together with
Oscar, but with only 3 online states the gain is neglectible).
The other plugins all had their issues when porting. WinPopup and SMS seem
not to support the distinction between Unknown and Offline properly and
don't seem to set contact states properly when going online/offline.
Yahoo has its own YahooStatus class that is remarkably similar to
KopeteOnlineStatus, but I only discovered that when porting. With some
effort that class can be ditched easily, but I didn't do that for now.
IRC has some 4 different KopeteContact-like classes. I'd be surprised if
I ported everything correctly there.
ICQ is a total disaster to port because it uses bitmasks instead of ints
or enums.
All in all I expect some regressions and I apologize in advance for those.
I hope to iron those out tomorrow, but I do need reports, as MSN and Oscar
seem to work ok for me. The only problem I have is that the meta contact
icon is not properly updated anymore, but they did last weekend when I
started porting those. I suspect it's one of the recent changes in libkopete
and I'm not sure where it comes from. Will investigate tomorrow.
For now I could already remove three virtuals from all plugins, so creating
a new plugin again has become easier, but there's much more to come. Think
setAway, setAvailable, isOnline, setOnlineStatus and a LOT more stuff that
can now go to libkopete.
CCMAIL: kopete-devel@kde.org
Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76

Oy, oy, oy.
Don't behave quadratically(!!) on directories with lots of files with the same type.
Cuts about 35ms from listing /usr/bin/ here. Not that much, but at least it's
sane asymptotically now.
Diffs: 1, 2

Fix the problem with importing RTF files
Unlike what I thought, it has nothing to do with tables. The bug triggers
with any empty node.
It might be a QT Bug. (QT Issue number pending.)
CCMAIL:54694-done@bugs.kde.org
Refer to Bug 54694 - RTF filter cannot import tablesDiff

- The number of maximal desktops can now be increased at a central place
- Increased the maximum count for virtual desktops to 20
If anyone can think of a smart way to change the GUI so that it doesn't
require setting a hardlimit in the code, please send a patch ;)
CCMAIL50032-done@bugs.kde.org
Refer to Bug 50032 - feature/application request, "kBackupPersonal" or somesuch
Diffs: 1, 2