GTG

Merge lp:~gtg-contributors/gtg/bugfix-629683 into lp:~gtg/gtg/old-trunk

Proposed by Bertrand Rousseau
Status: Merged
Merged at revision: 1213
Proposed branch: lp:~gtg-contributors/gtg/bugfix-629683
Merge into: lp:~gtg/gtg/old-trunk
Diff against target: 660 lines (+467/-115)
6 files modified
CHANGELOG (+3/-0)
GTG/core/firstrun_tasks.py (+298/-114)
GTG/core/search.py (+1/-1)
doc/userdoc/C/gtg-search-intro.page (+38/-0)
doc/userdoc/C/gtg-search-syntax.page (+123/-0)
doc/userdoc/C/index.page (+4/-0)
To merge this branch: bzr merge lp:~gtg-contributors/gtg/bugfix-629683
Reviewer Review Type Date Requested Status
Izidor Matušov Approve
Review via email: mp+115353@code.launchpad.net

Description of the change

Update the initial tutorial for 0.3. As no many specific themes were listed in the bug description (see https://bugs.launchpad.net/gtg/+bug/629683). It's merely a rephrasing/reorganization of the text.

To post a comment you must log in.
Revision history for this message
Izidor Matušov (izidor) wrote :
Download full text (4.4 KiB)

I suggest that this is the final patch for the bug and afterwards it will be marked as fixed. In other words, nitpicking is appropriate :)

You sometimes use normal quotes instead of xml entity ", e.g. "save" button. We should stick to a consistent style. Foot note: normal quotes works in the same way as xml entity " Maybe use normal quotes?

I think we should promote our blog http://gtg.fritalk.com as well in initial tutorial. (after link to launchpad) Something like "If you want to get tips for using GTG or be informed about the newest features, visit our blog at http://gtg.fritalk.com"

"Sometimes it is easier to cut down a task in several smaller tasks. GTG helps to do just this by defining "subtasks". In GTG, those subtasks are prerequisite that must be completed before being able to close their parent task."

If I recall correctly, the correct definition of subtasks in GTG is more about prerequisites than a smaller tasks which happens to have the same parent. <this is more brainstorming than nitpicking>

"Note that subtasks obey to some rules: first, a subtask's due date can never be happen after its parent's due date and, second, when you mark a parent task as done, its subtasks will also be marked as done."

<brainstorming>There is no mention for the rule start_date < due_date.</brainstorming>

I would also formulate when you close a parent task, its subtasks will be closed as well" (It is true for dismissing or deleting tasks)

The tasks that you marked as done or dismissed are stored in the Closed Tasks Pane which is hidden by default, but you can easily enable it using the View menu.

<brainstorming>Use instead exact menu path? View -> Closed tasks pane</brainstorming>

" Here are other stuff you will find interesting to read:"

It sounds strange to me although I am not a native speaker. Maybe "There is other stuff you will find interesting to read" or even "There is even more to discover:"

"If you right click on a tag in the sidebar you can also set its color. It will allow you to have a more colorful list of tasks, if you want it that way."

<brainstorming>We should propagate your awesome tag editor. What do you say?</brainstorming>

Could you please use suggestions from bug #615027? Better suggest the new user tags for keeping "hierarchy"

There is a missing condition in WorkView to hide a task: set due date to "someday" to hide ideas which needs more thoughts

"If you use tags, you can right click on a tag in the sidebar and choose to hide tasks assigned to this particular tag in the workview. It's very useful if you have a tag like "someday" that you use for tasks you would like to do but are not particularly urgent."

This paragraph could be updated to use another example, e.g. @wait when you wait for a response from your teammate.

It might help to stress that tasks are hidden immediately, i.e. when you drag-and-drop a subtask to another task, the parent is hidden. Or when you trigger another condition. We should prepare user for that "wow" effect when tasks are hidden in real time and suggest turning off Workview when planing for a next week or so.

"Some examples of the current plugins are synchronization with o...

Read more...

review: Approve (code, running)
Revision history for this message
Izidor Matušov (izidor) wrote :

The correct status should be "Needs Fixing"

review: Needs Fixing (code, running)
Revision history for this message
Bertrand Rousseau (bertrand-rousseau) wrote :
Download full text (6.9 KiB)

Thanks for the remarks Izidor, I'll try to include most of them. I answered
in the text.

First as a general note, I think it's important to make it clear that those
tutorial tasks are not meant to tell everything about GTG. The goal is to
get a first insight on how GTG works. So when I edited those tasks, I
didn't try to cover everything, hence there are some aspects lacking on
purpose.

On Wed, Jul 18, 2012 at 9:59 PM, Izidor Matušov <email address hidden>wrote:

> Review: Approve code, running
>
> I suggest that this is the final patch for the bug and afterwards it will
> be marked as fixed. In other words, nitpicking is appropriate :)
>
> You sometimes use normal quotes instead of xml entity &quot;, e.g. "save"
> button. We should stick to a consistent style. Foot note: normal quotes
> works in the same way as xml entity &quot; Maybe use normal quotes?
>

&quot; was used when I edited the tasks. Maybe I forgot to convert some. To
guarantee 100% compatibility with XML, I'll stick to &quot;

> I think we should promote our blog http://gtg.fritalk.com as well in
> initial tutorial. (after link to launchpad) Something like "If you want to
> get tips for using GTG or be informed about the newest features, visit our
> blog at http://gtg.fritalk.com"
>

Ok, I agree.

> "Sometimes it is easier to cut down a task in several smaller tasks. GTG
> helps to do just this by defining "subtasks". In GTG, those subtasks are
> prerequisite that must be completed before being able to close their parent
> task."
>
> If I recall correctly, the correct definition of subtasks in GTG is more
> about prerequisites than a smaller tasks which happens to have the same
> parent. <this is more brainstorming than nitpicking>
>

Yes, but the general idea is to define "smaller" (a.k.a. more operational
tasks) to help you actually progress in your work and in that definition,
smaller tasks are actually prerequisites to a bigger tasks. I could put
more emphasis on that nuance in the text (but the idea here is not to teach
people how to organize themselve, it's not GTG's purpose).

> "Note that subtasks obey to some rules: first, a subtask's due date can
> never be happen after its parent's due date and, second, when you mark a
> parent task as done, its subtasks will also be marked as done."
>
> <brainstorming>There is no mention for the rule start_date <
> due_date.</brainstorming>
>

I'm not sure I will make that explicit. It's kind of obvious, or at least
it could be easily understood by someone experiencing the effect of the
rule.

> I would also formulate when you close a parent task, its subtasks will be
> closed as well" (It is true for dismissing or deleting tasks)
>

I think it's explained somewhere, but I'll check. This must be clear,
indeed.

The tasks that you marked as done or dismissed are stored in the Closed
> Tasks Pane which is hidden by default, but you can easily enable it using
> the View menu.
>
> <brainstorming>Use instead exact menu path? View -> Closed tasks
> pane</brainstorming>
>

I think I'll pass on that one, I prefer not using a complex syntax.

> " Here are other stuff you will find interesting to read:"
>
> It sounds strange to me ...

Read more...

1211. By Bertrand Rousseau

Update the first tutorial task

1212. By Bertrand Rousseau

Updated all actual first run tasks

1213. By Bertrand Rousseau

Fixes for bugs: update tutorial, add tutorial tasks for sync. services and saved searches.

1214. By Bertrand Rousseau

Merge trunk

1215. By Bertrand Rousseau

Also add mallard documentation pages for the search feature.

Revision history for this message
Bertrand Rousseau (bertrand-rousseau) wrote :

Hi,

I updated the initial tutorial tasks to take your remarks into account. I also added two tasks: one for the search feature, on for the synchronization services. I also added mallard pages for the search feature. Please review and tell me if you have remarks regarding the text.

Revision history for this message
Izidor Matušov (izidor) wrote :

Hi Bertrand,

nice job! I still have few remarks:

There is still a link to https://bugs.launchpad.net/gtg instead of https://bugs.launchpad.net/gtg/+filebug It would make eliminate one step of reporting bug - loading a database of bugs and finding "Report bug" link. The links occurs 2 times: the main task and "Report bugs" task.

In how task "Learn how to search for tasks" you should mention it is possible to search by parameters of tasks as well (maybe give an example like @errands !today - errands to be done today) and refer to help for more details.

I made a typo in the original search documentation in "Show GTG tasks with due_date before Marz 1" where it should be March 1 instead of Marz 1. Could you please correct it both in original comment and documentation? Thank you.

review: Needs Fixing (code, running)
1216. By Bertrand Rousseau

Fixes remarks from Izidor's review

Revision history for this message
Bertrand Rousseau (bertrand-rousseau) wrote :

Done, done, and done!

On Sun, Jul 22, 2012 at 2:24 PM, Izidor Matušov <email address hidden>wrote:

> Review: Needs Fixing code, running
>
> Hi Bertrand,
>
> nice job! I still have few remarks:
>
> There is still a link to https://bugs.launchpad.net/gtg instead of
> https://bugs.launchpad.net/gtg/+filebug It would make eliminate one step
> of reporting bug - loading a database of bugs and finding "Report bug"
> link. The links occurs 2 times: the main task and "Report bugs" task.
>
> In how task "Learn how to search for tasks" you should mention it is
> possible to search by parameters of tasks as well (maybe give an example
> like @errands !today - errands to be done today) and refer to help for more
> details.
>
> I made a typo in the original search documentation in "Show GTG tasks with
> due_date before Marz 1" where it should be March 1 instead of Marz 1. Could
> you please correct it both in original comment and documentation? Thank you.
>
>
> --
>
> https://code.launchpad.net/~gtg-contributors/gtg/bugfix-629683/+merge/115353<https://code.launchpad.net/%7Egtg-contributors/gtg/bugfix-629683/+merge/115353>
> You proposed lp:~gtg-contributors/gtg/bugfix-629683 for merging.
>

--
Bertrand Rousseau

1217. By Bertrand Rousseau

Merge trunk, fixes CHANGELOG conflict

Revision history for this message
Izidor Matušov (izidor) wrote :

Thanks for good job!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CHANGELOG'
2--- CHANGELOG 2012-07-20 09:46:12 +0000
3+++ CHANGELOG 2012-07-22 18:10:24 +0000
4@@ -32,6 +32,9 @@
5 * Fixes for bugs #906516, #1002160 (task urgency color plugin), by Wolter Hellmund
6 * Fix for bug #1001012: Notification area icon should change color when there are urgent tasks, by Antonio Roquentin
7 * Saner implementation of set_due_date
8+ * Fix for bug #629683: update initial tutorial for 0.3
9+ * Fix for bug #615027: Introductory task set should suggest organizing tasks in a tag hierarchy
10+ * Fix for bug #1026264: Write user documentation for search/smart tag
11
12 2012-02-13 Getting Things GNOME! 0.2.9
13 * Big refractorization of code, now using liblarch
14
15=== modified file 'GTG/core/firstrun_tasks.py'
16--- GTG/core/firstrun_tasks.py 2012-05-23 08:55:31 +0000
17+++ GTG/core/firstrun_tasks.py 2012-07-22 18:10:24 +0000
18@@ -27,137 +27,321 @@
19
20
21 def populate():
22+ """On the first run of GTG, populate the task list with tasks meant to
23+ act as a GTG tutorial."""
24 doc, root = cleanxml.emptydoc("project")
25
26 #Task 0@1: Getting started with GTG
27- title1 = _("Getting started with GTG")
28- text1 = _("""Welcome to Getting Things Gnome!, your new task manager.
29-
30-In GTG, everything is a task. From building a bridge over the Pacific Ocean to changing a light bulb or organizing a party. Task is automatically saved while you are editing.
31-
32-Once you are done with a specific task, you can push the &quot;Mark as Done&quot; button. If the task is not relevant anymore, simply press &quot;Dismiss&quot; button.
33-
34-A task might be composed of multiple subtasks that appear as links in the task description. Simply click on the following link to open the subtask:""")
35- text1 += "\n<subtask>1@1</subtask>\n"
36- text1 += _("""Once you've read the above subtask, mark it as done. If you don't want to do the task, mark it as dismissed. Tasks that you marked as done or dismissed are stored in the Closed Tasks Pane which is hidden by default, but you can easily enable it in the View menu.
37-
38-If you choose to close this current task, subtasks will be automatically closed too. GTG considers that if you have completed a given task, you don't need to do the subtasks anymore.
39-
40-Other stuff you should read:""")
41- text1 += """\n<subtask>2@1</subtask>
42- <subtask>3@1</subtask>
43- <subtask>4@1</subtask>
44- <subtask>5@1</subtask>
45- <subtask>6@1</subtask>\n"""
46- text1 += _("""We hope that you will appreciate GTG. Please send us bug reports and ideas for improvement using:
47- https://bugs.launchpad.net/gtg
48-
49-Thank you for trying out GTG :-)""")
50- t1 = addtask(doc, "0@1", title1, text1, ["1@1", "2@1", "3@1", "4@1", "5@1", "6@1"])
51- root.appendChild(t1)
52+ title1 = _("Getting Started With GTG")
53+ text1 = _(\
54+"Welcome to Getting Things GNOME!, your new task manager! In Getting "
55+"Things GNOME! (GTG), everything is a task. From building a bridge over "
56+"the Pacific Ocean to changing a light bulb or organizing a party!\n"
57+"\n"
58+"If you are new to GTG, please take the time to read this, as it will "
59+"provide you useful information about how to use GTG to organize your "
60+"everyday life.\n"
61+"\n"
62+"Creating and editing tasks:\n"
63+"\n"
64+"Using GTG is easy: you organize what you have to do by creating new "
65+"tasks. To do this, simply press the &quot;New Task&quot; button, "
66+"edit the task by describing it, set some parameters, and that's "
67+"it! Once a task done, you can close it by pressing the &quot;Mark As "
68+"Done&quot; button.\n"
69+"\n"
70+"In GTG, a task is automatically saved while you are editing it. No need to "
71+"press any &quot;Save&quot; button! Try it: add some text to this task, close "
72+"the window, and reopen it: your changes are still there!\n"
73+"\n"
74+"About subtasks:\n"
75+"\n"
76+"In life, you often get more things done by refining them in "
77+"smaller, more operational tasks. GTG helps to do just this by defining "
78+"&quot;subtasks&quot;. In GTG, those subtasks are considered as prerequisites "
79+"that must be completed before being able to close their parent task.\n"
80+"\n"
81+"Therefore, in GTG, a task might host one or several subtasks. Those "
82+"appear as links in the task description, just like the link below. To "
83+"open and edit a subtask, simply click on its link! Try it yourself: open "
84+"the following subtask:\n"
85+"<subtask>1@1</subtask>\n"
86+"\n"
87+"Closing a task:\n"
88+"\n"
89+"In GTG, once you are done with a task, you can close it by pushing "
90+"either the &quot;Mark as Done&quot; or the &quot;Dismiss&quot; button. "
91+"Use the first one if the task is done, and the latter if you want to "
92+"close it because it is not relevant anymore. Want to try it? Try to "
93+"close the subtask above for instance!\n"
94+"\n"
95+"When you close a task, you will notice that all its subtasks will be "
96+"automatically closed too! Indeed, GTG considers that if you have completed a "
97+"given task, then you don't need to do its subtasks anymore (they were "
98+"prerequisites, after all).\n"
99+"\n"
100+"Note that the tasks that you have marked as done or dismissed are listed in "
101+"the &quot;Closed Tasks Pane&quot; which is hidden by default, but you can "
102+"easily show it using the View menu.\n"
103+"\n"""
104+"Learn more about GTG:\n"
105+"\n"
106+"If you are interested in knowing more about "
107+"GTG's other features, you will find more information here:\n"
108+"<subtask>2@1</subtask>\n"
109+"<subtask>3@1</subtask>\n"
110+"<subtask>4@1</subtask>\n"
111+"<subtask>5@1</subtask>\n"
112+"<subtask>6@1</subtask>\n"
113+"<subtask>7@1</subtask>\n"
114+"<subtask>8@1</subtask>\n"
115+"\n"
116+"You can also browse GTG documentation by pressing F1 or opening it using "
117+"the Help menu.\n"
118+"\n"
119+"We sincerely hope you will enjoy using GTG, and thank you for trying it out! "
120+"Please send us bug reports and ideas for improvement using this web page: "
121+"https://bugs.launchpad.net/gtg/+filebug If you want to get tips for using "
122+"GTG or be informed about the newest features, also visit our blog at "
123+"http://gtg.fritalk.com\n"
124+"\n"
125+"The GTG team.")
126+ task1 = addtask(doc, "0@1", title1, text1, \
127+ ["1@1", "2@1", "3@1", "4@1", "5@1", "6@1", "7@1", "8@1"])
128+ root.appendChild(task1)
129
130 #Task 1@1: Learn to use subtasks
131- title2 = _("Learn how to use subtasks")
132- text2 = _("""&quot;Subtask&quot; is something that you need to do first in order to accomplish your task. To insert a subtask in the task description (this window), begin a line with &quot;-&quot;, write the subtask title and press Enter. Try inserting one subtask below.
133-
134-You can also use the &quot;insert subtask&quot; button.
135-
136-Tasks and subtasks can be re-organized by drag-n-drop in the tasks list.
137-
138-Subtasks have certain rules: for example, a subtask's due date can never be after its parent's due date and when you mark a parent task as done, its subtasks will also be marked as done.""")
139- t2 = addtask(doc, "1@1", title2, text2, [])
140- root.appendChild(t2)
141+ title2 = _("Learn How To Use Subtasks")
142+ text2 = _(\
143+"A &quot;Subtask&quot; is something that you need to do first before being "
144+"able to accomplish your task. In GTG, the purpose of subtasks is to cut down "
145+"a task in smaller subtasks that are easier to achieve and to track down.\n"
146+"\n"
147+"To insert a subtask in the task description (this window, for instance), "
148+"begin a line with &quot;-&quot;, then write the subtask title and press "
149+"Enter.\n"
150+"\n"
151+"Try inserting one subtask below. Type &quot;- This is my first "
152+"subtask!&quot;, for instance, and press Enter:\n"
153+"\n"
154+"\n"
155+"\n"
156+"Alternatively, you can also use the &quot;Insert Subtask&quot; button.\n"
157+"\n"
158+"Note that subtasks obey to some rules: first, a subtask's due date can never "
159+"happen after its parent's due date and, second, when you mark a parent "
160+"task as done, its subtasks will also be marked as done.\n"
161+"\n"
162+"And if you are not happy with your current tasks/subtasks organization, you "
163+"can always change it by drag-and-dropping tasks on each other in the tasks "
164+"list.")
165+ task2 = addtask(doc, "1@1", title2, text2, [])
166+ root.appendChild(task2)
167
168 #Task 2@1: Learn to use tags
169- title3 = _("Learn how to use tags")
170- text3 = _("""A tag is a simple word that begins with &quot;@&quot;.
171-
172-Try to type a word beginning with @ here:
173-
174-It becomes yellow, it's a tag.
175-
176-Tags are useful to sort your tasks. In the view menu, you can enable a sidebar which displays all the tags you are using so you can easily see tasks assigned to a given tag. There's no limit to the number of tags a task can have.
177-
178-You can drag-n-drop a tag onto another to create \"subtags\". As an example, if you drag the tag @to_pay onto the tag @money, every task tagged with @to_pay will also appear in the view of @money (but the @money tag is not added to the task).
179-
180-If you right click on a tag in the sidebar you can also set its color. It will allow you to have a more colorful list of tasks, if you want it that way.
181-
182-A new tag is only added to the current task. There's no recursion and the tag is not applied to subtasks. But when you create a new subtask, this subtask will inherit the tags of its parent as a good primary default (it will also be the case if you add a tag to a parent just after creating a subtask). Of course, you can modify at any time the tags of this particular subtask. It will never be changed by the parent.""")
183- t3 = addtask(doc, "2@1", title3, text3, [])
184- root.appendChild(t3)
185+ title3 = _("Learn How To Use Tags")
186+ text3 = _(\
187+"In GTG, you use tags to sort your tasks. A tag is a simple word that begins "
188+"with &quot;&#64;&quot;.\n"
189+"\n"
190+"Try to type a word beginning with &quot;&#64;&quot; here:\n"
191+"\n"
192+"Once it becomes yellow, it is a tag! And this tag is now linked to the "
193+"task!\n"
194+"\n"
195+"Using the View menu, you can enable a sidebar which displays all the tags "
196+"you are using. This allows you to easily see all tasks associated to a "
197+"given tag.\n"
198+"\n"
199+"If you right-click on a tag in the sidebar, you can also edit it. It allows "
200+"you to assign it a color or an icon for instance. This is handy if you want "
201+"to quickly identify the tasks associated to a given tag in the task list!\n"
202+"\n"
203+"New tags are always added exclusively to the currently edited task, and "
204+"never to its subtasks. However, when you create a new subtask, it will "
205+"inherit its parent's tags.\n"
206+"\n"
207+"If you need a more advanced task organization, you can also create a "
208+"hierarchy of tags by drag-and-dropping a tag onto another. This is useful "
209+"when you want to regroup several tags together and see all related tasks "
210+"easily. For instance, if you have two tags &#64;money and &#64;to_pay, and "
211+"you drag &#64;to_pay on &#64;money, every task tagged with &#64;to_pay will "
212+"also appear when you select &#64;money.")
213+ task3 = addtask(doc, "2@1", title3, text3, [])
214+ root.appendChild(task3)
215
216 #Task 3@1: Using the Workview
217- title4 = _("Learn how to use the Workview")
218- text4 = _("""If you press the &quot;Workview&quot; button, only actionable tasks will be displayed.
219-
220-What is an actionable task? It's a task you can do directly, right now.
221-
222-It's a task that is already &quot;start-able&quot;, i.e. the start date is already over.
223-
224-It's a task that doesn't have open subtasks, i.e. you can do the task itself directly.
225-
226-Thus, the workview will only show you tasks you should do right now.
227-
228-If you use tags, you can right click on a tag in the sidebar and choose to hide tasks assigned to this particular tag in the workview. It's very useful if you have a tag like &quot;someday&quot; that you use for tasks you would like to do but are not particularly urgent.""")
229- t4 = addtask(doc, "3@1", title4, text4, [])
230- root.appendChild(t4)
231+ title4 = _("Learn How To Use The Work View")
232+ text4 = _(\
233+"If you press the &quot;Work View&quot; button, only actionable tasks will "
234+"be displayed in your list.\n"
235+"\n"
236+"What is an actionable task? It's a task you can do directly, right now.\n"
237+"\n"
238+"It's a task that is already &quot;start-able&quot;, i.e. the start date "
239+"is already over.\n"
240+"\n"
241+"It's a task that doesn't have open subtasks, i.e. you can do the task "
242+"itself directly.\n"
243+"\n"
244+"It's a task that has a due date different than &quot;Someday&quot;, since "
245+"this kind of date is reserved for things that needs more thoughts before "
246+"being actionable.\n"
247+"\n"
248+"Thus, in short, the Work View shows you tasks that you can do right now. "
249+"It's very useful when you want to get things done and to focus on the "
250+"relevant tasks!\n"
251+"\n"
252+"If you use tags, you can right click on a tag in the sidebar and choose "
253+"to hide tasks assigned to this particular tag in the Work View. It is very "
254+"useful if you have a tag like &quot;&#64;wait&quot; that you use for tasks "
255+"blocked by some external event (i.e. a phone call you wait to receive).\n"
256+"\n"
257+"And finally, an important note regarding the Work View: since the Work View "
258+"is updated instantaneously, if you edit your task while using the Work "
259+"View, this task might disappear due to the change you just made (e.g. "
260+"adding a subtask, adding a tag hidden in the Work View, etc.). To avoid "
261+"this, it's better not to edit your task while using the Work View.")
262+ task4 = addtask(doc, "3@1", title4, text4, [])
263+ root.appendChild(task4)
264
265 #Task 5@1: Plugins
266- title5 = _("Learn how to use Plugins")
267- text5 = _("""GTG has the ability to add plugins to extend it's core functionality.
268-
269-Some examples of the current plugins are Syncing with Remember the Milk and Evolution, Tomboy/Gnote integration and Geolocalized Tasks.
270-You can find the Plugin Manager by selecting Edit in the Menu Bar, then clicking Preferences. You will then see a tab labeled Plugins.""")
271-
272- t5 = addtask(doc, "4@1", title5, text5, [])
273- root.appendChild(t5)
274+ title5 = _("Learn How To Use Plugins")
275+ text5 = _(\
276+"GTG has the ability to add plugins to extend its core functionality.\n"
277+"\n"
278+"Some examples of the currently available plugins are the notification "
279+"icon which displays a handy shortcut to GTG in your notification space, or "
280+"the closed tasks remover which automatically deletes old tasks from your "
281+"closed tasks list.\n"
282+"\n"
283+"You can find the Plugin Manager by selecting Edit in the Menu Bar, then "
284+"clicking Plugins.")
285+ task5 = addtask(doc, "4@1", title5, text5, [])
286+ root.appendChild(task5)
287
288 #Task 5@1: Reporting bugs
289- title6 = _("Reporting bugs")
290- text6 = _("""GTG is still very alpha software. We like it and use it everyday but you will encounter some bugs.
291-
292-Please, report them on our Launchpad page:
293-https://bugs.launchpad.net/gtg
294-
295-We need you to make this software better. Any contribution, any idea is welcome.
296-
297-If you have some trouble with GTG, we might be able to help you or to solve your problem really quickly.""")
298-
299- t6 = addtask(doc, "5@1", title6, text6, [])
300- root.appendChild(t6)
301+ title6 = _("Reporting Bugs")
302+ text6 = _(\
303+"GTG is still beta software. We like it and use it everyday but you will "
304+"probably encounter some bugs will you do.\n"
305+"\n"
306+"Please, help us improving GTG by reporting them on our Launchpad page:"
307+"https://bugs.launchpad.net/gtg/+filebug\n"
308+"\n"
309+"We need you to make this software better. Any contribution, any idea is "
310+"welcome!\n"
311+"\n"
312+"If you have some trouble with GTG, we might be able to help you or to "
313+"solve your problem really quickly.")
314+ task6 = addtask(doc, "5@1", title6, text6, [])
315+ root.appendChild(task6)
316
317 #Task 6@1: Learn how to use the QuickAdd Entry
318- title7 = _("Learn how to use the Quick Add Entry")
319- text7 = _("""The Quick Add Entry is the fastest way to create a new task. Use the check box in the View menu to enable and disable the entry field.
320-
321-To add a task simply type its title in the entry and press Enter. The task will be created and selected in the task browser. If a tag is selected in the Tags Sidebar, it will be applied to the task you created.
322-
323-You can also create a task in the Quick Add Entry and at the same time specify its tags, due and defer date. Follow these format rules:
324-
325-
326-tags:tag1,tag2,tag3
327- - This way you can apply as many tags as you wish using comma as separator
328- - Any word that begins with &quot;@&quot; will be interpreted as a tag
329-
330-due:date
331-defer:date
332- - This way you can apply a due date or a defer date. Dates can be formated as yyyy-mm-dd (for example 2012-04-01) or yyyymmdd (20120401) or mmdd (0401 - the year being implicitly the current one) or today, tomorrow or a weekday name (due:monday means due next Monday). Dates which are added in this way will not appear in the task title.
333-
334-Examples:
335-buy stationary tags:purchases,office due:20120330 defer:tuesday
336-
337- - The above example tells GTG to create a new task with the title "buy stationary", under the tags "purchases" and "office", with the due date March 30, 2012 and the start date next Tuesday.
338-
339-call mum tags:family,calls due:sunday defer:tomorrow
340- - The above example tells GTG to create a new task with the title "call mum", under the tags "family" and "calls", with the due date next Sunday and the start date tomorrow.""")
341-
342- t7 = addtask(doc, "6@1", title7, text7, [])
343- root.appendChild(t7)
344+ title7 = _("Learn How To Use The Quick Add Entry")
345+ text7 = _(\
346+"The Quick Add Entry is the fastest way to create a new task. Use the check "
347+"box in the View menu to enable and disable the entry field.\n"
348+"\n"
349+"To add a task simply type its title in the entry and press Enter. The task "
350+"will be created and selected in the task browser. If a tag is selected in "
351+"the Tags Sidebar, it will be applied to the task you created.\n"
352+"\n"
353+"You can also create a task in the Quick Add Entry and at the same time "
354+"specify its tags, due and defer date. Follow these format rules:\n"
355+"\n"
356+"tags:tag1,tag2,tag3\n"
357+"\n"
358+"Using this you can apply as many tags as you wish using comma as "
359+"separator. Note that any word in the title that begins with &quot;@&quot; "
360+"will also be interpreted as a tag!\n"
361+"\n"
362+"due:date\n"
363+"defer:date\n"
364+"\n"
365+"Using this you can apply a due date or a defer date. Dates can be "
366+"formated as yyyy-mm-dd (for example 2012-04-01) or yyyymmdd (20120401) "
367+"or mmdd (0401 - the year being implicitly the current one) or today, "
368+"tomorrow or a weekday name (due:monday means due next Monday). Dates "
369+"which are added in this way will not appear in the task title.\n"
370+"\n"
371+"Examples:\n"
372+"\n"
373+"buy stationary tags:purchases,office due:20120330 defer:tuesday\n"
374+"\n"
375+"The above example tells GTG to create a new task with the title "
376+"&quot;buy stationary&quot;, under the tags &quot;purchases&quot; and "
377+"&quot;office&quot;, with the due date March 30, 2012 and the start date "
378+"next Tuesday.\n"
379+"\n"
380+"call mum tags:family,calls due:sunday defer:tomorrow\n"
381+"\n"
382+"The above example tells GTG to create a new task with the title "
383+"&quot;call mum&quot;, under the tags &quot;family&quot; and "
384+"&quot;calls&quot;, with the due date next Sunday and the start date "
385+"tomorrow.")
386+ task7 = addtask(doc, "6@1", title7, text7, [])
387+ root.appendChild(task7)
388+
389+ #Task 7@1: Learn How To Use Synchonization Services
390+ title8 = _("Learn How To Use Synchronization Services")
391+ text8 = _(\
392+"Synchronization Services allow GTG to synchronize (meaning to have access "
393+"or to import) tasks, notes or bugs from other sites or services like "
394+"Launchpad, Remember the Milk, Tomboy, etc.\n"
395+"\n"
396+"This can incredibly useful if, for instance, you want to access your tasks "
397+"on several instances of GTG running on separate computers, or if you want "
398+"to edit your tasks using an online service. GTG can also import tasks from "
399+"specific sites like launchpad for instance, which allows you "
400+"to manage the bug reports you're working on in GTG!\n"
401+"\n"
402+"To use Synchronization Services, use the Edit menu, and select "
403+"&quot;Synchronization Services&quot;. You will then have the possibility "
404+"to select among several online or local services from/to where you can "
405+"import or export your tasks.\n"
406+"\n"
407+"If you want to know more about Synchronization Services, you can read "
408+"more about them by in the dedicated documentation in GTG's help (use "
409+"the Help menu or press F1 to get access to it).")
410+ task8 = addtask(doc, "7@1", title8, text8, [])
411+ root.appendChild(task8)
412+
413+ #Task 8@1: Learn How To Search For Tasks
414+ title9 = _("Learn How To Search For Tasks")
415+ text9 = _(\
416+"To help you to find specific tasks more easily, GTG allows you to search "
417+"for tasks based on their content.\n"
418+"\n"
419+"Searching for tasks is really easy: just type the words you are looking for "
420+"in the Quick Add Entry, and select &quot;Search&quot; in the menu that "
421+"will appear automatically.\n"
422+"\n"
423+"GTG stores your searches in the sidebar, under the &quot;Search&quot; "
424+"section. You can thus always go back to a previous search later on if you "
425+"need it. Search results are updated automatically, so you always get "
426+"all the tasks matching your search request.\n"
427+"\n"
428+"GTG also saves all the search requests you have made until you explicitely "
429+"delete them (which you can do by right-clicking on them and selecting "
430+"&quot;Delete&quot;). That allows you to safely quit GTG without loosing your "
431+"search requests. This can be very useful when you use the search features "
432+"to identify specific tasks regularly!\n"
433+"\n"
434+"GTG search feature is really powerful and accept many parameters that "
435+"allows you to search for very specific tasks. For instance, using the search "
436+"query &quot;&#64;errands !today&quot;, you can search for tasks with the "
437+"&#64;errands tag that must be done today. To learn more about those search "
438+"query parameters, you can read the documentation available in GTG's help "
439+"(press F1 or use the Help menu to get access to it).")
440+ task9 = addtask(doc, "8@1", title9, text9, [])
441+ root.appendChild(task9)
442
443 return doc
444
445
446-def addtask(doc, ze_id, title, text, childs):
447+def addtask(doc, ze_id, title, text, children):
448+ """Initialize GTG tasks in order to display them at first run."""
449 t_xml = doc.createElement("task")
450 t_xml.setAttribute("id", ze_id)
451 t_xml.setAttribute("status", "Active")
452@@ -166,7 +350,7 @@
453 t_xml.setAttribute("tags", ",".join(tags))
454
455 cleanxml.addTextNode(doc, t_xml, "title", title)
456- for c in childs:
457- cleanxml.addTextNode(doc, t_xml, "subtask", c)
458+ for child in children:
459+ cleanxml.addTextNode(doc, t_xml, "subtask", child)
460 cleanxml.addTextNode(doc, t_xml, "content", text)
461 return t_xml
462
463=== modified file 'GTG/core/search.py'
464--- GTG/core/search.py 2012-05-23 08:55:31 +0000
465+++ GTG/core/search.py 2012-07-22 18:10:24 +0000
466@@ -54,7 +54,7 @@
467 Examples of queries:
468 '!tomorrow !or !today' => show tasks which are today or tomorrow
469 '@gtg @writing' => show tasks with both of the tags @gtg, @writing
470-'@gtg !before 2012-03-01' => show GTG tasks with due_date before Marz 1
471+'@gtg !before 2012-03-01' => show GTG tasks with due_date before March 1
472 'buy @errands' => show errands where I have to buy something
473 '!not buy @errands' => show errands without keyword buy
474 '!after "next month"' => show tasks after this month
475
476=== added file 'doc/userdoc/C/gtg-search-intro.page'
477--- doc/userdoc/C/gtg-search-intro.page 1970-01-01 00:00:00 +0000
478+++ doc/userdoc/C/gtg-search-intro.page 2012-07-22 18:10:24 +0000
479@@ -0,0 +1,38 @@
480+<page xmlns="http://projectmallard.org/1.0/"
481+ type="guide" style="task 2column"
482+ id="gtg-search-intro">
483+
484+ <info>
485+ <link type="guide" xref="index#gtg-search" group="first"/>
486+ <revision pkgversion="0.1" version="0.1" date="2012-07-03" status="candidate" />
487+ <credit type="author">
488+ <name>Bertrand Rousseau</name>
489+ <email>bertrand.rousseau@gmail.com</email>
490+ </credit>
491+ </info>
492+
493+ <title>Use GTG Search</title>
494+
495+<p>To help you to find specific tasks more easily, GTG allows you to search
496+for tasks based on their content.</p>
497+
498+<p>Searching for tasks is really easy: just type the words you are looking for
499+in the Quick Add Entry, and select &quot;Search&quot; in the menu that
500+will appear automatically.</p>
501+
502+<p>GTG stores your searches in the sidebar, under the &quot;Search&quot;
503+section. You can thus always go back to a previous search later on if you
504+need it. Search results are updated automatically, so you always get
505+all the tasks matching your search request.</p>
506+
507+<p>GTG also saves all the search requests you have made until you explicitely
508+delete them (which you can do by right-clicking on them and selecting
509+&quot;Delete&quot;). That allows you to safely quit GTG without loosing your
510+search requests. This can be very useful when you use the search features
511+to identify specific tasks regularly!</p>
512+
513+<p>If you want to perform really specific searches, you can use a special
514+syntax to create precise requests. Those aspects are covered
515+<link xref="gtg-search-syntax">in this page</link>. </p>
516+
517+</page>
518
519=== added file 'doc/userdoc/C/gtg-search-syntax.page'
520--- doc/userdoc/C/gtg-search-syntax.page 1970-01-01 00:00:00 +0000
521+++ doc/userdoc/C/gtg-search-syntax.page 2012-07-22 18:10:24 +0000
522@@ -0,0 +1,123 @@
523+<page xmlns="http://projectmallard.org/1.0/"
524+ xmlns:ui="http://projectmallard.org/experimental/ui/"
525+ type="guide" style="tip"
526+ id="gtg-search-syntax">
527+
528+ <info>
529+ <link type="guide" xref="index#gtg-search" group="first"/>
530+ <revision pkgversion="0.1" version="0.1" date="2012-07-03" status="candidate" />
531+ <credit type="author">
532+ <name>Bertrand Rousseau</name>
533+ <email>bertrand.rousseau@gmail.com</email>
534+ </credit>
535+ </info>
536+
537+ <title>GTG Search Syntax</title>
538+
539+<p>When typing your search request in the Quick Add Entry, you can also use
540+special keywords to refine your request. The table below describes those keywords.</p>
541+
542+<table rules="rows" frame="top bottom" ui:expanded="yes">
543+<title>GTG Search Keywords</title>
544+ <thead>
545+ <tr>
546+ <td><p><em style="strong">Search Keyword</em></p></td>
547+ <td><p><em style="strong">Effect</em></p></td>
548+ </tr>
549+ </thead>
550+ <tbody>
551+ <tr>
552+ <td><p><code>word</code></p></td>
553+ <td><p>Search tasks which contains this word</p></td>
554+ </tr>
555+ <tr>
556+ <td><p><code>"text"</code></p></td>
557+ <td><p>Basically the same as above but allows the space and special characters inside. Literal must be inside "quotes".
558+</p></td>
559+ </tr>
560+ <tr>
561+ <td><p><code>@tag</code></p></td>
562+ <td><p>Search tasks with this tag</p></td>
563+ </tr>
564+ <tr>
565+ <td><p><code>!after [date]</code></p></td>
566+ <td>
567+ <p>Search tasks which could be done after this date</p>
568+ <p>Look below for the formatting of the <code>[date]</code> element.</p>
569+ </td>
570+ </tr>
571+ <tr>
572+ <td><p><code>!before [date]</code></p></td>
573+ <td>
574+ <p>Search tasks which must be done before this date</p>
575+ <p>Look below for the formatting of the <code>[date]</code> element.</p>
576+ </td>
577+ </tr>
578+ <tr>
579+ <td><p><code>!today</code></p></td>
580+ <td><p>Search tasks with a due date happening today</p></td>
581+ </tr>
582+ <tr>
583+ <td><p><code>!tomorrow</code></p></td>
584+ <td><p>Search tasks with due date happening tomorrow</p></td>
585+ </tr>
586+ <tr>
587+ <td><p><code>!nodate</code></p></td>
588+ <td><p>Search tasks without due date</p></td>
589+ </tr>
590+ <tr>
591+ <td><p><code>!now</code></p></td>
592+ <td><p>Search tasks with due date defined as "now"</p></td>
593+ </tr>
594+ <tr>
595+ <td><p><code>!soon</code></p></td>
596+ <td><p>Seach tasks with due date defined as "soon"</p></td>
597+ </tr>
598+ <tr>
599+ <td><p><code>!notag</code></p></td>
600+ <td><p>Search tasks without tags</p></td>
601+ </tr>
602+ <tr>
603+ <td><p><code>!someday</code></p></td>
604+ <td><p>Search tasks with due date defined as "someday"</p></td>
605+ </tr>
606+ <tr>
607+ <td><p><code>!not [query]</code></p></td>
608+ <td><p>The next part of the query will be negated</p></td>
609+ </tr>
610+ <tr>
611+ <td><p><code>[query] !or [query]</code></p></td>
612+ <td><p>Return True if at least on of elements is true</p></td>
613+ </tr>
614+ </tbody>
615+</table>
616+
617+<p><code>[date]</code> can be formatted as yyyy-mm-dd (for example 2012-04-01)
618+or yyyymmdd (20120401) or mmdd (0401 - the year being implicitly the current
619+one) or today, tomorrow or a weekday name (due:monday means due next Monday).
620+</p>
621+
622+<p>All elements of the query must be true for the query to be true. In other words,
623+the search feature behave like it add an implicit logical 'AND' between each element.</p>
624+
625+<p>Examples of queries:</p>
626+
627+<p><em style="strong"><code>!tomorrow !or !today</code></em></p>
628+<p>Show tasks which are today or tomorrow</p>
629+
630+<p><em style="strong"><code>@gtg @writing</code></em></p>
631+<p>Show tasks with both of the tags @gtg, @writing</p>
632+
633+<p><em style="strong"><code>@gtg !before 2012-03-01</code></em></p>
634+<p>Show GTG tasks with due_date before March 1</p>
635+
636+<p><em style="strong"><code>buy @errands</code></em></p>
637+<p>Show errands where I have to buy something</p>
638+
639+<p><em style="strong"><code>!not buy @errands</code></em></p>
640+<p>Show errands without keyword buy</p>
641+
642+<p><em style="strong"><code>!after "next month"</code></em></p>
643+<p>Show tasks after this month</p>
644+
645+</page>
646
647=== modified file 'doc/userdoc/C/index.page'
648--- doc/userdoc/C/index.page 2012-07-09 15:18:39 +0000
649+++ doc/userdoc/C/index.page 2012-07-22 18:10:24 +0000
650@@ -43,6 +43,10 @@
651 <title>Task Management</title>
652 </section>
653
654+ <section id="gtg-search" style="2column">
655+ <title>Search For Tasks</title>
656+ </section>
657+
658 <section id="gtg-sync" style="2column">
659 <title>Sync Services</title>
660 </section>

Subscribers

People subscribed via source and target branches

to status/vote changes: