author | mickeyl <mickeyl> | 2003-10-29 22:07:36 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-10-29 22:07:36 (UTC) |
commit | d53637f46cf217fc760d7aac58b4596843a73803 (patch) (side-by-side diff) | |
tree | 25289be556fa1ce0ba8539b7f42aeaa037bdf7fd /development | |
parent | 1af1f1d9f398d38a2bc666cd2edff5725da7a770 (diff) | |
download | opie-d53637f46cf217fc760d7aac58b4596843a73803.zip opie-d53637f46cf217fc760d7aac58b4596843a73803.tar.gz opie-d53637f46cf217fc760d7aac58b4596843a73803.tar.bz2 |
merge development/* and help/*
-rwxr-xr-x | development/create_html_docu | 20 | ||||
-rwxr-xr-x | development/cvs_add_html_skeleton | 5 | ||||
-rwxr-xr-x | development/cvs_add_translation | 16 | ||||
-rw-r--r-- | development/documents/opie-todo.html | 46 | ||||
-rw-r--r-- | development/documents/opie-todo.inc | 262 | ||||
-rw-r--r-- | development/documents/opie-todo.xml | 59 | ||||
-rw-r--r-- | development/documents/opie.dtd | 24 | ||||
-rwxr-xr-x | development/mkHelpSkeleton | 116 | ||||
-rw-r--r-- | development/opie-1.mrproject | 151 | ||||
-rwxr-xr-x | development/sort_desktop_files.pl | 76 |
10 files changed, 775 insertions, 0 deletions
diff --git a/development/create_html_docu b/development/create_html_docu new file mode 100755 index 0000000..9ee0310 --- a/dev/null +++ b/development/create_html_docu @@ -0,0 +1,20 @@ +#!/bin/sh + +# $1 appname +# $2 AppName +# $3 Icon +# $4 filename to output + +echo "<html><head><title>$2</title></head><body>" > $4 +echo "<img src=\"$3.png\">" >> $4 +echo "<h1>$2</h1>" >> $4 + +echo "<P align=\"center\">FIXME Description<br>" >> $4 +echo "<ul align=\"left\">" >> $4 +echo "<li><a href=\"$1/about.html\">About</a></li>" >> $4 +echo "</ul>" >> $4 +echo "</body></html>" >> $4 +mkdir $OPIEDIR/help/en/html/$1 + + + diff --git a/development/cvs_add_html_skeleton b/development/cvs_add_html_skeleton new file mode 100755 index 0000000..c8d6351 --- a/dev/null +++ b/development/cvs_add_html_skeleton @@ -0,0 +1,5 @@ +#!/bin/sh + +echo "Adding HTML files for $1 to CVS" + +cvs add help/en/html/$1 help/en/html/$1.html help/en/html/opie-$1-help-en.control
\ No newline at end of file diff --git a/development/cvs_add_translation b/development/cvs_add_translation new file mode 100755 index 0000000..78268e2 --- a/dev/null +++ b/development/cvs_add_translation @@ -0,0 +1,16 @@ +#!/bin/sh + +foo="" + +for i in i18n/??; +do + foo="$foo $i/$1" + +done +for i in i18n/??_??; +do + foo="$foo $i/$1" + +done + +cvs add $foo diff --git a/development/documents/opie-todo.html b/development/documents/opie-todo.html new file mode 100644 index 0000000..839fe39 --- a/dev/null +++ b/development/documents/opie-todo.html @@ -0,0 +1,46 @@ +<!-- +<?php +$page = false; +if (file_exists('../page.inc')) { + include "../page.inc"; + page("verFeature3_2"); + $page = true; +} +?> +--> + +<?php + +$version = "1.0"; + +require_once "opie-todo.inc"; + +parse("opie-todo.xml"); +?> + +<table width="100%" border="0"> + <tr><td bgcolor="red"><div align="center">TODO</div></td><td bgcolor="#ffeeee"> + +<?php echo printHtml($version,'todo') ?> + + </td></tr> + + <tr><td bgcolor="yellow"><div align="center">In Progress</div></td><td bgcolor="#ffffee"> + +<?php echo printHtml($version,'inprogress') ?> + + </td></tr> + +<tr><td bgcolor="green"><div align="center">Finished</div></td><td bgcolor="#eeffee"> + +<?php printHtml($version,'done') ?> + +</td></tr> +</table> + +<?php +if ($page) { + footer(); +} + +?> diff --git a/development/documents/opie-todo.inc b/development/documents/opie-todo.inc new file mode 100644 index 0000000..69b4baa --- a/dev/null +++ b/development/documents/opie-todo.inc @@ -0,0 +1,262 @@ +<?php + +class KFeatures +{ + var $type = 'kdefeatures'; + var $parentID = null; + var $children = array(); + + function setParentID($id) + { + $this->parentID = $id; + } + function getParentID() + { + return $this->parentID; + } + function addChild(&$child) + { + $this->children[] = &$child; + } + function getHtml($target, $status) + { + $out = ''; + foreach ($this->children as $child) { + $out .= $child->getHtml($target, $status); + } + return $out; + } + +} + +class KCategory extends KFeatures +{ + + var $type = 'category'; + var $name = ''; + var $children = array(); + + function KCategory($name) + { + $this->name = $name; + } + function getHtml($target, $status) + { + $out = ''; + foreach ($this->children as $child) { + $temp = $child->getHtml( $target, $status); + # don't display empty categories + if ($child->type == "category" && strlen($temp)) + { + $out .= sprintf("\t<li>%s\t</li>\n", $temp); + } else { + $out .= $temp; + } + } + if (strlen($out)) { + return sprintf("<h2>%s</h2>\n\t<ul>\n%s\t</ul>\n\n",$this->name,$out); + } + return ''; + } +} + +class KFeature extends KFeatures +{ + + var $resp_name = array(); + var $resp_email = array(); + var $summary = ''; + var $status = ''; + var $target = ''; + var $type = 'feature'; + + function KFeature($status, $target) + { + $this->status = $status; + $this->target = $target; + } + function getStatus() + { + return $this->status; + } + function getTarget() + { + return $this->target; + } + function setResponsible($name = null, $email = null) + { + $this->resp_name[] = $name; + $this->resp_email[] = $email; + } + function getResponsible() + { + # Nobody responsible? + if (count($this->resp_name) == 0) return ''; + + $out = '<em>'; + for ($i = 0; $i < count($this->resp_name); $i++) { + if ($i > 0) $out .= ', '; + if ($this->resp_name[$i]) { + $out .= $this->resp_name[$i]; + } + if ($this->resp_name[$i] && $this->resp_email[$i]) $out .= " "; + if ($this->resp_email[$i]) { + $out .= '<'.$this->resp_email[$i].'>'; + } + } + $out .= '</em>'; + return $out; + } + function setSummary($summary) + { + $this->summary .= $summary.' '; + } + function getHtml($target, $status){ + if ($this->target == $target && $this->status == $status) { + return sprintf("\t\t<li>%s%s</li>\n",$this->summary,$this->getResponsible()); + } + return ''; + } + +} + +function startElement($parser, $name, $attrs) { + global $tags; + global $parentID; + + global $insummary; + global $pcdata; + global $curtag; + + switch ($name) { + case 'FEATURES': + $parentID = 0; + $obj = new KFeatures(); + $tags = array($obj); + + $insummary = false; + $pcdata = ''; + $curtag = ''; + break; + case 'CATEGORY': + $obj = new KCategory($attrs['NAME']); + $obj->setParentID($parentID); + $tags[] = $obj; + $currentID = count($tags) - 1; + $tags[$parentID]->addChild($tags[$currentID]); + $parentID = $currentID; + + break; + case 'FEATURE': + $obj = new KFeature($attrs['STATUS'], $attrs['TARGET']); + $obj->setParentID($parentID); + $tags[] = $obj; + $currentID = count($tags) - 1; + $tags[$parentID]->addChild($tags[$currentID]); + $parentID = $currentID; + break; + case 'RESPONSIBLE': + $n = count($tags) - 1; + $tags[$n]->setResponsible(@$attrs['NAME'], @$attrs['EMAIL']); + break; + case 'SUMMARY': + $insummary = true; + $pcdata = ''; + break; + default: + if (!$insummary) { + break; + } + $curtag = strtolower($name); + $att = ''; + foreach ($attrs as $k => $v) { + $att .= ' '.strtolower($k).'="'.$v.'"'; + } + + $pcdata .= '<'.$curtag.$att.'>'; + break; + } +} + +function endElement($parser, $name) { + global $parentID; + global $tags; + + global $curtag; + global $pcdata; + global $insummary; + + switch ($name) { + case "FEATURE": + $n = count($tags) - 1; + $parentID = $tags[$n]->getParentID(); + break; + case "CATEGORY": + $parentID = $tags[$parentID]->getParentID(); + break; + case "SUMMARY": + $n = count($tags) - 1; + $tags[$n]->setSummary($pcdata); + + $insummary = false; + $pcdata = ''; + break; + default: + if ($insummary) { + $pcdata .= '</'.$curtag.'>'; + } + break; + } +} + +function characterData($parser, $data) { + global $htmltag; + global $tags; + + global $pcdata; + global $curtag; + global $insummary; + + if (!$insummary) { + return; + } + $pcdata .= htmlspecialchars($data); +} + +function parse( $file ) { + + $xml_parser = xml_parser_create(); + + xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true); + xml_set_element_handler($xml_parser, "startElement", "endElement"); + xml_set_character_data_handler($xml_parser, "characterData"); + + if (!($fp = fopen($file, "r"))) { + die("could not open XML input"); + } + + + while ($data = fread($fp, 4096)) { + if (!xml_parse($xml_parser, $data, feof($fp))) { + die(sprintf("XML error: %s at line %d", + xml_error_string(xml_get_error_code($xml_parser)), + xml_get_current_line_number($xml_parser))); + } + } + + xml_parser_free($xml_parser); +} + + + +function printHtml($target, $status) +{ + global $tags; + if (!is_array($tags)) { + die('You must parse the xml file first with parse("filename.xml");'); + } + print($tags[0]->getHtml($target,$status)); +} + + +?> diff --git a/development/documents/opie-todo.xml b/development/documents/opie-todo.xml new file mode 100644 index 0000000..8766e92 --- a/dev/null +++ b/development/documents/opie-todo.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE features SYSTEM "opie.dtd"> + +<!-- + +This file serves as central repository of planned KDE features. It's parsed by +the PHP scripts in "features.inc" which are used by "kde-3.2-features.html" to +generate HTML versions for the web. + +If you plan to add a feature to KDE please add it to this file. A feature can +have one of three status types: "todo", "inprogress", "done". Please update +the status from time to time. For a release there shouldn't be any features +with other states than "done". If you can't complete a feature for a release +please move the feature to the next release. The "target" attribute specifies +for which release the feature should be finished. At the moment only the value +"3.2" is evaluated, but we will add pages showing the features for later +versions as needed. + +Each feature consists of a summary giving a short description what the feature is +about and one or more responsible persons. + +A draft for a DTD of the features file can be found in "kde-features.dtd". Use +"xmllint -valid -noout kde-features.xml" to validate the xml file against the +DTD. If there are errors in the XML document they will be shown, if not the +command will not output anything. + +If you have questions or comments please post them to the mailing list or contact +Cornelius Schumacher <schumacher@kde.org>. + +--> + +<features> +<category name="Documentation"> + <feature status="todo" target="1.0"> + <summary>Fix this file</summary> + <responsible name="Carsten Niehaus" email="cniehaus@handhelds.org" /> + </feature> + <feature status="done" target="1.0"> + <summary>add this file</summary> + <responsible name="Carsten Niehaus" email="cniehaus@handhelds.org" /> + </feature> + <feature status="todo" target="1.0"> + <summary>Datebook Recurrence Dialog not fully translated/translatable</summary> + </feature> + </category> +<category name="UI Bugs"> + <feature> + + </feature> +</category> +<category name="HTML Documentation"> + <feature status="todo" target="1.0"> + <summary>A hell lot of Documentation is missing. Check help/en/html</summary> + </feature> + <feature status="todo" target="1.0"> + <summary>OSearch DOCU does refer to settings.html which should be osearch/settings.html</summary> + </feature> +</category> +</features> diff --git a/development/documents/opie.dtd b/development/documents/opie.dtd new file mode 100644 index 0000000..3ed436b --- a/dev/null +++ b/development/documents/opie.dtd @@ -0,0 +1,24 @@ + +<!ELEMENT features (category+)> + +<!ELEMENT category (feature|category)*> +<!ATTLIST category name CDATA #REQUIRED > + +<!ELEMENT feature (summary?,responsible*)> +<!ATTLIST feature status (inprogress|todo|done) "todo" + target CDATA #REQUIRED> + +<!ELEMENT responsible EMPTY> +<!ATTLIST responsible name CDATA #IMPLIED + email CDATA #IMPLIED> + +<!ELEMENT summary (#PCDATA|i|a|b|em|strong)*> + +<!ELEMENT i (#PCDATA)> +<!ELEMENT b (#PCDATA)> +<!ELEMENT em (#PCDATA)> +<!ELEMENT strong (#PCDATA)> + +<!ELEMENT a (#PCDATA)> +<!ATTLIST a href CDATA #IMPLIED> +<!ATTLIST a title CDATA #IMPLIED> diff --git a/development/mkHelpSkeleton b/development/mkHelpSkeleton new file mode 100755 index 0000000..d7914fe --- a/dev/null +++ b/development/mkHelpSkeleton @@ -0,0 +1,116 @@ +#!/usr/bin/env python +""" +This skript creates a help skeleton for a certain application +(C) Michael 'Mickey' Lauer who did this even if he had a lot of other stuff to do... THANKS +""" + +import os +import sys + +COUNTRYCODES = "da de en fr nl pl hu no pt it pt_BR ja sl zh_CN es ko zh_TW".split() +OPIEDIR = os.environ["OPIEDIR"] + +#Package: opie-appskey-help-en +#Files: help/en/html/opie-appskey.html +#Priority: optional +#Section: opie/onlinedoc +#Maintainer: ljp <llornkcor@handhelds.org> +#Architecture: arm +#Version: $QPE_VERSION-$SUB_VERSION +#Depends: opie-appskey +#License: GPL +#Description: Application Key help files (english) + +def doit( name, cc ): + """Create a help skeleton corresponding to a package described by a desktop file.""" + + desktop = {} + for line in file( name ): + try: + key, value = line.split( '=' ) + except ValueError: + pass + else: + desktop[key.strip()] = value.strip() + + try: + application = desktop["Exec"] + except: + fail( "No Exec given in .desktop file" ) + + print "Generating help skeleton for application '%s'..." % application + helpdirname = "%s/help/%s/html" % ( OPIEDIR, cc ) + helpappdirname = "%s/%s" % ( helpdirname, application ) + makecontrol( helpdirname, application, cc, desktop ) + makedir( helpappdirname ) + makehtml( helpdirname, application, cc, desktop ) + +#------------------------------------------------------# +def makehtml( directory, application, cc, desktop ): + """Creates the help template file.""" + + helpfilename = "%s/%s.html" % ( directory, application ) + print "Creating help file '%s'" % helpfilename + h = file( helpfilename, "w" ) + print >> h, """<html> <head> <title>%s</title> </head> +<body> + <center><h1>%s</h1></center> + <hr> +</body> +</html> +""" % ( application, application ) + +#------------------------------------------------------# +def makecontrol( directory, application, cc, desktop ): + """Creates the .control file.""" + + controlfilename = "%s/opie-%s-help-%s.control" % ( directory, application, cc ) + print "Creating control file '%s'" % controlfilename + c = file( controlfilename, "w" ) + print >> c, "Package: opie-%s-help-%s" % ( application, cc ) + print >> c, "Files: help/%s/html/%s.html help/%s/html/%s" % ( cc, application, cc, application ) + print >> c, "Priority: optional" + print >> c, "Section: opie/onlinedoc" + print >> c, "Maintainer: %s" % desktop.get( "Maintainer", "Team Opie <opie@handhelds.org>" ) + print >> c, "Version: $QPE_VERSION-$SUB_VERSION" + print >> c, "Depends: opie-%s" % application + print >> c, "License: GPL" + print >> c, "Description: %s help files (%s)" % ( application, cc ) + +#------------------------------------------------------# +def makedir( name ): + """Creates a directory.""" + + print "Creating directory '%s'" % name + if not os.path.exists( name ): os.mkdir( name ) + +#------------------------------------------------------# +def fail( reason ): + """Fails with a reason.""" + print reason + sys.exit( -1 ) + +#------------------------------------------------------# +def checkUsage( args ): + """Checks calling syntax.""" + + if len( args ) < 2: + fail( """ +Usage: %s <application>.desktop [countrycode] + +If no countrycode is given, defaults to 'en' +If countrycode 'all' is given, generates skeletons +for all known countrycodes: %s""" % ( args[0], ", ".join( COUNTRYCODES ) ) ) + +#------------------------------------------------------# + +if __name__ == "__main__": + checkUsage( sys.argv ) + + if len ( sys.argv ) == 2: + doit( sys.argv[1], "en" ) + elif len( sys.argv ) == 3: + if sys.argv[2] == "all": + [ doit( sys.argv[1], x ) for x in split() ] + else: + doit( sys.argv[1], sys.argv[2] ) diff --git a/development/opie-1.mrproject b/development/opie-1.mrproject new file mode 100644 index 0000000..34836ac --- a/dev/null +++ b/development/opie-1.mrproject @@ -0,0 +1,151 @@ +<?xml version="1.0"?> +<project name="OPIE" company="OPIE" manager="Holger Freyther" phase="fixing bugs" project-start="20030518T000000Z" mrproject-version="2" calendar="1"> + <properties> + <property name="cost" type="cost" owner="resource" label="Cost" description="standard cost for a resource"/> + </properties> + <phases> + <phase name="fixing bugs"/> + <phase name="prepare release"/> + </phases> + <calendars> + <day-types> + <day-type id="0" name="Arbeitstag" description="Ein Vorgabe-Arbeitstag"/> + <day-type id="1" name="Kein Arbeitstag" description="Ein Vorgabetag, an dem nicht gearbeitet wird"/> + <day-type id="2" name="Basis verwenden" description="Tag aus dem Basis-Kalender verwenden"/> + </day-types> + <calendar id="1" name="Default"> + <default-week mon="0" tue="0" wed="0" thu="0" fri="0" sat="1" sun="1"/> + <overridden-day-types> + <overridden-day-type id="0"> + <interval start="0800" end="1200"/> + <interval start="1300" end="1700"/> + </overridden-day-type> + </overridden-day-types> + <days/> + </calendar> + </calendars> + <tasks> + <task id="1" name="Todo" note="" work="864000" start="20030518T000000Z" end="20030528T000000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <task id="2" name="General showstoppers" note="" work="864000" start="20030518T000000Z" end="20030528T000000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <task id="3" name="Majority of apps lack HTML documentation" note="" work="864000" start="20030518T000000Z" end="20030528T000000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="4" name="class OFileDialog" note="" work="576000" start="20030518T000000Z" end="20030524T160000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="5" name="Package Manager again broken?" note="" work="576000" start="20030518T000000Z" end="20030524T160000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="6" name="Syncing with QD hope TT helps here" note="" work="575100" start="20030518T000000Z" end="20030524T154500Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="7" name="No PPP Network Plugin ( Usability )" note="" work="576000" start="20030518T000000Z" end="20030524T160000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="8" name="Documents Tab" note="" work="576000" start="20030518T000000Z" end="20030524T160000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="9" name="Datebook Settings Dialog layout bugs" note="" work="576000" start="20030518T000000Z" end="20030524T160000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="10" name="What mail application to use?" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="11" name="What about our opie-bigapps dumpyard? make it compile?" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="12" name="Include osearch ( fairly easy )" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + </task> + <task id="13" name="Crashes and Odd Behaviour" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <task id="14" name="OPIE FTP crashes on startup" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="15" name="OPIE FTP has layout issues with translation. menubar too big and covering the tabwidget" note="" work="28800" start="20030518T000000Z" end="20030518T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="16" name="PDF Viewer crashes on all of my pdfs" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="17" name="opie-writer with multiple pages new KDE backport?" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="18" name="uBrowser and www.heise.de end in endless loop" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="19" name="Datebook in Weekview and WeekLst The by week navigation ( < > ) and (<< >> ) show odd behaviour ( > ) is not working" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="20" name="Datebook ConfigDialog has wrong layout" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="21" name="NetSytsemtime ErrorDialog too small for one line text use <qt>" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="22" name="NetSytsemtime does default to 24h but opie to AM/PM fix it" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="23" name="Formatter has problem with UI and different langs" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="24" name="Networksettings is missing a PPP Module" note="" work="284400" start="20030518T000000Z" end="20030521T070000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="25" name="Networksettings is not in my FEED" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="26" name="Security and Layout on translations" note="" work="284400" start="20030518T000000Z" end="20030521T070000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="27" name="Usermanager floatable toolbar fix it" note="" work="278100" start="20030518T000000Z" end="20030521T051500Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="28" name="Todolist on ARM is crahing on Delete All Completed" note="" work="284400" start="20030518T000000Z" end="20030521T070000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="29" name="Todolist odditites with Recurrence star date and handling of alarms" note="" work="28800" start="20030518T000000Z" end="20030518T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + </task> + <task id="30" name="improve i18n/docu" note="" work="1728000" start="20030518T000000Z" end="20030607T000000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <task id="31" name="use i18n/xx with every app" note="" work="864000" start="20030518T000000Z" end="20030528T000000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="32" name="check if the coreapps work in !en-langages" note="" work="864000" start="20030518T000000Z" end="20030528T000000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="33" name="translate the .desktop-files" note="" work="864000" start="20030518T000000Z" end="20030528T000000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="34" name="update/write documentation" note="" work="864000" start="20030518T000000Z" end="20030528T000000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="35" name="opie-console is missing German translation" note="" work="284400" start="20030518T000000Z" end="20030521T070000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="36" name="OPIE IRC refuses to be translated? namespaces?" note="" work="284400" start="20030518T000000Z" end="20030521T070000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="37" name="OPIE sheet refuses to be translated as well" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="38" name="TinyKATE misses translation? possible at all?" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="39" name="VNC German translation and consistency Bookmarkname vs. Lesezeichen" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="40" name="opie-writer ts doable?" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="41" name="Asteroids +Translation Message does not fit screen" note="" work="278100" start="20030518T000000Z" end="20030521T051500Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="42" name="Launcher/QPE not everything is translated" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="43" name="backgammon TS" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="44" name="KBounce Pause and ABout dialog not translated translatable?" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="45" name="Datebook Recurrence Dialog not fully translated or translatable" note="" work="284400" start="20030518T000000Z" end="20030521T070000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="46" name="SF Cave TS" note="" work="284400" start="20030518T000000Z" end="20030521T070000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="47" name="buzzword translation of the buzzwords?" note="" work="284400" start="20030518T000000Z" end="20030521T070000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="48" name="Backup and Restore .desktop + TS" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="49" name="Quit Application has Layout issues with Translation set the label to richtext" note="" work="280800" start="20030518T000000Z" end="20030521T060000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="50" name="OPIE PLayerI PlayListWidget refuses to be translated" note="" work="274500" start="20030518T000000Z" end="20030521T041500Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="51" name="Usermanager missing TS possible?" note="" work="280800" start="20030518T000000Z" end="20030521T060000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="52" name="Caption of wordgame says sample.. fix it" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + </task> + <task id="53" name="DOCU bugs" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <task id="54" name="OSEARCH link to settings is wrong" note="" work="288000" start="20030518T000000Z" end="20030521T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + </task> + </task> + <task id="55" name="Packaging bugs" note="" work="28800" start="20030518T000000Z" end="20030518T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <task id="56" name="task-opie-pim is missing osearch" note="" work="28800" start="20030518T000000Z" end="20030518T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="57" name="task-opie-settings: remove tabmanager which is not part of the release" note="" work="28800" start="20030518T000000Z" end="20030518T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + </task> + <task id="58" name="OPIE beta1" note="" work="288000" start="20030601T000000Z" end="20030604T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <constraint type="start-no-earlier-than" time="20030601T000000Z"/> + </task> + <task id="59" name="OPIE beta 2" note="" work="266400" start="20030614T000000Z" end="20030617T020000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <predecessors> + <predecessor id="1" predecessor-id="58" type="FS"/> + </predecessors> + <task id="60" name="decide which lang. will be released" note="" work="288000" start="20030614T000000Z" end="20030617T080000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <constraint type="start-no-earlier-than" time="20030614T000000Z"/> + </task> + </task> + <task id="61" name="OPIE rc1" note="" work="144000" start="20030627T170000Z" end="20030629T090000Z" percent-complete="0" type="normal" scheduling="fixed-work"> + <predecessors> + <predecessor id="1" predecessor-id="30" type="FS"/> + <predecessor id="1" predecessor-id="1" type="FS"/> + <predecessor id="1" predecessor-id="60" type="FS"/> + <predecessor id="1" predecessor-id="59" type="FS"/> + </predecessors> + <task id="62" name="test final images" note="" work="144000" start="20030627T170000Z" end="20030629T090000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="63" name="write Announcement" note="Sonntag, 18.05.2003, 16:14 " work="144000" start="20030627T170000Z" end="20030629T090000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + <task id="64" name="update Webpages" note="" work="144000" start="20030627T170000Z" end="20030629T090000Z" percent-complete="0" type="normal" scheduling="fixed-work"/> + </task> + <task id="65" name="OPIE 1.0" note="" work="0" start="20030704T170000Z" end="20030704T170000Z" percent-complete="0" type="milestone" scheduling="fixed-work"> + <predecessors> + <predecessor id="1" predecessor-id="61" type="FS"/> + </predecessors> + </task> + </tasks> + <resource-groups default_group="2"> + <group id="1" name="opie-i18n" admin-name="Carsten Niehaus" admin-phone="" admin-email="cniehaus@handhelds.org"/> + <group id="2" name="opie-core" admin-name="Holger Freyther" admin-phone="" admin-email="freyther@handhelds.org"/> + </resource-groups> + <resources> + <resource group="1" id="1" name="Carsten Niehaus" type="1" units="0" email="cniehaus@handhelds.org" note="" std-rate="0"> + <properties> + <property name="cost" value=""/> + </properties> + </resource> + <resource group="2" id="2" name="Holger Freyther" type="1" units="0" email="freyther@kde.org" note="" std-rate="0"> + <properties> + <property name="cost" value=""/> + </properties> + </resource> + <resource group="2" id="3" name="Patrick Vogt" type="1" units="0" email="tille@handhelds.org" note="" std-rate="0"> + <properties> + <property name="cost" value=""/> + </properties> + </resource> + </resources> + <allocations> + <allocation task-id="31" resource-id="1" units="100"/> + <allocation task-id="33" resource-id="1" units="100"/> + <allocation task-id="30" resource-id="1" units="100"/> + <allocation task-id="32" resource-id="1" units="100"/> + <allocation task-id="4" resource-id="2" units="100"/> + <allocation task-id="30" resource-id="2" units="100"/> + <allocation task-id="29" resource-id="2" units="100"/> + <allocation task-id="6" resource-id="2" units="100"/> + <allocation task-id="7" resource-id="3" units="100"/> + </allocations> +</project> diff --git a/development/sort_desktop_files.pl b/development/sort_desktop_files.pl new file mode 100755 index 0000000..e553b9e --- a/dev/null +++ b/development/sort_desktop_files.pl @@ -0,0 +1,76 @@ +#!/usr/bin/perl -w +# Copyright (c) 2002,2003 by +# Bruno Rodrigues <bruno.rodrigues@litux.org> +# under the GNU GPL license 2.0 or newer +# sort_desktop_files.pl,v 1.1.2.1 2003/07/01 02:22:56 davipt Exp +# ----------------------------------------------------- +# This script reads a .desktop file and sorts its values +# in the following format: +# [Desktop Entry] +# field1=val1 \ +# field2=val2 > Sorted by field name +# ... / +# Name=name +# Comment=comment +# Name[lang1]=... \ +# Comment[lang1]=... > Sorted by language name +# Name[lang2]=... / + +use strict; +use vars qw{$line %data %tr}; + +%data = (); %tr = (); + +# Read first line and make sure it's "[Desktop Entry]" +$line = <>; chop($line); +die "E: File does not start with [Desktop Entry] ($line)\n" unless $line =~ /^\[Desktop Entry\]$/; + +my $end=0; +while($line = <>) { + # Ignore fields without values + next if $line =~ /^\s*([^\s]+)\s*=\s*$/; + + # Ignore empty line in the end + if($line =~ /^\s*$/) { + if($end==0) { $end=1; next; + } else { die "E: Empty line in middle of file\n"; + } + } + + # Die if line is not "field = value" + die "E: Error in line - not field=value ($line)\n" unless $line =~ /^\s*([^\s]+)\s*=\s*(.+?)\s*$/; + + my ($key, $data) = ($1, $2); + + # Grab Name[lang] and Comment[lang] + if($key =~ /^(Name|Comment)\[(.+)\]$/i) { + $tr{$2}{$1} = $data; + } + # Grab Name and Comment + elsif($key =~ /^(Name|Comment)$/i) { + $tr{"0"}{$1} = $data; + } + # Die if there is other field[x] + elsif($key =~ /\[|\]/) { + die "E: Error in line - unknown field with [] ($line)\n"; + } + # Grab regular fields + else { + $data{$1} = $2; + } +} + + +print "[Desktop Entry]\n"; +foreach my $key (sort keys %data) { + print "$key=".$data{$key}."\n"; +} +foreach my $key (sort keys %tr) { + my %tr2 = %{$tr{$key}}; + foreach my $k2 (reverse sort keys %tr2) { + print $k2; + print "[$key]" unless $key eq "0"; + print "=". $tr2{$k2}. "\n"; + } +} + |