29th June 2008by Danny Allen
The first task was to get things to load - for this I have automated the OpenDocument Format Alliance test suite. We have around 62 tests up and running - these involve character, paragraph, lists, headers. Support for tables has been left out for KWord 2.0 since tables are a complex beast. Currently, these tests only check the internal data structure that result in loading and not the visuals of the loaded document. Though, comparing the visuals is in theory very possible, it just requires a stable KWord.
We have now made the 62 loading tests also test the saving process. When I first started, saving of ODF was in a pretty poor state. I am happy to say ODF documents with simple paragraphs and text save flawlessly now!
One of the strategies we followed with writing tests is to test a feature completely (manually) before automating it. If need be, we would add features and fix bugs on the way. Though the task of writing automated tests seems boring, what it actually involves is a thorough understanding of the code and the specification. We also do fixes to the UI as needed.
On a technical note, the design of ODF in KWord is simply super. The big problem is since there were no tests at all, it was impossible to tell what you are breaking. Indeed, when I look into the first few commits I made, it was just total crap :). I believe the tests we have now will go a long way in helping new comers (like me).
What next? In the immediate future, I am now working on lists+headers loading and saving. Lists and headers in ODF are similar but complex beasts. We are hoping to make it before KOffice 2.0 (middle of September).
Problems? Lots. Though ODF support is now in an OK state, we have the bigger task of beefing up KWord itself. Many fundamental features need to be completed. Thomas Zander's style manager is one of the basic missing components that we need immediately. The cursor in KWord doesn't even blink! So, there is *lots* of stuff to work on, but too few hands. KWord itself is worked on only by a couple of major contributors and almost every part of KWord requires some love and attention. So, if you are interested, just drop by irc.freenode.net, #koffice!
For those that do not already know, Basket is a rather advanced note taking program. It comes with the slogan "Taking care of your ideas", which says a lot about its philosophy and the intended use for this program. As far as I am concerned, it is the best note taking program I have found on Linux (and in the future, perhaps all platforms? :)). Either way, the author of the program, Sébastien Laoût, had other matters to attend to, and could not find the time to continue this project; it was too sad to see such a project die, so I stepped in, and started porting the thing to KDE 4. Since then, I have taken up porting and maintaining Basket. Sébastien still pops by now and again to share his insights and experiences, though.
Right now, we are at a point where we have finally (after a fair amount of pain, but a fair amount of help :)) gotten a compiled version up and running under KDE 4. I have been informed by Peter Zhou (who is working on Amarok) that it also compiles and runs on OS X straight up. I think Windows will need a bit of tweaking though (I do know a few instances where we still rely on unistd.h...) but here's a few screenshots of the current master branch:
|Note: in the second image above, this is a screenshot of Plasmoids in the Basket window, not native Plasmoids!|
My #1 priority is to have a minimal regression, straight port into KDE 4, with all of the basic functionality. I think Basket is almost at a point where I can finally start to actually use it to start using it to store and edit all of my notes (although I'd advise against any non-developers to do the same; there are still *many* showstopping bugs, but I will squash the main ones as soon as I can; I also do not want to be liable for the loss of your entire album of baby pictures you only keep one copy of in Basket :)).
Reading over our mailing lists archives, wiki, and usability surveys, it seems that there was quite a bit of ideas that were being planned for the future, and there was even a complete rewrite that had been worked on, but that eventually fizzled out, and with the lack of momentum, it had come to a standstill. What I had in mind was to at least get Basket running in Qt/KDE 4 before completely breaking it apart and refactoring it. Some of the code is a mess, but ultimately, I think that we will be taking much less of a risk by porting / refactoring rather than doing a complete rewrite. All the cool ideas that everyone has can be implemented parallel to this (such as QGraphicsView and Akonadi support, as well as Server/Client support). After this port, there is so much we can leverage and do thanks to the new KDE framework. It also makes it a lot easier to maintain as I am far more familiar with KDE/Qt 4 than I am with 3.
One day, I would like BasKet to be integrated with the KDE system; I think it will have to happen after the KDE guys switch to some type of distributed source control management tool, though. Right now, Basket is hosted in Git(Hub), and it is hard to go back to centralised version control the same way after you have been spoiled with the workflows they permit, especially for (but not limited to!) open source work.
Anyways, there is a fair amount more work to do, the potential for this program is endless. If anyone is interested in helping out, drop me a line on the development mailing lists, or just straight up clone the repository and start hacking (includes all branches, including the KDE 3 ones) and sending in the patches:
git clone git://github.com/kelvie/basket.git
While I would prefer that the discussion would be related to actual KDE development (and it's certainly disappointing to see most of the comments be about the "lateness" of the recent Digests), seeing the complaining camp battled by the defenders brought a strange smile to my face.
It's a fine line, but at least I know I have passionate readers, and that could never make me unhappy...
p.s. This doesn't excuse the comments, and I don't want this to be a regular outcome: the Digest will catch up in the near future. Seriously.
|Commits||2807 by 249 developers, 8841 lines modified, 2048 new files|
|Bugs Opened||544 in the last 7 days|
|Bugs Closed||612 in the last 7 days|
|Aaron J. Seigo||
|Karl Ove Hufthammer||
Internationalization (i18n) Status
Bug Killers and Buzz
|Aaron J. Seigo||
|Aaron J. Seigo||
|Adriaan de Groot||
There are 129 selections this week
Using a queued connection fixes a problem when using kfilewidget and the url navigator is in editable mode:
- Open kwrite. Open a folder with lots of files, open a file that is at the left more or less.
- Now reopen the open/save dialog, if the url navigator is on edit mode, the view moves to the end, while if it is on breadcrumb mode, it works fine.
Also some other cosmetic changes.
Fix crash when aborting download of a too big favicon.
<a href="http://planet-soc.com/favicon.ico">http://planet-soc.com/favicon.ico</a> is a strange file indeed, can't figure out its format :)
If the user has specified autostarting in their korgacrc file, then
we assume they have already specified if they want korgac autostarted;
probably by selecting "Start Reminder daemon at login" from the context menu.
Under this condition, if the user tries to quit we no longer nag about
autostarting.. we simply ask if they really want to quit and faithfully obey.
Sorry, fixing this bug does introduce a new string.
Added large zoom steps to unfrozen branch.
The change in zoom due to the mouse wheel or "-" and "=" keys is now 2.0
instead of the previous 1.1. This reduces the number of key presses or
wheel clicks to change to to a given zoom by roughly a factor of eight.
The Shift and Control keys reduce the zoom step by factors of 2 and 4
respectively. Combined, they reduce it by a factor of 8 which is close
to (but not equal to) the original factor of 1.1.
Also increased MINZOOM from 200 to 250, which I think roughly compensates
for the change caused when we converted SkyMap::fov() to reporting the
diagonal of the screen instead of the minimum of the height and width.
The change in fov() was made to provide a radius for the SkyMesh::aperture()
Can now adjust the magnitude limit using mouse wheel or "-" and "=" keys by
using the Alt key modifier. The Ctrl and Shift modifiers work in a similar
fashion to what they do with zooming.
The default mag step is 1.0.
The Shift modifier reduces the step to 0.5.
The Ctrl modifier reduces it to 0.2.
Combined, they reduce it to 0.1.
Also changed the factor in the maglim formula from 4.444 to 3.5 to match
the summer branch.
The memory usage slider now actually works.
+ Fixing type of Options::memUsage() to double
+ Changing default value of slider to 8
+ Making sure that settings apply correctly in slotApply()
+ Using Options::memUsage() in the maglim formula in StarComponent. I
cooked up the formula ad-hoc, but it seems to work pretty well. The
typical memory usage at small zoom levels with the slider at value
'2' is about 50K (total) and is about 90K with the slider at value
'10'. I found that 8 gives a good star density, to my satisfaction.
Implement support for auto-restarting unique-applications after a crash. Inspired by the non-working handler in kded and the working handler in plasma, but fixing segv handling in the restarted-application (thanks to mornfall and SadEagle for their input).
Also fixed handling of KDE_DEBUG=1 and --nocrashhandler: they both mean "no drkonqi please", even if we set up a crashhandler to handle "emergency save" and "autorestart" functionality.
I'll port plasmaapp.cpp and krunner to KCrash::AutoRestart on Monday.
Also allow to use the selection toggle when double click is used. This allows to select/deselect files without CTRL key.
- Support holiday entries in the new month view, and lay foundation for displaying recurring incidences correctly.
- Loads of simplifications and refactoring
- Several bug fixes
- Removed the "Highlight color" option. It's nowhere used.
And propably some other changes I currently don't think of. Sorry for the big change in one commit.
Add support for loading and saving footnotes/endnotes.
Currently, only raw text footnotes/endnotes are supported, no text formatting in the notes...
This must be fixed, but I didn't look at it right now.
(I sincerely apologize for the long delay since my last SVN activity, I was busy with the school ending soon and lot of other real life stuff.)
Allow tools to have more than one option widget.
Basically you just reimplement createOptionWidgets() which return a
QMap of (title,widget)
you can still have the old createOptionWidget() if your tool only
have one widget.
Nothing visually should change with this commit
Uploading preview tracks from Magnatune to Mp3tunes now works, as long as you are not logged in to magnatune as a member, in which case the sideloading chokes on the needed username/password. This
should be fixable on the Magnatune side, but this leads to a bit of a tricky question about how comfortable Magnatune is with this, so this is something I will have to clear. Also, at least if you
are a download member, it would make much more sense to upload the higher quality version that you can freely download, the only issue is that these are zipped and would need to be cached locally....
* @iris : Jingle tasks created (only the first session initiation stanza is implemented)
* @iris : Jingle session class created. JingleSession get all needed informations and then create a Jingle Task to start the Jingle Session
* Added Jingle actions (one for Video, one for Audio) and create and start a Jingle session when clicked.
add experimental code for sparse matrix:
- uses the common "Compressed Column Storage" scheme
- supports every unary and binary operators with xpr template
assuming binaryOp(0,0) == 0 and unaryOp(0) = 0 (otherwise a sparse
matrix doesnot make sense)
- this is the first commit, so of course, there are still several shorcommings !
Since they're all pretty simple (except the spill code..) merge in a bunch of performance improvements from the FrostByte branch,
for an about 15% speedup w/g++-4.3, and abour 10% or so with g++-4.2. The more aggressive
stuff on my TODO list will probably have to wait till FrostByte -42, though.
- Tweak inlining setup to work better with g++-4.3
- Tweak the generated VP dispatch/decode loop to have smaller & faster code, and to have
less unneeded specializations
- Avoid some can-fit checks when boxing things we know can't be smallint'd
- Streamline/simplify the function call code somewhat.
- Specialized < op for comparisons with numberic upper bound
- Do the string value -> string object conversion directly when legal
- Make the string  accessor share substring data, avoding some allocations
- Remove a double-lookup in hashtable due to ReadOnly check in JSObject::put
- Do tearoffs deferred only
Implement sizeHintForColumn with a trivial function that just returns the current column width.
This is needed because QTreeView sometimes triggers automatic resizing of the columns in the background, without allowing that behavior to be configured. With a very long completion list and complex data() functions like in KDevelop, such an automatic resizing was extremely slow, and nearly felt like a crash.
This patch makes the icon being updated with the selection, so we have a more responsive open/save dialog (kfilewidget). It also uses a new way of handling the last entry of history:
1) If there is an item selected, the history combo contains the number of entry histories + 1 (the first one is the selected item).
2) If there is no item selected, the history combo only contains the history entries.
Now there is a tricky thing on my TODO. Set the icon when the result has been autocompleted.
Speed up the folderselector to bare-able performance again by expanding all
folders in one go at the end of a reload, instead of triggering updates
after every folder that is added and by disabling sorting, the order
should be that of the main folder tree anyhow, and given the quick search,
the ability to sort adds nothing, it just slows things down on initial load.
exam is written - so back to business:
removal of GLRenderTarget. Cube is now painted directly without painting to textures and then mapping the textures on to a cube.New solution is much faster, does not require GL_EXT_FRAMEBUFFER_OBJECT and currently has some regressions (mapping of windows around the edges does not work any more, desktop on the left is painted the wrong way).
countries_rainbow.svgz countries_standard.svgz diffs.txt discussion discussions.txt files moreinfo selected_revisions selections selections_raw selections_sorted selections.txt statistics.txt tmp Added Phonon bindings for the version of Phonon which will be included in KDE 4.1.
The statusbar now has a (non-functional) KLed on its
right side. If you want it on the left, move the new
lines to the top of initStatusBar().
The public accessor is KLed* KStars::diskLED()
The relevant functions to call are diskLED()->on() and
diskLed()->off() (or diskLED()->toggle()).
(BTW, FYI: this is going to be used to indicate when the
disk is being accessed to dynamically load more stars.
It will probably be configured to only show up for debug
builds, or at least will be hidden by default)
Pruning of #includes in ParleyPracticeMainWindow
Seperation of mode specific construction from the generic construction -- this will make new mode creation easier
Renaming of some poorly named signals/functions
Slight change of design -- the window now keeps pointers to the non-GUI-dependent/integral classes, which aided the ctor seperation.
At this point, my plan for implementing multiple modes is to add a setup<ModeName>() function, and call the appropriate one based on prefs.
Another option is subclassing ParleyPracticeMainWindow for each mode, but I think that would be more effort than it is worth.
Resolving an inconsistency between toolbar actions and
the configuration window: the view toolbar provides an
action to toggle all deep-sky objects on/off, but in the
configuration window, there were only controls for
individual catalogs (Messier, NGC, IC, etc).
I added a Checkbox to the configuration window to toggle
all deep-sky objects. Unchecking this box will disable
all deep-sky related widgets in the window, like the
"Hipparcos star catalog" checkbox does for stars. The
checkbox and the toolbar button are properly synced with
No new string was added, but there will be a fuzzy: I
adopted the "Deep-Sky Catalogs" string which was used as
a group-box title. The group box now has no title. For
consistency, I also removed the (redundant anyway) "Star
catalog" title from the stars group box. So that string
this is the wrong place for options such as "use background". putting it in each applet is absolutely insane. it also leads to rather annoying comments in bug reports which i really can't argue with because the user is being led to believe that this behaviour is sane. well, it isn't.
Workaround a certain popular plugin's version 10 beta's inability
to figure out that 13 < 16.
(AKA, stub out some ABI r16 methods that get called despite us claiming only ABI r13 support.
I could perhaps do more than stuff, but I can't find any docs!)
a nice improvement that fixes a small handful of packaging bugs and nuisances.
it allows us to do away with harcoding the wallpaper in multiple places (previously 3 places) in application code. as an extra bonus is also allows:
* the theme to define the default wallpaper
* the theme to ship with a default wallpaper (perhaps later on we can load wallpapers shipped with a theme in the config dialog?)
* the default wallpaper to defined in the plasmarc file (so downstream doesn't have to hack the code to change it)
"Revert <a href="<a href="http://websvn.kde.org/?rev=813156">r813156">http://websvn.kde.org/?rev=813156">r813156</a></a> - topquoting by default is good for KDAB's windows
migratees but just going to wind up longtime kmail users and *nix
people. For 4.2 consider adding a checkbox "Reply above quoted message"
that alters the value of defaultReply() and defaultReplyAll(). Anyone
wanting brownie points can implement this now using a hidden config
setting that defaults to false"
This again is a commit with various changes I didn't get to commit separately. Note to myself: Need local git repository to be able to work on more than one thing at a time.
o Set pie explode factor per dataset
o Update data correctly for two-dimensional data
o Initial work on embedded ODF loading/saving
o Delete member variables in shape destructor
o Use transparent background for circle and ring charts
Initial checkin of PopupDropper into playground, where it will be developed from now on.
Little documentation so far, but that will come eventually, once features are more or less complete and the interfaces have stabilized a bit more.