3rd September 2006by Danny Allen
A second important issue was the data verification which never worked reliably due to charset conversion problems that I was not able to work around properly. Now I rewrote that one also letting K3b compare complete image checksums instead of comparing every single file. The advantages of this approach are the faster verification process and that it just works. The downside is that you don't know which files were not properly written in case verification fails. Well, maybe I can get to that for K3b 2.0. ;)
Anyway, K3b 1.0 is on its way and I am quite proud of what I accomplished so far. Sure, I still have a huge TODO list and big ideas for the future but that will always be the case. For now, the features K3b 1.0 will provide are a very good base.
Ok, I already mentioned it: K3b 2.0. What are my plans? For now there are two main topics: the complete redesign of the underlying K3b library including K3b's own CD/DVD image format (which is already working BTW) and Video DVD creation. For now there is an excellent wizard like tool for this but I always wanted to have Video DVD creation in K3b. But getting it right takes a lot of work. That's why it has been postponed to K3b 2.0.
Currently I am working on fixing bugs. As you may know, bugs.kde.org still contains hundreds of bugs related to K3b, most of which can simply be closed due to duplication or because they are already fixed or outdated. But I would love to get the list cleared for K3b 1.0 (hint, hint: help me!).
So I started. At the beginning, I didn't know much about what I was going to do, but aided by Bart Coppens and all the other Krita/KOffice developers, I quickly got on track :)
The project consisted of 3 parts: a Framework, and two Tools. The Framework provides developers with the ability to quickly develop a tool that draws or selects "curves", that is, lists of points. It gives you the possibility to define "manageable" curves, that have control points for handling. Changing just a line, a tool can either draw a curve or select an area out of it. It is based on the idea of a function, calculateCurve, that converts the data that the user gives to Krita into a list of points, that then can be easily drawn with standard (still virtual if you want to change them) functions.
The second step was applying this framework to a "Bézier Curve Tool". Bézier are "smooth" curves obtained with a parametric function of up to four points. They are used to paint fonts, car design, and whatever else you want to be "smooth". I developed it relatively quickly, and it's split into a "Bézier Drawing Tool" and a "Bézier Selection Tool", just to let you draw/select bézier areas.
Third and last step was the most exciting one: develop the "Intelligent Scissors". This tool is like "Select Shapes" in the GIMP and "Magnetic Lasso" in Photoshop and combines the best features of the two. It uses 3 algorithms to get the work done: edge detection, non-maximum suppression to obtain a thin line out of the previous algorithm, and then A* algorithm to find the optimal path through the calculated edges.
But the "magic" of this tool comes now: it follows your mouse while you are moving it, so it selects the edges that *you* follow. This way, it can be fast (because it automatically adds other "control points" when your mouse is too distant from the last control point added) and at the same time it is very precise, because you see the edge it has found and you can, if you want, correct it. This behaviour has been taken from Photoshop.
I've taken a behaviour from the GIMP too: you can modify the curve before making the final selection. So, while you use the tool, if you see that a section of the curve is wrong, you can hit the "Ctrl" key to switch to "Manual Mode": the tool stops following the mouse and lets you manually select, delete, add (in the middle of the curve too) control points. Then you hit "Ctrl" again, return to "Automatic Mode" and after a single click the tool starts to follow your mouse again. Easy, isn't it?
Some screenshots:Flake graphical object library very much, but also on other parts of Krita, KOffice or even KDE! But I like also other open source projects, so, perhaps, I could participate as documenter/developer/patcher for them too :) It's an amazing world and I think that its fast growth will bring great advantages to all.
Compiling has been reported to be a bit difficult for some people, although the #kat IRC channel has people that can help. Also inotify support is a bit whimsical at the moment so that's best disabled until better scrutinized. But why let that get you down, it's no worse then setting up dbus in the first place :-)
Hail to all scripters out there: a call for imaginative queries!
So, what kind of queries are possible?
- give me all mp3 files in my home directory
- all emails that have "commit-digest" in them
About 150 bugs were dealt with kung-fu style, with the running count now past 250. To visualise the magnificance of this achievement, see this graph (with the sharp fall at the end).
To push this momentum into a continuous downward trend, a new IRC channel, #kde-bugs, has been created where people interested in bug triage can discuss the process. Just like writing documentation, bug triage is an ideal way for less-technically inclined people to contribute positively to KDE. Every weekend from now should see a bug effort targeting a different area of KDE. Beginners are welcome, so join #kde-bugs today to participate!
|Commits||2687 by 212 developers, 5807 lines modified, 1216 new files|
|Bugs Opened||333 in the last 7 days|
|Bugs Closed||476 in the last 7 days|
||Jos van den Oever||
Internationalization (i18n) Status
Bug Killers and Buzz
|Mark A. Taff||
|Aaron J. Seigo||
There are 87 selections this week
Fix a long-standing bug that I could finally somewhat reproduce, which caused growing of quantarc until it was too large to handle, caused by the automatic backup system.
Fix also other bugs in the auto-backup.
Change symlink handling, so paths are resolved after reading from config files. Hopefully it doesn't introduce new bugs.
Save As asked for confirmation of "save before close" for modified files due to the setEncoding() call. This was confusing and could result in data loss as well. For now, remove the possibility to change the encoding in the save dialog (users should change the encoding and save later or save and change later).
Possiby fixes #131728 (I cannot reproduce it with this version).
Don't crash when closing a document in VPL mode.
Should fix the following bugs:
my first bugfix commit
fixes JJ: Right mouse click - search at google - ampersand issue.
1. Change mouse pointer to Qt::PointingHandCursor when the mouse is on the image widget in the Details dialog. This provides a visual hint to the user that the widget is clickable (to open the Thumbnail picker).
2. Change all KShortcut( "Ctrl+C" ) to KShortcut( Qt::CTRL+Qt::Key_C ).
digikam from trunk : new batch tool to re-generate all albums items thumbnails for all icon sizes. Use the new Tools/Rebuild all Thumbnails option for that.
This tool can take a while on slow computers (you can take a coffee (:=)). Note : you cannot use digiKam during thumbnails processing.
ok, only move the window if your moving it on the same desktop via the pager. feels a bit odd to me (though i'm starting to get used to it already) and based on user feedback isn't what people expect. it does break a bit with literalism, but if it aligns better with expectation
there's also some BR#s that this applies to but my day has been way too frustrating to go searching for them right now.
I'm starting to get scared that I might lose this code so I want it in svn now. The basics work, and all that really remains is some testing and implementation of services. SafeSite is a URL analyzer that can aggregate data from a variety of service providers in an attempt to determine if a given URL may be malicious, or a "phishing" attack. It needs to be implemented at the application level, and would be very well suited to KMail, Konqueror, and Kopete. The choice and weight of services should be configurable and they should all default to off or prompt for privacy purposes.
fix the right way: honor protocols that do not support directory listing.
I'm not 100% sure whether a call of locationEdit->lineEdit()->setModified(true); right in front of the return is needed (I think not), so please review ;)
Added support to read X-Status from mails while import mbox and set correct state back to the imported mails in KMail
Much better implementation of indirect painting. Adds the Alpha Darken composite op, as suggested by Ilmari Heikkinen. Currently only workingly implemented for RGBA8 and Grey8, the rest is pending. This adds correct indirect painting in the following cases:
* Paint with opacity varying according to tablet pressure (cool effect, especially with the non-first layer's composite op being set to darken alpha too)
* Paint on layer mask with indirect painting
* Paint on adjustment layer (pending actually working implementation of alpha darken on alpha colorspace)
* Paint with the brush op being different from 'Normal', on a layer that has a different from 'Normal' composite op. Or so =)
Thing that doesn't work yet: indirect painting on selections :(
Users of Krita Development Versions: beware! You will need to recompile koffice/filters/krita (and I even need to manually enter the magick dir and compile that manually) too, in case you only svn up in koffice/krita and make there. This is because the patch changes some things in, amongst others, the PaintLayer, on whose structure the filters depend.
Krita is able to use the Python Image Library (PIL, see <a href="http://www.pythonware.com/library/">http://www.pythonware.com/library/</a>) now to import and export from additional 38 fileformats.
* not much testet yet.
* expect some probs with non-rgb images.
* since PyQt does not currently run with qt 4.2 snapshot tkinter is used for the gui.
Add the posibility that the user can, for the brush paintop, edit a curve that controls the way that the tablet pressure is translated into size, opacity and darkness. The default is to not use these curves, of course, but giving the user the chance to edit it is a plus (because I get the impression that at max pressure, my tablet seems to give a more discrete and pixelated feel, so with my tablet it is nice that now I can set opacity to 100% at half of the maximum pressure).
Implemented support for encrypted documents in KOffice. Opening documents is completely transparent. Note that saving documents is not implemented in the GUI yet, nor is it currently functioning fully correct: there are still interoperability problems. Also moved KoXmlReader from libs/kofficecore to libs/store.
* implemented loading and saving of grid data
* added some getters to KarbonGridData and made some others const
* made some cleanups in configure dialog and connected defaultSlot to defaultClicked signal
* the snapping and visible state of the grid are not saved/loaded (or should they?)
* Make K3b compile with KDE 3.2
* Make libdvdread an optional dependancy (no Video DVD ripping without it) including --without-libdvdread configure option
* Added K3b option to keep the action dialogs open after the process finished (this was the default behaviour in K3b 0.12. Now the default is back to its old state: close the dialog. This can be changed in the misc K3b settings.)
* Show the splash screen as soon as possible
* Check for transcode & vcdxrip and warn if they are not available while the user attempts to rip a Video CD/DVD.
* Remove the option to enable/disable history in dynamic mode. It is now on always.
* Disable "Played tracks to show" option if tracks are not removed from dynamic mode, when creating a new dynamic playlist
* Reduce the minimum available tracks to show to 0.
* The beginnings of restoring purged items for podcasts (got caught up in the commit).
I dedicate some time in this summer to my KDE sniffer... I hope I can continue
I've seen a lot of things to fix to release version 0.2
I've made some changes in the configuration dialog implementing the possibility to turn off the warning when in the capture you get 0 packets
Now if a network error occurs I can detect it and stop the sniffing
I have to change the way 'ksniffer' communicates with the suid 'sniff' because is not so good now...
Multiple queue and session related changes:
- better handling of multiple connection threads per session
- better handling of connection losses
- removed directory scanning from TransferDir
- consolidated TransferDir and Site common code to QueueGroup- minor cleanups
* Support %nick as a placeholder for the current nick in the auto-connect commands.
* Don't balk on leading whitespace in the auto-connect commands. I assume I'm not the only one who by reflex puts a space after the separating ";".
The search plugin is now part of a tool view and opens tabs as necessary.
This means that:
- it is now possible to do multiple searches at the same
- tabs can be closed
This is a work arround for bug 112755. Now conversation support BIDI completely. The problem was caused by a bug in QTextEdit. See the bug report for a full explain.
I also documented, blah... just gave a link... which explains what are those BIDI constants used in the source.
this is an experimental patch which aims at testing a new algorythm for detecting the direction of the string: istead of checking the first strong character, this tests for the whole sentence and counts the appearence of LTR and RTL chars. this also counts for neutral chars and if the sentence has no real direction, the next stage will be to keep the direction of the last line.
this will help people writing lines like:
after writing a hebrew/arabic line. the smilie will be also RTL.
as a bonus, on the commented code i cached up the string length. no need to compute it all the time. another small optimization should be using pointers and not arrays (or QChar::at() ) which is o(n) instead of o(1).
boy, how i miss qt4 :)
Initial drop of KMahjongg rewrite to add SVG support. Not complete yet, need to port drawing code to QGV and restore loading of custom tilesets and backgrounds, among others. Commiting to avoid losing work. Basic functionality is working, including window resizing (still need adjustments, centering, clean up)
Don't iterate over the hash. This is 5 times faster than iterating over
the hash. From Adam's box:
From my box with the patch:
Our boxes are about the same speed so the speedup is huge. To quote adam:
holy crap that's *SO MUCH BETTER****
Merged changes from KTouch version 1.6 (KDE 3.5.4) into current QT4/KDE4 trunk version. Fixed some Qt3 compat issues and replaced QVector, QValueVector, QValueList classes with QList.
Replaced std::set with QSet. KTouch compiles and runs but does not work properly yet.