Issue 32
12th November 2006 by Danny AllenThis Week...
The Tool Manager in the GUI can create toolbox dockers, which contains all tools available for the specific shape and lets you select amongst them.
There is one Tool Manager per application, which means that there is one tool active in an application at any one time. Since some applications could benefit from a different approach, Thomas will look at this and see if it can modified.
Shapes create themselves according to their own specification. Thomas suggests a model/view separation to make it possible that two different shapes can point at the same data structure.
During the last meeting, templates were discussed. The shape factory can be extended to create any tool possible. Stencils in Kivio can be done with templates (name, value pairs). The factory needs to know about that, and the path shape factory needs to recognise the vector shape.
Loading and saving: using which file format should shapes load and save to? We use OpenDocument as native format, and so will use file filters for the rest.
For example, loading an old Kivio file: should we use the path/shape to load/save to old file formats? or should we convert using file filters? With the latter method, it is impossible to save without loss.
The Flake Plugin Loader should load both the shape and tool registries. Colourspaces are already loaded in this fashion.
The KoShapeSelector is a Flake canvas (which then can have children), containing sets of templates and where one can add custom templates that can create custom shapes.
Properties (in the templates) are just name-value pairs, reading/loading from XML - creating a new shape is done by filling in those pairs. It should be possible to create a new folder to function as a pastebin, so that the user can paste elements of documents into it, and then reuse them as new shapes. In the user interface, we want to have a unification of clipart, shape stencils and the clipboard.
It should be possible to have duplicating and linking of objects (e.g. KWord headers, which are 2 frames looking at the same document data offset, or Karbon linked objects, or Krita linked layers).
Which strategy to use for placing stuff on the canvas? We have drag-and-drop, dragging a stamp, multiple clicks, and freehand movement. In the latter case, the mouse path is important, so these cannot be created from the shape selector. Paths, freehand movement, and lines will be put in the toolbar, rectangles, stars and other shapes in the shape selector.
It has been decided to give the KoCanvasResourceProvider extra methods for colours, line styles, etc. instead of having to keep to generic methods.
About shape managers: one per page or one per document? A shape manager is per view. For at least KPresenter, we want a "selectable" flag so that e.g. master slide objects are unable to be selected from the normal page view. Shapes can link back to their parent "page" (as in Karbon), so that removing a shape and then undo'ing the removal will put the shape back at its original location. We can't put this in the userdata field, since this field is shape specific and some shapes already use it. We could have a page/group layer be a KoShapeContainer as well. Krita needs image data access, the text tool needs document information access.
Page numbering is perceived differently in different applications: KWord and KPresenter have separate pages while Karbon has 1 infinite page. If an application is requested to remove a shape from the document data, the shape itself does not get deleted. Creating a container KOShape is neater though, since it's a shape in itself as well.
Why are Karbon layers not in the shape manager? Because we wanted them to be selectable. This is solved by the selectable flag. A KOffice-wide library for layer manipulation (a common layer) box will be evaluated, and such a mechanism will go in the GUI, and not in Flake itself. ODF requires layers with global properties - we support shape containers.
How to attach animation to a shape? We cannot use userdata (see above). Since KPresenter is the only application needing this right now, it will use a decorator pattern and if needed, we will extend this later.
Copy-and-pasting is an implementation detail of drag-and-drop: create an invisible drop tool that figures out where to drop. Dropping onto an empty page should pass the dropped object to the application, pasting a URL into a textbox could perhaps resolve the URL and paste its referred contents. This would be done by the tool itself.
Text within shapes should be plastic within the containing shape boundary. Thomas expects this not to be too much work since wrap-around is likely to already work.
Bounding rectangles and shadows: should the bounding rectangle of an object include its shadow or not? We know that aligning should not take it into account. Repainting could be an issue, but we could fix KoShape to draw the shadow and be aware of it. Having the bounding rectangle to include the shadow and rotation, but then checking if the object is really at the specified location, looks to be a good solution.
Autoselection of tools - which tool, if any, should be selected by default when selecting a shape? This is something to experiment with. Users and usability people should definitely be consulted here as well.
Certain settings, for example default font sizes, the preferred colour chooser, the colour for outlines and grid behaviour, should be KOffice-wide. Hence a mechanism to share configuration files and settings is needed, next to a single panel where users can set those options.
Tools are categorised in four groups:
- the pointer
- line, text and other tools
- basic application-specific tools
- and advanced application-specific tools
Many other important bugs have also been rapidly crushed over the past few weeks: work such as this is going on throughout KDE, and will ensure that the KDE 3.5 series continues to impress us with its vitality long into the dawn of the KDE 4 era.
Statistics
Commits | 2195 by 202 developers, 4763 lines modified, 999 new files |
Open Bugs | 13019 |
Open Wishes | 11887 |
Bugs Opened | 298 in the last 7 days |
Bugs Closed | 400 in the last 7 days |
Commit Summary
Module | Commits |
/trunk/KDE |
555
|
/trunk/l10n |
294
|
/branches/stable |
264
|
/trunk/extragear |
218
|
/trunk/playground |
178
|
/branches/work |
177
|
/trunk/www |
138
|
/trunk/koffice |
102
|
/branches/KDE |
102
|
/branches/kdevelop |
49
|
Lines | Developer | Commits |
255
|
Laurent Montel |
120
|
120
|
Stephan Kulow |
60
|
197
|
Allen Winter |
57
|
86
|
Pierre Ducroquet |
49
|
106
|
Dirk Mueller |
46
|
113
|
Tom Albers |
43
|
151
|
Luboš Luňák |
42
|
119
|
Gilles Caulier |
42
|
55
|
Inge Wallin |
40
|
101
|
Boudewijn Rempt |
33
|
Internationalization (i18n) Status
Language | Percentage Complete |
Portuguese (pt) |
100%
|
Swedish (sv) |
99.96%
|
Danish (da) |
99.85%
|
Spanish (es) |
97.36%
|
Dutch (nl) |
96.68%
|
Greek (el) |
95.65%
|
Italian (it) |
93.78%
|
French (fr) |
93.23%
|
German (de) |
93.08%
|
Estonian (et) |
92.58%
|
Bug Killers and Buzz
Person | Bugs Closed |
Christoph Burger-Scheidlin |
56
|
Alexandre Pereira de Oliveira |
36
|
Martin Koller |
30
|
Sebastian Trueg |
26
|
Bram Schoenmakers |
24
|
Will Stephenson |
19
|
Alexander Neundorf |
18
|
Tommi Tervo |
15
|
Mark Kretschmann |
12
|
Seb Ruiz |
11
|
Program | Buzz |
Amarok |
6790
|
K3B |
2785
|
Kate |
2760
|
KMail |
2700
|
Kopete |
2645
|
KDevelop |
2244
|
Krita |
2100
|
Kat |
1850
|
Kontact |
1518
|
Kicker |
1424
|
Person | Buzz |
David Faure |
976
|
Adriaan de Groot |
924
|
Stephan Kulow |
728
|
Waldo Bastian |
527
|
George Staikos |
336
|
Jonathan Riddell |
323
|
Aaron J. Seigo |
304
|
Albert Astals Cid |
264
|
Daniel Molkentin |
245
|
Danny Allen |
234
|
Commit Countries
Commit Demographics
Sex
Age
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 120 selections this week
Bug Fixes
Development Tools
Avoid endless loop if focus is taken away before "find next" operation.
Graphics
Fix regressions caused by my last commit.
Add a widget cache that holds MarkListWidgets that are currently not in use, to minimize Widget creation and destruction. This gives a significant performance boost during scrolling.
Also enable prerendering of thumbnail widgets. In most cases the widgets should now be already calculated when the widget comes into view.
Some cleanups.
a few minor changes with the following effects:
1) Choosing pixel by pixel by default now works.
2) drawing on images now works
3) rotating images do no longer make them show up full screen.
KDE Base
Symlinks in trash should show symlink size, not file size.
fix memory leak that interestly only showed up because I was searching for timer leaks. Every time the dialog showed another 1s polling timer was leaked.
Permit changing the internal value of invalid dates. Fixes the BBC UK Weather page..
we actually just want to untip the clock, so make untipFor public. this prevents tips for the clock showing when the calendar is up, which is the intended behaviour, otherwise they show up over the calendar.
there is the use case where one might open the calendar, move it somewhere out of the way and then want to see the clock tip, but that's probably rather more rare than the "tip just popped up over my calendar!" problem (which was actually reported to me way back when).
the -best- fix would be to not show the tip if it would cover the calendar but ... yeah ... that's a lot of screwing around in the stable branch for a corner case.
KDE-PIM
Properly detect if SSL/TLS is possible and warn about it. Disable the settings if needed. CLosing the bugs which I think are related to this.
o Make calendars in the left sidebar respect the First Day Of Week setting, defined in the control center
o Renaming some member variables and unused variable removed
Patch from Thomas McGuire that fixes the
+ Wrong checkbox in the layout when adding attachments to the composer
+ attachment display in editor: "sort by size" sorts alphanumerically, not by size
Thanks for the patch Thomas and sorry it took so long.
Will merge into the 3.5 branch shortly.
Correct encoding of file name before lookup, using a KURL
(Correction from Martin Koller)
Office
Fix spello, and, wowie! six filters are suddenly colorspace independendendendent!
Multimedia
Replace '~' by homedir-path before doing the filename expansion
Don't the wav-files when using "Encode File"
Networking Tools
Make sentence options (Capitalize and full stop.) work, and handle inbound messages as advertised.
NB Hariz Kouzinopoulos: I did not use your patch, because while it is technically correct, the job of saving the widgets' values is performed automatically by KCAutoConfigModule, if it knows about the widgets. A previous author neglected to change the widgets passed to KCAutoConfigModule when adding the sentence options, so that is why these were not read/written. Thank you for submitting a patch though, it was the impetus to solve the bug properly.
That should fix the crash after duplicate login.
Games
Fixed missing level_83:
Now level_84 becomes level_83.
As about other thing stated in #123733: Yes, levels 47 and 81 have a similar molecule name, but that's not a bug, because it IS a same molecule, but it layed out differently in each of these levels which produces completely different gaming experience for each of them ;).
Slider 'jumping' is fixed too.
Features
Development Tools
Follow KDE standards and allow opening documents through drag'n'drop
Improve Simple ideal keyboard navigation. This adds a "Switch to next TabWidget" action to allow for jumping between split views using only the keyboard.
Also adds the missing "Save" and "Reload" actions on the document tab context menu
Educational
Added system tray icon, configure shortcuts action and some commented testcode for on-the-spot search.
Graphics
Applyed patch written by Leandro Emanuel Lopez which adds plain text and pdf export to ooo generator.
ok, let's do this slightl more correctly, featuring:
- a dbus appropraite callback (e.g. it shouldn't pop up a UI for the user to interact with.)
- a menu instead of a dialog
next up: getting other appropriate apps in the list via dbus so we can email images. servicemenus seem the natural way to go here but they need some work before they can be used here. ("Rotate image" is probably stupid to show in this menu, but "Email image" isn't)
How very rare that you (1) get a new feature to work (2) improve performance significantly and (3) get much cleaner code base ALL three at the same time :-)
I beleive that pixel by pixel zoom now works in the reworked version. As an added bonus, I no longer loads the first image in full size, but only in viewer size. This has given a significant boost in starting up the viewer.
If the user ever zooms, then the real sized image is loaded in the background and put in place when it is available - until then the user just sees the viewer sized version he was original looking at.
Automatically put the bookmarked pages as page pelection in the print dialog.
Implements KPDF wish #117805.
show filename in KPDF title instead of whole path which is ugly and undistinguishable on kicker when multiple PDF files are opened
Add preliminary support for DjVu Text and Line annotations.
This means we can read them almost correctly, but there are some problems with placements and colors.
KDE Base
Add support for backend independent output.
Convert the existing X.509 certificate plugin to use QCA2, instead of KSSL.
This plugin can now handle X.509 Certificate, Certificate signing requests and Certificate Revocation Lists (CRLs). Certificates are handled in both PEM and DER, and the other two are handled in PEM format (DER wouldn't be hard to add, but there doesn't appear to be any real-world usage). Signing Requests and CRLs provide less information than a Certificate (e.g. the Signing Request doesn't have any issuer information).
The amount of information that can be provided is now extended to include multiple DNS names and XMPP information (per RFC3290), plus the State/Province (if any) for both issuer and subject.
Adding URI or IPAddress would be trivial if there was any real-world need for it.
The old CMakeLists only compiled this if SASL was found - not sure why. In any case, it now only gets compiled if QCA2 is found.
Allows to query and set power schemes and cpufreq policies.
Adding support for XDG menu spec environment variable XDG_MENU_PREFIX.
This will allow distributions to have different application.menu files for different desktops without patching KDE and still keep the shared applications-merged directory
Added more ODBC drivers to the auto-detection list. datasources will now auto-detect the following ODBC drivers:
* MySQL ODBC 2.50 Driver
* MySQL ODBC 3.51 Driver
* FreeTDS Sybase and MS-SQL Driver
* Oracle Driver
* IBM DB2 Driver
* PostgreSQL Driver
* Mini SQL Driver
* Mimer SQL Driver
* Text Driver
* Internet News Driver
* Easysoft Interbase Driver
* Easysoft Firebird Driver
* Informix Driver
* SQLite Driver
* DataDirect 4.20 DB2 Wire Driver
* DataDirect 4.20 Informix Wire Driver
* DataDirect 4.20 Oracle Wire Driver
* DataDirect 4.20 SQL Server Wire Driver
* DataDirect 4.20 Sybase Wire Driver
* SAP Driver
* OpenLinks iODBC Driver
* Easysoft ODBC-ODBC Bridge
* Easysoft ODBC-ODBC Bridge (MT)
* Easysoft ODBC-JDBC Gateway
* Easysoft Oracle Driver
* Easysoft Sybase Driver
KDE-PIM
Add support for object type filtering. At the moment we have to keep the selection of the object types in a separated file (we use the same as multisync-qad here), that will hopefully be fixed after opensync-0.20.
Based on patch by Cornelius Schumacher with some improvements in the GUI ;)
Pretty intrusive changes. I've changed the messageview part to always use richtext mode. All html messages will be escaped, so that should work ok. I did this so I can make links and emailaddresses clickable. Which is in this commit as well. Enjoy! mailto's will launch the composer of Mailody (_not_ the default KDE Mailer) and links will launch the default KDE browser. The used regexes seem to work ok.
When replying or forwarding the plaintext part will be set in the composer, even if you are viewing the message in HTML mode.
Closing the composer will only warn 'are you sure' when there has been a change to the composer. So you can reply and abort immediatly without getting a warning.
Please test for regressions...
GUI for an identity-specific templates folder
Keyboard shortcuts for custom templates with corresponding gui.
Some refactoring of kmmailwidget related to custom templates handling (proper KAction`s).
Very little beautification of custom templates interface.
When you need something, you write it. Mailody can now Print. Have put it under the "Message" menu item, probably violates a lot of standards.
Get attachment icon from file name if not available from Content-Type
Some html is hardly readible due to small font, so this add zoom in/zoom out.
Handle the attachments better. save as by default and open/openwith in context
Make the reminder dialog somewhat more usable when working with they keyboard. No strange focus switching with up-down arrows in the spin box for example. And added an accelerator for the interval spin box.
Office
When resizing the star the scaling is saved and used for updating the path afterwards. This makes it possible to have a star with a different aspect ratio.
This is modelled after the inkscape star.
Theoretically, tools can now get at the current image through the shape manager.
* Kexi supports data-aware combo box widgets in forms and table views *
Table View
- better displaying tooltips for columns with lookup data
- sorting columns with lookup data works
= various improvements for combo boxes
2.0: merged
Forms
- database-aware combo box form widget works, improved data displaying, mouse and keyboard handling
- fixed bug #136688 - displaying dates (e.g. with dd.mm.yyyy format)
= do not block Escape key if there are no data changes to cancel;
do not block shortcuts like Shift+Left arrow
2.0: merged
Implemented roundness at the star handles.
- use shift-dragging to change the roundness at a handle
- use ctrl+shift-dragging to change roundness at both handles
One can now use the star tool to draw nice flowers or other regular rounded shapes.
odp -> odt conversion filter. To generate a text document from a presentation.
Generate a style for slide titles (like kpr2kword did)
One still has to fix the text colors after doing the conversion, but that's just a few clicks.
Workaround more QDomDocument brokenness (bug report sent)
Set a page layout that looks more like a paper format.
Add license
Added the ability to save SQL results to a CSV file. Opens nicely in KSpread :-)
Multimedia
When "Sorting by Favorite", do it like this:
First by Rating, if enabled;
Then by Score, if enabled;
Fall back on play count.
This way, if the user happens to have ratings enabled, but didn't rate any songs, we'll still have a good list by using scores and playcount.
make smart playlists based on track length more useful by adding a combobox for the used time unit:seconds, minutes or hours
Stop after current works for streams. Patch by Tuomas Nurmi.
Some radio streams would show an empty title in the playlist. Now we fall back to the URL if the title is missing.
Use a context menu for md5 sum handling instead of the button nobody ever can find. This way the feature is a little easier to find (although still quite hidden).
AFT support for lyrics! Yay!
Also, a bit of AFT refactoring, and an update of the previous change I made to metabundle, so AFT is still not run on those, but the UID in the playlistitem reflects the correct value for any updated metadata.
Max/Alexandre: Your commit and mine conflicted (I haven't updated in a few days until now) -- I figured out an easy way around Rich's crash too, but I decided to go with my way, since it will get the UID in a way that will still be safe and current (at least, moreso) if a scan is ongoing. Thanks for looking at it though!
Networking Tools
Oh yeah baby,
Kopete Telepathy plugin can now have text conversation with a single peer.
Enjoy :)
Screenshot:
<a href="/issues/2006-11-12/files/kopetetelepathytextchanrw0.png">http://img101.imageshack.us/my.php?image=kopetetelepathytextchanrw0.png</a>
Flood protection that actually seems to work... might still need some fine tuning though :)
User Interface
Utilities
Show keyservers in search dialog on first run, if no server present in .gnupg/options
show phone numbers in kabc hits
Games
All atoms are now done. and a clean up too. I hope dimsuz will be happy
Implement wish #102557 - saving/loading of games.
Added UndoAll, RedoAll actions.
This interface may change.
Please test and don't hesitate to send me your comments/suggestions.
Parker Coates proposed to also include player like "play" and "pause" actions to start/stop constantly redoing moves in redo list - one after another.
What do you think about this?
How often would you use such functionality rather than manually pressing "redo"?
P.S. To much buzz for nothing? ;-)
tiles can now animate (fade in/fade out) when they are removed or added
The "controversial" commit ...
This is a totally undiscussed, self-decided, personal change. I like it.
I hope you like it too...
The planet information on the right side of the window disappeared : it's now a tooltip. (and if I rewrite the MapView, it could be draw with a partially translucent frame or any other extra eye-candy stuff)
Use Mauricio's svgz for showing possible moves hints.
I exchanged move_hint and move_hint_alternative as I happen to like alternative one best :).
If you want to try alternative one, do
mv move_hint_alternative.svgz move_hint.svgz && make install
(don't forget to svn revert later ;))
Ok, now Konquest is using SVG too... Great, isn't it ?
Thanks Johann for the graphics...
First screenshot : <a href="/issues/2006-11-12/files/konquestSVG.png">http://www.pinaraf.info/konquestSVG.png</a>
Other
* Added another layer between the Registry and the RegistryDbusInterface to have no DBus in Registry anymore.
* Added GCC visibility support.
* Added preliminary special type handling for the RDF cursor classes StatementList and QueryResult. This allows to hide DBus from the public API again but restricts us to these two types. The goal is to have at least any combination of list and map of simple types.
Optimization
Office
implemented a much more compact representation of packed nodes
use QPair instead of hand-made double QString
use QHash to replace QMap
removed unused KoXmlStream
made nsURI and name using index
use conservative growth strategy for item collections
avoid invalid deallocation on null node
shifted most code from KoXmlHandler to KoXmlPackedDocument
fixed potential leak during node loading
minor speed-up on some constructors
Games
Other
Graphics
usability fix: mouse wheel up goes to the next page, not to the previous (and viceversa for mouse wheel down)
every one at openusability.org agrees about [ zoom combo ] [ zoom out ] [ zoom in ], so let's follow the precious usability suggestion.
following popular aclamation we use whole numbers as default zoom values
KDE Base
Move Solid HAL backends to kdebase runtime.
New KPluginSelector class
* Source compatibility (obvious)
* Reverse dependencies
* Renewed architecture
Move solidshell in kdebase.
X-DCOP-ServiceType -> X-DBUS-StartupType
Change name into desktop file (now dcop is dead we use dbus)
I keep compatibility with 'X-DCOP-ServiceType'
X-DBUS-StartupType: name found by David (better than X-DBUS-ServiceType)
Rename a lot of reference to dcop.
Patch ok'ed by David.
Update doc.
Rename DCOP_* enum to DBUS_*
I will continue to rename reference to dcop -> dbus
I will change all desktop file which have key X-DCOP-ServiceType to X-DBUS-StartupType
this is one of the ugliest dialogs I've seen in KDE in a long time. Fix that.
forwardport dialog fixes. Unfortunately it seems the whole functionality of this dialog was (purposefully?) dumped in anticipation of KDE4's much reduced functionality, so it is just dead code that I'm changing.
interesting concept: naming files *.png that are not png's.
Office
Yay! The base class for three-quarters of Krita's tools compiles again -- and I don't think I've lost much functionality along the way. (Although, see <a href="http://wiki.koffice.org/index.php?title=Krita/ToolRefactor">http://wiki.koffice.org/index.php?title=Krita/ToolRefactor</a>).
Honor HAVE_OPENGL define so people without openGL can compile Krita as well.
Mark the kword/pdf filter to have its end-of-life due to it wrapping a very buggy piece of code which gave too many security issues in the past.
The KOffice team welcomes anyone that can provide a poppler based import filter instead.
Multimedia
Added redownload manager for previous Magnatune purchases. The required info is already stored in the released 1.4.4 version so all previously purchased albums can also be redownloaded. Added an advanced button to the magnatune browser, for now it just opens the redownload manager, but later it should popup a menu with more options. Have also done some MAJOR refactoring of the Magnatune purchasing and download logic to make it more maintanable and extensible.
Games
add a test svg for konquest, good luck pinaraf
Further work on the separation of gameboard -> gamelogic, gameview. Better separation, and it all compiles now.