Contributors

This Week...

Among other work, Calligra sees improved OOXML, DOCX and MSWord support, Recent Projects assistant implemented in Kexi and numerous bugfixes.
Window decoration support for Wayland clients and other Wayland-specific modifications are added to Kwin.
Event loop in the IndexScheduler is added in Nepomuk.
Reduced memory usage for timezones in KDE-Libs by using a private class in KTimeZoneBackend.
Reworked item retrieval for Maildirs in KDE-PIM.
Fixed magnitude parameters calculation for comets in KStars.
Fixes in pgf and OpenMP support in Digikam.
Bugfixes in Krusader, including crash during a file move.
Added Qt Mobility Location plugin as a position provider in Marble.
Added working archiver and extractor in Gluon.
Bugfixes in KDE-Libs, KDevelop, Amarok, NetworkManagement.

Kdenlive starts using KDE's Git repository:

Recently the Kdenlive developers have started using the KDE Git repository. One of the Kdenlive developers Jean-Baptiste Mardelle introduces us to this video editor.

What is Kdenlive?

The idea behind Kdenlive was to make video editing possible and easy on the Linux desktop. Kdenlive allows you to capture videos from your camcorder or import video files, edit them, add effects and transitions then render to any format you want. It has an intuitive interface as well as some advanced features.

What is the history of the project?

The project was started in 2002, and at that time it used a different engine (called PIAVE) for video editing. Around 2005, the video engine's development stopped and Kdenlive almost died, the original author left the project. A few months later, Jean-Baptiste Mardelle, one of the developers was told about the MLT video engine, and decided to port Kdenlive to MLT. Since then, Kdenlive has slowly but steadily evolved, and in the last years several new contributors have joined the project, which is now recognized as a major actor in the Linux video editing scene.

What are the reasons for moving to KDE's Git, was SVN insufficient?

There are two main reasons. Until now, Kdenlive's code was hosted on SourceForge and we wanted to get closer to the KDE community, so that we can get more contributors and also take advantage of the KDE infrastructure. The other reason is that git makes it easier to work on new features in branches, so that we can keep trunk stable while developing new features.

How does Kdenlive compare to other free software video editors for
Unix-like OS's?

Kdenlive integrates well with the Desktop experience by using standard Qt and KDE technologies. It has a familiar look that makes it is easy to start working, while having some advanced features like 3 point editing, keyframable effects, color correction, scopes, stop motion utility, DVD export and can capture from firewire, HDMI or webcam.

Why does Kdenlive use the MLT-framework instead of the more ubiquitous GStreamer framework? What are the advantages and disadvantages?

The MLT framework was originally developed as a realtime framework for television broadcasting. As such, it provides a really good framework that brings together many multimedia projects like FFmpeg, sox, frei0r, jack, etc. Back in 2005, when the MLT engine was chosen, GStreamer did not provide the necessary features and since then, MLT was widely tested and is a reliable engine. We are also working closely with Dan Dennedy who is MLT's maintainer, which allowed us to integrate specific Kdenlive's features directly in MLT. All MLT features can be accessed using a simple XML syntax, and you can also manipulate the objects in realtime, for example changing an effect's parameters and see the changes in realtime while playing the project.

The disavantages of using MLT is that there are not much people working on MLT (mostly one), and that it relies a lot on FFmpeg. FFmpeg's dependency is an issue, because the project evolves quickly but does not release often (not to mention the recent fork and codec patent issues), so distros don't usually ship a recent FFmpeg version. In fact, almost half of the reported bugs come from installation issues, many people experience crashes because MLT or FFmpeg is not configured or installed properly.

What have been the most significant changes made to the application
recently?

The recent changes have been the addition of scopes that allow users to monitor the audio and video signal, and also a rewrite of the capture stuff, with support for some hardware to allow HDMI input / output (you can for example view your editing live on an HDMI monitor).
Several people are also currently working on the documentation which was never really up to date.

What are the plans for the future?

We are currently trying to refactor the source code to clean it up and make it easier for new contributors to get involved. One feature we will try to implement quickly is some kind of versioning for the project files, to ensure users don't lose their project's data. We would also like to implement unit tests to prevent regressions.

Bug Fixes

Development Tools

Sven Brauch committed changes in [kdev-python] /:

Fix imports like "import a.b.c".

It just creates a declaration named "a.b.c" now, and the expression
visitor checks whether such a declaration exists when parsing
attributes.
This is very convenient for autocompletion, too, as you are offered the
fully-qualified dotted name instead of the individual components (which
do not make sense at all).

1. added parents to widgets wherever convenient
2. remove m_currentDir and m_baseDir from fileviewhgplugin.h
3. recognize filename with unicode chars
4. fixed parent issue in commit dialog
5. HgStatusList::reloadTable and beginRetrieval gets version state
info of current repository from same function in HgWrapper.
6. Little changes in HgWrapper to make it contain QProcess rather
than inherit it. Will take time and mroe changes.
7. No other part of program uses QProcess functions except a couple
of signals. Done to make HgWrapper contain QProcess objects rather
than inherit it.

TODO:
1. Recursive add, remove.

FIXME:
1. Version state of directories having all unversioned files
2. HgWrapper. Since currenly under work, few functions may
not be working correctly.

Fixed the magnitudes parameters for comets. All magnitudes greater than or equal to 30
will be treated as abnormal and will have a default value of 99. Changed formula used
to calculate magnitude. New formula used is T-mag = M1 + 5*log10(delta) + k1*log10(r).
Formula from: http://ssd.jpl.nasa.gov/horizons.cgi

patch against original libpgf 6.11.24 to :
- Handle properly OpenMP depending of compiler/OS (inspired from libraw.org).
- Include only one omp.h instance in PGFplatform.h
- Support no OpenMP availability (else libpgf do not compile without OpenMP).
This patch must be included in next stable libpgf.

Raphael, i recommend too to change EOL as Unix like and to replace tab by 4 spaces.

Refactor most of the IndexScheduler code so that we have an event loop.
The indexing work has been shifted to a function called doIndexing()
which is called after certain internvals ( based on the indexing speed )
with the help of a QTimer.

This fixes a memory leak, where certain dbus messages would get queued
up, and that would result in the strigi service consuming large amounts
of memory.

This patch is not the ultimate solution as now the strigi service
becomes un-responsive to all dbus calls when it is indexing some files.
Need to investigate more.

KDE-PIM

Returning the internal data of a QByteArray from a local function
caused strange results such as output being repeated.
Fix by returning the QByteArray and calling its constData() when
streaming into the Std C++ output stream

Still not good enough, though, and I suspect this is because the cache
bitmap is filled with transparent black pixels from the start. I
experimented with a few other values (opaque white and transparent
white) but I couldn't get it to work anyway.

Fixed bug 275340 - Crash occurred while opening a file containing picture in its footer
Problem was that the placeholder loaded the image but then the placeholder was not used
and destroyed which also destroyed the image it had loaded. However this image was still
in the data for loading and therefore the image was no longer valid when it was then loaded
as part of the text shape which resulted in a crash.
This is fixed by loading the attributes only when they are used.

o ipatAuto means in UI "Clear" mode, and that means
use the background color
o ipatSolid means pattern that fully covers background
so use the foreground color
o other patterns are interpolation between foreground
and background color

* The previous approach to processing of sprmCFBold was not correct. The workaround
from applyCharacterProperties was already removed.
* Added an important FIXME into applyCharacterProperties.
* Improvements in readability of wv2 files.

TODO: Using the determineCHP function with the current istd is wrong! The CHPs
of the character style with the istd were already merged into the current CHP.

Fix cropped characters and header/footer crash.
This fixes 2 out of 3 issues from Lassi's list. In detail this fixes;
2) Many headers from page 4 onwards are missing text from their beginning
3) Click the header on page 4, then press left arrow key, notice a crash
Lot of thanks goes to Dag Anderseen and Casper Boemann.

Instead of just guessing search paths that might or might not works on
some platforms, call python and query the sys.path variable for search
paths. This also gives automatic configurability of search paths via the
PYTHONPATH environment variable, which will be appended to sys.path
automatically by the python interpreter.

Give a hint on correctness of previous answer with a flash of red or
green color for score string.

For user to learn from its mistakes and take confidence from its
successes on a short feedback, score label background is flashed with
red for a wrong answer and green for a right answer.
This was a request I received from a user very close to me : my wife ;-)

All view objects for which fill and stroke mean anything can now save their default fill and stroke.
View objects for which these things don't make sense (eg, fill for lines) no longer have the tab in their
dialogs.

The class Scene now inherits from QObject and has the Q_OBJECT macro. The inheriting classes SceneOpenGL and SceneXRender are provided with the Q_OBJECT macro. Now it is possible to use signals and slots and replace direct method calls.

Using Dolphin in default mode in master/4.7 whithout menubar the user has no actions to report a bug or switch language.
Add these missing actions the Help menu launched from the toolbar button Configure and control Dolphin.REVIEW: 101597

The method windowOpacityChanged is now a protected slot in class Scene. The implementations in the subclasses SceneOpenGL and SceneXRender are the same. The slots are connected to the singal opacityChanged() from Toplevel. The connection is done in the method windowAdded() in both SceneOpenGL and SceneXRender.

Adding a dummy KDecorationBridge implementation for Wayland Clients
and all Wayland clients create a decoration. Most of the decoration
related code is copied from KWin::Client stripped from X11 related
code. The methods are marked and should in future be merged into a
common base class for current X11 KWin::Client and Wayland::Client.

The window decoration for Wayland uses X11. This might look strange
but has two reasons:
1. Decoration used QWidget which currently requires X11.
2. Using X11 allows to install an event filter and pass mouse and
keyboard events to the Wayland client. This is also the reason why
all Wayland clients get a decoration at the moment.

Warning: currently hits an assertion in Oxygen with Wayland clients,
works fine at least with Aurorae and Plastik

Through the window decoration it becomes possible to change the
desktop of the Wayland client. Desktop is very simply implemented
with an int property representing the desktop the client is on.
When desktop changes the decoration is shown/hidden accordingly.

In opposite to the X11 implementation neither the client nor
Workspace is informed about the change. We will have to see what
we need from that.

Now, for connections restored from session, password is not requested
opening kate but only when connection is used (eg. execute a query).
Before querying, the connection will remain in an "idle" state,
notified by a new icon in the combo-box placed in the toolbar.

Now, for connections restored from session, password is not requested
opening kate but only when connection is used (eg. execute a query).
Before querying, the connection will remain in an "idle" state,
notified by a new icon in the combo-box placed in the toolbar.

Office

Added indir and outdir paramters to read/save created thumbnails to. This are base
dirs where the .check dirs are located in.
The added roundtrip test is disabled at the moment as there is still a problem
with it.

added support for caching intermediate results of formulas when
evaluating the outline of the enhanced path shape. this results
in a huge speedup for shapes with many dependencies between single
formulas.

Xlsx filter: Support for placeholder images of activeX controls
Pptx filter: Structural support for placeholder images of controls, actual support is not possible
for now as msoffice creates invalid xml for them.

Core, Main
*Shortcut files
**bumped version to v3: "name" for shortcuts to file-based databases is a full file path now. If the file is within the user's home directory, the dir is replaced with $HOME, e.g. name=$HOME/mydb.kexi. Not compatible with earlier versions but in these versions only filename was stored so the file was generally inaccessible anyway. "lastOpened" field added of type date/time (ISO format).
**saving and loading code moved to KexiProjectData
*Information about recent projects now saved, loaded and displayed properly

Good part is: NativeEGL approach is a little bit faster than
JavaEGLWrapper because it doesn't call any java code

Bad part is: NativeEGL uses some unorthodox APIs on platforms before
android-9, also the plugin needs to link to libEGL.so which is not
available on those platforms, so we need to compile it and to add it to
procompiled libs.

As an optimization, when a snapshot is loaded from a video file, it is
saved in a image file in ~/.videoThumbnails. When the grid was resized
that snapshot was used instead of loading a new snapshot from the video
file. Until now, that snapshot was loaded and rescaled on the GUI
thread, which made the UI freeze if there where a large number of video
files.

The IndexScheduler is now a regular QObject, but it is moved to
another thread using QObject::moveToThread. This way, all its
slots will be run in the other thread, and the normal event
loop will not get blocked will all these timers.

The SyncLib's ResourceIdentifier's identification mechanism was horribly
slow and was based on the number of properties matched ie scoring. This
approach did not give appropriate results for when the number of
identifying properties is very low.
Eg - Num Properties=4 and 1 property fails to match. Score = 3/4 = 0.75
Default threshold was 0.80, and therefore identification fails

Additionally it supported marking certain properties as 'vital',
and 'optional', which was very difficult to implement.

This new approach is based on how the DMS identifies the code.
* All properties with a literal range by default are identifying
* Certain other properties are marked as identifying
* Two resources are considered the same if no identifying property
has a different value. It's okay if the identifying property does
not exist.
If it does exist, then its value must be the same.

This patch removes scoring, and the concept of vital properties.
Optional Properties have been kept as they might be useful.

It is now incremental (using filesystem modification time) and bypasses
ItemSync for more efficiency. This fixes the massive resource use (I/O and
memory) when syncing a larger Maildir folder with only few changes.

Office

Lassi Nieminen committed changes in [calligra] /:

Docx filter: Make a simplification if there's a custom-shape which looks like a rectangle in reality and has
a picture as a fill element -> draw:frame & draw:image instead. This because calligra atm. does not support
wmf/emf picture in the fill element in graphic-properties. (thanks to thorsten for the idea)

WMF: Send the text rotation via the device context instead of as a parameter.

This is the first of a series of commits that will make more and more
information be sent to the backend via the playback device context.
This will simplify the API to the backend and make it simpler to
create new backends.

It will also remove some bugs that exist because of a confusion of
when a value is used. This is such an example, since the text
rotation that was used was the last one that was defined definition
and put into the object stack (mTextRotation from
META_CREATEFONTINDIRECT in the parser) instead of when it was last
used (META_SELECTOBJECT).

keep track of all used svg:id while writing the file so
we can actually make sure not to assign the same id twice.
also added some variation for the base name of newly generated
ids (i.e. gradient, pattern, clippath, filter, group, layer, shape)

Multimedia

Do not show progress information when fetching covers from the internet.

The transfers are usually quite fast, and getting lots of "Download ofhttp://whatever.com/blah has finished" KIO messages is not very
informative (JuK produces an "Album cover has been fetched" message of
its own anyway).

With the recent move of the tracks count from the status bar to the
playlist toolbar, and the disposal of the status bar, the playlist
toolbar has just grown too wide, and is not nicely usable on a netbook.
This commit moves 4 of the playlist actions into a menu in the playlist
toolbar, so we gain the horizontal space equivalent of 3 icons.
I dislike useless clicking as much as anybody so this solution is not
ideal, but not being able to make the playlist narrower is too much of
a deal breaker on netbooks.
Also, the icons are somewhat vertically misaligned by a pixel or two,
probably because they were done in different moments. We might consider
having them fixed.

Other

KDE Base

The SyncLib's ResourceIdentifier's identification mechanism was horribly
slow and was based on the number of properties matched ie scoring. This
approach did not give appropriate results for when the number of
identifying properties is very low.
Eg - Num Properties=4 and 1 property fails to match. Score = 3/4 = 0.75
Default threshold was 0.80, and therefore identification fails

Additionally it supported marking certain properties as 'vital',
and 'optional', which was very difficult to implement.

This new approach is based on how the DMS identifies the code.
* All properties with a literal range by default are identifying
* Certain other properties are marked as identifying
* Two resources are considered the same if no identifying property
has a different value. It's okay if the identifying property does
not exist.
If it does exist, then its value must be the same.

This patch removes scoring, and the concept of vital properties.
Optional Properties have been kept as they might be useful.

Office

This patch basically removes it from the backends. However it was not
used in the wmf import filter and it was clearly wrong in the painter
backend since the output transform was never applied to it in the
painter.