added ptask
authorJean-Philippe Orsini <jeanfi@gmail.com>
Wed, 15 Jun 2016 18:30:02 +0000 (20:30 +0200)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Wed, 15 Jun 2016 18:30:02 +0000 (20:30 +0200)
40 files changed:
src/ptask/docinfo.html [new file with mode: 0644]
src/ptask/ptask.adoc [new file with mode: 0644]
www-update.sh
www/index.html
www/mp3tool/mp3tool.html
www/ppastats/ppastats.html
www/psensor/NEWS.html
www/psensor/README.html
www/psensor/TODO.html
www/psensor/contribute.html
www/psensor/faq.html
www/psensor/index.html
www/psensor/remote.html
www/psensor/ubuntu.html
www/ptask/doc/0.0.4/NEWS.html [new file with mode: 0644]
www/ptask/doc/0.0.4/README.html [new file with mode: 0644]
www/ptask/doc/0.0.4/index.html [new file with mode: 0644]
www/ptask/doc/stable/NEWS.html [new file with mode: 0644]
www/ptask/doc/stable/README.html [new file with mode: 0644]
www/ptask/doc/stable/index.html [new file with mode: 0644]
www/ptask/files/patches/task_2.2.0_timesheet.patch [new file with mode: 0644]
www/ptask/files/ptask-0.0.1.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-0.0.2.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-0.0.3.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-0.0.4.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-0.0.5.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-0.0.6.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-0.0.6.tar.gz.asc [new file with mode: 0644]
www/ptask/files/ptask-0.0.7.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-0.0.7.tar.gz.asc [new file with mode: 0644]
www/ptask/files/ptask-0.0.8.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-0.0.8.tar.gz.asc [new file with mode: 0644]
www/ptask/files/ptask-0.0.9.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-0.0.9.tar.gz.asc [new file with mode: 0644]
www/ptask/files/ptask-1.0.0.tar.gz [new file with mode: 0644]
www/ptask/files/ptask-1.0.0.tar.gz.asc [new file with mode: 0644]
www/ptask/files/ptask-last.tar.gz [new file with mode: 0644]
www/ptask/ptask.html [new file with mode: 0644]
www/ptask/screenshots/ptask20120107.png [new file with mode: 0644]
www/ptask/screenshots/ptask20131201.png [new file with mode: 0644]

diff --git a/src/ptask/docinfo.html b/src/ptask/docinfo.html
new file mode 100644 (file)
index 0000000..de6e343
--- /dev/null
@@ -0,0 +1,2 @@
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
+<script src="../nav.js"></script>
diff --git a/src/ptask/ptask.adoc b/src/ptask/ptask.adoc
new file mode 100644 (file)
index 0000000..e909468
--- /dev/null
@@ -0,0 +1,113 @@
+= ptask
+:docinfo2:
+:icon: font
+
+`ptask` is a GTK+ graphical user interface for managing tasks.
+
+It is based on link:http://taskwarrior.org[taskwarrior], a well-known
+and robust command line tasks manager.
+
+Unlike `taskwarrior`, it is possible to associate a note (long
+description) to each task.
+
+The following releases of `taskwarrior` are supported:
+
+* 2.0.0
+* 2.2.0
+* 2.3.0
+* 2.4.0, 2.4.1
+* 2.5
+
+`ptask` is licensed under the GPLv2 terms and should compile on any
+modern GNU/Linux distribution.
+
+image:screenshots/ptask20131201.png[]
+
+== Installation on Ubuntu
+
+To install `ptask` on Ubuntu and derivates, the easiest way is to use
+the dedicated PPA:
+
+----
+sudo apt-add-repository ppa:jfi/ptask
+sudo apt-get update
+sudo apt-get install ptask
+----
+
+The PPA `ppa:jfi/ptask` contains the binary package of the last released
+version of ptask for the last released version of Ubuntu.
+
+== Installation from source archive
+
+`ptask` can be compiled and installed on any modern GNU/Linux distribution.
+
+=== Prerequisites
+
+The compilation of ptask requires:
+
+* asciidoc
+
+* autotools
+
+* cppcheck (optional, static source checker)
+
+* gcc
+
+* help2man
+
+* library gtk3
+
+* library json-c
+
+* make
+
+For Ubuntu 12.10:
+
+----
+sudo apt-get install autoconf automake asciidoc cppcheck gcc gettext autopoint help2man libgtk-3-dev libjson0-dev make perl
+---
+
+=== Download sources
+
+Download a source tarballs of a release and extracts its content:
+
+----
+mkdir TMP_DIR
+cd TMP_DIR
+wget http://wpitchoune.net/ptask/files/ptask-last.tar.gz
+tar -xzvf ptask-last.tar.gz
+cd ptask-*
+----
+
+Alternatively, you can get the last development snapshot of the
+sources directly from the GIT source repository:
+
+----
+mkdir TMP_DIR
+cd TMP_DIR
+git clone http://git.wpitchoune.net/ptask.git
+cd ptask
+----
+
+=== Compilation
+
+----
+./configure
+make clean all
+----
+
+=== Installation
+
+----
+make install
+----
+
+== Resources
+
+* Home page: http://wpitchoune.net/ptask.
+
+* Source tarballs: http://wpitchoune.net/ptask/files.
+
+== Contact
+
+Bugs and comments can be sent to jeanfi@gmail.com.
index e289059..bea28bf 100755 (executable)
@@ -37,3 +37,5 @@ OPTS="-a linkcss -a stylesheet=../style.css"
 asciidoctor $OPTS src/ppastats/ppastats.adoc -D www/ppastats/
 
 asciidoctor $OPTS src/mp3tool/mp3tool.adoc -D www/mp3tool/
+
+asciidoctor $OPTS src/ptask/ptask.adoc -D www/ptask/
index 1c816a7..10e9c40 100644 (file)
@@ -52,7 +52,7 @@ It is simple, really simple&#8230;&#8203; but enough for my needs.</p>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 16:20:05 CEST
+Last updated 2016-06-14 21:30:49 CEST
 </div>
 </div>
 </body>
index 6cbf7c6..9fa64de 100644 (file)
@@ -172,7 +172,7 @@ binary packages, see the ‘Download Links’ section of this page.</p>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-15 10:30:40 CEST
+Last updated 2016-06-15 10:46:45 CEST
 </div>
 </div>
 </body>
index da7e638..18ad72f 100644 (file)
@@ -140,7 +140,7 @@ git-buildpackage</pre>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 17:58:20 CEST
+Last updated 2016-06-14 21:30:49 CEST
 </div>
 </div>
 </body>
index 21424cb..050d1c1 100644 (file)
@@ -1953,7 +1953,7 @@ Initial release</pre>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 10:13:47 CEST
+Last updated 2016-06-13 16:59:04 CEST
 </div>
 </div>
 </body>
index db51095..e17a828 100644 (file)
@@ -320,7 +320,7 @@ have extracted the ATI ADL SDK. Other steps are indentical.</p>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 10:13:47 CEST
+Last updated 2016-06-13 16:57:56 CEST
 </div>
 </div>
 </body>
index 1dc304b..a489227 100644 (file)
@@ -37,7 +37,7 @@ lm-sensor.</p>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 10:13:47 CEST
+Last updated 2016-06-13 16:59:04 CEST
 </div>
 </div>
 </body>
index f90264e..c1d5fa4 100644 (file)
@@ -167,7 +167,7 @@ and released under GPL v2 license.</p>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 15:29:45 CEST
+Last updated 2016-06-14 21:30:49 CEST
 </div>
 </div>
 </body>
index df4e9fd..1d0909d 100644 (file)
@@ -451,7 +451,7 @@ of sensors.conf(5).</p>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 10:13:47 CEST
+Last updated 2016-06-13 16:59:04 CEST
 </div>
 </div>
 </body>
index 6f605d3..b01e599 100644 (file)
@@ -225,7 +225,7 @@ don’t hesitate to report it.</p>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 16:21:33 CEST
+Last updated 2016-06-14 21:30:49 CEST
 </div>
 </div>
 </body>
index 1850645..97074e9 100644 (file)
@@ -62,7 +62,7 @@ on the desktop computer with the following command line:</p>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 10:12:07 CEST
+Last updated 2016-06-13 18:24:18 CEST
 </div>
 </div>
 </body>
index 2deca93..325e6fe 100644 (file)
@@ -139,7 +139,7 @@ make clean all</pre>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2016-06-14 10:12:07 CEST
+Last updated 2016-06-13 17:33:07 CEST
 </div>
 </div>
 </body>
diff --git a/www/ptask/doc/0.0.4/NEWS.html b/www/ptask/doc/0.0.4/NEWS.html
new file mode 100644 (file)
index 0000000..bf3a333
--- /dev/null
@@ -0,0 +1,466 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.7" />\r
+<title>What&#8217;s New</title>\r
+<style type="text/css">\r
+body {\r
+    background: #FFFFFF;\r
+    color: #333333;\r
+    font-family: Ubuntu,Arial,sans-serif;\r
+    line-height: 1.6;\r
+    font-weight: lighter;\r
+    margin: 1em 2em 2em 2em;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+h1 {\r
+    font-size: 2.813em;\r
+    margin: 0 0 0.267em 0;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h2 {\r
+    font-size: 2em;\r
+    margin: 0 0 0.375em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h3 {\r
+    font-size: 1.438em;\r
+    margin: 0 0 0.522em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h4 {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h5 {\r
+    font-size: 1em;\r
+    margin: 0 0 0.75em;\r
+    padding: 0 0 0 0;\r
+    font-weight: bold;\r
+}\r
+\r
+h6 {\r
+    font-weight: normal;\r
+    font-size: 0.813em;\r
+    letter-spacing: 0.1em;\r
+    margin: 0 0 0.923em;\r
+    text-transform: uppercase;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+li {\r
+    margin: 0 0 0 1em;\r
+    line-height: 1.6;\r
+}\r
+\r
+li p {\r
+    margin: 0 0 0 0;\r
+}\r
+\r
+ul {\r
+    margin: 0 0 0 0;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+a:link, a:visited {\r
+    color: #19B6EE;\r
+    text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+    text-decoration: underline;\r
+}\r
+\r
+code, pre, tt {\r
+    font-family: "Ubuntu Mono","Courier New",Courier,monospace;\r
+    font-weight: normal;\r
+    color: #333333;\r
+}\r
+\r
+pre {\r
+    background: none repeat scroll 0 0 #e0e0e0;\r
+    border-radius: 4px;\r
+    padding: 0.5em 0.5em;\r
+    margin: 0 0 0 0;\r
+    white-space: pre-wrap;\r
+    word-wrap: break-word;\r
+}\r
+\r
+/* ASCIIDOC */\r
+\r
+div.toclevel2 {\r
+    margin-left: 1em;\r
+}\r
+\r
+#toctitle {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+#footer {\r
+    margin: 2em 0 0 0;\r
+    font-size: 0.8em;\r
+    font-weight: lighter;\r
+}\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+var asciidoc = {  // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+  function getText(el) {\r
+    var text = "";\r
+    for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+        text += i.data;\r
+      else if (i.firstChild != null)\r
+        text += getText(i);\r
+    }\r
+    return text;\r
+  }\r
+\r
+  function TocEntry(el, text, toclevel) {\r
+    this.element = el;\r
+    this.text = text;\r
+    this.toclevel = toclevel;\r
+  }\r
+\r
+  function tocEntries(el, toclevels) {\r
+    var result = new Array;\r
+    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
+    // Function that scans the DOM tree for header elements (the DOM2\r
+    // nodeIterator API would be a better technique but not supported by all\r
+    // browsers).\r
+    var iterate = function (el) {\r
+      for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+          var mo = re.exec(i.tagName);\r
+          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+          }\r
+          iterate(i);\r
+        }\r
+      }\r
+    }\r
+    iterate(el);\r
+    return result;\r
+  }\r
+\r
+  var toc = document.getElementById("toc");\r
+  if (!toc) {\r
+    return;\r
+  }\r
+\r
+  // Delete existing TOC entries in case we're reloading the TOC.\r
+  var tocEntriesToRemove = [];\r
+  var i;\r
+  for (i = 0; i < toc.childNodes.length; i++) {\r
+    var entry = toc.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div'\r
+     && entry.getAttribute("class")\r
+     && entry.getAttribute("class").match(/^toclevel/))\r
+      tocEntriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+    toc.removeChild(tocEntriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild TOC entries.\r
+  var entries = tocEntries(document.getElementById("content"), toclevels);\r
+  for (var i = 0; i < entries.length; ++i) {\r
+    var entry = entries[i];\r
+    if (entry.element.id == "")\r
+      entry.element.id = "_toc_" + i;\r
+    var a = document.createElement("a");\r
+    a.href = "#" + entry.element.id;\r
+    a.appendChild(document.createTextNode(entry.text));\r
+    var div = document.createElement("div");\r
+    div.appendChild(a);\r
+    div.className = "toclevel" + entry.toclevel;\r
+    toc.appendChild(div);\r
+  }\r
+  if (entries.length == 0)\r
+    toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+  // Delete existing footnote entries in case we're reloading the footnodes.\r
+  var i;\r
+  var noteholder = document.getElementById("footnotes");\r
+  if (!noteholder) {\r
+    return;\r
+  }\r
+  var entriesToRemove = [];\r
+  for (i = 0; i < noteholder.childNodes.length; i++) {\r
+    var entry = noteholder.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+      entriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < entriesToRemove.length; i++) {\r
+    noteholder.removeChild(entriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild footnote entries.\r
+  var cont = document.getElementById("content");\r
+  var spans = cont.getElementsByTagName("span");\r
+  var refs = {};\r
+  var n = 0;\r
+  for (i=0; i<spans.length; i++) {\r
+    if (spans[i].className == "footnote") {\r
+      n++;\r
+      var note = spans[i].getAttribute("data-note");\r
+      if (!note) {\r
+        // Use [\s\S] in place of . so multi-line matches work.\r
+        // Because JavaScript has no s (dotall) regex flag.\r
+        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+        spans[i].innerHTML =\r
+          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+        spans[i].setAttribute("data-note", note);\r
+      }\r
+      noteholder.innerHTML +=\r
+        "<div class='footnote' id='_footnote_" + n + "'>" +\r
+        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+        n + "</a>. " + note + "</div>";\r
+      var id =spans[i].getAttribute("id");\r
+      if (id != null) refs["#"+id] = n;\r
+    }\r
+  }\r
+  if (n == 0)\r
+    noteholder.parentNode.removeChild(noteholder);\r
+  else {\r
+    // Process footnoterefs.\r
+    for (i=0; i<spans.length; i++) {\r
+      if (spans[i].className == "footnoteref") {\r
+        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+        href = href.match(/#.*/)[0];  // Because IE return full URL.\r
+        n = refs[href];\r
+        spans[i].innerHTML =\r
+          "[<a href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+      }\r
+    }\r
+  }\r
+},\r
+\r
+install: function(toclevels) {\r
+  var timerId;\r
+\r
+  function reinstall() {\r
+    asciidoc.footnotes();\r
+    if (toclevels) {\r
+      asciidoc.toc(toclevels);\r
+    }\r
+  }\r
+\r
+  function reinstallAndRemoveTimer() {\r
+    clearInterval(timerId);\r
+    reinstall();\r
+  }\r
+\r
+  timerId = setInterval(reinstall, 500);\r
+  if (document.addEventListener)\r
+    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+  else\r
+    window.onload = reinstallAndRemoveTimer;\r
+}\r
+\r
+}\r
+asciidoc.install();\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="article">\r
+<div id="header">\r
+<h1>What&#8217;s New</h1>\r
+</div>\r
+<div id="content">\r
+<div class="sect1">\r
+<h2 id="_v0_0_4">v0.0.4</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+fixed i18n support.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added --version and --help options.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added manpage.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+popup error dialog when .taskrc does not exist.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added --debug.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added taskwarrior version checking (supported version are 2.2.0 and 2.0.0).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added support for taskwarrior 2.2.0 (avoid confirmation query).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added window position and size restore.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added tasks sort column/order restore.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+fixed error message displayed when a note does not exist.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+new task dialog allow to set description and priority.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added project table to filter the list of tasks.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added application icon.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added remove task button.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_v0_0_3">v0.0.3</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+fixed window close to terminate the application.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added README.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+generated HTML version of README and NEWS files.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added fr translation and i18n support.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_v0_0_2">v0.0.2</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+added refresh keyboard shortcut (ALT-r).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added new task keyboard shortcut (ALT-n).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+renamed gtask to ptask.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_v0_0_1">v0.0.1</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Initial release.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2013-12-01 13:58:06 CET\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/www/ptask/doc/0.0.4/README.html b/www/ptask/doc/0.0.4/README.html
new file mode 100644 (file)
index 0000000..26ed8f4
--- /dev/null
@@ -0,0 +1,491 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.7" />\r
+<title>ptask README</title>\r
+<style type="text/css">\r
+body {\r
+    background: #FFFFFF;\r
+    color: #333333;\r
+    font-family: Ubuntu,Arial,sans-serif;\r
+    line-height: 1.6;\r
+    font-weight: lighter;\r
+    margin: 1em 2em 2em 2em;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+h1 {\r
+    font-size: 2.813em;\r
+    margin: 0 0 0.267em 0;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h2 {\r
+    font-size: 2em;\r
+    margin: 0 0 0.375em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h3 {\r
+    font-size: 1.438em;\r
+    margin: 0 0 0.522em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h4 {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h5 {\r
+    font-size: 1em;\r
+    margin: 0 0 0.75em;\r
+    padding: 0 0 0 0;\r
+    font-weight: bold;\r
+}\r
+\r
+h6 {\r
+    font-weight: normal;\r
+    font-size: 0.813em;\r
+    letter-spacing: 0.1em;\r
+    margin: 0 0 0.923em;\r
+    text-transform: uppercase;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+li {\r
+    margin: 0 0 0 1em;\r
+    line-height: 1.6;\r
+}\r
+\r
+li p {\r
+    margin: 0 0 0 0;\r
+}\r
+\r
+ul {\r
+    margin: 0 0 0 0;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+a:link, a:visited {\r
+    color: #19B6EE;\r
+    text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+    text-decoration: underline;\r
+}\r
+\r
+code, pre, tt {\r
+    font-family: "Ubuntu Mono","Courier New",Courier,monospace;\r
+    font-weight: normal;\r
+    color: #333333;\r
+}\r
+\r
+pre {\r
+    background: none repeat scroll 0 0 #e0e0e0;\r
+    border-radius: 4px;\r
+    padding: 0.5em 0.5em;\r
+    margin: 0 0 0 0;\r
+    white-space: pre-wrap;\r
+    word-wrap: break-word;\r
+}\r
+\r
+/* ASCIIDOC */\r
+\r
+div.toclevel2 {\r
+    margin-left: 1em;\r
+}\r
+\r
+#toctitle {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+#footer {\r
+    margin: 2em 0 0 0;\r
+    font-size: 0.8em;\r
+    font-weight: lighter;\r
+}\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+var asciidoc = {  // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+  function getText(el) {\r
+    var text = "";\r
+    for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+        text += i.data;\r
+      else if (i.firstChild != null)\r
+        text += getText(i);\r
+    }\r
+    return text;\r
+  }\r
+\r
+  function TocEntry(el, text, toclevel) {\r
+    this.element = el;\r
+    this.text = text;\r
+    this.toclevel = toclevel;\r
+  }\r
+\r
+  function tocEntries(el, toclevels) {\r
+    var result = new Array;\r
+    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
+    // Function that scans the DOM tree for header elements (the DOM2\r
+    // nodeIterator API would be a better technique but not supported by all\r
+    // browsers).\r
+    var iterate = function (el) {\r
+      for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+          var mo = re.exec(i.tagName);\r
+          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+          }\r
+          iterate(i);\r
+        }\r
+      }\r
+    }\r
+    iterate(el);\r
+    return result;\r
+  }\r
+\r
+  var toc = document.getElementById("toc");\r
+  if (!toc) {\r
+    return;\r
+  }\r
+\r
+  // Delete existing TOC entries in case we're reloading the TOC.\r
+  var tocEntriesToRemove = [];\r
+  var i;\r
+  for (i = 0; i < toc.childNodes.length; i++) {\r
+    var entry = toc.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div'\r
+     && entry.getAttribute("class")\r
+     && entry.getAttribute("class").match(/^toclevel/))\r
+      tocEntriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+    toc.removeChild(tocEntriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild TOC entries.\r
+  var entries = tocEntries(document.getElementById("content"), toclevels);\r
+  for (var i = 0; i < entries.length; ++i) {\r
+    var entry = entries[i];\r
+    if (entry.element.id == "")\r
+      entry.element.id = "_toc_" + i;\r
+    var a = document.createElement("a");\r
+    a.href = "#" + entry.element.id;\r
+    a.appendChild(document.createTextNode(entry.text));\r
+    var div = document.createElement("div");\r
+    div.appendChild(a);\r
+    div.className = "toclevel" + entry.toclevel;\r
+    toc.appendChild(div);\r
+  }\r
+  if (entries.length == 0)\r
+    toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+  // Delete existing footnote entries in case we're reloading the footnodes.\r
+  var i;\r
+  var noteholder = document.getElementById("footnotes");\r
+  if (!noteholder) {\r
+    return;\r
+  }\r
+  var entriesToRemove = [];\r
+  for (i = 0; i < noteholder.childNodes.length; i++) {\r
+    var entry = noteholder.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+      entriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < entriesToRemove.length; i++) {\r
+    noteholder.removeChild(entriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild footnote entries.\r
+  var cont = document.getElementById("content");\r
+  var spans = cont.getElementsByTagName("span");\r
+  var refs = {};\r
+  var n = 0;\r
+  for (i=0; i<spans.length; i++) {\r
+    if (spans[i].className == "footnote") {\r
+      n++;\r
+      var note = spans[i].getAttribute("data-note");\r
+      if (!note) {\r
+        // Use [\s\S] in place of . so multi-line matches work.\r
+        // Because JavaScript has no s (dotall) regex flag.\r
+        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+        spans[i].innerHTML =\r
+          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+        spans[i].setAttribute("data-note", note);\r
+      }\r
+      noteholder.innerHTML +=\r
+        "<div class='footnote' id='_footnote_" + n + "'>" +\r
+        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+        n + "</a>. " + note + "</div>";\r
+      var id =spans[i].getAttribute("id");\r
+      if (id != null) refs["#"+id] = n;\r
+    }\r
+  }\r
+  if (n == 0)\r
+    noteholder.parentNode.removeChild(noteholder);\r
+  else {\r
+    // Process footnoterefs.\r
+    for (i=0; i<spans.length; i++) {\r
+      if (spans[i].className == "footnoteref") {\r
+        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+        href = href.match(/#.*/)[0];  // Because IE return full URL.\r
+        n = refs[href];\r
+        spans[i].innerHTML =\r
+          "[<a href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+      }\r
+    }\r
+  }\r
+},\r
+\r
+install: function(toclevels) {\r
+  var timerId;\r
+\r
+  function reinstall() {\r
+    asciidoc.footnotes();\r
+    if (toclevels) {\r
+      asciidoc.toc(toclevels);\r
+    }\r
+  }\r
+\r
+  function reinstallAndRemoveTimer() {\r
+    clearInterval(timerId);\r
+    reinstall();\r
+  }\r
+\r
+  timerId = setInterval(reinstall, 500);\r
+  if (document.addEventListener)\r
+    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+  else\r
+    window.onload = reinstallAndRemoveTimer;\r
+}\r
+\r
+}\r
+asciidoc.install(2);\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="article">\r
+<div id="header">\r
+<h1>ptask README</h1>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="content">\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>ptask</tt> is a GTK+ graphical user interface for managing tasks.</p></div>\r
+<div class="paragraph"><p>It is based on <a href="http://taskwarrior.org">taskwarrior</a>, a well-known and robust command line\r
+tasks manager.</p></div>\r
+<div class="paragraph"><p>Unlike <tt>taskwarrior</tt>, it is possible to associate a note (long\r
+description) to each task.</p></div>\r
+<div class="paragraph"><p><tt>ptask</tt> is licensed under the GPLv2 terms and should compile on any\r
+modern GNU/Linux distribution.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_on_ubuntu">1. Installation on Ubuntu</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To install <tt>ptask</tt> on Ubuntu and derivates, the easiest way is to use the dedicated PPA:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-add-repository ppa:jfi/ptask\r
+sudo apt-get update\r
+sudo apt-get install ptask</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The PPA <tt>ppa:jfi/ptask</tt> contains the binary package of the last\r
+released version of <tt>ptask</tt> for the last released version of Ubuntu.</p></div>\r
+<div class="paragraph"><p>The PPA <tt>ppa:jfi/ptask-daily</tt> contains the binary package of the last\r
+development snapshot. It should only be used for testing purpose.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_from_source_archive">2. Installation from source archive</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>ptask</tt> can be compiled and installed on any modern GNU/Linux\r
+distribution.</p></div>\r
+<div class="sect2">\r
+<h3 id="_prerequisites">2.1. Prerequisites</h3>\r
+<div class="paragraph"><p>The compilation of <tt>ptask</tt> requires:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+asciidoc\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+autotools\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+cppcheck (optional, static source checker)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+gcc\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+help2man\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library gtk3\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library json-c\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+make\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>For Ubuntu 12.10:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get install autoconf automake asciidoc cppcheck gcc gettext autopoint help2man libgtk-3-dev libjson0-dev make perl</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_download_sources">2.2. Download sources</h3>\r
+<div class="paragraph"><p>Download a source tarballs of a release and extracts its content:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mkdir TMP_DIR\r
+cd TMP_DIR\r
+wget http://wpitchoune.net/ptask/files/ptask-last.tar.gz\r
+tar -xzvf ptask-last.tar.gz\r
+cd ptask-*</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Alternatively, you can get the last development snapshot of the\r
+sources directly from the SVN source repository:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mkdir TMP_DIR\r
+cd TMP_DIR\r
+svn co http://wpitchoune.net/svnpub/ptask/trunk\r
+cd trunk</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_compilation">2.3. Compilation</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>./configure\r
+make clean all</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_installation">2.4. Installation</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>make install</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_resources">3. Resources</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<strong>Home page</strong>: <a href="http://wpitchoune.net/ptask">http://wpitchoune.net/ptask</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>RSS feed</strong>: <a href="http://wpitchoune.net/blog/category/ptask/feed/">http://wpitchoune.net/blog/category/ptask/feed/</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Release changes</strong>: <a href="NEWS.html">NEWS</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Source tarballs</strong>: <a href="http://wpitchoune.net/ptask/files">http://wpitchoune.net/ptask/files</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Documentation</strong>: <a href="http://wpitchoune.net/ptask/doc">http://wpitchoune.net/ptask/doc</a>.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_contact">4. Contact</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Bugs and comments can be sent to <a href="mailto:jeanfi@gmail.com">jeanfi@gmail.com</a>.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2013-12-01 17:39:17 CET\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/www/ptask/doc/0.0.4/index.html b/www/ptask/doc/0.0.4/index.html
new file mode 100644 (file)
index 0000000..26ed8f4
--- /dev/null
@@ -0,0 +1,491 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.7" />\r
+<title>ptask README</title>\r
+<style type="text/css">\r
+body {\r
+    background: #FFFFFF;\r
+    color: #333333;\r
+    font-family: Ubuntu,Arial,sans-serif;\r
+    line-height: 1.6;\r
+    font-weight: lighter;\r
+    margin: 1em 2em 2em 2em;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+h1 {\r
+    font-size: 2.813em;\r
+    margin: 0 0 0.267em 0;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h2 {\r
+    font-size: 2em;\r
+    margin: 0 0 0.375em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h3 {\r
+    font-size: 1.438em;\r
+    margin: 0 0 0.522em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h4 {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h5 {\r
+    font-size: 1em;\r
+    margin: 0 0 0.75em;\r
+    padding: 0 0 0 0;\r
+    font-weight: bold;\r
+}\r
+\r
+h6 {\r
+    font-weight: normal;\r
+    font-size: 0.813em;\r
+    letter-spacing: 0.1em;\r
+    margin: 0 0 0.923em;\r
+    text-transform: uppercase;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+li {\r
+    margin: 0 0 0 1em;\r
+    line-height: 1.6;\r
+}\r
+\r
+li p {\r
+    margin: 0 0 0 0;\r
+}\r
+\r
+ul {\r
+    margin: 0 0 0 0;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+a:link, a:visited {\r
+    color: #19B6EE;\r
+    text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+    text-decoration: underline;\r
+}\r
+\r
+code, pre, tt {\r
+    font-family: "Ubuntu Mono","Courier New",Courier,monospace;\r
+    font-weight: normal;\r
+    color: #333333;\r
+}\r
+\r
+pre {\r
+    background: none repeat scroll 0 0 #e0e0e0;\r
+    border-radius: 4px;\r
+    padding: 0.5em 0.5em;\r
+    margin: 0 0 0 0;\r
+    white-space: pre-wrap;\r
+    word-wrap: break-word;\r
+}\r
+\r
+/* ASCIIDOC */\r
+\r
+div.toclevel2 {\r
+    margin-left: 1em;\r
+}\r
+\r
+#toctitle {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+#footer {\r
+    margin: 2em 0 0 0;\r
+    font-size: 0.8em;\r
+    font-weight: lighter;\r
+}\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+var asciidoc = {  // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+  function getText(el) {\r
+    var text = "";\r
+    for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+        text += i.data;\r
+      else if (i.firstChild != null)\r
+        text += getText(i);\r
+    }\r
+    return text;\r
+  }\r
+\r
+  function TocEntry(el, text, toclevel) {\r
+    this.element = el;\r
+    this.text = text;\r
+    this.toclevel = toclevel;\r
+  }\r
+\r
+  function tocEntries(el, toclevels) {\r
+    var result = new Array;\r
+    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
+    // Function that scans the DOM tree for header elements (the DOM2\r
+    // nodeIterator API would be a better technique but not supported by all\r
+    // browsers).\r
+    var iterate = function (el) {\r
+      for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+          var mo = re.exec(i.tagName);\r
+          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+          }\r
+          iterate(i);\r
+        }\r
+      }\r
+    }\r
+    iterate(el);\r
+    return result;\r
+  }\r
+\r
+  var toc = document.getElementById("toc");\r
+  if (!toc) {\r
+    return;\r
+  }\r
+\r
+  // Delete existing TOC entries in case we're reloading the TOC.\r
+  var tocEntriesToRemove = [];\r
+  var i;\r
+  for (i = 0; i < toc.childNodes.length; i++) {\r
+    var entry = toc.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div'\r
+     && entry.getAttribute("class")\r
+     && entry.getAttribute("class").match(/^toclevel/))\r
+      tocEntriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+    toc.removeChild(tocEntriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild TOC entries.\r
+  var entries = tocEntries(document.getElementById("content"), toclevels);\r
+  for (var i = 0; i < entries.length; ++i) {\r
+    var entry = entries[i];\r
+    if (entry.element.id == "")\r
+      entry.element.id = "_toc_" + i;\r
+    var a = document.createElement("a");\r
+    a.href = "#" + entry.element.id;\r
+    a.appendChild(document.createTextNode(entry.text));\r
+    var div = document.createElement("div");\r
+    div.appendChild(a);\r
+    div.className = "toclevel" + entry.toclevel;\r
+    toc.appendChild(div);\r
+  }\r
+  if (entries.length == 0)\r
+    toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+  // Delete existing footnote entries in case we're reloading the footnodes.\r
+  var i;\r
+  var noteholder = document.getElementById("footnotes");\r
+  if (!noteholder) {\r
+    return;\r
+  }\r
+  var entriesToRemove = [];\r
+  for (i = 0; i < noteholder.childNodes.length; i++) {\r
+    var entry = noteholder.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+      entriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < entriesToRemove.length; i++) {\r
+    noteholder.removeChild(entriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild footnote entries.\r
+  var cont = document.getElementById("content");\r
+  var spans = cont.getElementsByTagName("span");\r
+  var refs = {};\r
+  var n = 0;\r
+  for (i=0; i<spans.length; i++) {\r
+    if (spans[i].className == "footnote") {\r
+      n++;\r
+      var note = spans[i].getAttribute("data-note");\r
+      if (!note) {\r
+        // Use [\s\S] in place of . so multi-line matches work.\r
+        // Because JavaScript has no s (dotall) regex flag.\r
+        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+        spans[i].innerHTML =\r
+          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+        spans[i].setAttribute("data-note", note);\r
+      }\r
+      noteholder.innerHTML +=\r
+        "<div class='footnote' id='_footnote_" + n + "'>" +\r
+        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+        n + "</a>. " + note + "</div>";\r
+      var id =spans[i].getAttribute("id");\r
+      if (id != null) refs["#"+id] = n;\r
+    }\r
+  }\r
+  if (n == 0)\r
+    noteholder.parentNode.removeChild(noteholder);\r
+  else {\r
+    // Process footnoterefs.\r
+    for (i=0; i<spans.length; i++) {\r
+      if (spans[i].className == "footnoteref") {\r
+        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+        href = href.match(/#.*/)[0];  // Because IE return full URL.\r
+        n = refs[href];\r
+        spans[i].innerHTML =\r
+          "[<a href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+      }\r
+    }\r
+  }\r
+},\r
+\r
+install: function(toclevels) {\r
+  var timerId;\r
+\r
+  function reinstall() {\r
+    asciidoc.footnotes();\r
+    if (toclevels) {\r
+      asciidoc.toc(toclevels);\r
+    }\r
+  }\r
+\r
+  function reinstallAndRemoveTimer() {\r
+    clearInterval(timerId);\r
+    reinstall();\r
+  }\r
+\r
+  timerId = setInterval(reinstall, 500);\r
+  if (document.addEventListener)\r
+    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+  else\r
+    window.onload = reinstallAndRemoveTimer;\r
+}\r
+\r
+}\r
+asciidoc.install(2);\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="article">\r
+<div id="header">\r
+<h1>ptask README</h1>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="content">\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>ptask</tt> is a GTK+ graphical user interface for managing tasks.</p></div>\r
+<div class="paragraph"><p>It is based on <a href="http://taskwarrior.org">taskwarrior</a>, a well-known and robust command line\r
+tasks manager.</p></div>\r
+<div class="paragraph"><p>Unlike <tt>taskwarrior</tt>, it is possible to associate a note (long\r
+description) to each task.</p></div>\r
+<div class="paragraph"><p><tt>ptask</tt> is licensed under the GPLv2 terms and should compile on any\r
+modern GNU/Linux distribution.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_on_ubuntu">1. Installation on Ubuntu</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To install <tt>ptask</tt> on Ubuntu and derivates, the easiest way is to use the dedicated PPA:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-add-repository ppa:jfi/ptask\r
+sudo apt-get update\r
+sudo apt-get install ptask</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The PPA <tt>ppa:jfi/ptask</tt> contains the binary package of the last\r
+released version of <tt>ptask</tt> for the last released version of Ubuntu.</p></div>\r
+<div class="paragraph"><p>The PPA <tt>ppa:jfi/ptask-daily</tt> contains the binary package of the last\r
+development snapshot. It should only be used for testing purpose.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_from_source_archive">2. Installation from source archive</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>ptask</tt> can be compiled and installed on any modern GNU/Linux\r
+distribution.</p></div>\r
+<div class="sect2">\r
+<h3 id="_prerequisites">2.1. Prerequisites</h3>\r
+<div class="paragraph"><p>The compilation of <tt>ptask</tt> requires:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+asciidoc\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+autotools\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+cppcheck (optional, static source checker)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+gcc\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+help2man\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library gtk3\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library json-c\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+make\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>For Ubuntu 12.10:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get install autoconf automake asciidoc cppcheck gcc gettext autopoint help2man libgtk-3-dev libjson0-dev make perl</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_download_sources">2.2. Download sources</h3>\r
+<div class="paragraph"><p>Download a source tarballs of a release and extracts its content:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mkdir TMP_DIR\r
+cd TMP_DIR\r
+wget http://wpitchoune.net/ptask/files/ptask-last.tar.gz\r
+tar -xzvf ptask-last.tar.gz\r
+cd ptask-*</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Alternatively, you can get the last development snapshot of the\r
+sources directly from the SVN source repository:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mkdir TMP_DIR\r
+cd TMP_DIR\r
+svn co http://wpitchoune.net/svnpub/ptask/trunk\r
+cd trunk</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_compilation">2.3. Compilation</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>./configure\r
+make clean all</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_installation">2.4. Installation</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>make install</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_resources">3. Resources</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<strong>Home page</strong>: <a href="http://wpitchoune.net/ptask">http://wpitchoune.net/ptask</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>RSS feed</strong>: <a href="http://wpitchoune.net/blog/category/ptask/feed/">http://wpitchoune.net/blog/category/ptask/feed/</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Release changes</strong>: <a href="NEWS.html">NEWS</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Source tarballs</strong>: <a href="http://wpitchoune.net/ptask/files">http://wpitchoune.net/ptask/files</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Documentation</strong>: <a href="http://wpitchoune.net/ptask/doc">http://wpitchoune.net/ptask/doc</a>.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_contact">4. Contact</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Bugs and comments can be sent to <a href="mailto:jeanfi@gmail.com">jeanfi@gmail.com</a>.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2013-12-01 17:39:17 CET\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/www/ptask/doc/stable/NEWS.html b/www/ptask/doc/stable/NEWS.html
new file mode 100644 (file)
index 0000000..bf3a333
--- /dev/null
@@ -0,0 +1,466 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.7" />\r
+<title>What&#8217;s New</title>\r
+<style type="text/css">\r
+body {\r
+    background: #FFFFFF;\r
+    color: #333333;\r
+    font-family: Ubuntu,Arial,sans-serif;\r
+    line-height: 1.6;\r
+    font-weight: lighter;\r
+    margin: 1em 2em 2em 2em;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+h1 {\r
+    font-size: 2.813em;\r
+    margin: 0 0 0.267em 0;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h2 {\r
+    font-size: 2em;\r
+    margin: 0 0 0.375em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h3 {\r
+    font-size: 1.438em;\r
+    margin: 0 0 0.522em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h4 {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h5 {\r
+    font-size: 1em;\r
+    margin: 0 0 0.75em;\r
+    padding: 0 0 0 0;\r
+    font-weight: bold;\r
+}\r
+\r
+h6 {\r
+    font-weight: normal;\r
+    font-size: 0.813em;\r
+    letter-spacing: 0.1em;\r
+    margin: 0 0 0.923em;\r
+    text-transform: uppercase;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+li {\r
+    margin: 0 0 0 1em;\r
+    line-height: 1.6;\r
+}\r
+\r
+li p {\r
+    margin: 0 0 0 0;\r
+}\r
+\r
+ul {\r
+    margin: 0 0 0 0;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+a:link, a:visited {\r
+    color: #19B6EE;\r
+    text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+    text-decoration: underline;\r
+}\r
+\r
+code, pre, tt {\r
+    font-family: "Ubuntu Mono","Courier New",Courier,monospace;\r
+    font-weight: normal;\r
+    color: #333333;\r
+}\r
+\r
+pre {\r
+    background: none repeat scroll 0 0 #e0e0e0;\r
+    border-radius: 4px;\r
+    padding: 0.5em 0.5em;\r
+    margin: 0 0 0 0;\r
+    white-space: pre-wrap;\r
+    word-wrap: break-word;\r
+}\r
+\r
+/* ASCIIDOC */\r
+\r
+div.toclevel2 {\r
+    margin-left: 1em;\r
+}\r
+\r
+#toctitle {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+#footer {\r
+    margin: 2em 0 0 0;\r
+    font-size: 0.8em;\r
+    font-weight: lighter;\r
+}\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+var asciidoc = {  // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+  function getText(el) {\r
+    var text = "";\r
+    for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+        text += i.data;\r
+      else if (i.firstChild != null)\r
+        text += getText(i);\r
+    }\r
+    return text;\r
+  }\r
+\r
+  function TocEntry(el, text, toclevel) {\r
+    this.element = el;\r
+    this.text = text;\r
+    this.toclevel = toclevel;\r
+  }\r
+\r
+  function tocEntries(el, toclevels) {\r
+    var result = new Array;\r
+    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
+    // Function that scans the DOM tree for header elements (the DOM2\r
+    // nodeIterator API would be a better technique but not supported by all\r
+    // browsers).\r
+    var iterate = function (el) {\r
+      for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+          var mo = re.exec(i.tagName);\r
+          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+          }\r
+          iterate(i);\r
+        }\r
+      }\r
+    }\r
+    iterate(el);\r
+    return result;\r
+  }\r
+\r
+  var toc = document.getElementById("toc");\r
+  if (!toc) {\r
+    return;\r
+  }\r
+\r
+  // Delete existing TOC entries in case we're reloading the TOC.\r
+  var tocEntriesToRemove = [];\r
+  var i;\r
+  for (i = 0; i < toc.childNodes.length; i++) {\r
+    var entry = toc.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div'\r
+     && entry.getAttribute("class")\r
+     && entry.getAttribute("class").match(/^toclevel/))\r
+      tocEntriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+    toc.removeChild(tocEntriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild TOC entries.\r
+  var entries = tocEntries(document.getElementById("content"), toclevels);\r
+  for (var i = 0; i < entries.length; ++i) {\r
+    var entry = entries[i];\r
+    if (entry.element.id == "")\r
+      entry.element.id = "_toc_" + i;\r
+    var a = document.createElement("a");\r
+    a.href = "#" + entry.element.id;\r
+    a.appendChild(document.createTextNode(entry.text));\r
+    var div = document.createElement("div");\r
+    div.appendChild(a);\r
+    div.className = "toclevel" + entry.toclevel;\r
+    toc.appendChild(div);\r
+  }\r
+  if (entries.length == 0)\r
+    toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+  // Delete existing footnote entries in case we're reloading the footnodes.\r
+  var i;\r
+  var noteholder = document.getElementById("footnotes");\r
+  if (!noteholder) {\r
+    return;\r
+  }\r
+  var entriesToRemove = [];\r
+  for (i = 0; i < noteholder.childNodes.length; i++) {\r
+    var entry = noteholder.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+      entriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < entriesToRemove.length; i++) {\r
+    noteholder.removeChild(entriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild footnote entries.\r
+  var cont = document.getElementById("content");\r
+  var spans = cont.getElementsByTagName("span");\r
+  var refs = {};\r
+  var n = 0;\r
+  for (i=0; i<spans.length; i++) {\r
+    if (spans[i].className == "footnote") {\r
+      n++;\r
+      var note = spans[i].getAttribute("data-note");\r
+      if (!note) {\r
+        // Use [\s\S] in place of . so multi-line matches work.\r
+        // Because JavaScript has no s (dotall) regex flag.\r
+        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+        spans[i].innerHTML =\r
+          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+        spans[i].setAttribute("data-note", note);\r
+      }\r
+      noteholder.innerHTML +=\r
+        "<div class='footnote' id='_footnote_" + n + "'>" +\r
+        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+        n + "</a>. " + note + "</div>";\r
+      var id =spans[i].getAttribute("id");\r
+      if (id != null) refs["#"+id] = n;\r
+    }\r
+  }\r
+  if (n == 0)\r
+    noteholder.parentNode.removeChild(noteholder);\r
+  else {\r
+    // Process footnoterefs.\r
+    for (i=0; i<spans.length; i++) {\r
+      if (spans[i].className == "footnoteref") {\r
+        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+        href = href.match(/#.*/)[0];  // Because IE return full URL.\r
+        n = refs[href];\r
+        spans[i].innerHTML =\r
+          "[<a href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+      }\r
+    }\r
+  }\r
+},\r
+\r
+install: function(toclevels) {\r
+  var timerId;\r
+\r
+  function reinstall() {\r
+    asciidoc.footnotes();\r
+    if (toclevels) {\r
+      asciidoc.toc(toclevels);\r
+    }\r
+  }\r
+\r
+  function reinstallAndRemoveTimer() {\r
+    clearInterval(timerId);\r
+    reinstall();\r
+  }\r
+\r
+  timerId = setInterval(reinstall, 500);\r
+  if (document.addEventListener)\r
+    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+  else\r
+    window.onload = reinstallAndRemoveTimer;\r
+}\r
+\r
+}\r
+asciidoc.install();\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="article">\r
+<div id="header">\r
+<h1>What&#8217;s New</h1>\r
+</div>\r
+<div id="content">\r
+<div class="sect1">\r
+<h2 id="_v0_0_4">v0.0.4</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+fixed i18n support.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added --version and --help options.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added manpage.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+popup error dialog when .taskrc does not exist.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added --debug.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added taskwarrior version checking (supported version are 2.2.0 and 2.0.0).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added support for taskwarrior 2.2.0 (avoid confirmation query).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added window position and size restore.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added tasks sort column/order restore.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+fixed error message displayed when a note does not exist.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+new task dialog allow to set description and priority.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added project table to filter the list of tasks.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added application icon.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added remove task button.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_v0_0_3">v0.0.3</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+fixed window close to terminate the application.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added README.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+generated HTML version of README and NEWS files.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added fr translation and i18n support.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_v0_0_2">v0.0.2</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+added refresh keyboard shortcut (ALT-r).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+added new task keyboard shortcut (ALT-n).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+renamed gtask to ptask.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_v0_0_1">v0.0.1</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Initial release.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2013-12-01 13:58:06 CET\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/www/ptask/doc/stable/README.html b/www/ptask/doc/stable/README.html
new file mode 100644 (file)
index 0000000..26ed8f4
--- /dev/null
@@ -0,0 +1,491 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.7" />\r
+<title>ptask README</title>\r
+<style type="text/css">\r
+body {\r
+    background: #FFFFFF;\r
+    color: #333333;\r
+    font-family: Ubuntu,Arial,sans-serif;\r
+    line-height: 1.6;\r
+    font-weight: lighter;\r
+    margin: 1em 2em 2em 2em;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+h1 {\r
+    font-size: 2.813em;\r
+    margin: 0 0 0.267em 0;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h2 {\r
+    font-size: 2em;\r
+    margin: 0 0 0.375em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h3 {\r
+    font-size: 1.438em;\r
+    margin: 0 0 0.522em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h4 {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h5 {\r
+    font-size: 1em;\r
+    margin: 0 0 0.75em;\r
+    padding: 0 0 0 0;\r
+    font-weight: bold;\r
+}\r
+\r
+h6 {\r
+    font-weight: normal;\r
+    font-size: 0.813em;\r
+    letter-spacing: 0.1em;\r
+    margin: 0 0 0.923em;\r
+    text-transform: uppercase;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+li {\r
+    margin: 0 0 0 1em;\r
+    line-height: 1.6;\r
+}\r
+\r
+li p {\r
+    margin: 0 0 0 0;\r
+}\r
+\r
+ul {\r
+    margin: 0 0 0 0;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+a:link, a:visited {\r
+    color: #19B6EE;\r
+    text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+    text-decoration: underline;\r
+}\r
+\r
+code, pre, tt {\r
+    font-family: "Ubuntu Mono","Courier New",Courier,monospace;\r
+    font-weight: normal;\r
+    color: #333333;\r
+}\r
+\r
+pre {\r
+    background: none repeat scroll 0 0 #e0e0e0;\r
+    border-radius: 4px;\r
+    padding: 0.5em 0.5em;\r
+    margin: 0 0 0 0;\r
+    white-space: pre-wrap;\r
+    word-wrap: break-word;\r
+}\r
+\r
+/* ASCIIDOC */\r
+\r
+div.toclevel2 {\r
+    margin-left: 1em;\r
+}\r
+\r
+#toctitle {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+#footer {\r
+    margin: 2em 0 0 0;\r
+    font-size: 0.8em;\r
+    font-weight: lighter;\r
+}\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+var asciidoc = {  // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+  function getText(el) {\r
+    var text = "";\r
+    for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+        text += i.data;\r
+      else if (i.firstChild != null)\r
+        text += getText(i);\r
+    }\r
+    return text;\r
+  }\r
+\r
+  function TocEntry(el, text, toclevel) {\r
+    this.element = el;\r
+    this.text = text;\r
+    this.toclevel = toclevel;\r
+  }\r
+\r
+  function tocEntries(el, toclevels) {\r
+    var result = new Array;\r
+    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
+    // Function that scans the DOM tree for header elements (the DOM2\r
+    // nodeIterator API would be a better technique but not supported by all\r
+    // browsers).\r
+    var iterate = function (el) {\r
+      for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+          var mo = re.exec(i.tagName);\r
+          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+          }\r
+          iterate(i);\r
+        }\r
+      }\r
+    }\r
+    iterate(el);\r
+    return result;\r
+  }\r
+\r
+  var toc = document.getElementById("toc");\r
+  if (!toc) {\r
+    return;\r
+  }\r
+\r
+  // Delete existing TOC entries in case we're reloading the TOC.\r
+  var tocEntriesToRemove = [];\r
+  var i;\r
+  for (i = 0; i < toc.childNodes.length; i++) {\r
+    var entry = toc.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div'\r
+     && entry.getAttribute("class")\r
+     && entry.getAttribute("class").match(/^toclevel/))\r
+      tocEntriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+    toc.removeChild(tocEntriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild TOC entries.\r
+  var entries = tocEntries(document.getElementById("content"), toclevels);\r
+  for (var i = 0; i < entries.length; ++i) {\r
+    var entry = entries[i];\r
+    if (entry.element.id == "")\r
+      entry.element.id = "_toc_" + i;\r
+    var a = document.createElement("a");\r
+    a.href = "#" + entry.element.id;\r
+    a.appendChild(document.createTextNode(entry.text));\r
+    var div = document.createElement("div");\r
+    div.appendChild(a);\r
+    div.className = "toclevel" + entry.toclevel;\r
+    toc.appendChild(div);\r
+  }\r
+  if (entries.length == 0)\r
+    toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+  // Delete existing footnote entries in case we're reloading the footnodes.\r
+  var i;\r
+  var noteholder = document.getElementById("footnotes");\r
+  if (!noteholder) {\r
+    return;\r
+  }\r
+  var entriesToRemove = [];\r
+  for (i = 0; i < noteholder.childNodes.length; i++) {\r
+    var entry = noteholder.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+      entriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < entriesToRemove.length; i++) {\r
+    noteholder.removeChild(entriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild footnote entries.\r
+  var cont = document.getElementById("content");\r
+  var spans = cont.getElementsByTagName("span");\r
+  var refs = {};\r
+  var n = 0;\r
+  for (i=0; i<spans.length; i++) {\r
+    if (spans[i].className == "footnote") {\r
+      n++;\r
+      var note = spans[i].getAttribute("data-note");\r
+      if (!note) {\r
+        // Use [\s\S] in place of . so multi-line matches work.\r
+        // Because JavaScript has no s (dotall) regex flag.\r
+        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+        spans[i].innerHTML =\r
+          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+        spans[i].setAttribute("data-note", note);\r
+      }\r
+      noteholder.innerHTML +=\r
+        "<div class='footnote' id='_footnote_" + n + "'>" +\r
+        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+        n + "</a>. " + note + "</div>";\r
+      var id =spans[i].getAttribute("id");\r
+      if (id != null) refs["#"+id] = n;\r
+    }\r
+  }\r
+  if (n == 0)\r
+    noteholder.parentNode.removeChild(noteholder);\r
+  else {\r
+    // Process footnoterefs.\r
+    for (i=0; i<spans.length; i++) {\r
+      if (spans[i].className == "footnoteref") {\r
+        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+        href = href.match(/#.*/)[0];  // Because IE return full URL.\r
+        n = refs[href];\r
+        spans[i].innerHTML =\r
+          "[<a href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+      }\r
+    }\r
+  }\r
+},\r
+\r
+install: function(toclevels) {\r
+  var timerId;\r
+\r
+  function reinstall() {\r
+    asciidoc.footnotes();\r
+    if (toclevels) {\r
+      asciidoc.toc(toclevels);\r
+    }\r
+  }\r
+\r
+  function reinstallAndRemoveTimer() {\r
+    clearInterval(timerId);\r
+    reinstall();\r
+  }\r
+\r
+  timerId = setInterval(reinstall, 500);\r
+  if (document.addEventListener)\r
+    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+  else\r
+    window.onload = reinstallAndRemoveTimer;\r
+}\r
+\r
+}\r
+asciidoc.install(2);\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="article">\r
+<div id="header">\r
+<h1>ptask README</h1>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="content">\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>ptask</tt> is a GTK+ graphical user interface for managing tasks.</p></div>\r
+<div class="paragraph"><p>It is based on <a href="http://taskwarrior.org">taskwarrior</a>, a well-known and robust command line\r
+tasks manager.</p></div>\r
+<div class="paragraph"><p>Unlike <tt>taskwarrior</tt>, it is possible to associate a note (long\r
+description) to each task.</p></div>\r
+<div class="paragraph"><p><tt>ptask</tt> is licensed under the GPLv2 terms and should compile on any\r
+modern GNU/Linux distribution.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_on_ubuntu">1. Installation on Ubuntu</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To install <tt>ptask</tt> on Ubuntu and derivates, the easiest way is to use the dedicated PPA:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-add-repository ppa:jfi/ptask\r
+sudo apt-get update\r
+sudo apt-get install ptask</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The PPA <tt>ppa:jfi/ptask</tt> contains the binary package of the last\r
+released version of <tt>ptask</tt> for the last released version of Ubuntu.</p></div>\r
+<div class="paragraph"><p>The PPA <tt>ppa:jfi/ptask-daily</tt> contains the binary package of the last\r
+development snapshot. It should only be used for testing purpose.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_from_source_archive">2. Installation from source archive</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>ptask</tt> can be compiled and installed on any modern GNU/Linux\r
+distribution.</p></div>\r
+<div class="sect2">\r
+<h3 id="_prerequisites">2.1. Prerequisites</h3>\r
+<div class="paragraph"><p>The compilation of <tt>ptask</tt> requires:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+asciidoc\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+autotools\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+cppcheck (optional, static source checker)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+gcc\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+help2man\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library gtk3\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library json-c\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+make\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>For Ubuntu 12.10:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get install autoconf automake asciidoc cppcheck gcc gettext autopoint help2man libgtk-3-dev libjson0-dev make perl</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_download_sources">2.2. Download sources</h3>\r
+<div class="paragraph"><p>Download a source tarballs of a release and extracts its content:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mkdir TMP_DIR\r
+cd TMP_DIR\r
+wget http://wpitchoune.net/ptask/files/ptask-last.tar.gz\r
+tar -xzvf ptask-last.tar.gz\r
+cd ptask-*</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Alternatively, you can get the last development snapshot of the\r
+sources directly from the SVN source repository:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mkdir TMP_DIR\r
+cd TMP_DIR\r
+svn co http://wpitchoune.net/svnpub/ptask/trunk\r
+cd trunk</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_compilation">2.3. Compilation</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>./configure\r
+make clean all</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_installation">2.4. Installation</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>make install</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_resources">3. Resources</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<strong>Home page</strong>: <a href="http://wpitchoune.net/ptask">http://wpitchoune.net/ptask</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>RSS feed</strong>: <a href="http://wpitchoune.net/blog/category/ptask/feed/">http://wpitchoune.net/blog/category/ptask/feed/</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Release changes</strong>: <a href="NEWS.html">NEWS</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Source tarballs</strong>: <a href="http://wpitchoune.net/ptask/files">http://wpitchoune.net/ptask/files</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Documentation</strong>: <a href="http://wpitchoune.net/ptask/doc">http://wpitchoune.net/ptask/doc</a>.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_contact">4. Contact</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Bugs and comments can be sent to <a href="mailto:jeanfi@gmail.com">jeanfi@gmail.com</a>.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2013-12-01 17:39:17 CET\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/www/ptask/doc/stable/index.html b/www/ptask/doc/stable/index.html
new file mode 100644 (file)
index 0000000..26ed8f4
--- /dev/null
@@ -0,0 +1,491 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.7" />\r
+<title>ptask README</title>\r
+<style type="text/css">\r
+body {\r
+    background: #FFFFFF;\r
+    color: #333333;\r
+    font-family: Ubuntu,Arial,sans-serif;\r
+    line-height: 1.6;\r
+    font-weight: lighter;\r
+    margin: 1em 2em 2em 2em;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+h1 {\r
+    font-size: 2.813em;\r
+    margin: 0 0 0.267em 0;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h2 {\r
+    font-size: 2em;\r
+    margin: 0 0 0.375em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h3 {\r
+    font-size: 1.438em;\r
+    margin: 0 0 0.522em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h4 {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+h5 {\r
+    font-size: 1em;\r
+    margin: 0 0 0.75em;\r
+    padding: 0 0 0 0;\r
+    font-weight: bold;\r
+}\r
+\r
+h6 {\r
+    font-weight: normal;\r
+    font-size: 0.813em;\r
+    letter-spacing: 0.1em;\r
+    margin: 0 0 0.923em;\r
+    text-transform: uppercase;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+li {\r
+    margin: 0 0 0 1em;\r
+    line-height: 1.6;\r
+}\r
+\r
+li p {\r
+    margin: 0 0 0 0;\r
+}\r
+\r
+ul {\r
+    margin: 0 0 0 0;\r
+    padding: 0 0 0 0;\r
+}\r
+\r
+a:link, a:visited {\r
+    color: #19B6EE;\r
+    text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+    text-decoration: underline;\r
+}\r
+\r
+code, pre, tt {\r
+    font-family: "Ubuntu Mono","Courier New",Courier,monospace;\r
+    font-weight: normal;\r
+    color: #333333;\r
+}\r
+\r
+pre {\r
+    background: none repeat scroll 0 0 #e0e0e0;\r
+    border-radius: 4px;\r
+    padding: 0.5em 0.5em;\r
+    margin: 0 0 0 0;\r
+    white-space: pre-wrap;\r
+    word-wrap: break-word;\r
+}\r
+\r
+/* ASCIIDOC */\r
+\r
+div.toclevel2 {\r
+    margin-left: 1em;\r
+}\r
+\r
+#toctitle {\r
+    font-size: 1.219em;\r
+    margin: 0 0 0.615em;\r
+    padding: 0 0 0 0;\r
+    font-weight: normal;\r
+}\r
+\r
+#footer {\r
+    margin: 2em 0 0 0;\r
+    font-size: 0.8em;\r
+    font-weight: lighter;\r
+}\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+var asciidoc = {  // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+  function getText(el) {\r
+    var text = "";\r
+    for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+        text += i.data;\r
+      else if (i.firstChild != null)\r
+        text += getText(i);\r
+    }\r
+    return text;\r
+  }\r
+\r
+  function TocEntry(el, text, toclevel) {\r
+    this.element = el;\r
+    this.text = text;\r
+    this.toclevel = toclevel;\r
+  }\r
+\r
+  function tocEntries(el, toclevels) {\r
+    var result = new Array;\r
+    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
+    // Function that scans the DOM tree for header elements (the DOM2\r
+    // nodeIterator API would be a better technique but not supported by all\r
+    // browsers).\r
+    var iterate = function (el) {\r
+      for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+          var mo = re.exec(i.tagName);\r
+          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+          }\r
+          iterate(i);\r
+        }\r
+      }\r
+    }\r
+    iterate(el);\r
+    return result;\r
+  }\r
+\r
+  var toc = document.getElementById("toc");\r
+  if (!toc) {\r
+    return;\r
+  }\r
+\r
+  // Delete existing TOC entries in case we're reloading the TOC.\r
+  var tocEntriesToRemove = [];\r
+  var i;\r
+  for (i = 0; i < toc.childNodes.length; i++) {\r
+    var entry = toc.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div'\r
+     && entry.getAttribute("class")\r
+     && entry.getAttribute("class").match(/^toclevel/))\r
+      tocEntriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+    toc.removeChild(tocEntriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild TOC entries.\r
+  var entries = tocEntries(document.getElementById("content"), toclevels);\r
+  for (var i = 0; i < entries.length; ++i) {\r
+    var entry = entries[i];\r
+    if (entry.element.id == "")\r
+      entry.element.id = "_toc_" + i;\r
+    var a = document.createElement("a");\r
+    a.href = "#" + entry.element.id;\r
+    a.appendChild(document.createTextNode(entry.text));\r
+    var div = document.createElement("div");\r
+    div.appendChild(a);\r
+    div.className = "toclevel" + entry.toclevel;\r
+    toc.appendChild(div);\r
+  }\r
+  if (entries.length == 0)\r
+    toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+  // Delete existing footnote entries in case we're reloading the footnodes.\r
+  var i;\r
+  var noteholder = document.getElementById("footnotes");\r
+  if (!noteholder) {\r
+    return;\r
+  }\r
+  var entriesToRemove = [];\r
+  for (i = 0; i < noteholder.childNodes.length; i++) {\r
+    var entry = noteholder.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+      entriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < entriesToRemove.length; i++) {\r
+    noteholder.removeChild(entriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild footnote entries.\r
+  var cont = document.getElementById("content");\r
+  var spans = cont.getElementsByTagName("span");\r
+  var refs = {};\r
+  var n = 0;\r
+  for (i=0; i<spans.length; i++) {\r
+    if (spans[i].className == "footnote") {\r
+      n++;\r
+      var note = spans[i].getAttribute("data-note");\r
+      if (!note) {\r
+        // Use [\s\S] in place of . so multi-line matches work.\r
+        // Because JavaScript has no s (dotall) regex flag.\r
+        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+        spans[i].innerHTML =\r
+          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+        spans[i].setAttribute("data-note", note);\r
+      }\r
+      noteholder.innerHTML +=\r
+        "<div class='footnote' id='_footnote_" + n + "'>" +\r
+        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+        n + "</a>. " + note + "</div>";\r
+      var id =spans[i].getAttribute("id");\r
+      if (id != null) refs["#"+id] = n;\r
+    }\r
+  }\r
+  if (n == 0)\r
+    noteholder.parentNode.removeChild(noteholder);\r
+  else {\r
+    // Process footnoterefs.\r
+    for (i=0; i<spans.length; i++) {\r
+      if (spans[i].className == "footnoteref") {\r
+        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+        href = href.match(/#.*/)[0];  // Because IE return full URL.\r
+        n = refs[href];\r
+        spans[i].innerHTML =\r
+          "[<a href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+      }\r
+    }\r
+  }\r
+},\r
+\r
+install: function(toclevels) {\r
+  var timerId;\r
+\r
+  function reinstall() {\r
+    asciidoc.footnotes();\r
+    if (toclevels) {\r
+      asciidoc.toc(toclevels);\r
+    }\r
+  }\r
+\r
+  function reinstallAndRemoveTimer() {\r
+    clearInterval(timerId);\r
+    reinstall();\r
+  }\r
+\r
+  timerId = setInterval(reinstall, 500);\r
+  if (document.addEventListener)\r
+    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+  else\r
+    window.onload = reinstallAndRemoveTimer;\r
+}\r
+\r
+}\r
+asciidoc.install(2);\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="article">\r
+<div id="header">\r
+<h1>ptask README</h1>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="content">\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>ptask</tt> is a GTK+ graphical user interface for managing tasks.</p></div>\r
+<div class="paragraph"><p>It is based on <a href="http://taskwarrior.org">taskwarrior</a>, a well-known and robust command line\r
+tasks manager.</p></div>\r
+<div class="paragraph"><p>Unlike <tt>taskwarrior</tt>, it is possible to associate a note (long\r
+description) to each task.</p></div>\r
+<div class="paragraph"><p><tt>ptask</tt> is licensed under the GPLv2 terms and should compile on any\r
+modern GNU/Linux distribution.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_on_ubuntu">1. Installation on Ubuntu</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To install <tt>ptask</tt> on Ubuntu and derivates, the easiest way is to use the dedicated PPA:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-add-repository ppa:jfi/ptask\r
+sudo apt-get update\r
+sudo apt-get install ptask</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The PPA <tt>ppa:jfi/ptask</tt> contains the binary package of the last\r
+released version of <tt>ptask</tt> for the last released version of Ubuntu.</p></div>\r
+<div class="paragraph"><p>The PPA <tt>ppa:jfi/ptask-daily</tt> contains the binary package of the last\r
+development snapshot. It should only be used for testing purpose.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_from_source_archive">2. Installation from source archive</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>ptask</tt> can be compiled and installed on any modern GNU/Linux\r
+distribution.</p></div>\r
+<div class="sect2">\r
+<h3 id="_prerequisites">2.1. Prerequisites</h3>\r
+<div class="paragraph"><p>The compilation of <tt>ptask</tt> requires:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+asciidoc\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+autotools\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+cppcheck (optional, static source checker)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+gcc\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+help2man\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library gtk3\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library json-c\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+make\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>For Ubuntu 12.10:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get install autoconf automake asciidoc cppcheck gcc gettext autopoint help2man libgtk-3-dev libjson0-dev make perl</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_download_sources">2.2. Download sources</h3>\r
+<div class="paragraph"><p>Download a source tarballs of a release and extracts its content:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mkdir TMP_DIR\r
+cd TMP_DIR\r
+wget http://wpitchoune.net/ptask/files/ptask-last.tar.gz\r
+tar -xzvf ptask-last.tar.gz\r
+cd ptask-*</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Alternatively, you can get the last development snapshot of the\r
+sources directly from the SVN source repository:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mkdir TMP_DIR\r
+cd TMP_DIR\r
+svn co http://wpitchoune.net/svnpub/ptask/trunk\r
+cd trunk</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_compilation">2.3. Compilation</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>./configure\r
+make clean all</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_installation">2.4. Installation</h3>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>make install</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_resources">3. Resources</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<strong>Home page</strong>: <a href="http://wpitchoune.net/ptask">http://wpitchoune.net/ptask</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>RSS feed</strong>: <a href="http://wpitchoune.net/blog/category/ptask/feed/">http://wpitchoune.net/blog/category/ptask/feed/</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Release changes</strong>: <a href="NEWS.html">NEWS</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Source tarballs</strong>: <a href="http://wpitchoune.net/ptask/files">http://wpitchoune.net/ptask/files</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<strong>Documentation</strong>: <a href="http://wpitchoune.net/ptask/doc">http://wpitchoune.net/ptask/doc</a>.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_contact">4. Contact</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Bugs and comments can be sent to <a href="mailto:jeanfi@gmail.com">jeanfi@gmail.com</a>.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2013-12-01 17:39:17 CET\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/www/ptask/files/patches/task_2.2.0_timesheet.patch b/www/ptask/files/patches/task_2.2.0_timesheet.patch
new file mode 100644 (file)
index 0000000..afc2e56
--- /dev/null
@@ -0,0 +1,33 @@
+diff --git a/src/commands/CmdTimesheet.cpp b/src/commands/CmdTimesheet.cpp
+index 32a7e12..0bd9336 100644
+--- a/src/commands/CmdTimesheet.cpp
++++ b/src/commands/CmdTimesheet.cpp
+@@ -59,6 +59,8 @@ int CmdTimesheet::execute (std::string& output)
+   std::vector <Task> all = context.tdb2.all_tasks ();
+   context.tdb2.commit ();
++  std::string prj = context.config.get("project");
++
+   // What day of the week does the user consider the first?
+   int weekStart = Date::dayOfWeek (context.config.get ("weekstart"));
+   if (weekStart != 0 && weekStart != 1)
+@@ -108,6 +110,9 @@ int CmdTimesheet::execute (std::string& output)
+       // If task completed within range.
+       if (task->getStatus () == Task::completed)
+       {
++        if (!prj.empty() && task->get("project") != prj)
++          continue ;
++
+         Date compDate (task->get_date ("end"));
+         if (compDate >= start && compDate < end)
+         {
+@@ -163,7 +168,8 @@ int CmdTimesheet::execute (std::string& output)
+     {
+       // If task started within range, but not completed withing range.
+       if (task->getStatus () == Task::pending &&
+-          task->has ("start"))
++          task->has ("start") &&
++          (prj.empty() || task->get("project") == prj))
+       {
+         Date startDate (task->get_date ("start"));
+         if (startDate >= start && startDate < end)
diff --git a/www/ptask/files/ptask-0.0.1.tar.gz b/www/ptask/files/ptask-0.0.1.tar.gz
new file mode 100644 (file)
index 0000000..9278882
Binary files /dev/null and b/www/ptask/files/ptask-0.0.1.tar.gz differ
diff --git a/www/ptask/files/ptask-0.0.2.tar.gz b/www/ptask/files/ptask-0.0.2.tar.gz
new file mode 100644 (file)
index 0000000..f470ad0
Binary files /dev/null and b/www/ptask/files/ptask-0.0.2.tar.gz differ
diff --git a/www/ptask/files/ptask-0.0.3.tar.gz b/www/ptask/files/ptask-0.0.3.tar.gz
new file mode 100644 (file)
index 0000000..99bdafd
Binary files /dev/null and b/www/ptask/files/ptask-0.0.3.tar.gz differ
diff --git a/www/ptask/files/ptask-0.0.4.tar.gz b/www/ptask/files/ptask-0.0.4.tar.gz
new file mode 100644 (file)
index 0000000..99ac25c
Binary files /dev/null and b/www/ptask/files/ptask-0.0.4.tar.gz differ
diff --git a/www/ptask/files/ptask-0.0.5.tar.gz b/www/ptask/files/ptask-0.0.5.tar.gz
new file mode 100644 (file)
index 0000000..1aaa6df
Binary files /dev/null and b/www/ptask/files/ptask-0.0.5.tar.gz differ
diff --git a/www/ptask/files/ptask-0.0.6.tar.gz b/www/ptask/files/ptask-0.0.6.tar.gz
new file mode 100644 (file)
index 0000000..7fd6fa2
Binary files /dev/null and b/www/ptask/files/ptask-0.0.6.tar.gz differ
diff --git a/www/ptask/files/ptask-0.0.6.tar.gz.asc b/www/ptask/files/ptask-0.0.6.tar.gz.asc
new file mode 100644 (file)
index 0000000..e44bbe5
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQEcBAABAgAGBQJTVNP6AAoJEHM6hmiCo/X29iQH/iXAeK2XKm4XuXxVsyexwp01
+xlE2gElkRL4uEs5PoIY+9lkReXOxPm/XnP0VhFG2KR/YP4B3+o3z4h+XCYfIwMUU
+5j1BRtDkNYf14HnuW6KlsdA6ksZ5DsNjprXRTUSNN+XSVR4JVhUWuLtLKhPebe4J
+w4siisG5y5uC5Af5u04t0oLB4lYZI8v7YtJSzYhMg3X24IejcXEKzUHgMdOnR9++
+nn7E9bA0DadcUtRvpS27f/0OFux8bT01DpQe5XAIvllkPtQpuklQ360JEbuDFOYD
+hohkpwC2ztzHFT0VTihQ1cikl45XKKy5PmurDlMBi8zOKKZd5V3GYkaJDXs8mYo=
+=bcE9
+-----END PGP SIGNATURE-----
diff --git a/www/ptask/files/ptask-0.0.7.tar.gz b/www/ptask/files/ptask-0.0.7.tar.gz
new file mode 100644 (file)
index 0000000..5cb5851
Binary files /dev/null and b/www/ptask/files/ptask-0.0.7.tar.gz differ
diff --git a/www/ptask/files/ptask-0.0.7.tar.gz.asc b/www/ptask/files/ptask-0.0.7.tar.gz.asc
new file mode 100644 (file)
index 0000000..a783c27
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQEcBAABAgAGBQJUKVhGAAoJEHM6hmiCo/X2AVUH/An6i81XX3Rakw5KKpj0MIUJ
+1VYzM0xk6hnSUDi5gG5RHJ5UIISvaTlRNR3osgPzMXmSiaXYOX3BZEqBd0JA/Ces
+gGyr5vEwn0ozr/BBipMiiV3dgb9GyxEb0q5Z8JiWH0OyalQMBnPJ4fSf5zUXVdY2
+JoEvkZ0/61qdI0vWILwb3Gtrf5LI98O63g+nwFKdQxPxdZtf0++Kih6xSrlQhpgB
+KyAFBU15u33BjpLLoSm+bjXxFFljt4OrWqNzZmGMtwZoaxS06denwXjE7GoKj4rJ
+L6XxzJn+Ji/AU3rxCyYrj/itk+m1+GxXT0X2xX1uEdkXNEWEUOaoFY2Mpn9XHwo=
+=ozXf
+-----END PGP SIGNATURE-----
diff --git a/www/ptask/files/ptask-0.0.8.tar.gz b/www/ptask/files/ptask-0.0.8.tar.gz
new file mode 100644 (file)
index 0000000..da73bb9
Binary files /dev/null and b/www/ptask/files/ptask-0.0.8.tar.gz differ
diff --git a/www/ptask/files/ptask-0.0.8.tar.gz.asc b/www/ptask/files/ptask-0.0.8.tar.gz.asc
new file mode 100644 (file)
index 0000000..18bef86
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQEcBAABAgAGBQJUOPCZAAoJEHM6hmiCo/X2ONEIAL0o1XBeJ8WN0mBLbyJFruQl
+H42BASIvekKrrnYBrm4WEodtq+/PfztrucnxffZ5qeepkHHIeuxTI0IvXQGmo+uW
+0YSJ423TcNNuy5fLh+oaVIQyX24WO2dib3SzJH1cKZuSnGAeqwE4IAmFnlmimKj9
+sMEoAqrcm3IdRoapx5CfdTFdV0zElaYm3iJzf1a2whPNTYMK8VuqN5GDywkYfrXU
+DElb1ATI85Pt63djLcb5RiD0iSvjB/57n0vVxkKNr/rMaWkVU7gw7tcGf0Xm1xDL
+7W3PXysAsILZHfwi2MEi7WE42jtzVQf53jY1khDmNLdnN1txaFUl5RtPNkTM3HY=
+=B8Bx
+-----END PGP SIGNATURE-----
diff --git a/www/ptask/files/ptask-0.0.9.tar.gz b/www/ptask/files/ptask-0.0.9.tar.gz
new file mode 100644 (file)
index 0000000..06f2a03
Binary files /dev/null and b/www/ptask/files/ptask-0.0.9.tar.gz differ
diff --git a/www/ptask/files/ptask-0.0.9.tar.gz.asc b/www/ptask/files/ptask-0.0.9.tar.gz.asc
new file mode 100644 (file)
index 0000000..a8954fc
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQEcBAABAgAGBQJUcIUhAAoJEHM6hmiCo/X2LHkIAJhU8eoX69wZby2Vky4lfS0S
+BgHv7hY0WsvpAPBFrHb0rhpttFcELn3fmh4iCF9HoY/G9/Qv45B7ERaRzKLli6+g
+Kx7nhyKhbyhEWN5ClAWvuEVJzfqtvpVuZe3x5SvoY55d05eEFv2J/SVj1PTx+RpP
+9Fb4hSftw7isSYcZdXgwRFhRJ8K8R9hDgtqdfJBV+AvCex3dmtJC9yKzOfeFlfSI
+gpBc+rITQpwgcOYQkUBucvMXUs3/wfCpr2RDr6Ak93r3sjWj121A+QCYfZ9sqrfL
+ytYox2dvFxlfaK+cl5bSJ8K5ZYrUnQ/kIpgC8v4NRBnxV4AH82mHjlo6QnTHiQk=
+=bWJb
+-----END PGP SIGNATURE-----
diff --git a/www/ptask/files/ptask-1.0.0.tar.gz b/www/ptask/files/ptask-1.0.0.tar.gz
new file mode 100644 (file)
index 0000000..8f7a6dc
Binary files /dev/null and b/www/ptask/files/ptask-1.0.0.tar.gz differ
diff --git a/www/ptask/files/ptask-1.0.0.tar.gz.asc b/www/ptask/files/ptask-1.0.0.tar.gz.asc
new file mode 100644 (file)
index 0000000..b6cae35
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQEcBAABAgAGBQJXQ4jJAAoJEHM6hmiCo/X2IGgH/A+F7A8KSCFMJ212iuzRa8fZ
+DuNldGC5w2dfv2u8CsCl7ggHbAkjVybNNv7X3r+Mm+fFB6lduHIgJaL7tfwXb7N3
+rX8t76WGZ+NSg7VlAkWRfJUzvUzqoqBnbxNnzqg5hiD3OEcKF6wcAvyHwVKBA6El
+4IcP1H0uRqMMBtiSRtxfQ+43atSSb/NZ+IIXvHLRdWBt0CHrXVOUjyA6UzLZl3fP
+tbbeKaXGDPYfd8xYMn2g2IXLUEe/fni6YxcGQwIfPQhsPlE6anEyUZGWjnU551Kt
+YogGpp305mhzkSq6YCcbCRnh3vC85gwaJZDQ1nJuXnTxDrKgUtDPOwi+OGYHvzc=
+=mUi8
+-----END PGP SIGNATURE-----
diff --git a/www/ptask/files/ptask-last.tar.gz b/www/ptask/files/ptask-last.tar.gz
new file mode 100644 (file)
index 0000000..8f7a6dc
Binary files /dev/null and b/www/ptask/files/ptask-last.tar.gz differ
diff --git a/www/ptask/ptask.html b/www/ptask/ptask.html
new file mode 100644 (file)
index 0000000..bfd8a6e
--- /dev/null
@@ -0,0 +1,193 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.4">
+<title>ptask</title>
+<link rel="stylesheet" href="./../style.css">
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
+<script src="../nav.js"></script>
+</head>
+<body class="article">
+<div id="header">
+<h1>ptask</h1>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p><code>ptask</code> is a GTK+ graphical user interface for managing tasks.</p>
+</div>
+<div class="paragraph">
+<p>It is based on <a href="http://taskwarrior.org">taskwarrior</a>, a well-known
+and robust command line tasks manager.</p>
+</div>
+<div class="paragraph">
+<p>Unlike <code>taskwarrior</code>, it is possible to associate a note (long
+description) to each task.</p>
+</div>
+<div class="paragraph">
+<p>The following releases of <code>taskwarrior</code> are supported:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>2.0.0</p>
+</li>
+<li>
+<p>2.2.0</p>
+</li>
+<li>
+<p>2.3.0</p>
+</li>
+<li>
+<p>2.4.0, 2.4.1</p>
+</li>
+<li>
+<p>2.5</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p><code>ptask</code> is licensed under the GPLv2 terms and should compile on any
+modern GNU/Linux distribution.</p>
+</div>
+<div class="paragraph">
+<p><span class="image"><img src="screenshots/ptask20131201.png" alt="ptask20131201"></span></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_installation_on_ubuntu">Installation on Ubuntu</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>To install <code>ptask</code> on Ubuntu and derivates, the easiest way is to use
+the dedicated PPA:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>sudo apt-add-repository ppa:jfi/ptask
+sudo apt-get update
+sudo apt-get install ptask</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The PPA <code>ppa:jfi/ptask</code> contains the binary package of the last released
+version of ptask for the last released version of Ubuntu.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_installation_from_source_archive">Installation from source archive</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><code>ptask</code> can be compiled and installed on any modern GNU/Linux distribution.</p>
+</div>
+<div class="sect2">
+<h3 id="_prerequisites">Prerequisites</h3>
+<div class="paragraph">
+<p>The compilation of ptask requires:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>asciidoc</p>
+</li>
+<li>
+<p>autotools</p>
+</li>
+<li>
+<p>cppcheck (optional, static source checker)</p>
+</li>
+<li>
+<p>gcc</p>
+</li>
+<li>
+<p>help2man</p>
+</li>
+<li>
+<p>library gtk3</p>
+</li>
+<li>
+<p>library json-c</p>
+</li>
+<li>
+<p>make</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>For Ubuntu 12.10:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>sudo apt-get install autoconf automake asciidoc cppcheck gcc gettext autopoint help2man libgtk-3-dev libjson0-dev make perl
+---
+
+=== Download sources
+
+Download a source tarballs of a release and extracts its content:</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>mkdir TMP_DIR
+cd TMP_DIR
+wget <a href="http://wpitchoune.net/ptask/files/ptask-last.tar.gz" class="bare">http://wpitchoune.net/ptask/files/ptask-last.tar.gz</a>
+tar -xzvf ptask-last.tar.gz
+cd ptask-*</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>Alternatively, you can get the last development snapshot of the
+sources directly from the GIT source repository:</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>mkdir TMP_DIR
+cd TMP_DIR
+git clone <a href="http://git.wpitchoune.net/ptask.git" class="bare">http://git.wpitchoune.net/ptask.git</a>
+cd ptask</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>=== Compilation</pre>
+</div>
+</div>
+<div class="paragraph">
+<div class="title">/configure</div>
+<p>make clean all</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>=== Installation</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>make install</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>== Resources
+
+* Home page: http://wpitchoune.net/ptask.
+
+* Source tarballs: http://wpitchoune.net/ptask/files.
+
+== Contact
+
+Bugs and comments can be sent to jeanfi@gmail.com.</pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2016-06-15 20:28:45 CEST
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/www/ptask/screenshots/ptask20120107.png b/www/ptask/screenshots/ptask20120107.png
new file mode 100644 (file)
index 0000000..d9744ad
Binary files /dev/null and b/www/ptask/screenshots/ptask20120107.png differ
diff --git a/www/ptask/screenshots/ptask20131201.png b/www/ptask/screenshots/ptask20131201.png
new file mode 100644 (file)
index 0000000..f98a95d
Binary files /dev/null and b/www/ptask/screenshots/ptask20131201.png differ