Merge lp:~izidor/gtg/documentation into lp:~gtg/gtg/old-trunk
- documentation
- Merge into old-trunk
Proposed by
Izidor Matušov
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 1367 | ||||
Proposed branch: | lp:~izidor/gtg/documentation | ||||
Merge into: | lp:~gtg/gtg/old-trunk | ||||
Diff against target: |
1917 lines (+941/-758) 24 files modified
GTG/gtg (+58/-6) GTG/tools/import_liblarch.py (+0/-106) MANIFEST.in (+6/-7) doc/gtcli.1 (+0/-58) doc/gtg.1 (+0/-52) doc/gtg_new_task.1 (+0/-29) docs/Makefile (+74/-0) docs/source/conf.py (+74/-0) docs/source/contributing.rst (+140/-0) docs/source/index.rst (+53/-0) docs/source/man/gtcli.rst (+78/-0) docs/source/man/gtg.rst (+62/-0) docs/source/man/gtg_new_task.rst (+42/-0) docs/source/releases/v0.1.9.rst (+49/-0) docs/source/releases/v0.1.rst (+37/-0) docs/source/releases/v0.2.2.rst (+16/-0) docs/source/releases/v0.3.1.rst (+90/-54) gtg (+0/-92) profile.py (+0/-36) scripts/build_integrity.py (+0/-69) scripts/debug.sh (+3/-26) scripts/man_page_viewer (+0/-12) scripts/profile_interpret.sh (+0/-4) setup.py (+159/-207) |
||||
To merge this branch: | bzr merge lp:~izidor/gtg/documentation | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Gtg developers | Pending | ||
Review via email: mp+210111@code.launchpad.net |
Commit message
Description of the change
Introduce developer documentation using Sphinx. It is replacement for Pydoctor. Because readthedocs.org expects documentation to be in docs/ folder, I had to move doc to docs. By that occasion I fixed setup.py:
- it generates lists of files and packages instead of listing them (no more dead files there)
- I looked into upgrading to setuptools but it does not support installation in /usr/share :(
- generate man files from sphinx documentation (RST is much friendlier format)
- allow installation of GTG on case insensitive file systems
I also removed special handling for liblarch. Everybody should have installed it already. For development we should use virtualenv or virtualenvwrapper :)
To post a comment you must log in.
Revision history for this message
Izidor Matušov (izidor) wrote : | # |
lp:~izidor/gtg/documentation
updated
- 1383. By Izidor Matušov
-
Merge trunk
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === renamed file 'gtcli' => 'GTG/gtcli' |
2 | === renamed file 'GTG/gtg.py' => 'GTG/gtg' (properties changed: -x to +x) |
3 | --- GTG/gtg.py 2013-11-25 02:37:46 +0000 |
4 | +++ GTG/gtg 2014-03-14 20:44:47 +0000 |
5 | @@ -50,9 +50,13 @@ |
6 | import logging |
7 | import dbus |
8 | |
9 | +from optparse import OptionParser |
10 | +from gi.repository.Gdk import Screen |
11 | + |
12 | # our own imports |
13 | +from GTG import _ |
14 | +from GTG import info |
15 | from GTG.backends import BackendFactory |
16 | -from GTG import _ |
17 | from GTG.core import CoreConfig |
18 | from GTG.core.datastore import DataStore |
19 | from GTG.gtk.manager import Manager |
20 | @@ -111,13 +115,58 @@ |
21 | # Ignore missing PID file |
22 | pass |
23 | |
24 | + |
25 | +def x_is_running(): |
26 | + """ Return True if GTG could be displayed on the current XServer """ |
27 | + try: |
28 | + if Screen().get_default().get_display(): |
29 | + return True |
30 | + except RuntimeError as exc: |
31 | + print(exc) |
32 | + return False |
33 | + |
34 | #=== MAIN CLASS =============================================================== |
35 | |
36 | |
37 | -def main(options=None, args=None): |
38 | - ''' |
39 | - Calling this starts the full GTG experience ( :-D ) |
40 | - ''' |
41 | +def parse_args(): |
42 | + """ Parse arguments """ |
43 | + parser = OptionParser() |
44 | + parser.add_option('-b', '--boot-test', action='store_true', |
45 | + dest='boot_test', |
46 | + help="Exit after completing boot-up actions", |
47 | + default=False) |
48 | + parser.add_option('-c', '--no-crash-handler', action='store_true', |
49 | + dest='no_crash_handler', |
50 | + help="Disable the automatic crash handler", |
51 | + default=False) |
52 | + parser.add_option('-d', '--debug', action='store_true', dest='debug', |
53 | + help="Enable debug output", default=False) |
54 | + parser.add_option('-t', '--title', action='store', |
55 | + help="Use special title for windows' title") |
56 | + parser.add_option('-v', '--version', action='store_true', |
57 | + dest='print_version', help="Print GTG's version number", |
58 | + default=False) |
59 | + return parser.parse_args() |
60 | + |
61 | + |
62 | +def main(): |
63 | + ''' |
64 | + Calling this starts the full GTG experience |
65 | + ''' |
66 | + options, args = parse_args() |
67 | + if options.print_version: |
68 | + print("GTG (Getting Things GNOME!)", info.VERSION) |
69 | + print() |
70 | + print("For more information:", info.URL) |
71 | + sys.exit(0) |
72 | + |
73 | + elif not x_is_running(): |
74 | + print("Could not open X display") |
75 | + sys.exit(1) |
76 | + |
77 | + if options.title is not None: |
78 | + info.NAME = options.title |
79 | + |
80 | ds, req = core_main_init(options, args) |
81 | # Launch task browser |
82 | manager = Manager(req) |
83 | @@ -180,4 +229,7 @@ |
84 | #=== EXECUTION ================================================================ |
85 | |
86 | if __name__ == "__main__": |
87 | - main() |
88 | + try: |
89 | + main() |
90 | + except KeyboardInterrupt: |
91 | + sys.exit(1) |
92 | |
93 | === renamed file 'gtg_new_task' => 'GTG/gtg_new_task' |
94 | === removed file 'GTG/tools/import_liblarch.py' |
95 | --- GTG/tools/import_liblarch.py 2013-11-25 02:37:46 +0000 |
96 | +++ GTG/tools/import_liblarch.py 1970-01-01 00:00:00 +0000 |
97 | @@ -1,106 +0,0 @@ |
98 | -#!/usr/bin/env python3 |
99 | -# -*- coding:utf-8 -*- |
100 | -# ----------------------------------------------------------------------------- |
101 | -# Getting Things GNOME! - A personal organizer for the GNOME desktop |
102 | -# Copyright (c) 2008-2013 Lionel Dricot & Bertrand Rousseau |
103 | -# |
104 | -# This program is free software: you can redistribute it and/or modify it under |
105 | -# the terms of the GNU General Public License as published by the Free Software |
106 | -# Foundation, either version 3 of the License, or (at your option) any later |
107 | -# version. |
108 | -# |
109 | -# This program is distributed in the hope that it will be useful, but WITHOUT |
110 | -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
111 | -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
112 | -# details. |
113 | -# |
114 | -# You should have received a copy of the GNU General Public License along with |
115 | -# this program. If not, see <http://www.gnu.org/licenses/>. |
116 | -# ----------------------------------------------------------------------------- |
117 | - |
118 | -""" Check if liblarch is installed """ |
119 | - |
120 | -import sys |
121 | - |
122 | -REQUIRED_LIBLARCH_API = "2.1" |
123 | -GIT_CMD = "git clone https://github.com/liblarch/liblarch ../liblarch" |
124 | - |
125 | - |
126 | -def import_liblarch(use_local=False): |
127 | - """ Check if liblarch is installed and is compatible |
128 | - |
129 | - If not, provide information how to obtain the newest version. |
130 | - If use_local, prioritize local (development) liblarch in ../liblarch""" |
131 | - |
132 | - def check_liblarch(): |
133 | - """ |
134 | - Import liblarch and find out which one is missing |
135 | - """ |
136 | - has_libraries = True |
137 | - missing = [] |
138 | - try: |
139 | - import liblarch |
140 | - assert liblarch |
141 | - except ImportError: |
142 | - has_libraries = False |
143 | - missing.append("liblarch") |
144 | - |
145 | - try: |
146 | - import liblarch_gtk |
147 | - assert liblarch_gtk |
148 | - except ImportError: |
149 | - has_libraries = False |
150 | - missing.append("liblarch_gtk") |
151 | - |
152 | - return has_libraries, " and ".join(missing) |
153 | - |
154 | - if use_local: |
155 | - sys.path.insert(0, "../liblarch") |
156 | - |
157 | - has_libraries, missing = check_liblarch() |
158 | - |
159 | - if not use_local and not has_libraries: |
160 | - sys.path.append("../liblarch/") |
161 | - has_libraries, missing = check_liblarch() |
162 | - |
163 | - if not has_libraries: |
164 | - print("""GTG can't find %s. To install missing libraries, |
165 | -run the following command in the current folder: |
166 | - |
167 | -%s |
168 | - |
169 | -More information about liblarch: https://live.gnome.org/liblarch/""" % ( |
170 | - missing, GIT_CMD)) |
171 | - return False |
172 | - |
173 | - import liblarch |
174 | - try: |
175 | - is_liblarch_compatible = liblarch.is_compatible(REQUIRED_LIBLARCH_API) |
176 | - except: |
177 | - print("""I could not recognize your liblarch module. Make sure that |
178 | -you don't have stale copies of liblarch in your import path |
179 | -""") |
180 | - is_liblarch_compatible = False |
181 | - if not is_liblarch_compatible: |
182 | - try: |
183 | - liblarch_version = liblarch.API |
184 | - except AttributeError: |
185 | - # Liblarch 1.0 has lowercased API variable |
186 | - liblarch_version = liblarch.api |
187 | - |
188 | - print("""Your liblarch copy has its API at version %s |
189 | -but your GTG copy need liblarch API version %s |
190 | -You may fix that by downloading the last version of liblarch with |
191 | - |
192 | -%s """ % (liblarch_version, REQUIRED_LIBLARCH_API, GIT_CMD)) |
193 | - return False |
194 | - |
195 | - return True |
196 | - |
197 | -if __name__ == "__main__": |
198 | - use_local = "-l" in sys.argv[1:] or "--local-liblarch" in sys.argv[1:] |
199 | - |
200 | - if import_liblarch(use_local): |
201 | - sys.exit(0) |
202 | - else: |
203 | - sys.exit(1) |
204 | |
205 | === modified file 'MANIFEST.in' |
206 | --- MANIFEST.in 2012-05-23 08:55:31 +0000 |
207 | +++ MANIFEST.in 2014-03-14 20:44:47 +0000 |
208 | @@ -1,16 +1,15 @@ |
209 | -recursive-include GTG *.glade |
210 | recursive-include GTG *.ui |
211 | recursive-include GTG *.gtg-plugin |
212 | recursive-include GTG *.png |
213 | recursive-include GTG *.svg |
214 | -include gtg.desktop |
215 | +recursive-include GTG/plugins/export * |
216 | include CHANGELOG |
217 | include README |
218 | include LICENSE |
219 | include AUTHORS |
220 | -include org.gnome.GTG.service |
221 | -recursive-include data/icons *.png |
222 | -recursive-include data/icons *.svg |
223 | -include doc/*.1 |
224 | -recursive-include GTG/plugins/export * |
225 | +include requirements.txt |
226 | +recursive-include data * |
227 | recursive-include po *.po |
228 | +include docs/Makefile |
229 | +recursive-include docs/source * |
230 | +recursive-include docs/userdoc * |
231 | |
232 | === renamed file 'gtcli_bash_completion' => 'data/gtcli_bash_completion' (properties changed: +x to -x) |
233 | === renamed file 'gtg.appdata.xml' => 'data/gtg.appdata.xml' |
234 | === renamed file 'gtg.desktop' => 'data/gtg.desktop' |
235 | === renamed file 'org.gnome.GTG.service' => 'data/org.gnome.GTG.service' |
236 | === removed file 'doc/gtcli.1' |
237 | --- doc/gtcli.1 2013-12-12 12:43:00 +0000 |
238 | +++ doc/gtcli.1 1970-01-01 00:00:00 +0000 |
239 | @@ -1,58 +0,0 @@ |
240 | -.TH gtgcli 1 2012-08-16 "gtgcli" |
241 | -.SH NAME |
242 | -gtcli \- Command-line interface for Getting Things GNOME! |
243 | -.SH SYNOPSIS |
244 | -.B gtgcli [options] COMMAND [command options] |
245 | -.SH DESCRIPTION |
246 | -gtgcli provides a handy command-line interface to GTG. It allows one to list |
247 | -and modify your task directly from the command line. It also allows one to |
248 | -interact with GTG using shell scripts. |
249 | -.SH OPTIONS |
250 | -.TP |
251 | -\fB\-h, \-\-help\fB |
252 | -Prints some information about gtg's usage and options. |
253 | -.SH COMMAND OPTIONS |
254 | -.TP |
255 | -\fBnew\fB |
256 | -Creates a new task. |
257 | -.TP |
258 | -\fBshow <tid>\fB |
259 | -Display task with <tid> task ID. |
260 | -.TP |
261 | -\fBedit <tid>\fB |
262 | -Opens the GUI editor for the task with <tid> task ID. |
263 | -.TP |
264 | -\fBdelete <tid>\fB |
265 | -Removes task with <tid> task ID. |
266 | -.TP |
267 | -\fBlist [all|today|<filter>|<tag>]\fB |
268 | -List tasks corresponding to the given attributes. |
269 | -.TP |
270 | -\fBsearch <expression>\fB |
271 | -Search tasks corresponding to <expression>. Read the documentation from GTG's |
272 | -help to know more about the search query syntax. |
273 | -.TP |
274 | -\fBcount [all|today|<filter>|<tag>]\fB |
275 | -Outputs the task count for all the task corresponding to the given attributes. |
276 | -.TP |
277 | -\fBsummary [all|today|<filter>|<tag]\fB |
278 | -Report how many tasks starting/due each day. |
279 | -.TP |
280 | -\fBpostpone <tid> <date>\fB |
281 | -Updates the start date of the task with <tid> task id to <date>. |
282 | -.TP |
283 | -\fBclose <tid>\fB |
284 | -Sets state of task identified by <tid> to done. |
285 | -.TP |
286 | -\fBbrowser [hide|show]\fB |
287 | -Hides or shows the task browser window. |
288 | -.SH "SEE ALSO" |
289 | -gtg (1) |
290 | -.SH BUGS |
291 | -Please report any bug you may experience to the \fBGTG\fP Developers, that can |
292 | -be reached at \fRhttps://edge.launchpad.net/gtg\fP |
293 | -.SH COPYRIGHT |
294 | -This manual page is Copyright 2012 Bertrand Rousseau |
295 | -<bertrand.rousseau@gmail.com>. Permission is granted to copy, distribute |
296 | -and/or modify this document under the terms of the GNU General Public License, |
297 | -Version 3 or any later version published by the Free Software Foundation. |
298 | |
299 | === removed file 'doc/gtg.1' |
300 | --- doc/gtg.1 2013-12-12 12:43:00 +0000 |
301 | +++ doc/gtg.1 1970-01-01 00:00:00 +0000 |
302 | @@ -1,52 +0,0 @@ |
303 | -.TH gtg 1 2012-08-16 "gtg" |
304 | -.SH NAME |
305 | -gtg \- Getting Things GNOME!, a personal tasks and TODO-list items organizer |
306 | -for the GNOME desktop environment |
307 | -.SH SYNOPSIS |
308 | -.B gtg [options] |
309 | -.SH DESCRIPTION |
310 | -Getting Things GNOME! is a personal tasks and TODO-list items organizer for the |
311 | -GNOME desktop environment inspired by the Getting Things Done (GTD) |
312 | -methodology. GTG is designed with flexibility, adaptability, and ease of use |
313 | -in mind so it can be used as more than just GTD software. |
314 | -.PP |
315 | -GTG is intended to help you track everything you need to do and need to know, |
316 | -from small tasks to large projects. |
317 | -.PP |
318 | -GTG uses a very handy system for creating and editing tasks. The task editor |
319 | -can automatically recognize metadata such as tags and subtasks through the use |
320 | -of a very simple syntax. |
321 | -.SH OPTIONS |
322 | -.TP |
323 | -\fB\-b, \-\-boot\-test\fB |
324 | -Boot-up only. Causes gtg to exit immediately after completing the first |
325 | -iteration of the main loop. Useful for boot performance testing work. |
326 | -.TP |
327 | -\fB\-c, \-\-no-crash\-handler\fB |
328 | -Disable crash handler. Causes the Apport automatic crash reporting |
329 | -utility to not be invoked when gtg crashes; instead it will print out a |
330 | -normal python backtrace. This can be useful for debugging crash bugs, |
331 | -or if the crash handler is misbehaving. |
332 | -.TP |
333 | -\fB\-d, \-\-debug\fB |
334 | -Debug mode. Prints extra information to the console which may be useful |
335 | -for understanding and reporting bugs. |
336 | -.TP |
337 | -\fB\-h, \-\-help\fB |
338 | -Prints some information about gtg's usage and options. |
339 | -.TP |
340 | -\fB\-l, \-\-local-liblarch\fB |
341 | -Use local liblarch. Look for the liblarch python library in ../liblarch. |
342 | -This is mainly useful for testing purpose. |
343 | -.TP |
344 | -\fB\-t TITLE, \-\-title=TITLE\fB |
345 | -Set the window's title to TITLE. |
346 | -.TP |
347 | -\fB\-v, \-\-version\fB |
348 | -Prints version and exits. |
349 | -.SH COPYRIGHT |
350 | -This manual page is Copyright 2009, 2012 Luca Falavigna <dktrkranz@debian.org> |
351 | -and Bertrand Rousseau <bertrand.rousseau@gmail.com>. Permission is granted |
352 | -to copy, distribute and/or modify this document under the terms of the GNU |
353 | -General Public License, Version 3 or any later version published by the Free |
354 | -Software Foundation. |
355 | |
356 | === removed file 'doc/gtg_new_task.1' |
357 | --- doc/gtg_new_task.1 2012-05-23 08:55:31 +0000 |
358 | +++ doc/gtg_new_task.1 1970-01-01 00:00:00 +0000 |
359 | @@ -1,29 +0,0 @@ |
360 | -.TH GTG_NEW_TASK 1 "4 December 2009" |
361 | -.SH NAME |
362 | -gtg_new_task \- Adds a task to the \fBGetting Things GNOME!\fP organizer |
363 | -.SH SYNOPSIS |
364 | -\fBgtg_new_task\fP [\-h | \-\-help] [\-i | \-\-interactive] |
365 | -.SH DESCRIPTION |
366 | -\fBgtg_new_task\fP creates a new task in the Getting Things GNOME! organizer |
367 | -for the GNOME desktop via the DBUS message bus. Getting Things GNOME! must be |
368 | -running for the command to work. |
369 | -.SS Options |
370 | -.TP |
371 | -\fB[\-h | \-\-help]\fP |
372 | -Shows a brief usage help. |
373 | -.TP |
374 | -\fB[\-i | \-\-interactive]\fP |
375 | -Accepts a task description via stdin. |
376 | -.SH FILES |
377 | -None |
378 | -.SH "SEE ALSO" |
379 | -gtg (1) |
380 | -.SH BUGS |
381 | -Please report any bug you may experience to the \fBGTG\fP Developers, that can |
382 | -be reached at \fRhttps://edge.launchpad.net/gtg\fP |
383 | -.SH COPYRIGHT |
384 | -This manual page is Copyright2009 Luca Invernizzi <invernizzi.l@gmail.com>. |
385 | -Permission is granted to copy, distribute and/or modify this document under the |
386 | -terms of the GNU General Public License, Version 3 or any later version |
387 | -published by the Free Software Foundation. |
388 | - |
389 | |
390 | === renamed directory 'doc' => 'docs' |
391 | === added file 'docs/Makefile' |
392 | --- docs/Makefile 1970-01-01 00:00:00 +0000 |
393 | +++ docs/Makefile 2014-03-14 20:44:47 +0000 |
394 | @@ -0,0 +1,74 @@ |
395 | +# Makefile for Sphinx documentation |
396 | + |
397 | +# You can set these variables from the command line. |
398 | +SPHINXOPTS = |
399 | +SPHINXBUILD = sphinx-build |
400 | +PAPER = a4 |
401 | +BUILDDIR = build |
402 | + |
403 | +# User-friendly check for sphinx-build |
404 | +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) |
405 | +$(error The '$(SPHINXBUILD)' command was not found. Install Sphinx.) |
406 | +endif |
407 | + |
408 | +# Internal variables. |
409 | +PAPEROPT_a4 = -D latex_paper_size=a4 |
410 | +PAPEROPT_letter = -D latex_paper_size=letter |
411 | +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source |
412 | +# the i18n builder cannot share the environment and doctrees with the others |
413 | +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source |
414 | + |
415 | +.PHONY: help clean userhtml html singlehtml latex latexpdf man linkcheck |
416 | + |
417 | +help: |
418 | + @echo "Please use \`make <target>' where <target> is one of" |
419 | + @echo " userhtml to make HTML files from user level documentation" |
420 | + @echo " html to make standalone HTML files" |
421 | + @echo " singlehtml to make a single large HTML file" |
422 | + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" |
423 | + @echo " latexpdf to make LaTeX files and run them through pdflatex" |
424 | + @echo " man to make manual pages" |
425 | + @echo " linkcheck to check all external links for integrity" |
426 | + |
427 | +clean: |
428 | + rm -rf $(BUILDDIR)/* |
429 | + rm -f *.1 |
430 | + |
431 | +userhtml: |
432 | + mkdir -p $(BUILDDIR)/userhtml |
433 | + yelp-build html -o $(BUILDDIR)/userhtml userdoc/C/*.page |
434 | + @echo |
435 | + @echo "Build finished. User HTML pages are in $(BUILDDIR)/userhtml." |
436 | + |
437 | + |
438 | +html: |
439 | + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html |
440 | + @echo |
441 | + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." |
442 | + |
443 | +singlehtml: |
444 | + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml |
445 | + @echo |
446 | + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." |
447 | + |
448 | +latex: |
449 | + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
450 | + @echo |
451 | + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." |
452 | + @echo "Run \`make' in that directory to run these through (pdf)latex" \ |
453 | + "(use \`make latexpdf' here to do that automatically)." |
454 | + |
455 | +latexpdf: |
456 | + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
457 | + @echo "Running LaTeX files through pdflatex..." |
458 | + $(MAKE) -C $(BUILDDIR)/latex all-pdf |
459 | + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." |
460 | + |
461 | +man: |
462 | + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) . |
463 | + |
464 | +linkcheck: |
465 | + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck |
466 | + @echo |
467 | + @echo "Link check complete; look for any errors in the above output " \ |
468 | + "or in $(BUILDDIR)/linkcheck/output.txt." |
469 | |
470 | === added directory 'docs/source' |
471 | === added directory 'docs/source/_static' |
472 | === added directory 'docs/source/_templates' |
473 | === added file 'docs/source/conf.py' |
474 | --- docs/source/conf.py 1970-01-01 00:00:00 +0000 |
475 | +++ docs/source/conf.py 2014-03-14 20:44:47 +0000 |
476 | @@ -0,0 +1,74 @@ |
477 | +#!/usr/bin/env python3 |
478 | +# -*- coding: utf-8 -*- |
479 | + |
480 | +import os |
481 | +import sys |
482 | + |
483 | +# Use local version of GTG |
484 | +sys.path.insert(0, '../..') |
485 | + |
486 | +from GTG import info |
487 | + |
488 | +extensions = [ |
489 | + 'sphinx.ext.autodoc', |
490 | + 'sphinx.ext.graphviz', |
491 | + 'sphinx.ext.viewcode', |
492 | +] |
493 | + |
494 | +project = 'Getting Things GNOME!' |
495 | +copyright = 'The GTG Team' |
496 | + |
497 | +short_version = '.'.join(info.VERSION.split('.')[:2]) |
498 | +version = short_version |
499 | +release = info.VERSION |
500 | + |
501 | +master_doc = 'index' |
502 | +source_suffix = '.rst' |
503 | + |
504 | +exclude_patterns = [] |
505 | +pygments_style = 'sphinx' |
506 | + |
507 | +# -- Options for HTML output ---------------------------------------------- |
508 | +on_rtd = os.environ.get('READTHEDOCS', None) == 'True' |
509 | +if on_rtd: |
510 | + html_theme = 'default' |
511 | +else: |
512 | + html_theme = 'nature' |
513 | + |
514 | +html_show_sphinx = False |
515 | + |
516 | +# -- Options for LaTeX output --------------------------------------------- |
517 | + |
518 | +# Grouping the document tree into LaTeX files. List of tuples |
519 | +# (source start file, target name, title, |
520 | +# author, documentclass [howto, manual, or own class]). |
521 | +latex_documents = [( |
522 | + 'index', |
523 | + 'gtg.tex', |
524 | + 'Getting Things GNOME! Documentation', |
525 | + 'The GTG Team', |
526 | + 'manual', |
527 | +)] |
528 | + |
529 | +# -- Options for manual page output --------------------------------------- |
530 | + |
531 | +# One entry per manual page. List of tuples |
532 | +# (source start file, name, description, authors, manual section). |
533 | +man_pages = [ |
534 | + ( |
535 | + 'man/gtcli', 'gtcli', |
536 | + 'Command-line interface for Getting Things GNOME!', |
537 | + [], 1, |
538 | + ), |
539 | + ( |
540 | + 'man/gtg', 'gtg', |
541 | + 'Getting Things GNOME!, a personal tasks and TODO-list items ' |
542 | + 'organizer for the GNOME desktop environment', |
543 | + [], 1, |
544 | + ), |
545 | + ( |
546 | + 'man/gtg_new_task', 'gtg_new_task', |
547 | + 'Adds a task to the Getting Things GNOME! organizer', |
548 | + [], 1, |
549 | + ), |
550 | +] |
551 | |
552 | === added file 'docs/source/contributing.rst' |
553 | --- docs/source/contributing.rst 1970-01-01 00:00:00 +0000 |
554 | +++ docs/source/contributing.rst 2014-03-14 20:44:47 +0000 |
555 | @@ -0,0 +1,140 @@ |
556 | +=================== |
557 | +Contributing to GTG |
558 | +=================== |
559 | + |
560 | +GTG uses Bazaar_ for versioning. It might be useful to read `Bazaar's tutorial`_ first. |
561 | + |
562 | +.. _Bazaar: http://bazaar.canonical.com/ |
563 | +.. _`Bazaar's tutorial`: http://doc.bazaar.canonical.com/latest/en/mini-tutorial/ |
564 | + |
565 | +Dependencies |
566 | +============ |
567 | + |
568 | +You need to have python-configobj installed |
569 | + |
570 | +Getting the code |
571 | +================ |
572 | + |
573 | +Get the latest version of the code on Launchpad_:: |
574 | + |
575 | + $ bzr branch lp:gtg trunk |
576 | + |
577 | +Although if you're thinking of contributing more than one patch, you might want to do:: |
578 | + |
579 | + $ bzr init-repo gtg |
580 | + $ cd gtg |
581 | + $ bzr branch lp:gtg trunk |
582 | + |
583 | +This will share revision data between branches, reducing storage costs & network time. |
584 | + |
585 | + |
586 | +Launch gtg with debugging data (so it doesn't mess with your data):: |
587 | + |
588 | + $ cd trunk |
589 | + $ ./scripts/debug.sh |
590 | + |
591 | +.. _Launchpad: https://launchpad.net |
592 | + |
593 | +Choosing a feature to work on |
594 | +============================= |
595 | + |
596 | +If you are a happy user of GTG and nothing bothers you but you would like to contribute you can: |
597 | + |
598 | +* choose a `LOVE bug`_ which are easier to solve |
599 | +* ask people on IRC channel #gtg on irc://irc.gimp.org/#gtg |
600 | +* ask on our `mailing list`_ |
601 | + |
602 | +.. _`LOVE bug`: https://bugs.launchpad.net/gtg/+bugs?field.status%3Alist=NEW&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&assignee_option=none&field.tag=love |
603 | +.. _`mailing list`: https://launchpad.net/~gtg-user |
604 | + |
605 | + |
606 | +Working on the feature in a branch |
607 | +================================== |
608 | + |
609 | +You have your local copy of the code (see "Getting the code"). Now, create a |
610 | +local branch of your local branch (yes, it is):: |
611 | + |
612 | + $ cd .. |
613 | + $ bzr branch trunk cool-new-feature |
614 | + |
615 | +(your *trunk* folder is branched in a new *cool-new-feature* folder) |
616 | + |
617 | +When working with Bazaar, it's a good idea to keep your local *trunk* branch as |
618 | +a pristine copy of trunk on Launchpad. |
619 | + |
620 | +Hack and commit your changes:: |
621 | + |
622 | + bzr commit -m "description of my change" |
623 | + |
624 | +Repeat as much as you want. Don't hesitate to abuse the local commits. Think of |
625 | +*commit* like *quick save* in a video game :) |
626 | + |
627 | +Run the units tests to see if all is fine:: |
628 | + |
629 | + $ make check=python3 |
630 | + ./run-tests |
631 | + ........... |
632 | + ---------------------------------------------------------------------- |
633 | + Ran 11 tests in 0.063s |
634 | + |
635 | + OK |
636 | + |
637 | +Modify CHANGELOG to reflect your changes. If it's your first contribution, add |
638 | +yourself in the AUTHORS file with your email address. |
639 | + |
640 | +If the trunk has been updated while you were hacking, you should update your |
641 | +local trunk branch, and merge modification in **your** branch:: |
642 | + |
643 | + $ cd ../trunk |
644 | + $ bzr pull trunk |
645 | + $ cd ../cool-new-feature |
646 | + $ bzr merge ../trunk |
647 | + |
648 | +If you have conflicts, you must solve them. Refer to `conflicts guide`_. |
649 | + |
650 | +.. _`conflicts guide`: http://doc.bazaar.canonical.com/bzr.0.92/en/user-guide/conflicts.html |
651 | + |
652 | +Once you don't have any conflict anymore, you must commit the changes related |
653 | +to the merge. Use a clear commit message, like:: |
654 | + |
655 | + Updating branch by merging the last trunk version. |
656 | + |
657 | +Pushing your work to your own branch on Launchpad (where *ploum* is your |
658 | +Launchpad username):: |
659 | + |
660 | + $ bzr push lp:~ploum/gtg/cool-new-feature |
661 | + |
662 | +Alternatively, if you want other gtg users to be able to write to your branch, |
663 | +push it in the gtg-user group (you have to be part of it):: |
664 | + |
665 | + $ bzr push lp:~gtg-user/gtg/ploum_branch |
666 | + |
667 | +Ask for a merge request and comment on the corresponding bug. (Open one if |
668 | +there is none). Add the tag *toreview* to the bug in Launchpad. This is very |
669 | +important and ensures we are not letting a patch rotting. |
670 | + |
671 | +You can file a bug at https://bugs.launchpad.net/gtg/+filebug. |
672 | + |
673 | +To ask for a merge request, run:: |
674 | + |
675 | +$ cd cool-new-feature |
676 | +$ bzr lp-open |
677 | + |
678 | +This will open the branch's web page on Launchpad. From there, click *Propose for merging*. |
679 | + |
680 | +If your branch is solving specific reported bugs, please also register your |
681 | +branch to these bugs (there is an link for that in each bug report page). It |
682 | +allows to link together all related resources (which in turn is useful to dig |
683 | +out precious information from all the discussions that happened around those |
684 | +bugs). |
685 | + |
686 | +For more detailed information, see the `HACKING`_ guide included in the GTG code. |
687 | + |
688 | +.. _`HACKING`: http://bazaar.launchpad.net/~gtg/gtg/trunk/annotate/head%3A/HACKING |
689 | + |
690 | +Troubleshooting |
691 | +=============== |
692 | + |
693 | +If you have a problem with SSH keys while uploading to Launchpad, look at this `SuperUser question`_. |
694 | + |
695 | +.. _`SuperUser question`: http://superuser.com/questions/161337/big-ssh-problem |
696 | |
697 | === added file 'docs/source/index.rst' |
698 | --- docs/source/index.rst 1970-01-01 00:00:00 +0000 |
699 | +++ docs/source/index.rst 2014-03-14 20:44:47 +0000 |
700 | @@ -0,0 +1,53 @@ |
701 | +===================== |
702 | +Getting Things GNOME! |
703 | +===================== |
704 | + |
705 | +Getting Things GNOME! (GTG) is a personal tasks and TODO-list items organizer |
706 | +for the GNOME desktop environment inspired by the Getting Things Done (GTD) |
707 | +methodology. GTG is designed with flexibility, adaptability, and ease of use in |
708 | +mind so it can be used as more than just GTD software. |
709 | + |
710 | +GTG is intended to help you track everything you need to do and need to know, |
711 | +from small tasks to large projects. |
712 | + |
713 | +Contents |
714 | +======== |
715 | + |
716 | +* `User level documentation <http://www.gtgnome.net/html/userdoc/index.html>`_ |
717 | + |
718 | + |
719 | +Documentation for developers: |
720 | + |
721 | +.. toctree:: |
722 | + :maxdepth: 1 |
723 | + |
724 | + contributing |
725 | + |
726 | +Man pages |
727 | +========= |
728 | + |
729 | +.. toctree:: |
730 | + :maxdepth: 1 |
731 | + |
732 | + man/gtg |
733 | + man/gtg_new_task |
734 | + man/gtcli |
735 | + |
736 | +Release notes |
737 | +============= |
738 | + |
739 | +.. toctree:: |
740 | + :maxdepth: 1 |
741 | + |
742 | + releases/v0.3.1 |
743 | + releases/v0.2.2 |
744 | + releases/v0.1.9 |
745 | + releases/v0.1 |
746 | + |
747 | + |
748 | +Indices and tables |
749 | +================== |
750 | + |
751 | +* :ref:`genindex` |
752 | +* :ref:`modindex` |
753 | +* :ref:`search` |
754 | |
755 | === added directory 'docs/source/man' |
756 | === added file 'docs/source/man/gtcli.rst' |
757 | --- docs/source/man/gtcli.rst 1970-01-01 00:00:00 +0000 |
758 | +++ docs/source/man/gtcli.rst 2014-03-14 20:44:47 +0000 |
759 | @@ -0,0 +1,78 @@ |
760 | +gtcli(1) |
761 | +======== |
762 | + |
763 | +SYNOPSIS |
764 | +-------- |
765 | + |
766 | +**gtgcli [options] COMMAND [command options]** |
767 | + |
768 | +DESCRIPTION |
769 | +----------- |
770 | +gtgcli provides a handy command-line interface to GTG. It allows one to list |
771 | +and modify your task directly from the command line. It also allows one to |
772 | +interact with GTG using shell scripts. |
773 | + |
774 | +OPTIONS |
775 | +------- |
776 | + |
777 | +**-h, --help** |
778 | + Prints some information about gtg's usage and options. |
779 | + |
780 | +COMMAND OPTIONS |
781 | +--------------- |
782 | + |
783 | +**new** |
784 | + Creates a new task. |
785 | + |
786 | + |
787 | +**show <tid>** |
788 | + Display task with <tid> task ID. |
789 | + |
790 | + |
791 | +**edit <tid>** |
792 | + Opens the GUI editor for the task with <tid> task ID. |
793 | + |
794 | + |
795 | +**delete <tid>** |
796 | + Removes task with <tid> task ID. |
797 | + |
798 | +**list [all|today|<filter>|<tag>]** |
799 | + List tasks corresponding to the given attributes. |
800 | + |
801 | +**search <expression>** |
802 | + Search tasks corresponding to <expression>. Read the documentation from GTG's |
803 | + help to know more about the search query syntax. |
804 | + |
805 | +**count [all|today|<filter>|<tag>]** |
806 | + Outputs the task count for all the task corresponding to the given attributes. |
807 | + |
808 | +**summary [all|today|<filter>|<tag]** |
809 | + Report how many tasks starting/due each day. |
810 | + |
811 | +**postpone <tid> <date>** |
812 | + Updates the start date of the task with <tid> task id to <date>. |
813 | + |
814 | +**close <tid>** |
815 | + Sets state of task identified by <tid> to done. |
816 | + |
817 | +**browser [hide|show]** |
818 | + Hides or shows the task browser window. |
819 | + |
820 | +SEE ALSO |
821 | +-------- |
822 | + |
823 | +gtg (1) |
824 | + |
825 | +BUGS |
826 | +---- |
827 | + |
828 | +Please report any bug you may experience to the **GTG** Developers, that can |
829 | +be reached at https://launchpad.net/gtg |
830 | + |
831 | +COPYRIGHT |
832 | +--------- |
833 | + |
834 | +This manual page is Copyright 2012 Bertrand Rousseau |
835 | +<bertrand.rousseau@gmail.com>. Permission is granted to copy, distribute |
836 | +and/or modify this document under the terms of the GNU General Public License, |
837 | +Version 3 or any later version published by the Free Software Foundation. |
838 | |
839 | === added file 'docs/source/man/gtg.rst' |
840 | --- docs/source/man/gtg.rst 1970-01-01 00:00:00 +0000 |
841 | +++ docs/source/man/gtg.rst 2014-03-14 20:44:47 +0000 |
842 | @@ -0,0 +1,62 @@ |
843 | +gtg(1) |
844 | +====== |
845 | + |
846 | +SYNOPSIS |
847 | +-------- |
848 | + |
849 | +**gtg [options]** |
850 | + |
851 | +DESCRIPTION |
852 | +----------- |
853 | + |
854 | +Getting Things GNOME! is a personal tasks and TODO-list items organizer for the |
855 | +GNOME desktop environment inspired by the Getting Things Done (GTD) |
856 | +methodology. GTG is designed with flexibility, adaptability, and ease of use in |
857 | +mind so it can be used as more than just GTD software. |
858 | + |
859 | + |
860 | +GTG is intended to help you track everything you need to do and need to know, |
861 | +from small tasks to large projects. |
862 | + |
863 | +GTG uses a very handy system for creating and editing tasks. The task editor |
864 | +can automatically recognize metadata such as tags and subtasks through the use |
865 | +of a very simple syntax. |
866 | + |
867 | +OPTIONS |
868 | +------- |
869 | + |
870 | +**-b, --boot-test** |
871 | + Boot-up only. Causes gtg to exit immediately after completing the first |
872 | + iteration of the main loop. Useful for boot performance testing work. |
873 | + |
874 | +**-c, --no-crash-handler** |
875 | + Disable crash handler. Causes the Apport automatic crash reporting utility |
876 | + to not be invoked when gtg crashes; instead it will print out a normal |
877 | + python backtrace. This can be useful for debugging crash bugs, or if the |
878 | + crash handler is misbehaving. |
879 | + |
880 | +**-d, --debug** |
881 | + Debug mode. Prints extra information to the console which may be useful for |
882 | + understanding and reporting bugs. |
883 | + |
884 | +**-h, --help** |
885 | + Prints some information about gtg's usage and options. |
886 | + |
887 | +**-l, --local-liblarch** |
888 | + Use local liblarch. Look for the liblarch python library in ../liblarch. |
889 | + This is mainly useful for testing purpose. |
890 | + |
891 | +**-t TITLE, --title=TITLE** |
892 | + Set the window's title to TITLE. |
893 | + |
894 | +**-v, --version** |
895 | + Prints version and exits. |
896 | + |
897 | +COPYRIGHT |
898 | +--------- |
899 | + |
900 | +This manual page is Copyright 2009, 2012 Luca Falavigna <dktrkranz@debian.org> |
901 | +and Bertrand Rousseau <bertrand.rousseau@gmail.com>. Permission is granted |
902 | +to copy, distribute and/or modify this document under the terms of the GNU |
903 | +General Public License, Version 3 or any later version published by the Free |
904 | +Software Foundation. |
905 | |
906 | === added file 'docs/source/man/gtg_new_task.rst' |
907 | --- docs/source/man/gtg_new_task.rst 1970-01-01 00:00:00 +0000 |
908 | +++ docs/source/man/gtg_new_task.rst 2014-03-14 20:44:47 +0000 |
909 | @@ -0,0 +1,42 @@ |
910 | +gtg_new_task(1) |
911 | +=============== |
912 | + |
913 | +SYNOPSIS |
914 | +-------- |
915 | + |
916 | +**gtg_new_task** [-h | --help] [-i | --interactive] |
917 | + |
918 | +DESCRIPTION |
919 | +----------- |
920 | + |
921 | +**gtg_new_task** creates a new task in the Getting Things GNOME! organizer for |
922 | +the GNOME desktop via the DBUS message bus. Getting Things GNOME! must be |
923 | +running for the command to work. |
924 | + |
925 | +Options |
926 | +~~~~~~~ |
927 | + |
928 | +**[-h | --help]** |
929 | + Shows a brief usage help. |
930 | + |
931 | +**[-i | --interactive]** |
932 | + Accepts a task description via stdin. |
933 | + |
934 | +SEE ALSO |
935 | +-------- |
936 | + |
937 | +gtg (1) |
938 | + |
939 | +BUGS |
940 | +---- |
941 | + |
942 | +Please report any bug you may experience to the **GTG** Developers, that can be |
943 | +reached at https://launchpad.net/gtg |
944 | + |
945 | +COPYRIGHT |
946 | +--------- |
947 | + |
948 | +This manual page is Copyright2009 Luca Invernizzi <invernizzi.l@gmail.com>. |
949 | +Permission is granted to copy, distribute and/or modify this document under the |
950 | +terms of the GNU General Public License, Version 3 or any later version |
951 | +published by the Free Software Foundation. |
952 | |
953 | === renamed directory 'doc/release_notes' => 'docs/source/releases' |
954 | === added file 'docs/source/releases/v0.1.9.rst' |
955 | --- docs/source/releases/v0.1.9.rst 1970-01-01 00:00:00 +0000 |
956 | +++ docs/source/releases/v0.1.9.rst 2014-03-14 20:44:47 +0000 |
957 | @@ -0,0 +1,49 @@ |
958 | +v0.1.9: "Five curtain calls" |
959 | +============================ |
960 | + |
961 | +The whole GTG development team is pleased to announce that after months of hard |
962 | +work, we've just released a new version of Getting Things GNOME!, codenamed |
963 | +"Five curtain calls". Don't even hesitate, rush on our Launchpad project page |
964 | +and download the archive or, if you prefer, download the packaged version for |
965 | +Debian and Ubuntu from our PPA! |
966 | + |
967 | +The GTG 0.1.9 release is a beta release for the upcoming 0.2, which is due very |
968 | +soon. It packs a *huge amount* of new features, among them: |
969 | + |
970 | +* support for plugins, thanks to Paulo Cabido's Google Summer of Code |
971 | +* already 6 plugins available: |
972 | + |
973 | + - Remember the milk synchronization |
974 | + - hamster integration |
975 | + - bugzilla |
976 | + - geolocation |
977 | + - tomboy |
978 | + - notification area |
979 | + |
980 | +* improved performances |
981 | +* support for tag groups |
982 | +* improved editor UI |
983 | +* fuzzy due dates |
984 | + |
985 | +The 0.2 release will also fixes not less than 99 bugs! Thanks to our new GTG |
986 | +developers (Paulo Cabido, Luca Invernizzi and Kevin Mehall), a terrific work |
987 | +has been achieved for 0.1.9! |
988 | + |
989 | +As this is a beta release, we kindly ask every adventurous testers to help us |
990 | +make the soon-to-come 0.2 a great release by reporting any unnoticed bug to our |
991 | +project page. |
992 | + |
993 | +Unfortunately, this release also comes with 2 unresolved bugs that worth mentioning: |
994 | + |
995 | +* A bug with intel GPU drivers in Ubuntu 9.10 distributions may prevent tag |
996 | + color squares from appearing. It seems that upgrading to a newest version of |
997 | + those drivers fixes that. More info on the bug page. |
998 | +* A GTK bug causes some errors to show on standard output if you run GTG from a |
999 | + terminal, this bug has been reported upstream. |
1000 | + |
1001 | +Those 2 bugs are caused by upstream bugs and will only be corrected once the |
1002 | +related apps will be fixed, which should happen anytime. |
1003 | + |
1004 | +Anyway, we'll soon come back with a new, shiny, a full-featured 0.2 release |
1005 | +that will sure rock. Until then, we hope you'll like GTG 0.1.9 as much as we |
1006 | +do! |
1007 | |
1008 | === added file 'docs/source/releases/v0.1.rst' |
1009 | --- docs/source/releases/v0.1.rst 1970-01-01 00:00:00 +0000 |
1010 | +++ docs/source/releases/v0.1.rst 2014-03-14 20:44:47 +0000 |
1011 | @@ -0,0 +1,37 @@ |
1012 | +v0.1: "Just 5 minutes more" |
1013 | +=========================== |
1014 | + |
1015 | +Hi, everyone! |
1016 | + |
1017 | +The first official release of Getting Things Gnome!, GTG "Just 5 |
1018 | +minutes more" 0.1, is out! |
1019 | + |
1020 | +GTG is a personal organizer for the GNOME desktop environment, it |
1021 | +focuses on ease of use and flexibility, while keeping things simple. |
1022 | + |
1023 | +This release is our first. So far GTG supports: |
1024 | + |
1025 | + - task edition using a text editor, almost no form fields! |
1026 | + - fast consecutive tasks creation |
1027 | + - tags to sort tasks |
1028 | + - color for tags, to easily differenciate tagged tasks |
1029 | + |
1030 | +There are very few differences with the release candidate we published |
1031 | +last week. |
1032 | + |
1033 | +The software is still a bit in a proof-of-concept state, since in the |
1034 | +future we want to test a lot of different functionalities. We'd really |
1035 | +like to know what you like and dislike in GTG, so we can organize |
1036 | +future work and do what's the most important: provide a program that |
1037 | +people love to use because it makes their life better ;-) |
1038 | + |
1039 | +Tarballs with the source code are available on our launchpad project |
1040 | +page: https://launchpad.net/gtg/+download |
1041 | +Packages for Ubuntu are also available on our PPA: |
1042 | +https://launchpad.net/~gtg/+archive/ppa |
1043 | + |
1044 | +Now, grab it and tell us what you think! Don't hesitate to discuss |
1045 | +with us on our mailing-lists, on IRC (#gtg on GimpNET), or to post |
1046 | +bugs on launchpad! |
1047 | + |
1048 | +Enjoy! |
1049 | |
1050 | === added file 'docs/source/releases/v0.2.2.rst' |
1051 | --- docs/source/releases/v0.2.2.rst 1970-01-01 00:00:00 +0000 |
1052 | +++ docs/source/releases/v0.2.2.rst 2014-03-14 20:44:47 +0000 |
1053 | @@ -0,0 +1,16 @@ |
1054 | +v0.2.2: Protector |
1055 | +================= |
1056 | + |
1057 | +After just one month since the last release, the GTG development team is |
1058 | +pleased to announce the release of Getting things GNOME! 0.2.2, codename |
1059 | +"Protector". This one is the last of the 0.2.X serie: we have already started |
1060 | +breaking everything to make GTG faster and better. |
1061 | + |
1062 | +Aside from the tons of bug fixes that ship with every release, this one |
1063 | +features a brand new preference dialog and integration with Docky. |
1064 | + |
1065 | +On the new plug-ins side, you'll get one to send tasks via email, another that |
1066 | +can import tasks from JSON, and the last one that can delete old closed tasks |
1067 | +automatically (which makes GTG faster if you have a huge amount of tasks). The |
1068 | +RememberTheMilk plugin is now stable and features tags synchronization. |
1069 | +Finally, we support the libindicator library, making GTG "Ubuntu Lucid" ready. |
1070 | |
1071 | === renamed file 'doc/release_notes/0.3.1.txt' => 'docs/source/releases/v0.3.1.rst' |
1072 | --- doc/release_notes/0.3.1.txt 2013-11-24 14:48:09 +0000 |
1073 | +++ docs/source/releases/v0.3.1.rst 2014-03-14 20:44:47 +0000 |
1074 | @@ -1,72 +1,108 @@ |
1075 | -Getting Things GNOME! 0.3.1 - Release Note - 24/11/2013 |
1076 | -===================================================== |
1077 | +v0.3.1 |
1078 | +====== |
1079 | + |
1080 | +Released: 24/11/2013 |
1081 | |
1082 | After about 12 months of very active development, the GTG team is proud to |
1083 | announce the release of Getting Things GNOME! 0.3.1! |
1084 | |
1085 | This version is packed with an amazing amount of bug fixes and many novelties! |
1086 | -The goal with 0.3.1 was to refactor several of it’s existing functionalities and improve the codebase. A lot of time was spent on improving the plugins. In the process we have fixed lots of bugs and have made a few feature enhancements! |
1087 | +The goal with 0.3.1 was to refactor several of it’s existing functionalities |
1088 | +and improve the codebase. A lot of time was spent on improving the plugins. In |
1089 | +the process we have fixed lots of bugs and have made a few feature |
1090 | +enhancements! |
1091 | |
1092 | What's new in 0.3.1? |
1093 | ------------------- |
1094 | - |
1095 | -Here's an (incomplete) list of changes: |
1096 | - |
1097 | - - Fixed Hamster Plugin: The Hamster plugin which was used to start a GTG Task as a Hamster activity was not working for some time. It has been fixed. Now tasks can be started in Hamster and they can also be stopped from GTG itself. When a task is closed or deleted, it’s corresponding hamster activity will be stopped. |
1098 | - - GTGOnline!: Parin Porecha started developing a web application for GTG (currently it is named GTGOnline!) as a part of his Google Summer of Code 2013 project [2]. It is up and running [3]. It not only supports the current features of GTG, but also Task Sharing! You can now add users to groups and share your tasks with them ! He has also written a synchronization backend to sync tasks and tags with GTGOnline! |
1099 | - - Port to python3 and gtk3: Xuan Hu ported GTG to python3 and gtk3 as a part of his Google Summer of Code 2013 project [4]. His branch [5] is almost stable and is currently being tested |
1100 | - - PEP8ification of the codebase: There were more than 10,000 PEP8 errors in the codebase which have now been removed. |
1101 | - - New task keyboard shortcut: Working on another application and need to create a task ? |
1102 | -Now it is possible via a keyboard shortcut. Configure it in the settings, and on pressing the shortcut, new task editor will open up ! |
1103 | - - Translations: all translations were updated |
1104 | - - Stability: we've fixed many bugs causing crashes during this release. |
1105 | - - Various other fixes: |
1106 | - - Updated and improved plugins: notification area icon, urgency color, |
1107 | - export, ... |
1108 | - - 7 new feature enhancements |
1109 | - |
1110 | -You can see the complete list of changes in our CHANGELOG: |
1111 | -https://bazaar.launchpad.net/~gtg/gtg/trunk/view/1332/CHANGELOG |
1112 | +-------------------- |
1113 | + |
1114 | +Here's an (incomplete) list of changes. |
1115 | +You can see the complete list of changes in our CHANGELOG_. |
1116 | + |
1117 | +.. _CHANGELOG: https://bazaar.launchpad.net/~gtg/gtg/trunk/view/1332/CHANGELOG |
1118 | + |
1119 | +Fixed Hamster Plugin |
1120 | +~~~~~~~~~~~~~~~~~~~~ |
1121 | + |
1122 | +The Hamster plugin which was used to start a GTG Task as a Hamster activity was |
1123 | +not working for some time. It has been fixed. Now tasks can be started in |
1124 | +Hamster and they can also be stopped from GTG itself. When a task is closed or |
1125 | +deleted, it’s corresponding hamster activity will be stopped. |
1126 | + |
1127 | +GTGOnline! |
1128 | +~~~~~~~~~~ |
1129 | + |
1130 | +Parin Porecha started developing a web application for GTG (currently it is |
1131 | +named GTGOnline!) as a part of `his Google Summer of Code 2013 project`_. It |
1132 | +is `up and running`_. It not only supports the current features of GTG, but |
1133 | +also Task Sharing! You can now add users to groups and share your tasks with |
1134 | +them! He has also written a synchronization backend to sync tasks and tags |
1135 | +with GTGOnline! |
1136 | + |
1137 | +.. _`his Google Summer of Code 2013 project`: https://wiki.gnome.org/Outreach/SummerOfCode/2013/Projects/ParinPorecha_GTGOnline |
1138 | +.. _`up and running`: http://gtgonline-parinporecha.rhcloud.com/ |
1139 | + |
1140 | +Port to python3 and gtk3 |
1141 | +~~~~~~~~~~~~~~~~~~~~~~~~ |
1142 | + |
1143 | +Xuan Hu `ported GTG to python3 and gtk3`_ as a part of his Google Summer of |
1144 | +Code 2013 project. `Xuan's branch`_ is almost stable and is currently being tested |
1145 | + |
1146 | +.. _`ported GTG to python3 and gtk3`: https://wiki.gnome.org/Outreach/SummerOfCode/2013/Projects/XuanHu_PortingGTG |
1147 | +.. _`Xuan's branch`: https://code.launchpad.net/~huxuan/gtg/port-to-gtk3-py3/ |
1148 | + |
1149 | +PEP8ification of the codebase |
1150 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
1151 | + |
1152 | +There were more than 10,000 PEP8 errors in the codebase which have now been removed. |
1153 | + |
1154 | +New task keyboard shortcut |
1155 | +~~~~~~~~~~~~~~~~~~~~~~~~~~ |
1156 | + |
1157 | +Working on another application and need to create a task? |
1158 | + |
1159 | +Now it is possible via a keyboard shortcut. Configure it in the settings, and |
1160 | +on pressing the shortcut, new task editor will open up! |
1161 | + |
1162 | +Translations |
1163 | +~~~~~~~~~~~~ |
1164 | + |
1165 | +All translations were updated. |
1166 | + |
1167 | +Stability |
1168 | +~~~~~~~~~ |
1169 | + |
1170 | +We've fixed many bugs causing crashes during this release. |
1171 | + |
1172 | +Various other fixes |
1173 | +~~~~~~~~~~~~~~~~~~~ |
1174 | + |
1175 | +* Updated and improved plugins: notification area icon, urgency color, export, ... |
1176 | +* 7 new feature enhancements |
1177 | + |
1178 | + |
1179 | +Thank You |
1180 | +--------- |
1181 | |
1182 | The GTG developer team would like to thank and congratulate all the great people |
1183 | which contributed to this version. You did an amazing work! Thanks also to our |
1184 | many new contributors which joined us during this development cycle! |
1185 | |
1186 | + |
1187 | What's next? |
1188 | ------------ |
1189 | |
1190 | -Xuan Hu ported GTG to python3 and GTK3 as a part of his GSoC project. He has done a great job, and his branch is almost stable. |
1191 | -During the next months, we plan to test his branch and fix the remaining bugs so that it can be merged for release 0.3.2 |
1192 | -Porting to GTK3 has also paved the way for upcoming redesign of GTG [6]! |
1193 | +Xuan Hu ported GTG to python3 and GTK3 as a part of his GSoC project. He has |
1194 | +done a great job, and his branch is almost stable. During the next months, we |
1195 | +plan to test his branch and fix the remaining bugs so that it can be merged for |
1196 | +release 0.3.2 Porting to GTK3 has also paved the way for upcoming |
1197 | +`redesign of GTG`_! |
1198 | |
1199 | We also have many other projects in the pipeline, most notably: |
1200 | |
1201 | - - collaborative task management, a project which has been started by |
1202 | - Izidor Matusov during Google Summer of Code 2012 [10]. |
1203 | - - Testing and merging GTGOnline! synchronization backend [3] with the trunk. |
1204 | - |
1205 | - |
1206 | -About Getting Things GNOME! |
1207 | ---------------------------- |
1208 | - |
1209 | -GTG is a personal task organizer for the GNOME desktop inspired by the Getting |
1210 | -Things Done (GTD) methodology. GTG is designed with flexibility, adaptability, |
1211 | -and ease of use in mind so it can be used as more than just GTD software. |
1212 | - |
1213 | -GTG is intended to help you track everything you need to do and need to know, |
1214 | -from small tasks to large projects. |
1215 | - |
1216 | -Links: |
1217 | ------- |
1218 | - |
1219 | - [1] Screenshots: http://gtgnome.net/screenshots |
1220 | - [2] Parin Porecha’s GSoC (web application for Getting Things Gnome!): https://wiki.gnome.org/SummerOfCode2013/Projects/ParinPorecha_GTGOnline |
1221 | - [3] Parin Porecha’s GTGOnline! sync backend branch: https://code.launchpad.net/~parinporecha/gtg/backend_gtgonline |
1222 | - [3] Link to GTG’s web application (GTGOnline!): http://gtgonline-parinporecha.rhcloud.com/ |
1223 | - [4] Xuan Hu’s GSoC (Porting GTG and Liblarch to Gtk3 and Python3): https://wiki.gnome.org/SummerOfCode2013/Projects/XuanHu_PortingGTG |
1224 | - [5] Xuan Hu’s python3 and gtk3 port branch: https://code.launchpad.net/~huxuan/gtg/port-to-gtk3-py3/ |
1225 | - [6] GTG design page: https://live.gnome.org/gtg/Design |
1226 | - [7] The project's blog: http://gtgnome.net/ |
1227 | - [8] The project's page on launchpad: https://launchpad.net/gtg |
1228 | - [9] The project's page on the GNOME wiki: https://live.gnome.org/gtg/ |
1229 | - [10] Izidor Matusov's GSoC (collaborative GTG): https://live.gnome.org/SummerOfCode2012/Projects/IzidorMatusov_CollaborativeGTG |
1230 | +* `collaborative task management`_, a project which has been started by |
1231 | + Izidor Matusov during Google Summer of Code 2012. |
1232 | +* Testing and merging GTGOnline! `synchronization backend`_ with the trunk. |
1233 | + |
1234 | +.. _`redesign of GTG`: https://wiki.gnome.org/Apps/gtg/Design/ |
1235 | +.. _`collaborative task management`: https://wiki.gnome.org/Outreach/SummerOfCode/2012/Projects/IzidorMatusov_CollaborativeGTG |
1236 | +.. _`synchronization backend`: https://code.launchpad.net/~parinporecha/gtg/backend_gtgonline |
1237 | |
1238 | === removed file 'gtg' |
1239 | --- gtg 2013-11-25 02:37:46 +0000 |
1240 | +++ gtg 1970-01-01 00:00:00 +0000 |
1241 | @@ -1,92 +0,0 @@ |
1242 | -#!/usr/bin/env python3 |
1243 | -# -*- coding:utf-8 -*- |
1244 | -# ----------------------------------------------------------------------------- |
1245 | -# Getting Things GNOME! - A personal organizer for the GNOME desktop |
1246 | -# Copyright (c) 2008-2013 Lionel Dricot & Bertrand Rousseau |
1247 | -# |
1248 | -# This program is free software: you can redistribute it and/or modify it under |
1249 | -# the terms of the GNU General Public License as published by the Free Software |
1250 | -# Foundation, either version 3 of the License, or (at your option) any later |
1251 | -# version. |
1252 | -# |
1253 | -# This program is distributed in the hope that it will be useful, but WITHOUT |
1254 | -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
1255 | -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
1256 | -# details. |
1257 | -# |
1258 | -# You should have received a copy of the GNU General Public License along with |
1259 | -# this program. If not, see <http://www.gnu.org/licenses/>. |
1260 | -# ----------------------------------------------------------------------------- |
1261 | - |
1262 | -""" Main script which parse arguments and launch GTG """ |
1263 | - |
1264 | -import sys |
1265 | - |
1266 | -from optparse import OptionParser |
1267 | -from gi.repository.Gdk import Screen |
1268 | - |
1269 | -from GTG import info |
1270 | -from GTG.tools.import_liblarch import import_liblarch |
1271 | - |
1272 | - |
1273 | -def x_is_running(): |
1274 | - """ Return True if GTG could be displayed on the current XServer """ |
1275 | - try: |
1276 | - if Screen().get_default().get_display(): |
1277 | - return True |
1278 | - except RuntimeError as exc: |
1279 | - print(exc) |
1280 | - return False |
1281 | - |
1282 | - |
1283 | -def main(): |
1284 | - """ Parse arguments and run GTG |
1285 | - |
1286 | - Importing GTG.gtg must be done after importing and setting up paths |
1287 | - for Liblarch """ |
1288 | - |
1289 | - parser = OptionParser() |
1290 | - parser.add_option('-b', '--boot-test', action='store_true', |
1291 | - dest='boot_test', help="Exit after completing \ |
1292 | - boot-up actions", |
1293 | - default=False) |
1294 | - parser.add_option('-c', '--no-crash-handler', action='store_true', |
1295 | - dest='no_crash_handler', help="Disable the automatic \ |
1296 | - crash handler", |
1297 | - default=False) |
1298 | - parser.add_option('-d', '--debug', action='store_true', dest='debug', |
1299 | - help="Enable debug output", default=False) |
1300 | - parser.add_option('-l', '--local-liblarch', action='store_true', |
1301 | - dest='local_liblarch', default=False, |
1302 | - help="Use local liblarch located in ../liblarch if it is\ |
1303 | - posible") |
1304 | - parser.add_option('-t', '--title', action='store', |
1305 | - help="Use special title for windows' title") |
1306 | - parser.add_option('-v', '--version', action='store_true', |
1307 | - dest='print_version', help="Print GTG's version number", |
1308 | - default=False) |
1309 | - (options, args) = parser.parse_args() |
1310 | - |
1311 | - if options.title is not None: |
1312 | - info.NAME = options.title |
1313 | - |
1314 | - if options.print_version: |
1315 | - print("GTG (Getting Things GNOME!)", info.VERSION) |
1316 | - print() |
1317 | - print("For more information:", info.URL) |
1318 | - sys.exit(0) |
1319 | - |
1320 | - elif not x_is_running(): |
1321 | - print("Could not open X display") |
1322 | - sys.exit(1) |
1323 | - |
1324 | - elif import_liblarch(options.local_liblarch): |
1325 | - from GTG import gtg |
1326 | - sys.exit(gtg.main(options, args)) |
1327 | - |
1328 | - |
1329 | -if __name__ == "__main__": |
1330 | - try: |
1331 | - main() |
1332 | - except KeyboardInterrupt: |
1333 | - sys.exit(1) |
1334 | |
1335 | === removed file 'profile.py' |
1336 | --- profile.py 2013-11-25 02:37:46 +0000 |
1337 | +++ profile.py 1970-01-01 00:00:00 +0000 |
1338 | @@ -1,36 +0,0 @@ |
1339 | -#!/usr/bin/env python3 |
1340 | -# -*- coding: utf-8 -*- |
1341 | -# ----------------------------------------------------------------------------- |
1342 | -# Getting Things GNOME! - a personal organizer for the GNOME desktop |
1343 | -# Copyright (c) 2008-2013 - Lionel Dricot & Bertrand Rousseau |
1344 | -# |
1345 | -# This program is free software: you can redistribute it and/or modify it under |
1346 | -# the terms of the GNU General Public License as published by the Free Software |
1347 | -# Foundation, either version 3 of the License, or (at your option) any later |
1348 | -# version. |
1349 | -# |
1350 | -# This program is distributed in the hope that it will be useful, but WITHOUT |
1351 | -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
1352 | -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
1353 | -# details. |
1354 | -# |
1355 | -# You should have received a copy of the GNU General Public License along with |
1356 | -# this program. If not, see <http://www.gnu.org/licenses/>. |
1357 | -# ----------------------------------------------------------------------------- |
1358 | - |
1359 | -import GTG.gtg |
1360 | -import cProfile |
1361 | -import pstats |
1362 | -from optparse import OptionParser |
1363 | - |
1364 | -parser = OptionParser() |
1365 | -parser.add_option("-d", "--debug", |
1366 | - action="store_true", dest="debug", help="enable debug output") |
1367 | -(options, args) = parser.parse_args() |
1368 | - |
1369 | -cProfile.run("GTG.gtg.main(options, args)", filename="gtg.profile") |
1370 | - |
1371 | -p = pstats.Stats('gtg.profile') |
1372 | -p.sort_stats('cumulative').print_stats(15) |
1373 | -p.sort_stats('time').print_stats(15) |
1374 | -p.sort_stats('calls').print_stats(15) |
1375 | |
1376 | === removed file 'scripts/build_integrity.py' |
1377 | --- scripts/build_integrity.py 2013-08-28 20:13:59 +0000 |
1378 | +++ scripts/build_integrity.py 1970-01-01 00:00:00 +0000 |
1379 | @@ -1,69 +0,0 @@ |
1380 | -#!/usr/bin/env python3 |
1381 | -# -*- coding: UTF-8 -*- |
1382 | -# Copyright © 2012 Izidor Matušov <izidor.matusov@gmail.com |
1383 | -# |
1384 | -# This program is free software: you can redistribute it and/or modify |
1385 | -# it under the terms of the GNU General Public License as published by |
1386 | -# the Free Software Foundation, either version 3 of the License, or |
1387 | -# (at your option) any later version. |
1388 | -# |
1389 | -# This program is distributed in the hope that it will be useful, |
1390 | -# but WITHOUT ANY WARRANTY; without even the implied warranty of |
1391 | -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1392 | -# GNU General Public License for more details. |
1393 | -# |
1394 | -# You should have received a copy of the GNU General Public License |
1395 | -# along with this program. If not, see <http://www.gnu.org/licenses/>. |
1396 | - |
1397 | -import os |
1398 | -import sys |
1399 | -import re |
1400 | - |
1401 | -exclude_list = ['data/.*', 'po/.*', 'doc/.*', 'AUTHORS', 'CHANGELOG', |
1402 | - 'LICENSE', 'README', 'gtcli_bash_completion', 'gtg.desktop', |
1403 | - 'org.gnome.GTG.service', 'setup.py', |
1404 | - ] |
1405 | - |
1406 | -# Build MANIFEST and also run build action |
1407 | -if os.system("python setup.py sdist > /dev/null") != 0: |
1408 | - print("sdist operation failed") |
1409 | - sys.exit(1) |
1410 | - |
1411 | -if os.system("python setup.py build > /dev/null") != 0: |
1412 | - print("build operation failed") |
1413 | - sys.exit(1) |
1414 | - |
1415 | -manifest_files = [] |
1416 | - |
1417 | -for f in open('MANIFEST', 'r'): |
1418 | - f = f.strip() |
1419 | - if f == "" or f.startswith('#'): |
1420 | - continue |
1421 | - f = os.path.normpath(f) |
1422 | - |
1423 | - exclude = False |
1424 | - for ex in exclude_list: |
1425 | - if re.match(ex, f): |
1426 | - exclude = True |
1427 | - break |
1428 | - if exclude: |
1429 | - continue |
1430 | - |
1431 | - manifest_files.append(f) |
1432 | - |
1433 | -build_files = [] |
1434 | -for root, dirs, files in os.walk('build/'): |
1435 | - for f in files: |
1436 | - filename = os.path.join(root, f) |
1437 | - filename = filename.split('/', 1)[1] |
1438 | - if filename.startswith('lib.') or filename.startswith('scripts-'): |
1439 | - filename = filename.split('/', 1)[1] |
1440 | - |
1441 | - build_files.append(filename) |
1442 | - |
1443 | -missing_files = list(set(manifest_files) - set(build_files)) |
1444 | -if len(missing_files) > 0: |
1445 | - missing_files.sort() |
1446 | - print("Missing build files:") |
1447 | - print("\n".join("\t%s" % f for f in missing_files)) |
1448 | - sys.exit(1) |
1449 | |
1450 | === modified file 'scripts/debug.sh' |
1451 | --- scripts/debug.sh 2014-03-09 14:48:26 +0000 |
1452 | +++ scripts/debug.sh 2014-03-14 20:44:47 +0000 |
1453 | @@ -9,26 +9,20 @@ |
1454 | args="--no-crash-handler" |
1455 | dataset="default" |
1456 | norun=0 |
1457 | -profile=0 |
1458 | title="" |
1459 | |
1460 | # Create execution-time data directory if needed |
1461 | mkdir -p tmp |
1462 | |
1463 | # Interpret arguments |
1464 | -while getopts bdlnps: o |
1465 | +while getopts bdns: o |
1466 | do case "$o" in |
1467 | b) args="$args --boot-test";; |
1468 | d) args="$args -d";; |
1469 | - # Request usage local liblarch if it is possible |
1470 | - l) args="$args -l" |
1471 | - liblarchArgs="$liblarchArgs -l" |
1472 | - ;; |
1473 | n) norun=1;; |
1474 | - p) profile=1;; |
1475 | s) dataset="$OPTARG";; |
1476 | t) title="$OPTARG";; |
1477 | - [?]) echo >&2 "Usage: $0 [-s dataset] [-t title] [-b] [-d] [-l] [-n] [-p]" |
1478 | + [?]) echo >&2 "Usage: $0 [-s dataset] [-t title] [-b] [-d] [-l] [-n]" |
1479 | exit 1;; |
1480 | esac |
1481 | done |
1482 | @@ -57,22 +51,5 @@ |
1483 | fi |
1484 | |
1485 | if [ $norun -eq 0 ]; then |
1486 | - # Check for liblarch |
1487 | - if ! ./GTG/tools/import_liblarch.py $liblarchArgs; then |
1488 | - echo |
1489 | - echo -n "Download latest liblarch? [y/N] " |
1490 | - read answer |
1491 | - if [ "$answer" = "y" -o "$answer" = "Y" -o "$answer" = "yes" ]; then |
1492 | - git clone https://github.com/liblarch/liblarch ../liblarch |
1493 | - else |
1494 | - exit 1 |
1495 | - fi |
1496 | - fi |
1497 | - |
1498 | - if [ $profile -eq 1 ]; then |
1499 | - python -m cProfile -o gtg.prof ./gtg $args -t "$title" |
1500 | - python ./scripts/profile_interpret.sh |
1501 | - else |
1502 | - ./gtg $args -t "$title" |
1503 | - fi |
1504 | + ./GTG/gtg $args -t "$title" |
1505 | fi |
1506 | |
1507 | === removed file 'scripts/man_page_viewer' |
1508 | --- scripts/man_page_viewer 2010-01-05 09:34:49 +0000 |
1509 | +++ scripts/man_page_viewer 1970-01-01 00:00:00 +0000 |
1510 | @@ -1,12 +0,0 @@ |
1511 | -#!/bin/bash |
1512 | - |
1513 | -if [ ! $# -eq 1 ]; then |
1514 | - echo "usage: $0 <man_file_path>" |
1515 | - exit 1 |
1516 | -fi |
1517 | -if [ ! -x "`which groff`" ]; then |
1518 | - echo "please install groff" |
1519 | - exit 2 |
1520 | -fi |
1521 | - |
1522 | -groff -Tascii -man $1 | more |
1523 | |
1524 | === removed file 'scripts/profile_interpret.sh' |
1525 | --- scripts/profile_interpret.sh 2013-08-28 20:13:59 +0000 |
1526 | +++ scripts/profile_interpret.sh 1970-01-01 00:00:00 +0000 |
1527 | @@ -1,4 +0,0 @@ |
1528 | -#!/usr/bin/env python3 |
1529 | -import pstats |
1530 | -p = pstats.Stats('gtg.prof') |
1531 | -p.strip_dirs().sort_stats("cumulative").print_stats(20) |
1532 | |
1533 | === modified file 'setup.py' |
1534 | --- setup.py 2014-02-01 07:53:21 +0000 |
1535 | +++ setup.py 2014-03-14 20:44:47 +0000 |
1536 | @@ -18,222 +18,174 @@ |
1537 | # this program. If not, see <http://www.gnu.org/licenses/>. |
1538 | # ----------------------------------------------------------------------------- |
1539 | |
1540 | -from distutils.core import setup |
1541 | -from distutils.command.install_data import install_data |
1542 | +from distutils.core import setup |
1543 | +from glob import glob |
1544 | from subprocess import call |
1545 | - |
1546 | -import glob |
1547 | import os |
1548 | +import sys |
1549 | |
1550 | from GTG import info |
1551 | |
1552 | -### CONSTANTS ################################################################ |
1553 | - |
1554 | -HELP_DIR = "share/help" |
1555 | -GLOBAL_ICON_DIR = "share/icons" |
1556 | - |
1557 | -### TOOLS #################################################################### |
1558 | - |
1559 | -def create_icon_list(): |
1560 | - fileList = [] |
1561 | - rootdir = "data/icons" |
1562 | - for root, subFolders, files in os.walk(rootdir): |
1563 | - dirList = [] |
1564 | - for file in files: |
1565 | - if file.endswith(".png") or file.endswith(".svg"): |
1566 | - dirList.append(os.path.join(root, file)) |
1567 | - if len(dirList)!=0: |
1568 | - newroot = root.replace(rootdir + "/", "") |
1569 | - fileList.append((os.path.join(GLOBAL_ICON_DIR, newroot), dirList)) |
1570 | - return fileList |
1571 | - |
1572 | - |
1573 | -def create_userdoc_list(): |
1574 | - fileList = [] |
1575 | - rootdir = "doc/userdoc" |
1576 | - for root, subFolders, files in os.walk(rootdir): |
1577 | - dirList = [] |
1578 | - for file in files: |
1579 | - dirList.append(os.path.join(root, file)) |
1580 | - if len(dirList)!=0: |
1581 | - comps = root.split(os.sep) |
1582 | - prefix = os.path.join(comps[0], comps[1], comps[2])+os.sep |
1583 | - if root != prefix[:-1]: |
1584 | - newroot = root.replace(prefix, "") |
1585 | + |
1586 | +def find_packages(): |
1587 | + """ Generate list of all packages """ |
1588 | + packages = [] |
1589 | + for package, __, files in os.walk('GTG'): |
1590 | + # Package has to have init file |
1591 | + if '__init__.py' not in files: |
1592 | + continue |
1593 | + # Convert filepath to package name |
1594 | + package = package.replace(os.path.sep, '.') |
1595 | + packages.append(package) |
1596 | + return packages |
1597 | + |
1598 | + |
1599 | +def find_package_data(): |
1600 | + """ Generate list of data files within a package """ |
1601 | + packages = { |
1602 | + package.replace('.', os.path.sep) for package in find_packages()} |
1603 | + package_data = {} |
1604 | + |
1605 | + for folder, __, files in os.walk('GTG'): |
1606 | + # Find package |
1607 | + closest_package = folder |
1608 | + while closest_package and closest_package not in packages: |
1609 | + # Try one level up |
1610 | + closest_package = os.path.dirname(closest_package) |
1611 | + |
1612 | + if not closest_package: |
1613 | + continue |
1614 | + |
1615 | + allowed_extensions = [ |
1616 | + '', '.gtg-plugin', '.png', '.svg', '.ui', '.html', '.tex', '.txt'] |
1617 | + is_this_package = folder == closest_package |
1618 | + if not is_this_package: |
1619 | + allowed_extensions.append('.py') |
1620 | + |
1621 | + for filename in files: |
1622 | + ext = os.path.splitext(filename)[-1] |
1623 | + if ext not in allowed_extensions: |
1624 | + continue |
1625 | + |
1626 | + # Find path relative to package |
1627 | + filename = os.path.join(folder, filename) |
1628 | + assert filename.startswith(closest_package) |
1629 | + filename = filename[len(closest_package + os.path.sep):] |
1630 | + |
1631 | + # Assign data file to package name |
1632 | + package_name = closest_package.replace(os.path.sep, '.') |
1633 | + if package_name in package_data: |
1634 | + package_data[package_name].append(filename) |
1635 | else: |
1636 | - newroot = "" |
1637 | - newroot = os.path.join(HELP_DIR, comps[2], "gtg", newroot) |
1638 | - fileList.append((newroot, dirList)) |
1639 | - fileList.append('doc/release_notes/0.3.1.txt') |
1640 | - return fileList |
1641 | - |
1642 | - |
1643 | -def create_data_files(): |
1644 | + package_data[package_name] = [filename] |
1645 | + |
1646 | + return package_data |
1647 | + |
1648 | + |
1649 | +def compile_mo_files(): |
1650 | + """ Compile all .po files into .mo files """ |
1651 | + mo_files = [] |
1652 | + mo_dir = os.path.join('build', 'po') |
1653 | + for po_file in glob('po/*.po'): |
1654 | + lang = os.path.splitext(os.path.basename(po_file))[0] |
1655 | + mo_file = os.path.join(mo_dir, lang, 'gtg.mo') |
1656 | + target_dir = os.path.dirname(mo_file) |
1657 | + if not os.path.isdir(target_dir): |
1658 | + os.makedirs(target_dir) |
1659 | + |
1660 | + try: |
1661 | + return_code = call(['msgfmt', '-o', mo_file, po_file]) |
1662 | + except OSError: |
1663 | + sys.stderr.write( |
1664 | + 'Translation not available, please install gettext\n') |
1665 | + break |
1666 | + |
1667 | + if return_code: |
1668 | + raise Warning('Error when building locales') |
1669 | + continue |
1670 | + |
1671 | + install_folder = os.path.join('share', 'locale', lang, 'LC_MESSAGES') |
1672 | + mo_files.append((install_folder, [mo_file])) |
1673 | + |
1674 | + return mo_files |
1675 | + |
1676 | + |
1677 | +def find_icons(src_folder, dest_folder, allowed_extensions): |
1678 | + """ Find all icons in the folder """ |
1679 | + data_list = [] |
1680 | + |
1681 | + for folder, __, files in os.walk(src_folder): |
1682 | + assert folder.startswith(src_folder) |
1683 | + install_folder = dest_folder + folder[len(src_folder):] |
1684 | + file_list = [] |
1685 | + for filename in files: |
1686 | + ext = os.path.splitext(filename)[-1] |
1687 | + if ext in allowed_extensions: |
1688 | + filename = os.path.join(folder, filename) |
1689 | + file_list.append(filename) |
1690 | + |
1691 | + if file_list: |
1692 | + data_list.append((install_folder, file_list)) |
1693 | + |
1694 | + return data_list |
1695 | + |
1696 | + |
1697 | +def find_user_help(): |
1698 | + """ Find all files for user help """ |
1699 | + help_files = [] |
1700 | + |
1701 | + for folder, __, files in os.walk('docs/userdoc'): |
1702 | + folders = folder.split(os.path.sep)[2:] |
1703 | + if not folders: |
1704 | + continue |
1705 | + folders.insert(1, 'gtg') |
1706 | + install_folder = os.path.join('share', 'help', *folders) |
1707 | + |
1708 | + help_files.append(( |
1709 | + install_folder, |
1710 | + [os.path.join(folder, filename) for filename in files], |
1711 | + )) |
1712 | + |
1713 | + return help_files |
1714 | + |
1715 | + |
1716 | +def find_data_files(): |
1717 | + """ Generate list of data files for installing in share folder """ |
1718 | data_files = [] |
1719 | - # icons |
1720 | - icons = create_icon_list() |
1721 | - data_files.extend(icons) |
1722 | - # gtg .desktop icon |
1723 | - data_files.append(('share/icons/hicolor/16x16/apps', |
1724 | - ['data/icons/hicolor/16x16/apps/gtg.png'])) |
1725 | - data_files.append(('share/icons/hicolor/22x22/apps', |
1726 | - ['data/icons/hicolor/22x22/apps/gtg.png'])) |
1727 | - data_files.append(('share/icons/hicolor/24x24/apps', |
1728 | - ['data/icons/hicolor/24x24/apps/gtg.png'])) |
1729 | - data_files.append(('share/icons/hicolor/32x32/apps', |
1730 | - ['data/icons/hicolor/32x32/apps/gtg.png'])) |
1731 | - data_files.append(('share/icons/hicolor/scalable/apps', |
1732 | - ['data/icons/hicolor/scalable/apps/gtg.svg'])) |
1733 | - # documentation |
1734 | - helpfiles = create_userdoc_list() |
1735 | - data_files.extend(helpfiles) |
1736 | - # misc |
1737 | - data_files.append(('share/applications', ['gtg.desktop'])) |
1738 | - data_files.append(('share/dbus-1/services', ['org.gnome.GTG.service'])) |
1739 | - data_files.append(('share/man/man1', |
1740 | - ['doc/gtg.1', 'doc/gtcli.1', 'doc/gtg_new_task.1'])) |
1741 | - |
1742 | - # bash completion |
1743 | - data_files.append(('share/gtg/', ['gtcli_bash_completion'])) |
1744 | - |
1745 | - # appdata file |
1746 | - data_files.append(('share/appdata/', ['gtg.appdata.xml'])) |
1747 | + |
1748 | + # .mo files |
1749 | + data_files.extend(compile_mo_files()) |
1750 | + |
1751 | + # Icons |
1752 | + data_files.extend( |
1753 | + find_icons('data/icons', 'share/icons', ['.png', '.svg'])) |
1754 | + |
1755 | + # User docs |
1756 | + data_files.extend(find_user_help()) |
1757 | + |
1758 | + # Generate man files and include them |
1759 | + os.system('sphinx-build -b man docs/source build/docs') |
1760 | + data_files.append(('share/man/man1', glob('build/docs/*.1'))) |
1761 | + |
1762 | + # Misc files |
1763 | + data_files.extend([ |
1764 | + ('share/applications', ['data/gtg.desktop']), |
1765 | + ('share/appdata/', ['data/gtg.appdata.xml']), |
1766 | + ('share/dbus-1/services', ['data/org.gnome.GTG.service']), |
1767 | + ('share/gtg/', ['data/gtcli_bash_completion']), |
1768 | + ]) |
1769 | + |
1770 | return data_files |
1771 | |
1772 | |
1773 | -#### TRANSLATIONS(from pyroom setup.py) ###################################### |
1774 | - |
1775 | -PO_DIR = 'po' |
1776 | -MO_DIR = os.path.join('build', 'po') |
1777 | - |
1778 | -for po in glob.glob(os.path.join(PO_DIR, '*.po')): |
1779 | - lang = os.path.basename(po[:-3]) |
1780 | - mo = os.path.join(MO_DIR, lang, 'gtg.mo') |
1781 | - target_dir = os.path.dirname(mo) |
1782 | - if not os.path.isdir(target_dir): |
1783 | - os.makedirs(target_dir) |
1784 | - try: |
1785 | - return_code = call(['msgfmt', '-o', mo, po]) |
1786 | - except OSError: |
1787 | - print('Translation not available, please install gettext') |
1788 | - break |
1789 | - if return_code: |
1790 | - raise Warning('Error when building locales') |
1791 | - |
1792 | - |
1793 | -class InstallData(install_data): |
1794 | - |
1795 | - def run(self): |
1796 | - self.data_files.extend(self.find_mo_files()) |
1797 | - install_data.run(self) |
1798 | - |
1799 | - def find_mo_files(self): |
1800 | - data_files = [] |
1801 | - for mo in glob.glob(os.path.join(MO_DIR, '*', 'gtg.mo')): |
1802 | - lang = os.path.basename(os.path.dirname(mo)) |
1803 | - dest = os.path.join('share', 'locale', lang, 'LC_MESSAGES') |
1804 | - data_files.append((dest, [mo])) |
1805 | - return data_files |
1806 | - |
1807 | -### SETUP SCRIPT ############################################################## |
1808 | - |
1809 | -author = 'The GTG Team' |
1810 | - |
1811 | setup( |
1812 | - name = 'gtg', |
1813 | - version = info.VERSION, |
1814 | - url = info.URL, |
1815 | - author = author, |
1816 | - author_email = info.EMAIL, |
1817 | - description = info.SHORT_DESCRIPTION, |
1818 | - packages = [ |
1819 | - 'GTG', |
1820 | - 'GTG.backends', |
1821 | - 'GTG.backends.rtm', |
1822 | - 'GTG.core', |
1823 | - 'GTG.core.plugins', |
1824 | - 'GTG.gtk', |
1825 | - 'GTG.gtk.editor', |
1826 | - 'GTG.gtk.browser', |
1827 | - 'GTG.gtk.backends_dialog', |
1828 | - 'GTG.gtk.backends_dialog.parameters_ui', |
1829 | - 'GTG.tools', |
1830 | - 'GTG.plugins', |
1831 | - 'GTG.plugins.bugzilla', |
1832 | - 'GTG.plugins.export', |
1833 | - 'GTG.plugins.geolocalized_tasks', |
1834 | - 'GTG.plugins.hamster', |
1835 | - 'GTG.plugins.notification_area', |
1836 | - 'GTG.plugins.task_reaper', |
1837 | - 'GTG.plugins.send_email', |
1838 | - 'GTG.plugins.tomboy', |
1839 | - 'GTG.plugins.urgency_color', |
1840 | - 'GTG.plugins.untouched_tasks', |
1841 | - 'GTG.plugins.not_today', |
1842 | - ], |
1843 | - package_data = { |
1844 | - 'GTG.core.plugins': ['pluginmanager.ui'], |
1845 | - 'GTG.gtk': [ |
1846 | - 'preferences.ui', |
1847 | - 'plugins.ui', |
1848 | - 'deletion.ui', |
1849 | - 'backends_dialog.ui', |
1850 | - ], |
1851 | - 'GTG.gtk.browser': ['taskbrowser.ui', 'modifytags_dialog.ui'], |
1852 | - 'GTG.gtk.editor': ['taskeditor.ui'], |
1853 | - 'GTG.plugins': [ |
1854 | - 'bugzilla.gtg-plugin', |
1855 | - 'export.gtg-plugin', |
1856 | - 'geolocalized-tasks.gtg-plugin', |
1857 | - 'hamster.gtg-plugin', |
1858 | - 'notification-area.gtg-plugin', |
1859 | - 'task-reaper.gtg-plugin', |
1860 | - 'send-email.gtg-plugin', |
1861 | - 'tomboy.gtg-plugin', |
1862 | - 'urgency-color.gtg-plugin', |
1863 | - 'not-today.gtg-plugin', |
1864 | - 'untouched-tasks.gtg-plugin', |
1865 | - ], |
1866 | - 'GTG.plugins.export': ['export.ui', |
1867 | - './export_templates/description_pocketmod.py', |
1868 | - './export_templates/description_sexy.py', |
1869 | - './export_templates/description_simple.py', |
1870 | - './export_templates/description_statusrpt.py', |
1871 | - './export_templates/description_textual.py', |
1872 | - './export_templates/graphics_pocketmod.svg', |
1873 | - './export_templates/script_pocketmod', |
1874 | - './export_templates/template_pocketmod.tex', |
1875 | - './export_templates/template_sexy.html', |
1876 | - './export_templates/template_simple.html', |
1877 | - './export_templates/template_statusrpt.txt', |
1878 | - './export_templates/template_textual.txt', |
1879 | - './export_templates/thumbnail_pocketmod.png', |
1880 | - './export_templates/thumbnail_sexy.png', |
1881 | - './export_templates/thumbnail_simple.png', |
1882 | - './export_templates/thumbnail_statusrpt.png', |
1883 | - './export_templates/thumbnail_textual.png', |
1884 | - ], |
1885 | - 'GTG.plugins.geolocalized_tasks': ['geolocalized.ui', |
1886 | - 'icons/hicolor/24x24/geolocalization.png', |
1887 | - 'icons/hicolor/16x16/assign-location.png', |
1888 | - 'icons/hicolor/svg/assign-location.svg', |
1889 | - 'icons/hicolor/svg/geolocalization.svg'], |
1890 | - 'GTG.plugins.tomboy': ['tomboy.ui'], |
1891 | - 'GTG.plugins.hamster': ['prefs.ui', |
1892 | - 'icons/hicolor/32x32/hamster-activity-start.png', |
1893 | - 'icons/hicolor/32x32/hamster-activity-stop.png', |
1894 | - 'icons/hicolor/svg/hamster-activity-start.svg', |
1895 | - 'icons/hicolor/svg/hamster-activity-stop.svg'], |
1896 | - 'GTG.plugins.task_reaper': ['reaper.ui'], |
1897 | - 'GTG.plugins.notification_area': ['notification_area.ui', |
1898 | - './data/icons/hicolor/22x22/apps/gtg_need_attention.png', |
1899 | - './data/icons/ubuntu-mono-dark/22x22/apps/gtg_need_attention.svg', |
1900 | - './data/icons/ubuntu-mono-light/22x22/apps/gtg_need_attention.svg', |
1901 | - ], |
1902 | - 'GTG.plugins.urgency_color': ['preferences.ui'], |
1903 | - 'GTG.plugins.untouched_tasks': ['untouchedTasks.ui'], |
1904 | - }, |
1905 | - data_files = create_data_files(), |
1906 | - scripts=['gtg', 'gtcli', 'gtg_new_task'], |
1907 | - cmdclass={'install_data': InstallData}, |
1908 | + name='gtg', |
1909 | + version=info.VERSION, |
1910 | + url=info.URL, |
1911 | + author='The GTG Team', |
1912 | + author_email=info.EMAIL, |
1913 | + description=info.SHORT_DESCRIPTION, |
1914 | + packages=find_packages(), |
1915 | + scripts=['GTG/gtg', 'GTG/gtcli', 'GTG/gtg_new_task'], |
1916 | + data_files=find_data_files(), |
1917 | ) |
This branch is based on test clean-up, which originally removed pydoctor support. That branch is not merged at the moment.