Issue 18
6th August 2006 by Danny AllenThis Week...
A great use of KTU is in providing feedback to new translators, as they no longer have to wait untill there is a new point release of KDE to see their work, and of course, using KTU (with its GUI interface) is a lot better then installing translations manually and trying to keep track of them.
The development of KTU completes an old wish from me from several years ago. At that time I created a proof-of-concept based on some bash scripts and kdialog dialogs. Adriaan de Groot then helped to port it to C++, but we ran into some technical problems (read: I did not know any C++ or Qt) and we lost interest due to lack of time, and KDE transitioning from CVS to SVN did not help either.
I have just released version 0.0.2 with a bunch of features; some screenshots and tarball at kde-apps, kubuntu packages are available at my repository.
I would love for users (especially those involved in the translation scene) to try out KTU and give me feedback!
Statistics
Commits | 2427 by 194 developers, 5511 lines modified, 1677 new files |
Open Bugs | 13012 |
Open Wishes | 11399 |
Bugs Opened | 316 in the last 7 days |
Bugs Closed | 361 in the last 7 days |
Commit Summary
Module | Commits |
/trunk/www |
525
|
/trunk/KDE |
484
|
/trunk/l10n |
298
|
/branches/stable |
237
|
/trunk/playground |
187
|
/branches/work |
184
|
/trunk/extragear |
174
|
/trunk/koffice |
104
|
/branches/koffice |
67
|
/branches/KDE |
52
|
Lines | Developer | Commits |
271
|
Laurent Montel |
126
|
112
|
Thomas Nagy |
56
|
107
|
Dirk Mueller |
52
|
54
|
Ludovic Grossard |
48
|
46
|
Rinse de Vries |
46
|
90
|
Marcus Furlong |
45
|
145
|
Rainer Endres |
34
|
93
|
Nicolas Goutte |
33
|
130
|
Luboš Luňák |
33
|
88
|
Thomas Zander |
33
|
Internationalization (i18n) Status
Language | Percentage Complete |
Portuguese (pt) |
99.99%
|
Swedish (sv) |
99.54%
|
Danish (da) |
99.47%
|
Spanish (es) |
96.84%
|
Dutch (nl) |
96.22%
|
Estonian (et) |
94.36%
|
Italian (it) |
94.19%
|
French (fr) |
93.92%
|
Greek (el) |
93.2%
|
German (de) |
91.48%
|
Bug Killers and Buzz
Person | Bugs Closed |
Andreas Kling |
121
|
Alexandre Pereira de Oliveira |
25
|
Luboš Luňák |
24
|
Joris Guisson |
16
|
Stefan Nikolaus |
15
|
Martin Aumüller |
13
|
Seb Ruiz |
12
|
Roman Jarosz |
9
|
Stefan Borggraefe |
8
|
Matt Rogers |
7
|
Program | Buzz |
Amarok |
2922
|
Kopete |
1314
|
K3B |
1006
|
KMail |
905
|
Kate |
889
|
SuperKaramba |
701
|
Kontact |
640
|
KDevelop |
628
|
Kicker |
572
|
Quanta |
455
|
Person | Buzz |
telex |
275
|
zogje |
265
|
wheels |
246
|
George Staikos |
245
|
pipitas |
236
|
boud |
225
|
David Faure |
222
|
Aaron J. Seigo |
212
|
carsten |
205
|
riddell |
202
|
Contents
Bug Fixes | Features | Optimization | Security | Other | |
---|---|---|---|---|---|
Accessibility | |||||
Development Tools | [] | [] | [] | [] | |
Educational | [] | [] | [] | ||
Graphics | [] | [] | |||
KDE Base | [] | [] | [] | [] | |
KDE-PIM | [] | [] | |||
Office | [] | [] | |||
Konqueror | |||||
Multimedia | [] | [] | [] | ||
Networking Tools | [] | [] | |||
User Interface | [] | ||||
Utilities | [] | [] | [] | [] | |
Games | [] | ||||
Other |
There are 68 selections this week
Bug Fixes
Development Tools
KDE Base
Fix to display bold. For those for whom bold worked in KDE 3.5.3, this is the regression fix. For those, like me, for whom bold never work, this is the fix.
No patch is needed for KDE4 as bold works there.
KDE-PIM
Fix bug 126837 (KMail does not correctly detect UTF-8 encoding)
Fall back to automatic encoding if we encounter an unknown encoding.
Fill in some gaps missing from libical's zoneinfo.
These are simply copies of existing .ics files.
The hard part comes now: To create new .ics files
for ~15 zones that exist in /usr/share/zoneinfo/zone.tab
but don't exist in the libical zoneinfo database.
Multimedia
Some podcasts come with no date, so they will be ordered by the insertion order in the feed.
This fixes a regression brought upon by the changes in the parsing in podcast feeds.
Remove the ElementList class - there is no need to do sorting of the feed before we insert it.
Don't show MySQL settings when compiled with PostgreSQL support only.
Networking Tools
Made sure that average speed is displayed as zero when a torrent is imported
Utilities
-Clean up the USDA weight portion of the import.
What it does now is looks at a list of known units and prep methods.
If the unit of an entry is in the list, it'll create a weight entry
using it. This way, an arbitrary number of units won't end up being
created, only those in the list can be created from the import.
The unit is considered the part before a comma, the rest is the prep method.
Once the unit is accepted, it checks that the prep method matches one of
the acceptable entries. If it does, it adds the weight using that prep
method. If not, it stills adds the entry, but without whatever extra
info the USDA entry held (which most often isn't of importance).
-Fix some indexes in the SQLite database. Some weren't being created
which would slow things down a bit.
Features
Development Tools
Implement backtracking for kdevelop-pg.
(Also known as LL(k) for poor people ;)
The new backtracking construct "try/rollback" is able
to replace all your hand-adapted lookahead hacks.
Use it for conflicts that require arbitrary-length LL(k) lookahead.
Don't use it when you can determine the upcoming rule with
simple [: LA(2).kind == Token_BLAH :] checks.
Old solution
(with lookahead_is_conflicting_item_1() being defined somewhere else):
(
[: lookahead_is_conflicting_item_1() == true :]
var1=conflicting_item_1
|
var2=conflicting_item_2
)
New solution:
try/rollback(var1=conflicting_item_1) catch(var2=conflicting_item_2)
It works this way:
- try to derive conflicting_item_1
- if there are no parsing errors, proceed.
- if there are any errors, go back to the token where
conflicting_item_1 started, and derive conflicting_item_2.
On errors, conflicting_item_1 is not assigned to var1.
Note that if you have multiple annotated items inside the try block
("try/rollback(var1=item1 var2=item2) catch(...)")
and there are parsing errors in item2, then the item1 node is still
assigned to var1. So, it's best to only have single items inside
a try block.
This commit also renames recover(...) to try/recover(...),
as there are many similarities to try/rollback.
If the grammar is using either try/recover or try/rollback constructs,
you now have to provide custom stuff for parser state management:
- a struct named parser_state containing all the variables
that may change during parsing. (It can also be an empty struct.)
- two parser class methods:
* copy_current_state() returns a new parser_state object, or 0
* restore_state() restores the variables in the given
parser_state object back to the parser class.
This is required for a clean rollback or recovery, for parsers
that change some state variables in code segments.
(Like the ltCounter variable in the Java and C# parser.)
Also, the yy_expected_token() and yy_expected_symbol() methods
must now return void instead of bool.
Sorry for the long commit message :]
Provide a C# 1.0 compatibility mode.
If you're using the command line parser, you can say
"./csharp --compatibility=1.0 file.cs"
and the parser lists 2.0-only features as errors.
Also, implement the non-specified but MS/Mono-supported
fixed size buffer array declarations, which improves
the passed/failed test case ratio so that only
2 of 17050 files deliver errors when they shouldn't.
Also, let modifier flags be unsigned instead of signed ints.
Show the dockers again.
Qt4 doesn't seem to have "tab"-able dockers. But Qt4.2 will, as I've read somewhere, be able to have some sort of ideal view if there are a lot of dockers.
I think the three main widgets should be layout using splitters and set as a mainwidget (not being able to undock them). I think this will make the
userinterface more clear.
Educational
Add checkbox to the Advanced tab of the Options window for toggling
Antialiased drawing (default is off)
I removed 'image reduction' tool in the FITS Viewer, I will try to make
the viewer as simple as possible. I also removed the brightness/contrast
dialog, it will be integrated in the histogram later on.
FITS statistics are working now, along with zooming and scale functions.
Graphics
Show the title of the current document - if available - as title of the main window, as requested in comments of KPDF bug #103362.
Adapted the poppler(pdf) and the chm generators to return the title of the current document.
Rotate RAW thumbnails as well, not only JPEGs contains rotation information.
CCBUGS: 131532, 131603
SQLDB support with KexiDB. (Still incomplete)
- This needs KexiDB installed.
- To be usable user still needs to create indexes by hand.
- Doesn't yet save member maps.
- Needs optimization here and there.
- Error handling is not yet complete.
KDE Base
Make JPEG image loading work, by enabling the supplied libjpeg.
I'm staring too long at the valgrind output, which made loading jpegs fail:
<a href="http://rafb.net/paste/results/ovJIik75.html">http://rafb.net/paste/results/ovJIik75.html</a>
Anyone has a clue why it doesn't work with my libjpeg? :-)
Is there any policy against the supplied image loading
libraries - I saw the PNG stuff enabled.....
If this is wrong, please revert.
Now that kde.org works, it's just fair to make apple.com also work ;-)
Screenie: <a href="/issues/2006-08-06/files/unity2.png">http://ktown.kde.org/~wildfox/ktown/unity2.png</a>
Initial checkin of Plasmagik, a small application that "magically" creates plasmoids.
It is intended to be used by developers to make others using their creations.
Of course this is the first checkin, and this app needs to be improved a lot, adding artworks, improving the code, adding features, and so on, but now it's already working and doing its work in.
First stab at themeing. Buttons are now drawn properly by Qt.
I'll go on hacking in that area now :-)
The show must go on: Draw radio buttons The show must go on: Draw radio buttons & check boxes - qt styled.
text field are a bit hacky - just drawing them with one rect at the moment.
<a href="/issues/2006-08-06/files/unity3.png">http://ktown.kde.org/~wildfox/ktown/unity3.png</a>
Rewrote themeing code, now perfectly working for buttons/checkboxes/radio buttons.
Hover (mouse over), focus changes, checked/unchecked all seem to work fine.
<a href="/issues/2006-08-06/files/unity5.png">http://ktown.kde.org/~wildfox/ktown/unity5.png</a>
(just hovering the "I feel lucky" button on that screenshot)
Add simple POST support works for all kind of forms I tested with.
Debugging Rob's AJAX WebApp (iTunes Music DB) since quite some
hours, XMLHTTPRequests now work in POST mode, only the response
headers parsing is not done yet - doing it atm :-)
Making XMLHttpRequest work with this and my previous commit.
- Implement receivedResponse() Making XMLHttpRequest work with this and my previous commit.
- Implement receivedResponse() & assempleResponseHeaders()
in the TransferJob interface. Call it from TransferJobManager.
(quite hackish using curl, see comments)
This makes it possible to receive answers from Rob's Ajax WebApp.
Jay! Now it crashes when displaying the new content, next one to fix :-) assempleResponseHeaders()
in the TransferJob interface. Call it from TransferJobManager.
(quite hackish using curl, see comments)
This makes it possible to receive answers from Rob's Ajax WebApp.
Jay! Now it crashes when displaying the new content, next one to fix :-)
* indent after '{'
* unintend if you type a '{'
* unindent if you type '}' and there is a corresponding '{'
If you type a '}', the script searches the corresponding '{'.
Use case: If you have your source code wrapped by a namespace {...}, then
it is likely to have severyl thousand lines between the { and the colosing }.
My test: If you type the '}' 3000 lines after the opening '{', the script
takes 1000ms (1 second!) to indent the line.
1000ms is a delay you notice, not that nice... --> todo: find workarounds
remove lua stuff
will rework the jscript stuff to be per document interpreter,
this won't make much mem difference, even for 50 open documents
only around 1 MB
this way, the indenters for example or other scripts can store some state,
as their interpreters will be bound to one document for ever, only thing
switching will be the view object, which will be set to the active view
KDE-PIM
Added the class DbInitializer, which creates the necessary tables
from a xml based description which is part of the binary (Qt rcc).
So when akonadiserver is started the first time, it creates all tables
automatically now. Changes to the tables structure have to be done in
server/src/storage/akonadidb.xml
In a later version DbInitializer should also fill the tables with basic
data (mimetypes, flags etc.)
Office
Let the move tool take Alt or Ctrl modifier (per KOffice standard)
result is that the move is limited to x or y depending on dominant
direction
forward port from 1.6
First stab at a possible masks implementation. Not everything works (apply selection, redo'ing mask creation, display mask when the mask's extent is too small, etc), but it gives a fair idea about how it could look like. Plus, it gives you something to complain about already :P
What this patch adds:
* A mask to the PaintLayer: this is both a grey8 paintdev and a kisselection (grey8 for editing and displaying, selection to actually render/merge it and to convert it easily to a selection later on)
* Some basic functions you can do with it: create and remove it, and it is rendered quite nicely I think.
* If the edit-checkbox is selected, you can edit the mask layer instead of the current paint device (similar to what the gimp does)
* If you select the display checkbox, it will display the grey8 mask instead of the masked paintdev. This is what the gimp can do, too. (somewhat buggy still)
What this patch does _not_ add:
* Bug-free masks :P
* A decent UI bit in the layerbox. Gimp and apparently ps display a small preview of the mask in the layerbox, next to the small preview of the layer. I fear this might not be possible in 1.6, which would be sad. It would be cool if it would be possible to add, though
* A 2.0 port. But that should be easy to do once finished
* Load and Save support. Unfortunately, the masks do not get saved or loaded yet. This must be fixed...
Comments and criticism on the krita-ml is appreciated ( no flaming please ;-) )
Multimedia
Attempt to allow FLAC ATF reading (although no writing yet, due to taglib bugs), and fix a slight mistake in the generation code.
support for using the ipod plugin with itunes phones
- however initializing will not work because of the changed directory structure
Completey reimplemented data verification:
Now K3b compares the complete iso image instead of single files. This way
no charset problems will occure anymore. The downside at the moment is
that K3b cannot verify a grown DVD+RW session anymore. I will see about that
later.
Networking Tools
Add optional preview picture to the fileconfirm dialog.
Yahoo for example sends small preview pictures along with the filetransfer invitation, if the file is a picture.
User Interface
adding c sharp mimetype
Utilities
Implement trunk/branch system. Default setting is set to Automatic, which fetches the most likely translation for that app. Completely working. Second bit is about the installation state. Keep track what is installed and what not. Needed because the .mo file for trunk/branch is compiled to the same target.
Implement a delete all installed translations to cleanup your home directory.
Much needed refactoring of printing system. KJots can now print the fancy HTML
it supports. Also, KJots requires Qt 4.2 now.
Now that the Page Setup stopped crashing, here's the initial work on printing using a separate layout/style when printing. When printing, a "Print Preview" dialog pops up. An "Edit" button is available for editing the print layout directly from this dialog, without having to cancel the print and come back.
I really need a good template now for printing on note cards.
Optimization
Development Tools
Optimize project loading, document loading, and background parser.
1. Introduce caching mechanism in the background parser and codeproxy. This allows us to perform an expensive operation only after a number of files have been parsed rather than for every file.
2. Part creation now caches the KParts::Factory(s) so we don't use KLibLoader for every creation of a document.
3. Change KDevDocument so that we cache information like the mimetype rather than looking it up by url every time.
4. Change the way we load KTextEditor documents at startup. Basically, KParts::openURL is expensive so we don't do that at startup. Instead this is done when the doc first becomes active. Will revisit this if it is too much of a delay for the user.
5. For the time being load every project file into the backgroundparser at startup. Use
this to test for other machines. I want to see how long it takes.
Some marks:
With these optimizations I can load 1268 files (every c++ src/header file in kdevelop project) at startup as open documents in under two minutes. Each file is parsed and a codemodel is computed. Each file has a KTextEditor part created for it. And it takes about %32 of active memory once it is done.
With no open documents at startup, I can still parse every file, all 1268, at startup in under 1 minute.
That's pretty fast.
Congratulations to Roberto and everyone else.
Educational
Cache the image as a pixmap. This speeds up painting a lot. Before, QPainter has to convert from QImage to QPixmap before being able to paint the map, which is an expensive process (especially for large zoomed images).
KDE Base
Start the simple splash that doesn't depend on kde libs sooner, before all things needing kde libs (which can take quite some time to load with cold caches).
* Improved performance when saving large history logs by rewriting text-retrival code with care to cut down the number of memory allocations, simplified things generally as well.
* Performance when working with 'unlimited' history logs (Settings > History > "Set Unlimited")
improved by mmap'ing the log files when many consecutive reads occur.
* Added support for exporting terminal history (aka. "scrollback") to web pages (HTML).
Select "Edit > Save History As..." and select "HTML" in the Filter dropdown.
The HTML is quite lengthy at the moment, will work on that in future.
Suggestions on other export formats that would be useful are welcome :)
Optimise searching of large history (particularly when dealing with 'unlimited' scrollback history). Relates to bug #99746
* "x" -> 'x'
* by using a regexp, finding { for } went down from 1000ms to 300ms.
Utilities
- Make the start of ktu with loads of applications faster by processing the eventloop, so that the mainwindow is drawn earlier the apps will arrive a bit later, but I like that effect.
- Made the routine to determine branch/trunk static and make use that. Prevents duplicate code.
- Prevent reading the installed applications from disk twice after changing the language.
- Random cleanups.
Other
Development Tools
Turn the three main dockers into regular widgets seperated by splitters.
This makes KBabel look better (to me).
Screenshot:
<a href="/issues/2006-08-06/files/kbabelkde4yy6.png">http://img431.imageshack.us/my.php?image=kbabelkde4yy6.png</a>
Educational
Adding a branch for adding a hierarchical triangular mesh to KStars
Graphics
Make the text selection work almost correctly. Now it's possible to drag the mouse to select the text even for more than one page at once, like a text editor.
The next step about text selection is making it select char-by-char and not line-by-line as we do currently.
Finally, forwardported <a href="http://websvn.kde.org/?rev=569954">r569954</a> fro trunk to make also this branch compile with a recent kdelibs.
KDE Base
Removed old depricated KEdit Removed old depricated KEdit & freinds class. I have gone through KDE and fixed those classes that still used it or happen to still include the header. KMail and KNode have a copy, but will be porting away from it. KEdit will either die or get a maintainer and be ported.
Office
Multimedia
Re-enable HyperThreading fix for the beta release. I hear Amarok doesn't even start for some users without it.
Utilities
Copy Old KEdit class from kdelibs before it is removed from kdelibs. If this app survives the app should be ported to the new KTextEdit by the new author otherwise this class is copied simply to keep KDE compiling.