Use the C locale for project files
This issue should fix #78 (closed) and many related issues.
Tasks
First priority is to make sure that Kdenlive only writes project files with the C locale. From this point on, decimal separator issues should be gone with new projects.
Then, make sure that existing projects can still be loaded in cases where an earlier Kdenlive version could load them as well.
Lower priority is to also load project files which caused a crash in earlier versions. Those project files are atm. “lost” anyway (i.e. users are not working with them anymore because, well, they cannot) and recovering them would be nice to have.
Other parts should obviously not be affected (e.g. the UI should still use the correct language, input fields as well).
The change should work on Linux, Windows, and OS X.
Check that the following decimal separator bug occurrences do not happen anymore (# number is the issue number):
<!-- #78 (19.03.90) -->
<property name="meta.media.0.stream.frame_rate">29,9692</property> <!-- OK -->
<property name="meta.media.0.codec.frame_rate">29,97</property> <!-- OK -->
<property name="kdenlive:docproperties.decimalPoint">,</property> <!-- OK -->
<!-- #78 (18.12.1) -->
<property name="meta.media.0.stream.frame_rate">59,9401</property> <!-- OK -->
<property name="warp_speed">0,5</property> <!-- OK -->
# <filter> frei0r.defish0r
<property name="Interpolator">0,166</property> <!-- OK -->
<!-- #606 (20.07.70) -->
# <filter> frei0r.levels
<property name="Histogram position">0,3</property> <!-- OK -->
<property name="Gamma">00:00:02,800=0,25;00:00:03,040=0,6675</property> <!-- OK -->
<filter id="filter12">
<property name="channel">-1</property>
<property name="mlt_service">panner</property>
<property name="internal_added">237</property>
<property name="start">0,5</property> <!-- OK -->
<property name="disable">1</property>
</filter>
<filter id="filter15">
<property name="version">0,4</property> <!-- OK -->
<property name="mlt_service">frei0r.levels</property>
<property name="kdenlive_id">frei0r.levels</property>
</filter>
<filter id="filter21">
<property name="version">0,2</property> <!-- OK -->
<property name="mlt_service">frei0r.IIRblur</property>
<property name="kdenlive_id">frei0r.IIRblur</property>
<property name="Amount">00:00:00,000=0.002</property>
<property name="Type">0.999</property>
<property name="Edge">1</property>
<property name="kdenlive:collapsed">0</property>
</filter>
<filter id="filter23">
<property name="channel">-1</property>
<property name="mlt_service">panner</property>
<property name="internal_added">237</property>
<property name="start">0,5</property> <!-- OK -->
<property name="disable">1</property>
</filter>
<!-- #406488 (19.04.0) -->
Code todos
-
kdenlive_renderer: Check if old projects can still be loaded (with , as decimal separator) -
Remove the property kdenlive:docproperties.decimalPoint
and code related to it -
Check all LC_NUMERIC
occurrences -
Check all QLocale
occurrences (These do not affect the MLT part, but properties which we add to the .kdenlive file) -
Fix const QByteArray KdenliveDoc::getProjectXml()
(getter which has side effects) -
Rework/remove locale related parts in bool DocumentValidator::validate(const double currentVersion)
-
Convert widgets in a way that they only show localised numbers, but store/forward with C
locale -
Make sure DOCUMENTVERSION is newer than master
when merging -
Check timecode.cpp
ifgetTimecode()
needs a localised function for the UI -
Check all LC_NUMERIC
occurrences again