From 7884a69eb101a63a15b5cd635d2eb577a744ce2a Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 14 Feb 2008 15:21:34 +0100 Subject: [PATCH 1/2] this will become a branch tracking the scons build system in isolation --- ___SCONS___ | 2 + doc/devel/uml/DIR_INFO | 1 - doc/devel/uml/activities.html | 23 - doc/devel/uml/activitydiagrams.html | 23 - doc/devel/uml/class128005.html | 24 - doc/devel/uml/class128133.html | 25 - doc/devel/uml/class128138.html | 20 - doc/devel/uml/class128181.html | 29 - doc/devel/uml/class128225.html | 23 - doc/devel/uml/class128261.html | 27 - doc/devel/uml/class128266.html | 23 - doc/devel/uml/class128309.html | 25 - doc/devel/uml/class128389.html | 20 - doc/devel/uml/class128394.html | 23 - doc/devel/uml/class128437.html | 25 - doc/devel/uml/class128517.html | 25 - doc/devel/uml/class128522.html | 21 - doc/devel/uml/class128565.html | 23 - doc/devel/uml/class128645.html | 26 - doc/devel/uml/class128650.html | 21 - doc/devel/uml/class128693.html | 20 - doc/devel/uml/class128773.html | 26 - doc/devel/uml/class128778.html | 23 - doc/devel/uml/class128821.html | 31 - doc/devel/uml/class128901.html | 25 - doc/devel/uml/class128906.html | 21 - doc/devel/uml/class128949.html | 23 - doc/devel/uml/class129029.html | 25 - doc/devel/uml/class129077.html | 20 - doc/devel/uml/class129157.html | 24 - doc/devel/uml/class129205.html | 20 - doc/devel/uml/class129285.html | 23 - doc/devel/uml/class129333.html | 23 - doc/devel/uml/class129413.html | 29 - doc/devel/uml/class129541.html | 26 - doc/devel/uml/class129669.html | 23 - doc/devel/uml/class129797.html | 29 - doc/devel/uml/class129925.html | 24 - doc/devel/uml/class130053.html | 23 - doc/devel/uml/class130181.html | 23 - doc/devel/uml/class130309.html | 20 - doc/devel/uml/class130437.html | 24 - doc/devel/uml/class130565.html | 24 - doc/devel/uml/class130693.html | 24 - doc/devel/uml/class130821.html | 24 - doc/devel/uml/class130949.html | 24 - doc/devel/uml/class131077.html | 24 - doc/devel/uml/class131333.html | 25 - doc/devel/uml/class131461.html | 28 - doc/devel/uml/class131589.html | 22 - doc/devel/uml/class131717.html | 25 - doc/devel/uml/class131845.html | 23 - doc/devel/uml/class131973.html | 23 - doc/devel/uml/class132101.html | 22 - doc/devel/uml/class132229.html | 22 - doc/devel/uml/class132357.html | 22 - doc/devel/uml/class132485.html | 22 - doc/devel/uml/class132613.html | 22 - doc/devel/uml/class132741.html | 24 - doc/devel/uml/class132869.html | 22 - doc/devel/uml/class132997.html | 22 - doc/devel/uml/class133125.html | 22 - doc/devel/uml/class133253.html | 21 - doc/devel/uml/class133381.html | 22 - doc/devel/uml/class133509.html | 22 - doc/devel/uml/class133637.html | 22 - doc/devel/uml/class133765.html | 22 - doc/devel/uml/class133893.html | 27 - doc/devel/uml/class134021.html | 25 - doc/devel/uml/class134149.html | 25 - doc/devel/uml/class134277.html | 28 - doc/devel/uml/class134405.html | 29 - doc/devel/uml/class134533.html | 25 - doc/devel/uml/class134661.html | 27 - doc/devel/uml/class134789.html | 20 - doc/devel/uml/class134917.html | 20 - doc/devel/uml/classdiagrams.html | 28 - doc/devel/uml/classes.html | 93 - doc/devel/uml/classes_list.html | 96 - doc/devel/uml/collaborationdiagrams.html | 22 - doc/devel/uml/componentdiagrams.html | 22 - doc/devel/uml/deploymentdiagrams.html | 22 - doc/devel/uml/fig128005.png | Bin 49743 -> 0 bytes doc/devel/uml/fig128133.png | Bin 68623 -> 0 bytes doc/devel/uml/fig128181.png | Bin 28708 -> 0 bytes doc/devel/uml/fig128261.png | Bin 45419 -> 0 bytes doc/devel/uml/fig128309.png | Bin 78 -> 0 bytes doc/devel/uml/fig128389.png | Bin 37171 -> 0 bytes doc/devel/uml/fig128437.png | Bin 78 -> 0 bytes doc/devel/uml/fig128517.png | Bin 38036 -> 0 bytes doc/devel/uml/fig128645.png | Bin 78 -> 0 bytes doc/devel/uml/fig128773.png | Bin 23149 -> 0 bytes doc/devel/uml/fig128901.png | Bin 52125 -> 0 bytes doc/devel/uml/fig129029.png | Bin 40343 -> 0 bytes doc/devel/uml/fig129157.png | Bin 45859 -> 0 bytes doc/devel/uml/fig129285.png | Bin 45097 -> 0 bytes doc/devel/uml/fig129413.png | Bin 23137 -> 0 bytes doc/devel/uml/fig129541.png | Bin 16089 -> 0 bytes doc/devel/uml/fig129669.png | Bin 28497 -> 0 bytes doc/devel/uml/index-withframe.html | 19 - doc/devel/uml/index.html | 386 - doc/devel/uml/index_60.html | 42 - doc/devel/uml/index_65.html | 37 - doc/devel/uml/index_66.html | 41 - doc/devel/uml/index_67.html | 47 - doc/devel/uml/index_68.html | 32 - doc/devel/uml/index_69.html | 37 - doc/devel/uml/index_70.html | 45 - doc/devel/uml/index_71.html | 33 - doc/devel/uml/index_72.html | 26 - doc/devel/uml/index_73.html | 25 - doc/devel/uml/index_76.html | 27 - doc/devel/uml/index_77.html | 30 - doc/devel/uml/index_78.html | 23 - doc/devel/uml/index_79.html | 27 - doc/devel/uml/index_80.html | 42 - doc/devel/uml/index_81.html | 23 - doc/devel/uml/index_82.html | 34 - doc/devel/uml/index_83.html | 44 - doc/devel/uml/index_84.html | 43 - doc/devel/uml/index_86.html | 24 - doc/devel/uml/index_87.html | 23 - doc/devel/uml/navig.html | 17 - doc/devel/uml/objectdiagrams.html | 25 - doc/devel/uml/packages.html | 34 - doc/devel/uml/public_operations.html | 45 - doc/devel/uml/sequencediagrams.html | 22 - doc/devel/uml/style.css | 30 - src/main.cpp | 2 +- uml/DIR_INFO | 1 - uml/cinelerra3/10.session | 19 - uml/cinelerra3/128005 | 93 - uml/cinelerra3/128005.diagram | 73 - uml/cinelerra3/128133 | 29 - uml/cinelerra3/128133.diagram | 193 - uml/cinelerra3/128138 | 453 - uml/cinelerra3/128181.diagram | 110 - uml/cinelerra3/128261 | 660 -- uml/cinelerra3/128261.diagram | 81 - uml/cinelerra3/128389 | 623 -- uml/cinelerra3/128389.diagram | 202 - uml/cinelerra3/128437.diagram | 3 - uml/cinelerra3/128517 | 175 - uml/cinelerra3/128517.diagram | 124 - uml/cinelerra3/128645 | 35 - uml/cinelerra3/128645.diagram | 3 - uml/cinelerra3/128773 | 30 - uml/cinelerra3/128773.diagram | 77 - uml/cinelerra3/128901 | 508 - uml/cinelerra3/128901.diagram | 167 - uml/cinelerra3/129029 | 178 - uml/cinelerra3/129029.diagram | 104 - uml/cinelerra3/129157 | 42 - uml/cinelerra3/129157.diagram | 127 - uml/cinelerra3/129285 | 34 - uml/cinelerra3/129285.diagram | 123 - uml/cinelerra3/129413.diagram | 134 - uml/cinelerra3/129541.diagram | 68 - uml/cinelerra3/129669.diagram | 77 - uml/cinelerra3/134021.bodies | 5 - uml/cinelerra3/5.session | 15 - uml/cinelerra3/DIR_INFO | 1 - uml/cinelerra3/cinelerra3.prj | 53 - uml/cinelerra3/cpp_includes | 13 - uml/cinelerra3/generation_settings | 224 - uml/cinelerra3/idl_includes | 1 - uml/cinelerra3/java_imports | 1 - uml/cinelerra3/stereotypes | 54 - uml/cinelerra3/tools | 17 - wiki/DIR_INFO | 1 - wiki/backend.html | 11681 -------------------- wiki/empty.html | 11509 -------------------- wiki/index.html | 11783 -------------------- wiki/renderengine.html | 11846 --------------------- wiki/uml | 1 - 175 files changed, 3 insertions(+), 55071 deletions(-) create mode 100644 ___SCONS___ delete mode 100644 doc/devel/uml/DIR_INFO delete mode 100644 doc/devel/uml/activities.html delete mode 100644 doc/devel/uml/activitydiagrams.html delete mode 100644 doc/devel/uml/class128005.html delete mode 100644 doc/devel/uml/class128133.html delete mode 100644 doc/devel/uml/class128138.html delete mode 100644 doc/devel/uml/class128181.html delete mode 100644 doc/devel/uml/class128225.html delete mode 100644 doc/devel/uml/class128261.html delete mode 100644 doc/devel/uml/class128266.html delete mode 100644 doc/devel/uml/class128309.html delete mode 100644 doc/devel/uml/class128389.html delete mode 100644 doc/devel/uml/class128394.html delete mode 100644 doc/devel/uml/class128437.html delete mode 100644 doc/devel/uml/class128517.html delete mode 100644 doc/devel/uml/class128522.html delete mode 100644 doc/devel/uml/class128565.html delete mode 100644 doc/devel/uml/class128645.html delete mode 100644 doc/devel/uml/class128650.html delete mode 100644 doc/devel/uml/class128693.html delete mode 100644 doc/devel/uml/class128773.html delete mode 100644 doc/devel/uml/class128778.html delete mode 100644 doc/devel/uml/class128821.html delete mode 100644 doc/devel/uml/class128901.html delete mode 100644 doc/devel/uml/class128906.html delete mode 100644 doc/devel/uml/class128949.html delete mode 100644 doc/devel/uml/class129029.html delete mode 100644 doc/devel/uml/class129077.html delete mode 100644 doc/devel/uml/class129157.html delete mode 100644 doc/devel/uml/class129205.html delete mode 100644 doc/devel/uml/class129285.html delete mode 100644 doc/devel/uml/class129333.html delete mode 100644 doc/devel/uml/class129413.html delete mode 100644 doc/devel/uml/class129541.html delete mode 100644 doc/devel/uml/class129669.html delete mode 100644 doc/devel/uml/class129797.html delete mode 100644 doc/devel/uml/class129925.html delete mode 100644 doc/devel/uml/class130053.html delete mode 100644 doc/devel/uml/class130181.html delete mode 100644 doc/devel/uml/class130309.html delete mode 100644 doc/devel/uml/class130437.html delete mode 100644 doc/devel/uml/class130565.html delete mode 100644 doc/devel/uml/class130693.html delete mode 100644 doc/devel/uml/class130821.html delete mode 100644 doc/devel/uml/class130949.html delete mode 100644 doc/devel/uml/class131077.html delete mode 100644 doc/devel/uml/class131333.html delete mode 100644 doc/devel/uml/class131461.html delete mode 100644 doc/devel/uml/class131589.html delete mode 100644 doc/devel/uml/class131717.html delete mode 100644 doc/devel/uml/class131845.html delete mode 100644 doc/devel/uml/class131973.html delete mode 100644 doc/devel/uml/class132101.html delete mode 100644 doc/devel/uml/class132229.html delete mode 100644 doc/devel/uml/class132357.html delete mode 100644 doc/devel/uml/class132485.html delete mode 100644 doc/devel/uml/class132613.html delete mode 100644 doc/devel/uml/class132741.html delete mode 100644 doc/devel/uml/class132869.html delete mode 100644 doc/devel/uml/class132997.html delete mode 100644 doc/devel/uml/class133125.html delete mode 100644 doc/devel/uml/class133253.html delete mode 100644 doc/devel/uml/class133381.html delete mode 100644 doc/devel/uml/class133509.html delete mode 100644 doc/devel/uml/class133637.html delete mode 100644 doc/devel/uml/class133765.html delete mode 100644 doc/devel/uml/class133893.html delete mode 100644 doc/devel/uml/class134021.html delete mode 100644 doc/devel/uml/class134149.html delete mode 100644 doc/devel/uml/class134277.html delete mode 100644 doc/devel/uml/class134405.html delete mode 100644 doc/devel/uml/class134533.html delete mode 100644 doc/devel/uml/class134661.html delete mode 100644 doc/devel/uml/class134789.html delete mode 100644 doc/devel/uml/class134917.html delete mode 100644 doc/devel/uml/classdiagrams.html delete mode 100644 doc/devel/uml/classes.html delete mode 100644 doc/devel/uml/classes_list.html delete mode 100644 doc/devel/uml/collaborationdiagrams.html delete mode 100644 doc/devel/uml/componentdiagrams.html delete mode 100644 doc/devel/uml/deploymentdiagrams.html delete mode 100644 doc/devel/uml/fig128005.png delete mode 100644 doc/devel/uml/fig128133.png delete mode 100644 doc/devel/uml/fig128181.png delete mode 100644 doc/devel/uml/fig128261.png delete mode 100644 doc/devel/uml/fig128309.png delete mode 100644 doc/devel/uml/fig128389.png delete mode 100644 doc/devel/uml/fig128437.png delete mode 100644 doc/devel/uml/fig128517.png delete mode 100644 doc/devel/uml/fig128645.png delete mode 100644 doc/devel/uml/fig128773.png delete mode 100644 doc/devel/uml/fig128901.png delete mode 100644 doc/devel/uml/fig129029.png delete mode 100644 doc/devel/uml/fig129157.png delete mode 100644 doc/devel/uml/fig129285.png delete mode 100644 doc/devel/uml/fig129413.png delete mode 100644 doc/devel/uml/fig129541.png delete mode 100644 doc/devel/uml/fig129669.png delete mode 100644 doc/devel/uml/index-withframe.html delete mode 100644 doc/devel/uml/index.html delete mode 100644 doc/devel/uml/index_60.html delete mode 100644 doc/devel/uml/index_65.html delete mode 100644 doc/devel/uml/index_66.html delete mode 100644 doc/devel/uml/index_67.html delete mode 100644 doc/devel/uml/index_68.html delete mode 100644 doc/devel/uml/index_69.html delete mode 100644 doc/devel/uml/index_70.html delete mode 100644 doc/devel/uml/index_71.html delete mode 100644 doc/devel/uml/index_72.html delete mode 100644 doc/devel/uml/index_73.html delete mode 100644 doc/devel/uml/index_76.html delete mode 100644 doc/devel/uml/index_77.html delete mode 100644 doc/devel/uml/index_78.html delete mode 100644 doc/devel/uml/index_79.html delete mode 100644 doc/devel/uml/index_80.html delete mode 100644 doc/devel/uml/index_81.html delete mode 100644 doc/devel/uml/index_82.html delete mode 100644 doc/devel/uml/index_83.html delete mode 100644 doc/devel/uml/index_84.html delete mode 100644 doc/devel/uml/index_86.html delete mode 100644 doc/devel/uml/index_87.html delete mode 100644 doc/devel/uml/navig.html delete mode 100644 doc/devel/uml/objectdiagrams.html delete mode 100644 doc/devel/uml/packages.html delete mode 100644 doc/devel/uml/public_operations.html delete mode 100644 doc/devel/uml/sequencediagrams.html delete mode 100644 doc/devel/uml/style.css delete mode 100644 uml/DIR_INFO delete mode 100644 uml/cinelerra3/10.session delete mode 100644 uml/cinelerra3/128005 delete mode 100644 uml/cinelerra3/128005.diagram delete mode 100644 uml/cinelerra3/128133 delete mode 100644 uml/cinelerra3/128133.diagram delete mode 100644 uml/cinelerra3/128138 delete mode 100644 uml/cinelerra3/128181.diagram delete mode 100644 uml/cinelerra3/128261 delete mode 100644 uml/cinelerra3/128261.diagram delete mode 100644 uml/cinelerra3/128389 delete mode 100644 uml/cinelerra3/128389.diagram delete mode 100644 uml/cinelerra3/128437.diagram delete mode 100644 uml/cinelerra3/128517 delete mode 100644 uml/cinelerra3/128517.diagram delete mode 100644 uml/cinelerra3/128645 delete mode 100644 uml/cinelerra3/128645.diagram delete mode 100644 uml/cinelerra3/128773 delete mode 100644 uml/cinelerra3/128773.diagram delete mode 100644 uml/cinelerra3/128901 delete mode 100644 uml/cinelerra3/128901.diagram delete mode 100644 uml/cinelerra3/129029 delete mode 100644 uml/cinelerra3/129029.diagram delete mode 100644 uml/cinelerra3/129157 delete mode 100644 uml/cinelerra3/129157.diagram delete mode 100644 uml/cinelerra3/129285 delete mode 100644 uml/cinelerra3/129285.diagram delete mode 100644 uml/cinelerra3/129413.diagram delete mode 100644 uml/cinelerra3/129541.diagram delete mode 100644 uml/cinelerra3/129669.diagram delete mode 100644 uml/cinelerra3/134021.bodies delete mode 100644 uml/cinelerra3/5.session delete mode 100644 uml/cinelerra3/DIR_INFO delete mode 100644 uml/cinelerra3/cinelerra3.prj delete mode 100644 uml/cinelerra3/cpp_includes delete mode 100644 uml/cinelerra3/generation_settings delete mode 100644 uml/cinelerra3/idl_includes delete mode 100644 uml/cinelerra3/java_imports delete mode 100644 uml/cinelerra3/stereotypes delete mode 100644 uml/cinelerra3/tools delete mode 100644 wiki/DIR_INFO delete mode 100644 wiki/backend.html delete mode 100644 wiki/empty.html delete mode 100644 wiki/index.html delete mode 100644 wiki/renderengine.html delete mode 120000 wiki/uml diff --git a/___SCONS___ b/___SCONS___ new file mode 100644 index 000000000..45c539eab --- /dev/null +++ b/___SCONS___ @@ -0,0 +1,2 @@ +This branch contains *only* the SCONS based build system, but *no* real source code +(it will be updated by partial merges from time to time for documentation purposes) diff --git a/doc/devel/uml/DIR_INFO b/doc/devel/uml/DIR_INFO deleted file mode 100644 index 94b06b274..000000000 --- a/doc/devel/uml/DIR_INFO +++ /dev/null @@ -1 +0,0 @@ -Bouml generated HTML doc diff --git a/doc/devel/uml/activities.html b/doc/devel/uml/activities.html deleted file mode 100644 index 67f7d6748..000000000 --- a/doc/devel/uml/activities.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Activities Index - - - - - -
Activities Index
-

- - - - - - -
building the Engine
configure Render
- - diff --git a/doc/devel/uml/activitydiagrams.html b/doc/devel/uml/activitydiagrams.html deleted file mode 100644 index 7b7c4a25f..000000000 --- a/doc/devel/uml/activitydiagrams.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Activity Diagram Index - - - - - -
Activity Diagram Index
-

- - - - - - -
build flow
the render configuration flow
- - diff --git a/doc/devel/uml/class128005.html b/doc/devel/uml/class128005.html deleted file mode 100644 index 3ab068c87..000000000 --- a/doc/devel/uml/class128005.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class Session - - - - - -
Class Session
-

- - - - -

Declaration :

- -
Relation edls (<directional aggregation>)

Declaration :

-
Relation fixture (<unidirectional association>)

Declaration :

- - diff --git a/doc/devel/uml/class128133.html b/doc/devel/uml/class128133.html deleted file mode 100644 index 5077b9780..000000000 --- a/doc/devel/uml/class128133.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class EDL - - - - - -
Class EDL
-

- - - - -

Declaration :

Directly inherited by : Fixture

-
- -
Relation tracks (<directional aggregation by value>)

Declaration :

-
Relation clips (<directional aggregation>)

Declaration :

- - diff --git a/doc/devel/uml/class128138.html b/doc/devel/uml/class128138.html deleted file mode 100644 index cf9db4338..000000000 --- a/doc/devel/uml/class128138.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - -Class Thread - - - - - -
Class Thread
-

- - - - -

Declaration :

We can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads

- diff --git a/doc/devel/uml/class128181.html b/doc/devel/uml/class128181.html deleted file mode 100644 index 392b566e7..000000000 --- a/doc/devel/uml/class128181.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -Class File - - - - - -
Class File
-

- - - - -

Declaration :

- -
Relation descriptor (descriptor)

Declaration :

type of this frame

-
Operation getFrame

Declaration :

-
Relation handle (<directional aggregation>)

Declaration :

weak pointer

-
Relation mappings (<directional aggregation>)

Declaration :

weak pointers

-
Relation <aggregation>

Declaration :

-
Relation <aggregation>

Declaration :

-

All public operations : getFrame

- - diff --git a/doc/devel/uml/class128225.html b/doc/devel/uml/class128225.html deleted file mode 100644 index e4fc4ec67..000000000 --- a/doc/devel/uml/class128225.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class FrameReference - - - - - -
Class FrameReference
-

- - - - -

Declaration :

- -
Relation frame (<aggregation>)

Declaration :

maybe weak reference

- - diff --git a/doc/devel/uml/class128261.html b/doc/devel/uml/class128261.html deleted file mode 100644 index 57cb19580..000000000 --- a/doc/devel/uml/class128261.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - -Class Fixture - - - - - -
Class Fixture
-

- - - - -

Declaration :

- -
Relation tracks (<directional aggregation by value>)

Declaration :

-
Relation timeline (<directional aggregation by value>)

Declaration :

-
Operation getPlaylistForRender

Declaration :

-
Operation getAutomation

Declaration :

-

All public operations : getAutomation , getPlaylistForRender

- - diff --git a/doc/devel/uml/class128266.html b/doc/devel/uml/class128266.html deleted file mode 100644 index f4fa4ec54..000000000 --- a/doc/devel/uml/class128266.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class Condition - - - - - -
Class Condition
-

- - - - -

Declaration :

I provided a reworked Condition class in my cinelerra2 repository

-
Class Lock
-
- - diff --git a/doc/devel/uml/class128309.html b/doc/devel/uml/class128309.html deleted file mode 100644 index 52ecd0c18..000000000 --- a/doc/devel/uml/class128309.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class FileHandleCache - - - - - -
Class FileHandleCache
-

- - - - -

Declaration :

- -
Relation handles (<directional aggregation by value>)

Declaration :

-
Attribut handles_available
-

Declaration :

initialized to the maximum number of filehandles the backend may use for mapped files. When no handles are available, the handle which is last in the handles list is closed and (re-)used.
Else this number is decremented for each new filehandle used and incremented for any one explicitly freed.

- - diff --git a/doc/devel/uml/class128389.html b/doc/devel/uml/class128389.html deleted file mode 100644 index 371a6f292..000000000 --- a/doc/devel/uml/class128389.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - -Class Track - - - - - -
Class Track
-

- - - - -

Declaration :

- diff --git a/doc/devel/uml/class128394.html b/doc/devel/uml/class128394.html deleted file mode 100644 index a82ace25d..000000000 --- a/doc/devel/uml/class128394.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class Mutex - - - - - -
Class Mutex
-

- - - - -

Declaration :

I provided a reworked Mutex class in my cinelerra2 repository

-
Class Lock
-
- - diff --git a/doc/devel/uml/class128437.html b/doc/devel/uml/class128437.html deleted file mode 100644 index 4e790db31..000000000 --- a/doc/devel/uml/class128437.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class FileMapCache - - - - - -
Class FileMapCache
-

- - - - -

Declaration :

- -
Relation <association>

Declaration :

-
Relation checked_in (<directional aggregation by value>)

Declaration :

checked_in objects are subject of cache aging and must be not in use

-
Relation checked_out (<directional aggregation by value>)

Declaration :

this list keeps all mappings which are in use, and thus prevents them from Cache aging

- - diff --git a/doc/devel/uml/class128517.html b/doc/devel/uml/class128517.html deleted file mode 100644 index 9400bd2a2..000000000 --- a/doc/devel/uml/class128517.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class MObject - - - - - -
Class MObject
-

- - - - -

Declaration :

Directly inherited by : AbstractMO

-
- -
Relation placement (<association>)

Declaration :

-

All public operations : apply

- - diff --git a/doc/devel/uml/class128522.html b/doc/devel/uml/class128522.html deleted file mode 100644 index 9fe2c6c72..000000000 --- a/doc/devel/uml/class128522.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - -Class Lock - - - - - -
Class Lock
-

- - - - -

Declaration :

nested in Condition

- - diff --git a/doc/devel/uml/class128565.html b/doc/devel/uml/class128565.html deleted file mode 100644 index 746bc10cb..000000000 --- a/doc/devel/uml/class128565.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class FileMap - - - - - -
Class FileMap
-

- - - - -

Declaration :

Diagram : File Mapping

- -
Relation frames (<aggregation>)

Declaration :

- - diff --git a/doc/devel/uml/class128645.html b/doc/devel/uml/class128645.html deleted file mode 100644 index 975e79097..000000000 --- a/doc/devel/uml/class128645.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -Class Placement - - - - - -
Class Placement
-

- - - - -

Declaration :

Directly inherited by : Allocation DirectPlacement ExplicitPlacement RelativePlacement

-
- -
Relation subject (<association>)

Declaration :

-
Operation resolve

Declaration :

create an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.

-

All public operations : resolve

- - diff --git a/doc/devel/uml/class128650.html b/doc/devel/uml/class128650.html deleted file mode 100644 index 3062a34e3..000000000 --- a/doc/devel/uml/class128650.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - -Class Lock - - - - - -
Class Lock
-

- - - - -

Declaration :

nested in Mutex

- - diff --git a/doc/devel/uml/class128693.html b/doc/devel/uml/class128693.html deleted file mode 100644 index cd7640754..000000000 --- a/doc/devel/uml/class128693.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - -Class FileHandle - - - - - -
Class FileHandle
-

- - - - -

Declaration :

- diff --git a/doc/devel/uml/class128773.html b/doc/devel/uml/class128773.html deleted file mode 100644 index 06b704954..000000000 --- a/doc/devel/uml/class128773.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -Class AbstractMO - - - - - -
Class AbstractMO
-

- - - - -

Declaration :

Directly inherited by : Clip Effect Meta

-
- -
Attribut length
-

Declaration :

-

All public operations : apply

- - diff --git a/doc/devel/uml/class128778.html b/doc/devel/uml/class128778.html deleted file mode 100644 index f341dae13..000000000 --- a/doc/devel/uml/class128778.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class FileReference - - - - - -
Class FileReference
-

- - - - -

Declaration :

- -
Relation <aggregation>

Declaration :

- - diff --git a/doc/devel/uml/class128821.html b/doc/devel/uml/class128821.html deleted file mode 100644 index 874f76462..000000000 --- a/doc/devel/uml/class128821.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -Class Frame - - - - - -
Class Frame
-

- - - - -

Declaration :

Frames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool.

- -
Relation <directional aggregation>

Declaration :

-
Relation <directional aggregation>

Declaration :

-
Relation <aggregation>

Declaration :

-
Relation <directional aggregation>

Declaration :

-
Relation <directional aggregation>

Declaration :

-
Relation descriptor (<directional aggregation>)

Declaration :

-
Relation <association>

Declaration :

-
Relation <aggregation>

Declaration :

-
Relation mapping (<aggregation>)

Declaration :

- - diff --git a/doc/devel/uml/class128901.html b/doc/devel/uml/class128901.html deleted file mode 100644 index 55bbf84fc..000000000 --- a/doc/devel/uml/class128901.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class Clip - - - - - -
Class Clip
-

- - - - -

Declaration :

- -
Attribut start
-

Declaration :

startpos in source

-

All public operations : apply

- - diff --git a/doc/devel/uml/class128906.html b/doc/devel/uml/class128906.html deleted file mode 100644 index 2877c4770..000000000 --- a/doc/devel/uml/class128906.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - -Class SmartPointer - - - - - -
Class SmartPointer
-

- - - - -

Declaration :

Directly inherited by : FileReference FrameReference

- - diff --git a/doc/devel/uml/class128949.html b/doc/devel/uml/class128949.html deleted file mode 100644 index 29a9702fc..000000000 --- a/doc/devel/uml/class128949.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class FrameDescriptor - - - - - -
Class FrameDescriptor
-

- - - - -

Declaration :

A FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes

- -
Relation <aggregation>

Declaration :

- - diff --git a/doc/devel/uml/class129029.html b/doc/devel/uml/class129029.html deleted file mode 100644 index 811d9192d..000000000 --- a/doc/devel/uml/class129029.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class Effect - - - - - -
Class Effect
-

- - - - -

Declaration :

- -
Attribut plugID
-

Declaration :

Identifier of the Plugin to be used

-

All public operations : apply

- - diff --git a/doc/devel/uml/class129077.html b/doc/devel/uml/class129077.html deleted file mode 100644 index 79e2a37fc..000000000 --- a/doc/devel/uml/class129077.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - -Class Prefetch - - - - - -
Class Prefetch
-

- - - - -

Declaration :

- diff --git a/doc/devel/uml/class129157.html b/doc/devel/uml/class129157.html deleted file mode 100644 index 38006b2eb..000000000 --- a/doc/devel/uml/class129157.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class Meta - - - - - -
Class Meta
-

- - - - -

Declaration :

Directly inherited by : Auto Label

-
-
-

All public operations : apply

- - diff --git a/doc/devel/uml/class129205.html b/doc/devel/uml/class129205.html deleted file mode 100644 index 634700da9..000000000 --- a/doc/devel/uml/class129205.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - -Class Scheduler - - - - - -
Class Scheduler
-

- - - - -

Declaration :

- diff --git a/doc/devel/uml/class129285.html b/doc/devel/uml/class129285.html deleted file mode 100644 index a4f213f9c..000000000 --- a/doc/devel/uml/class129285.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class DirectPlacement - - - - - -
Class DirectPlacement
-

- - - - -

Declaration :

-
-

All public operations : resolve

- - diff --git a/doc/devel/uml/class129333.html b/doc/devel/uml/class129333.html deleted file mode 100644 index 9b2e41db6..000000000 --- a/doc/devel/uml/class129333.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class FileProvider - - - - - -
Class FileProvider
-

- - - - -

Declaration :

This is the Factory for Files, whenever something wants to use some file (or temporary storage), This Factory will hand out some smart/shared pointer to a File object which will be used to retrieve Frames.

- -
Relation files (<aggregation>)

Declaration :

- - diff --git a/doc/devel/uml/class129413.html b/doc/devel/uml/class129413.html deleted file mode 100644 index 83b5a411f..000000000 --- a/doc/devel/uml/class129413.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -Class RelativePlacement - - - - - -
Class RelativePlacement
-

- - - - -

Declaration :

- -
Relation anchor (<unidirectional association>)

Declaration :

-
Attribut relType
-

Declaration :

-
Attribut offset
-

Declaration :

Offset the actual position by this (time) value relative to the anchor point

Class RelType
-
-

All public operations : resolve

- - diff --git a/doc/devel/uml/class129541.html b/doc/devel/uml/class129541.html deleted file mode 100644 index ac45fdb3b..000000000 --- a/doc/devel/uml/class129541.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -Class Allocation - - - - - -
Class Allocation
-

- - - - -

Declaration :

Directly inherited by : Constraint Wish

-

a directive to place a MObject in a specific way

- -
Attribut repr
-

Declaration :

human readable representation of the condition characterizing this allocaton, e.g. "t >= 10"

-

All public operations : resolve

- - diff --git a/doc/devel/uml/class129669.html b/doc/devel/uml/class129669.html deleted file mode 100644 index 430cf3861..000000000 --- a/doc/devel/uml/class129669.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class Label - - - - - -
Class Label
-

- - - - -

Declaration :

-
-

All public operations : apply

- - diff --git a/doc/devel/uml/class129797.html b/doc/devel/uml/class129797.html deleted file mode 100644 index d0cefbcfe..000000000 --- a/doc/devel/uml/class129797.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -Class ExplicitPlacement - - - - - -
Class ExplicitPlacement
-

- - - - -

Declaration :

Directly inherited by : DirectPlacement

-
- -
Attribut time
-

Declaration :

-
Attribut track
-

Declaration :

-
Relation <unidirectional association>

Declaration :

-

All public operations : resolve

- - diff --git a/doc/devel/uml/class129925.html b/doc/devel/uml/class129925.html deleted file mode 100644 index dc7d2a83c..000000000 --- a/doc/devel/uml/class129925.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class Auto - - - - - -
Class Auto
-

- - - - -

Declaration :

- -
Operation getValue

Declaration :

-

All public operations : apply , getValue , getValue

- - diff --git a/doc/devel/uml/class130053.html b/doc/devel/uml/class130053.html deleted file mode 100644 index 5dff16ee8..000000000 --- a/doc/devel/uml/class130053.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class Wish - - - - - -
Class Wish
-

- - - - -

Declaration :

-
-

All public operations : resolve

- - diff --git a/doc/devel/uml/class130181.html b/doc/devel/uml/class130181.html deleted file mode 100644 index f5e9d5dce..000000000 --- a/doc/devel/uml/class130181.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class Constraint - - - - - -
Class Constraint
-

- - - - -

Declaration :

-
-

All public operations : resolve

- - diff --git a/doc/devel/uml/class130309.html b/doc/devel/uml/class130309.html deleted file mode 100644 index f9c5d9cc3..000000000 --- a/doc/devel/uml/class130309.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - -Class ControllerFacade - - - - - -
Class ControllerFacade
-

- - - - -

Declaration :

- diff --git a/doc/devel/uml/class130437.html b/doc/devel/uml/class130437.html deleted file mode 100644 index 9d856b1c4..000000000 --- a/doc/devel/uml/class130437.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class PathManager - - - - - -
Class PathManager
-

- - - - -

Declaration :

- -
Operation buildProcessor

Declaration :

-

All public operations : buildProcessor

- - diff --git a/doc/devel/uml/class130565.html b/doc/devel/uml/class130565.html deleted file mode 100644 index c86f64a35..000000000 --- a/doc/devel/uml/class130565.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class BuilderFacade - - - - - -
Class BuilderFacade
-

- - - - -

Declaration :

- -
Operation buildEngine

Declaration :

-

All public operations : buildEngine

- - diff --git a/doc/devel/uml/class130693.html b/doc/devel/uml/class130693.html deleted file mode 100644 index 8490b9d1c..000000000 --- a/doc/devel/uml/class130693.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class ToolFactory - - - - - -
Class ToolFactory
-

- - - - -

Declaration :

- -
Operation configure

Declaration :

-

All public operations : configure

- - diff --git a/doc/devel/uml/class130821.html b/doc/devel/uml/class130821.html deleted file mode 100644 index ef9aa5db3..000000000 --- a/doc/devel/uml/class130821.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class ConManager - - - - - -
Class ConManager
-

- - - - -

Declaration :

- -
Operation getConnection

Declaration :

-

All public operations : getConnection

- - diff --git a/doc/devel/uml/class130949.html b/doc/devel/uml/class130949.html deleted file mode 100644 index 817452178..000000000 --- a/doc/devel/uml/class130949.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class RenderState - - - - - -
Class RenderState
-

- - - - -

Declaration :

- -
Operation getStateProxy

Declaration :

-

All public operations : getStateProxy

- - diff --git a/doc/devel/uml/class131077.html b/doc/devel/uml/class131077.html deleted file mode 100644 index bc9da61ed..000000000 --- a/doc/devel/uml/class131077.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class Assembler - - - - - -
Class Assembler
-

- - - - -

Declaration :

- -
Operation build

Declaration :

-

All public operations : build

- - diff --git a/doc/devel/uml/class131333.html b/doc/devel/uml/class131333.html deleted file mode 100644 index 9bc358f9b..000000000 --- a/doc/devel/uml/class131333.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class RenderEngine - - - - - -
Class RenderEngine
-

- - - - -

Declaration :

- -
Operation play

Declaration :

-
Relation renderSegments (<directional aggregation by value>)

Declaration :

-

All public operations : play

- - diff --git a/doc/devel/uml/class131461.html b/doc/devel/uml/class131461.html deleted file mode 100644 index 513987a76..000000000 --- a/doc/devel/uml/class131461.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - -Class Processor - - - - - -
Class Processor
-

- - - - -

Declaration :

Directly inherited by : RenderEngine

-
- -
Relation output (<unidirectional association>)

Declaration :

-
Attribut start
-

Declaration :

begin of the timerange covered by this processor

-
Attribut end
-

Declaration :

end of the timerange (excl)

- - diff --git a/doc/devel/uml/class131589.html b/doc/devel/uml/class131589.html deleted file mode 100644 index adc44aa34..000000000 --- a/doc/devel/uml/class131589.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class ExitNode - - - - - -
Class ExitNode
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class131717.html b/doc/devel/uml/class131717.html deleted file mode 100644 index d7ee8a997..000000000 --- a/doc/devel/uml/class131717.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class ProcNode - - - - - -
Class ProcNode
-

- - - - -

Declaration :

Directly inherited by : ExitNode Hub Link Source Trafo

-
- -
Relation datasrc (<unidirectional association>)

Declaration :

The predecessor in a processing pipeline, i.e. a source to get data to be processed

-
Relation <directional aggregation by value>

Declaration :

- - diff --git a/doc/devel/uml/class131845.html b/doc/devel/uml/class131845.html deleted file mode 100644 index 633730e60..000000000 --- a/doc/devel/uml/class131845.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class Trafo - - - - - -
Class Trafo
-

- - - - -

Declaration :

Directly inherited by : Mask PluginAdapter Projector

-
-
- - diff --git a/doc/devel/uml/class131973.html b/doc/devel/uml/class131973.html deleted file mode 100644 index 46e8e0177..000000000 --- a/doc/devel/uml/class131973.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Class Link - - - - - -
Class Link
-

- - - - -

Declaration :

Directly inherited by : OpenGLPipe

-
-
- - diff --git a/doc/devel/uml/class132101.html b/doc/devel/uml/class132101.html deleted file mode 100644 index 1a472b7c5..000000000 --- a/doc/devel/uml/class132101.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class Hub - - - - - -
Class Hub
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class132229.html b/doc/devel/uml/class132229.html deleted file mode 100644 index 7a9da8c44..000000000 --- a/doc/devel/uml/class132229.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class Projector - - - - - -
Class Projector
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class132357.html b/doc/devel/uml/class132357.html deleted file mode 100644 index 3afe9414d..000000000 --- a/doc/devel/uml/class132357.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class Mask - - - - - -
Class Mask
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class132485.html b/doc/devel/uml/class132485.html deleted file mode 100644 index 26afb58f3..000000000 --- a/doc/devel/uml/class132485.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class PluginAdapter - - - - - -
Class PluginAdapter
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class132613.html b/doc/devel/uml/class132613.html deleted file mode 100644 index 8e3a8c0aa..000000000 --- a/doc/devel/uml/class132613.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class OpenGLPipe - - - - - -
Class OpenGLPipe
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class132741.html b/doc/devel/uml/class132741.html deleted file mode 100644 index 7ff05cf4c..000000000 --- a/doc/devel/uml/class132741.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -Class StateProxy - - - - - -
Class StateProxy
-

- - - - -

Declaration :

Directly inherited by : ARender GLRender VRender

-
- -
Relation currFrame (<unidirectional association>)

Declaration :

- - diff --git a/doc/devel/uml/class132869.html b/doc/devel/uml/class132869.html deleted file mode 100644 index 101fec842..000000000 --- a/doc/devel/uml/class132869.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class ARender - - - - - -
Class ARender
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class132997.html b/doc/devel/uml/class132997.html deleted file mode 100644 index d4598994f..000000000 --- a/doc/devel/uml/class132997.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class VRender - - - - - -
Class VRender
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class133125.html b/doc/devel/uml/class133125.html deleted file mode 100644 index d99951fd3..000000000 --- a/doc/devel/uml/class133125.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class GLRender - - - - - -
Class GLRender
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class133253.html b/doc/devel/uml/class133253.html deleted file mode 100644 index 38d63c3b7..000000000 --- a/doc/devel/uml/class133253.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - -Class Frame - - - - - -
Class Frame
-

- - - - -

Declaration :

Directly inherited by : AFrame GLBuf VFrame

- - diff --git a/doc/devel/uml/class133381.html b/doc/devel/uml/class133381.html deleted file mode 100644 index 6295fcfbc..000000000 --- a/doc/devel/uml/class133381.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class AFrame - - - - - -
Class AFrame
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class133509.html b/doc/devel/uml/class133509.html deleted file mode 100644 index c20293bd3..000000000 --- a/doc/devel/uml/class133509.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class VFrame - - - - - -
Class VFrame
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class133637.html b/doc/devel/uml/class133637.html deleted file mode 100644 index 5c26105a0..000000000 --- a/doc/devel/uml/class133637.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class GLBuf - - - - - -
Class GLBuf
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class133765.html b/doc/devel/uml/class133765.html deleted file mode 100644 index 9737e327a..000000000 --- a/doc/devel/uml/class133765.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Class Source - - - - - -
Class Source
-

- - - - -

Declaration :

-
- - diff --git a/doc/devel/uml/class133893.html b/doc/devel/uml/class133893.html deleted file mode 100644 index 5d01aec40..000000000 --- a/doc/devel/uml/class133893.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - -Class RelType - - - - - -
Class RelType
-

- - - - -

Declaration :

nested in RelativePlacement

-
-

Items :

-
- - diff --git a/doc/devel/uml/class134021.html b/doc/devel/uml/class134021.html deleted file mode 100644 index 06869373d..000000000 --- a/doc/devel/uml/class134021.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class Buildable - - - - - -
Class Buildable
-

- - - - -

Declaration :

Directly inherited by : MObject

-
- -
Operation apply

Declaration :

-

All public operations : apply

- - diff --git a/doc/devel/uml/class134149.html b/doc/devel/uml/class134149.html deleted file mode 100644 index f35403102..000000000 --- a/doc/devel/uml/class134149.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class Tool - - - - - -
Class Tool
-

- - - - -

Declaration :

Directly inherited by : NodeCreatorTool SegmentationTool

-
- -
Operation treat

Declaration :

-

All public operations : treat

- - diff --git a/doc/devel/uml/class134277.html b/doc/devel/uml/class134277.html deleted file mode 100644 index 5e5428d3b..000000000 --- a/doc/devel/uml/class134277.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - -Class SegmentationTool - - - - - -
Class SegmentationTool
-

- - - - -

Declaration :

- -
Operation treat

Declaration :

-
Operation treat

Declaration :

-
Operation treat

Declaration :

-
Attribut segments
-

Declaration :

holds the segemntation to be constructed

-

All public operations : treat , treat , treat , treat

- - diff --git a/doc/devel/uml/class134405.html b/doc/devel/uml/class134405.html deleted file mode 100644 index f53a95dd7..000000000 --- a/doc/devel/uml/class134405.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -Class NodeCreatorTool - - - - - -
Class NodeCreatorTool
-

- - - - -

Declaration :

- -
Operation treat

Declaration :

-
Operation treat

Declaration :

-
Operation treat

Declaration :

-
Operation treat

Declaration :

-
Attribut proc
-

Declaration :

holds the Processor (Render Engine Element) to be built by the current build step

-

All public operations : treat , treat , treat , treat , treat

- - diff --git a/doc/devel/uml/class134533.html b/doc/devel/uml/class134533.html deleted file mode 100644 index bb4da0bb8..000000000 --- a/doc/devel/uml/class134533.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Class Parameter - - - - - -
Class Parameter
-

- - - - -

Declaration :

- -
Operation getValue

Declaration :

-
Relation <association>

Declaration :

-

All public operations : getValue

- - diff --git a/doc/devel/uml/class134661.html b/doc/devel/uml/class134661.html deleted file mode 100644 index 63e26346e..000000000 --- a/doc/devel/uml/class134661.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - -Class ParamProvider - - - - - -
Class ParamProvider
-

- - - - -

Declaration :

Directly inherited by : Auto

-
- -
Relation param (<association>)

Declaration :

-
Relation <unidirectional association>

Declaration :

-
Operation getValue

Declaration :

-

All public operations : getValue

- - diff --git a/doc/devel/uml/class134789.html b/doc/devel/uml/class134789.html deleted file mode 100644 index 496a5058b..000000000 --- a/doc/devel/uml/class134789.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - -Class Interpolator - - - - - -
Class Interpolator
-

- - - - -

Declaration :

- diff --git a/doc/devel/uml/class134917.html b/doc/devel/uml/class134917.html deleted file mode 100644 index 3392911cc..000000000 --- a/doc/devel/uml/class134917.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - -Class Time - - - - - -
Class Time
-

- - - - -

Declaration :

denotes a temporal position (time point), based on timeline start.

investigate posix.4 realtime timers, wrap these here

- diff --git a/doc/devel/uml/classdiagrams.html b/doc/devel/uml/classdiagrams.html deleted file mode 100644 index 431aa442c..000000000 --- a/doc/devel/uml/classdiagrams.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - -Class Diagram Index - - - - - -
Class Diagram Index
-

- - - - - - - - - - - -
Automation Entities
Builder Entities
Controller Entities
File MappingShows whats used to access Frames
In Memory Database
Render Entities
Session structure
- - diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html deleted file mode 100644 index e4692eb80..000000000 --- a/doc/devel/uml/classes.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - -Classes Index - - - - - -
Classes Index
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AbstractMO
AFrame
Allocationa directive to place a MObject in a specific way
ARender
Assembler
Auto
Buildableinterface
BuilderFacadeboundary
Clip
ConditionI provided a reworked Condition class in my cinelerra2 repository
ConManager
Constraint
ControllerFacadeboundary
DirectPlacement
EDL
Effect
ExitNode
ExplicitPlacementinterface
File
FileHandle
FileHandleCache
FileMap
FileMapCache
FileProviderThis is the Factory for Files, whenever something wants to use some file (or temporary storage), This Factory will hand out some smart/shared pointer to a File object which will be used to retrieve Frames.
FileReference
Fixture
FrameFrames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool.
Frameinterface
FrameDescriptorinterfaceA FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes
FrameReference
GLBuf
GLRender
Hub
Interpolator
Label
Link
Lock
Lock
Mask
Meta
MObjectinterface
MutexI provided a reworked Mutex class in my cinelerra2 repository
NodeCreatorTool
OpenGLPipe
Parameter
ParamProviderinterface
PathManager
Placementinterface
PluginAdapter
Prefetch
Processor
ProcNodeinterface
Projector
RelativePlacement
RelTypeenum
RenderEngine
RenderState
Scheduler
SegmentationTool
Session
SmartPointerauxiliary
Source
StateProxyinterface
ThreadWe can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads
Timedenotes a temporal position (time point), based on timeline start.

investigate posix.4 realtime timers, wrap these here
Toolinterface
ToolFactory
Track
Trafo
VFrame
VRender
Wish
- - diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html deleted file mode 100644 index 5c4f434ab..000000000 --- a/doc/devel/uml/classes_list.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - -Classes - - - - - -
Classes
-

- - - - - - - -
AbstractMO
-AFrame
-Allocation
-ARender
-Assembler
-Auto
-Buildable
-BuilderFacade
-Clip
-Condition
-ConManager
-Constraint
-ControllerFacade
-DirectPlacement
-EDL
-Effect
-ExitNode
-ExplicitPlacement
-File
-FileHandle
-FileHandleCache
-FileMap
-FileMapCache
-FileProvider
-FileReference
-Fixture
-Frame
-Frame
-FrameDescriptor
-FrameReference
-GLBuf
-GLRender
-Hub
-Interpolator
-Label
-Link
-Lock
-Lock
-Mask
-Meta
-MObject
-Mutex
-NodeCreatorTool
-OpenGLPipe
-Parameter
-ParamProvider
-PathManager
-Placement
-PluginAdapter
-Prefetch
-Processor
-ProcNode
-Projector
-RelativePlacement
-RelType
-RenderEngine
-RenderState
-Scheduler
-SegmentationTool
-Session
-SmartPointer
-Source
-StateProxy
-Thread
-Time
-Tool
-ToolFactory
-Track
-Trafo
-VFrame
-VRender
-Wish
-
- - diff --git a/doc/devel/uml/collaborationdiagrams.html b/doc/devel/uml/collaborationdiagrams.html deleted file mode 100644 index 37350c3f2..000000000 --- a/doc/devel/uml/collaborationdiagrams.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Collaboration Diagram Index - - - - - -
Collaboration Diagram Index
-

- - - - - -
build processThis figure shows the process of building and starting a RenderEngine
- - diff --git a/doc/devel/uml/componentdiagrams.html b/doc/devel/uml/componentdiagrams.html deleted file mode 100644 index 49939b439..000000000 --- a/doc/devel/uml/componentdiagrams.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Component Diagram Index - - - - - -
Component Diagram Index
-

- - - - - -
OverviewThis drawing shows the top level compoents and relations
- - diff --git a/doc/devel/uml/deploymentdiagrams.html b/doc/devel/uml/deploymentdiagrams.html deleted file mode 100644 index 1587aaecd..000000000 --- a/doc/devel/uml/deploymentdiagrams.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Deployment Diagram Index - - - - - -
Deployment Diagram Index
-

- - - - - -
Overview Render Engine
- - diff --git a/doc/devel/uml/fig128005.png b/doc/devel/uml/fig128005.png deleted file mode 100644 index 36a096e65f4e24c5bfaf46e4efc9580d288e6c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49743 zcmd43bySsaw=Vo30u~@5qU6to5+Weops)x*K#)b3BHbVz3kB&ADQP97L%O@WySvt+ zSv2Ry_uc#Ked3QZ#`nkf497rL+6S65^fk>{nU~8|Lf2F zVspsdIg#EkI|hu?Js&QKO%b1wQEVaf=8_w0X$W*?LSEM=RHgY*ujshcm1m2=JoKzeYbH}U z*XdwATfM}*_vb4Zo5Qva(Q7HGdqkmaVX?8BX!LZ2{gyu|i851;;8|Au<;xc=Y}{BO*Ks8lJa9-Zi25OwcNKOhA0Hn|e!DE~nv0Fxng=20rx<_9 zT&=1MrR;L><&H=e7^oLAPPi z(#lFO8Rz;+0unu(9mAvz*3z94EPbASlOKr(E`Bt(g;pf9=GpnVSmQ@FU&$1yaIj#z zdwZdwq12!NG*3ImP8<`)(gv?b??jk+pKo^U|W?Ea4_B1U3J0^k$csO0-#x1MdLWH7J(k zF}@|&`N@H_l$6scs)U`5O%Y)>@Vm<-w`#b=Vy55Jd2^I?Zvo86r`3;yQ9OvkaeMYv zmDc4>3pF7H&-VIIW(>E*u>M7_NOWqdK~KD3Q8pR3d2DQ~fZN$oV`F0mA`{HJskynl zqGD#jANH#(tUo!|`Em&?@a6;1y9l@<{ph=l-3o)OGYv}c7%sEIH40AU91Vub{oSPw zSbvg4FlZ(EHorYOHa=eKB(<99@47L(p}027e6Ti<>Wo3d*mP>$cby;neTP%yHMV7B zcO3u9+#IXJ_N+osO6BdpTlxi9LbQUKnp)YgoCr1q<@kQXt)&X-rD&2H6Hd=i%ayNU z%L;w{3WAt}z&q$~y%epz?!O#)9rbv~-Fy*`NN9-B*pLPuu{V^*^0&!((B!6%2Q3Ez zVR5chZ}IR)2X~X1-+u6&KJR@DDuIW+?~DwSvPnK*^yY_wigIp_E??kSWPVR&wmhqs zqnE3|=>i&2F1�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 diff --git a/doc/devel/uml/fig128133.png b/doc/devel/uml/fig128133.png deleted file mode 100644 index e4a7e4d48cd636a71e86db264c3e938d9531295f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68623 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 diff --git a/doc/devel/uml/fig128181.png b/doc/devel/uml/fig128181.png deleted file mode 100644 index 1cbd8781671c79f6ba6ed22513d77506f031311c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28708 zcmb@u1z1&G+wVK+1{d8ZAYB5|DGN}P2I&?>k?sa11w>jTMd|MDl5UXh?ru1P=Y79# ze|vv>pL4G3oON9fkF3Rgb5z z8OH_Ieh7L9y?{%qIVWt-IB61&--_?|vzcoBWR`Yj-)ZB7~tJsA+>N#ry2a-iU7ZO<37B#1=Yk|+k$lfi~AJn(>QQ8qGCLeNPe`ZJN z;;s6TV}{h&_okKHvskH0J5nZPo_D}p3MiKRyM-wXD(JOS%CjcDgGoD%y8jg=kslUzA0mp4^B7 zUrS3%!^Cej$J3P9MMXX4>OFphj5cedlgK3Jz+Smtgat}*8b!iIm&M}!w`AfC^toQqN5ubKd4AI zyL|feDfQQ{r_3)54O6PBs;Xyngvsk2$ZdXNZoGZ_RVx5wJb%98Mz8Yhj}y{eZCFdS+T%^91m z-Cb&8Vm{mD=ki}S4-XFu3k!+awKcW0La9YB#|^yHlk)bPS`ve955l~_v+UpsOtpMk z^jV^_MVg7;t}iZf+pjBOVFf=iX%}%j{dm5=aC&+g9UaZq?YK94lUFgj$djWR)7<&I z%C}kltewJYy`}S6JWN7cdooGX&3El#LWY7*N}rUb$5&{%g`0<`q|AI=TStdL+1S{) z;yu4gXOY7=vucEwsm6pe+Dyy3lKS=E6SQQMW zl~sT7HW>0MsjSM%zf)83fhsC0jysdm@T8=qLz9aLHl6a2!1fTb$mr;&Z+l2-7ZrrN zc-Ew4WeJoG4d-QPJX+_3nPZhIxiCkWqUF%ANhRQJXS*{EUS2t`^T0hJx54@pWS)TD zI67LEa{n;AI^BUE56aRo@15~m%`V%{R@uqU3!I&tc-)+fKNZZbN!YHTQ&e2LAIrne=Rd(%b`VLdF=ENnLMmQ#e{Rcyqy_UM`a5U1m;*i^c1JX1;a3V1 ze$8K3{EUY8y57OuS!D8CwZ(^%K&aBAe`Y2z@C`Q^f8#qlTifictc#tBxxh?~0{!b! ztGW~7PBLDzZ~N1}M-2z<6o*(VU9Z*E%e?Mx!Tbj^K3=Vi-lhc%B^=Cqx)@U$G56yd|Ln7;}wJFD>>)>iztRzSfT@%_x zA^DmaF{PnhJ$Fb;MUYZWlQ>yxepgAL`pcIusp3+aD>@ba9lvn0rqa_be|Al&Es(cc z$@<}RQ89o;oz^gWetB{6B5mlC_)NWrjw`-}X)g~SD}QH{^-P*p5ztMuHX&kA zZd@@UZJ(TUU2F{k=XKhhCKGint*fi+O6clV(Rj9yJymQPynl%~e5mm*At3>*w`5Vb zn4~1n>+=I`J28(-`|cR_IghhMTYsqlTo_oKsfme+H8octY>o70gS%_D)_1dA(w}e8 zpa2JpkCC=Wb9-?yA~N!5u`M{9PS#cs3}-KnfRGTin7bxDKD%DE8XIwi`S@;Y5CK@s zAozBCrJ_qE;nZg$F>LyTf@!xkk~Ivn04W)n;K#p(BO@b&zhuYD+Cx?;3ewWjFfcG4 zKYk47bw9Tjo9XYj>Prv=#}Wp&4QD8ZefhFTK0A`7db`%2JXh_&%E=iP2v%-!Ny&>{ zbM@)JU#Wy`y}r_j-!}VUfq4lY$zHdDF!=-lW#=?^509gxBN7hX^UJM**q9j1`&e*z zeRC5W9IUFM;(E4wvs<$_TjQiyNqQLaHUL2n|10@=L6~w-CK!dS@dADxo~bIkH4Oug z(Oj*P)>imM0uEVsz-%xvJ8kN~z(7I6?POEaBPOQjF3-fp8+K=E-o1NABjP;J*OzbF z9mDdnuitKCC=JeQIW16cn&fubw-OQ(LZ3Q6KmYfyro&Sy_`$(}t{DvhK}+#=XCz}# zpwV}5PHnN0#^Qv;M621_tYY8hXu8_^<|vJfS+zbnmkMPUy7k@NzT({YcnanjZrjjy zmgMOAi`95|Ynh8R&NIwz6(_5%+p<$+%kkxaXsekhtP~Ocmby6A3Nwcc#1+@qnbsiX z!RTZ(H8n%1giqUoNv`SD)z$4*dq6}kDk+HK4?ddQ6C?Vk;7dPRHL2$Y| zv$ei%W^P{Nd|+&T|JVw^qXBWaGbbm<#KdH(+`|0r+f^`EzI}T*_c%~}6m@@lqD1+Z zOk8|C9w}Gj#DrFgZ?m6rW;+N6R#sN5tgPYBTd8JnrawR;K8ed-Xu12mT`-9}SzD?0 zL$p~C6yEhEya#V&YI@QqyeHyv2v*9%XIYn|=772`I$a}wi>Y!d5$8fbzcz4z`t|Oe z#ksE->>L~{22j9%u+(E)KbaP&MXgOL#nhYq6s5*)mggvh2<>}#q;K|#UFngjBb zEj!JjAkiX=U&(JJSM+8_4O|+CGdtT6ivT>)4zP#E%_O>v*E)} z?tGQXOxA$UnBDk+(D}EQ0@V>TAg|r(OmMl z_vWnOt_(biiY^X1Xlk7H^0yW<2MBdkS44>L$@~|p!+3X7L&L-R`ib#Wc8eQ@A#ypg z&_a}_N_gm$ehY<&kjLi?Xh6W)4+-L8TgL!}_5Yz-Rg{1RRGpjPcI#iTPQ1b29g}n? zjX1!tp%&~x2Uz371?K-OYYq1om+l`9dYD{X|A)$5s*RLNZ#)yh@cW~~yK0B{rpK<% z$baxM6O=roBovIOsS(^e+myF708c|pOFpYvI0Z##wSxg3 zrNG)`88#Z4upSA{Jm&x^1o{7Vv5TKK6yKdYKlmKT#P-otcbZsC%Ed+6aNbsDs$yqb z#@{!WiL*e7Kc}|V{N~b6N9*ECTYa5de^+M}9FEP?I_gjy*6$wl=KKp$O<-p3_UP{y zHpWE-Vg1*|+-+6NoR%wHGX?tU>1piRU{d?YGD)sQFfL*gN=_Mz# z%kth{Tk%JgAxGNFGv!n#R-tq1nw-=pKeuqq)9O8FEuu$^Rt#@{ISYcG%j39G$RTfbR z3-u=o-`v~6pI*?GL0iH?!|O6evsyj z@6VsC{8oKm!jj2|o<`S@+V%9n>76jvJZ+MGLNZP-iFr-YChcfY-8zB{|KB_!5RZHdV4r(q(Lm?1~teUJq9kje)~TV6};b-^SB26e7e!*;J_ z+F=fYM~7bm|Mc#hY;PYOuSM&}6%;VS*mWz##5~R4Z&;OaSl(X0FfMBAiR)fmEN9cJ zrV|jTs@7iJnbC8x5fiHmG8;?{jf7T*z3<{LAlnB-Y#3Xl@ z2OU$@_BM64rY}V?TR4Liv&@kjxug~s7Xz92_{ynKGWi{*6lfGs4&zCY*FUTwcraL_ zAN>N$S>}`5i&tWg**>PJO@3`)iH+5O!*geA&gfgXA{iUX-uCM5y0C~Zlv_-U=SM$) zwP4#gIgtq+_YMus&AK0j%E#l1Iq$blRGC^A8ra)6E_d2wDCn`U-)Pet3)z2PTo~Nl zUm%(;zP`Tf{a*C(?v@4>ce}5FFWt84nilLe%B>7O@v&k;-k;H-5ahFb68>5bx8u_H z^_%+mIoa8sXER|s6^_qeVJ~*XM2WZ`uRCRp_+1^X_PT+x?{*~?4czE3vLzz&>iMI7 zyw>(x9a@-T9QSrkfo)$hr@eJyo!#2_-@jzXYgq56%}soK=%&gYmM`6~*kW~Bf4{JL z|H~1AqCl*mQ{IbhJs25{hzA^qk}1SyG7ApBL0V_se^ zTNNC{+3PZ`ThqKBKgfgNB9_yQxw&@t52?CVj5ePM^onM?J z^Q;YnHJYNBrEac?!Af!) zPM1Es@bC~l0zpi-^7dq$>SDZogq?)fr~fg;O9d{DW%EF86ijFRy6jhq;?DDpcovhj zG2b3k8aBP5Jv=%2I5D)l(yeiOtABW*UeD*RQALiphiHaqgFk{di|SiF*k6GV3eBRb zsrpA&vwxOsobpb26l&jX?UF`BFC79 z@+$xx!v6lmfl!v$1aoMJcw&lw*nt_k_09lkmXw7hTP8%4J{((7;Wi@h@G$>mi^S4& zg_Zc~bXSy>aSb2#r00Rgc&C`y(c_2(*4Nv#sl~+_kqm7?ZS~-}i~gqvUEQpRNU>9s z^%n2=x#{0XySTKibn~O(c^c4?fm2O2+2`WGbBsYGhOn4UVA0)QneTr{@QIYyBkp4W4Ixi3W^{)Y-+( zmU#n#Q- z+>)v)zv*|R2DMB}CB6U3C9B0**SZ9X7d7&ULS>+qOQxd}r{T-h`0$~1eGnutYWs_)f->3xb#j&T3*zCJ)!y|i}-k}>aAsDaIguywUSP@@7=q#^fZsDU$Pl5 zV~2>+RrE^_&r&~qiclw3bQU|T#?r_yf<%M`dMI+0e}f5aWNzateTK zO-g~!{o!=GsN`*0PeN6~mE~{;4H}rc6g&(dD?A2KYPRY~3WucEgY!#Z<-gx~vfM$$ zQ^f1)l#YM_`|FnW{t)xs#!9q8gxnpgrgQ_JccN#DWYPu^t<_Yv1%CAgvd- zS9e@J5B$8y$YdS#IJ{-N!KFeUT-=;wg^@{F!K!W?aKnXCW*;DU|6HW8Y3u0NDyIjN z@*bkDbMhYjYw7Qo4%}(c2(`yEh=|Bx@@(H{h$n~fFC*C;prX(Tn9@?Dp+f0A;k$K342ufcy zRWjuHL#xGQCk$i+!}a@fr#<-R88sPSA!ZDTUlPdBLti{Z>kEDxL`A<+U3~BMPv}qz zvGWa{FXs_DVxz=8=YEjdi9#(2k^aMwpYguGl_Y@u>zA_36Oz=@*ZAHt_gFl|5wQV3 zZzTfaB?g}pB3HghV@ixdPEo$+=mSyB0f$PlE2Htk0f>-EoN{{O+&CD2>A zsHv$Bk-9#8{%m4wT&lz2?aw{#0N6LSl(zPdds?Erv9Y0&#rx!maC9LkUi9$-I9L_`G0Xs2RY0%8i|eQEci z#&Jjc)vJ)49CK&q%4))|uNWdb-{>x$?o6F+PuOjZ0;*o?CMa;TOlc(*B{fLe>eg9t2aa$7)FAUH)<_t48QG^krJ2^oViKH&k z)^#TeI(QFtc^zhpVxypaGHydrVL7?BW7b4x<)b zKC)(EWd*yGfh^Swun*3DiD0IJ7{DctX#tjTDn35`YXHdH&MX-jGm1<)s0FMg1f^YA zyu7?WE0A|Ag4pAjIDjx=$v+iUP~VmS?P@$j4+9rX(hB>|x2pL73}kUAQTtQ2N+ zcd7fuh)@+;&YG4A@vL~VNTgQrL8i8=%W}H12z(&G0`}$_3xL>Tq z*14V(7Z+#e=59}xnajy_?Ju-|J5>+hjm=WK!^Y4`(`PiEw>|4~4dN|aa6$@-oNtIJ zDF1v07&L-I3(PoY*4Ou6F?g6;$P{}(mqJUKg?#os79JKMJeAV4iZSID1!3H(P> z`9=f8BlOj34#>OS`Ea@OPdHtWS)(_?#KZ(HF7BqSd$m(o$Z433sCL zp_K3x9B3Yo9boQ|kdHt-QB#X*TuH7OYyeZTCypnGiH(hogX1fWj=nxMDJeiR=I`E- z;Nz?4>w8`t-hcR)^!R{q+}>Ozi+NOUXrO>~3F`H88aKBqpl|5bxvD=@1X4qWLZYso zUWLV!44gYIFw!RzKwcL&%wa~gTZ9KQg-(BDZG5SHTbIo ztWkTN=MeNv9P(~oSzB{jY7Y$tz_8ABba{HPMn_px7A$z%NRC5vj8ng%I`*p zBz*b60YqSQl$5y4$JoN36A}`Zf(;F;Mt%>#Ha*{;fJF_!t^A7@gAQbpssM?_#KeH- zfWCz|v7C%K8XpiKtE>zg=bK{ULCz$)M39(Cq45rv6o(utE2Qk~>_kOHiDq$$)=5;X z0-+R}_d|FP*n>i91N%El3ewVTfiOCH{1-qwf~~BqoNSHvcXi3J5d%p=n2|96%oH03 zhm(VY@aOcbuX7)QDy#TKBtuY}F%3;}aWS`_%VMvJneDa#a|ZNBwJL!0#?qvfHPdo5 z#5wxu*^JX15H{|>tx|oikx5C59|X_J$^st%NGxpKu5NAw%3y)y>(vDQ86J-8Ki$Yk z{?cX)CR&W?uV24{n7Fw1e}#!fh(96#u^==w6x@d1uCB=juZFTR2YdTtZv>=3Gaw59 zt;T9JJ32l-p6>$!c4XtDp0H+BD3d}2g^Sx6Qwgt25drX7K#zBKcY(;}5Mv7HU`cVY zt(_fUv3OKMtqq*n-+IBV;^YKHO$G?7fUV=vh`m`!LL{AzPfO9bUx*SEJv}{v&*?9h zLdeOM~59ne;9pvHL{y(}CjW;4YxyC0<&OI80QO+#$W)8F~QN{ZM#@NsEx?LszI zcb|?G8f-$aYllWYVIiu0Z3e%R&_WPZaM=B0+<`fTnB_C1d)t(9pMnPhpFQyI7AF{uBRxmbG$W%Cg1^)rfLhLB9da(1w((nT{)QJiZ-5vHWP15j-IR~SAa4n zYb34ET39^g*AN-~E|Qay5H|{5~CH)UG7&@Co{P7dOdV>D9REuyV z^3m+``F5xj`v$T{1#cpMw941i2{_E0co&A(lhmF({RhlgJp8&}H9t)?bIu`#ri z_4R+26q5%6)dn!==kyWF%Wr7Ay1M~xPX>!klMSQ{Cj|vu*c0rf&CSiFCA#qEuXByx z1=Re97eG@I4)obb26_D8HZd_V@Ndi`Hcn1FZ0u4nYfDP7Fff=oImd5Z5lGR%71AV>q@G-x*S)Sv4l7rmUtb4;ESi4v%^|J6#SI+dzJ~2V7!#y-yLj z7(o4Z`;b`2*}0V9kDjGP`f&t2t4)bmzt=2!$C9v(W{@b$3rcA#kV#`AY{bjV6e zQwiBW*W;_7OLnL2pPbZYi3TdVt(P2qM7katw3ODMh;V+Yxoc2i$x{i(3xh5YGgZ!zmhW904H$JD^YI;V`AJ?O#^4w@^j6JHO z+-hzT5IY*rbHPWCtOrw>0loFyZ+chblng-d{>jO7>HF}!yt1xEA8M70L(=3wc)40U zPQ5>>v{@p3maGmg_|F+%edjW2Mz(YYV$^2w#MG46Q7=Ctk1o*Ve>^qkWkc0JL{^e5 zpo8+Q`2Ld;UB1;&S8ur5?a0#+222~KEG?~WWb_24SE&StFSX;S^~FV()v9KA0hP{oYbdu-)sSc!Y-r;C*TULL%@h^)W66@T$!iiG_~#J{+$-D)k*N6o$Y`DMUu z?YIBRtb9a}FyHi``^m<+rwxa1DvHk-YHg0?Nr7!~ilk_?6>3+P{{LWH`mfW^yE0dU zk<320QX!1gSb;(%Em2r;&A-NBi_30x%Ezah$kvv`r08#|Ud`C%>eBk(>-~i{G|4E8 z3c704Q$@dyrmL33ueP_g#`o|C{~Ns}Vbe4S%U?QgQudZn+oQm^zz_sWQq(E`;p4}( z7CIfws`$ignxLp%`)$v&-^nNpKnWSCKrwj9q~nmN>zAbsG?_6Dlc>9TYlku=r*5-fE1c#fpU~$j9=L>J=_ZRHorM4>{0r{ffr*=Ny&teEh8W6kjAdw(w_9!9q z-xz9(4x|=wrcEe$Wa9GQ>21DV$Aw*77iakA7YinmdL;07D@$G+Dx6Gz z+iyUE4LbDIl>=zuiAgFud+)E*^sau%g}2^V&u`u1m5V-Z5~HPfxXz#|vEp349UmD% zU;Fq+Q(t#Fq$A90uIi{JPX{lIa)MJ(a0I~dRlN=(OVa^-B}SRk&zqP<4;_(=aB?4u zH{9B-y1O1MIu!jizC2b;O-+}P&G8%-;4BCPYOj8OpO~VT{zml0rR(aNflj6M%~pYM zOw8@;y*32ir#GR{<_y1%(KC75AMx>{Zftj!VP$2btG(gz{IXr|h6}eUyN*cuZh!E! z_BUEbnUJ)8IvMz;J#_uJ|NHlil6M*YetDowH@C2G_$L}9F~1A`^22qdixU8s-QkRq z61#3RyrdB;8%SRM;QQc3mA?^bi)g(0S0n${wlT7dcF0V5x4m?^~e=^!=RNsJt%>g612G51puj`GAtoCM0K*qK)A$$9$W{*Kr>!Q8& z_t~EKR96@OBcq(Iwwv>%eglta0>b4Eu8`;SnAnt6PJ5jt?+P}vV<1QXU}tCGSULjy zJYA7y76hT*__M0kmF|Y=ioKB}Q5!O{L18EAmvUWyi;3yjorvo$2XeV}5^?seIGh+Z)3^ zm1S#lcYF4TmR#(5Z`!vdzzrW33$Tt9s7BhC27cPXqawJc`uc=KMT4(w%@z96fcho# z^?E6%H$%~2mHe*F7>gwKwQg!o&hSsE&gsGuyO)-YgGCn$EuBxFetbPPF+JT3f?m*i zTQIlf#{k^Ey*hr&oyj|=9qkutBO?}5Uv+CxQ9bXf{5hesuQM?Z3IMeNMmV6`=28#9Dne}V#;p@UNR+{q27!45k3 zTmrMRGoXBsd9%ERi|d${)?gFl>3Or(b8)=bwguF$xR~M-0EdLfZfeozQDsTya`eS#tPG?1P`Z+Wrw?_+ky9NixYbjYXvhPeSwA}43 z4rTvdegyOL4Pjxb_I*tK^QZr8H}CPl|3)rbq~^%{Ra?o~ zAmTXRh&ShTm&~l{k3Wbfe*Fr*SIhG}^68={*?_&i3$Pa6WUJ@Qdfj;d?-AG*O-@W$ z{4JCe1R;M47;5S*rudwkoT87KLXo{0_HiN@-n~)Jwso+t`HJ0QUEm3z#L?-_P-9~S z73H?;DYmVBX@iH(2~H}X`s>#YTYSSUzh-=pk{=AN4=Ru6&)i(BdD(>_k-mMdt4j%M zYi~b{+^4A+ZRSMU934mZ@bCbIMvZ~j&FJ9ZU{h1m*jRaGrKaFit;-R$xM!_N2kt-A zhlxuHDHK|ELiN6c3HV+pn<1ImUR%{ts8XgR*Vb0=%(&SOr(1!E?|NdZDDR;-{+O1w zxU}^AtbqiN>QYi!83RToXuHrFq*kxvjku!M_S=*C9MBQ?NU`Zle%H z8B-WUoyZgQPmpu-^KZu+ZljZu^tH4E0Wkx$Gq{~kuv<>fm(b4f$0i9LG`@LnD+VIB zo4@*+D=ET0cIgs7fcy|It$ZJ&GiHjL?oq+dxj)Z_o9YoDc?1hciT`pM)ew2vT;)~+ zA+uATSb_q`%FTNSr1S|ck}GZXFO~q)k_?27aXlsfv| zA3`>e_ow6IW3Y$Xs3!DBfO#X#_Z?PqpsaJYA`EB(&O<~^y*oeuF#I`iaskugpEM0M zwGh%L&uGKx85s$bU0hs%2N>X`#6-R4&!4-vR8?aH1)5F((^U++j((-Jq*3<&f>s>T zfMpQ?t)0oTlEOl>@qE2!&py3kpsV6Tt-oo!cbJWi`LM zy#fCM6Md5*N-hncp2E^n5t~KdLpAUmoRF0C95_%hwyVKzgf12Mao?DlhLZ942Lcb? z#YG7lYqVU|`>MSc)z#I+BqZi}L&yJ6m}kg_&YP}Ztd7&nzoQHNzEA-4e)(i~CO**f z?#3y`6tLPK$;ti2Y%t)^D`L9>7G7)Nb{(s_$6kzrW&;l$2;}JT{f&T~89Ckc^7y^H zygYEpj_f%64~J;gm>+Nu7G~2z7jS}%7s%dD2-tYRjEG7U#NyP@iHfSKRJPE=__#P& z`19kA&nAFJW~u#%i|f2$4u9SrN|9mP47{l~OEh-^&inIVlBbA_3h&jnD7N+MQeDK^ zt^5{uvfBL#jR3R;k+O62$lgH%31MM)Fm~-yCLW&QsVO&LJZCAnxVV_9v{?d%L~y>7 zI_$h88yQ_b(v{iP!1GyN2t-VE2Dp4Re%PTK~MCwS+ETtT=ugYJ2}3-Bo&q zFWX#*v;vT9;8Gk0cd@H$Gtp_*kM~>~wi?v00Jg!2`p$Z~4F$ zE>G?IE&hGzJLdoZyB^E1QcaAo(Fp+x!LP?L`!X<#wRsIYS^5dB7wt9NB`HUQhyUEN zC1Wf_AdOGoz4qgSmKyi&JsVtd=X@#5%~}+^OoRGm>{x4&#V`r-i4pu^^z^v==b0-6vM__OycGL3xx+6s;QnTZ6FO<91>oe+S% zRrVVZ)^Y%10>98ocPttnHGtfJ9$lX8d4UBD9GA2#EG*pqiNP}xZ_?iVBz8QcXmzyj1P1mP!JK3l2(G8 zd|#u^fEI?;-gsalmXea{PY`UeKv^M_@b=w5AY0<$z|m;jOu zkP^m#2&RxIl$MYxq7KA|dyo9#lvM+WIlaIEJXbFY1K1lZ2LSuunwn~9YXb}BSWAlu zSp8khlluLxCjX&qA=iX1s8sBfHpr_dg@>q^nm&es0_1~O(1w~qT~=*o9k3CA1qqZD zKz6dK2`#m=)VlEgyeS5C7{mXa*fq%RL*-8c7L3`m$_k`twbRN~g%>gn{lJCl>y{~E z*yugyd6hSIZFV~Ddo4yMp78BkAwbXoUJ8Sj4dAP7^g-%k?y@^NJHx}k*!X|1hz*Tw zO=%7kP;APqP^Z4gP#sVdav_mO>3G^;&poTZi``OcHRm~+t-e=#^wpY=dsfa2&LSn_ z=UM|aF92#mb4jh&o#zT+eX=mc&Us{86tilpv5mdGJ*XSOKiu6#x{HCc zdVQ**K$ES!v~+tkXB_B+l`p`|0Rv+J5F2oL+vVl55CAc!+J2)s)MBpw2Fw;PBS9w9 zitzv%)A_*?J3Bk0{Et>5Z_|mFu^c$$ynp^BifoN@GBV2Qj1JQWu7eWo-m`8^ofqAa zf}xA(pvOx^kcr?)NDF1g`@Mz*%MqoSa|?y~|4{zXSVK%c{k;zYr1K#5@M_B>w*fD=+u)&h^SAHn4; z&^Pzy=CajU`S~k^@`CGO9E`XGy%@T;%Ar8vIe1!#0||exhkb=A>w%gkha;xGlja z0U{t6PFY#mhMUu=!&o~Ykpg4V?tvr7!pQg+FDj*LK}*JT0uYRX{@r2l_3Kw%V+jce z=CJ+u2|fKAV509&7B3jCUME^ODwfRsl$3b_1pJdMkav^3Q`Fh0KadlGq;Yv9m;?4c z$u|D}{$I&>+J}a?Sy<#;Sj4~v>zelb7^IV1MN2~1zm<{-%NeNbm&031!-8bUe zVUluYm;R7}p?z@h2^$;G$+dKJ=D;X}$pT;A+;jykU;rk9^%G-7trVB30Ad-KGebi| z00x6DrRK+;*9RToR+)eqE9zd9AD-bB^ z*|sC)vte_nY8M+()t-u`6UC+#R&%)6*!I@eVB|A?{aOOjBudP4xiwdhS)=pf1^I^d zvBef z?&<&@bd2I<<%{$;3WrkQ+t!;D!Dy$^OJag~{LzsCeNDVTNTPwM1L4{y&uZ;B-Ed%y zGum%_lDxA6!Ak~-v8-fW8MlgdPgg()W!WI| zPe%TK?zYA(P-E8@U=PJpESm>^-JMgl;8LZdzd_{^0JVf@D&x4@Ju;~#B(~I`9&i{; zNz$&c4F68rgHvH<^b-F5eem{9{CjQ-OH0rnqnISp0IY)yY^hIF)*0u@a<=-#tp=A1 z7a1s@X5aD8u{}-&C!em@)6Ov2?}=j#Ch@Y_omRKAD{1vV z-8GKdTR@zW{DZ#&1NSsi5d%wyIl4Svzy|&7-Mx9Kb+gV*ksF)GBI7m=f3jk$xh&v);_CUfzAg_ZBrfOXunfKy zsUmbZijqTWZqazs^KG^F1_YO&Oxdu;pHkvL+G1vPdn`_~LOAd>H5LDsSwf~=nKq*H z12A(W8(kc7p6v*i0YD}rbKIBM5fQ;%Y0t{q-Eh;(&R;R#?AHwJw01%NhTF`{&Qs-? z*VpD)#JOujR&yLX!x=}%8+Yfc@idVUA$Pbc1iIU8Hx%NY516S8R#u1rXScAJD=(oS z!!J&)t^M>8WbTvU49+jXG^;Cmc1~8^kF$kQh3&s{+rIgomKFvauut*ON z5wq*?u`)0iuJz#oaBscRWwFv}P?wF3XRtEQrArnfSmABCs@NP9++FnN0f!(kU)wrT(~wsmg2^_GgbT(J7wB}KK3PmR4E{o6diSTZ z>UdFl;!k+ENjp3?x=zUB(u?LHK*M&HmQ5E&cfpWCf@YnU*U)gr-Awh<_&|MN`TMtV z&#LVU7p;)zwQ*!Y^rL|n+tJBhiGebqoBg34TY3D7N!RxCjnrL{jE^nmDi0cgJGaKM zEeSLmEHvXx)3>$Z$%d@!sJ1XLSduXP{@J1maf!%==?4Z+*=`KsczG4zP^{w7>}Dl2 zbG`ac7WZP8GOuxZnoU%6XxJ|1)oZ)UV{KN}mp&^=0!7*@B2-lIG-3(Yo9bzi!@|Jh z>$Ep3$yQD(?pc_Z*E%-`DkT$>j&@!vOCG0P;g_-gOuymq5cBO#1fo`BEW9vBM6%qx zHkGWGZ{OmdF`l7&4_8>N0k86Gt&3G>#QT4=g8#{e*qmF5n@0=N*L!qdFACW+#Zfpq zT4p8qgw<7wN1GG?4d(LP*>cX)cZBA%?l#yYc?}Qa0qhf=X)a7VSg{bH|(>Ih0vL_qE7hvuH7sJ-X zaOlgj1{svq91VIHu zJlkrn57s$he_^%!V<;2DoQw1ol7Me(AC+4GsNWc|P7Rc6AwRKy6(D z%u+uD?cxGtYdmkNkx?EuxHBJr)1Prk=J&W1-<@#-&iaWgRga)`FqR7oISGk#T7`xl zhVy@{>b0^HhW4wwHovX!3^?(5zE@B;9f0g&zA(U-5K^vwXY5df{Z+)^|lDQRVIFYOyX0guP& z_DEr&It*rVVP_A3^!a%nXfydZyjm6!5dc31;+^O1MJy7USW$%)pY#6J;9&gg0#C&m zTlGFwv6e=k89lv308mz@tj->%7SwlzcYeU7Jpb)=mp?7vo-U6@q#}W(=9%WNxQqr0 z&Kh9qk9J8CyLtV{wAr_5x^XD2&ha3}wOkK(P-B>Om=mF(EwY7886FXIL z!L}_LFEY8%-8MC$6Le&AI9TkDWuGzvtwL}9%&DlnotolTO%kCszSm9mrY~m3@&aVP zZpS82YL7o7=Ot=r{DLd@Py*}~5@&!g<#9Vt+Fi`4A9b?D?*>9kvR8cywH@egvazxG zJwrpPQL%%4qn2`0Cw;!-xMQV7HDtT8b$a4aH&gi^-oDT!U{60i_2lD=IGdGP6N9)Q z;2H2C{G3&lUi(Sbk5jMpDNpi*tkllXuh9W{0JC)mJnmA3T>A{Dtm znkz}fWpQUm9*%^HeGa;s?e!?37XN#{Iv1d{WT2B2$gjW;gocK;(1SW7f|UaJAvhCg z6Hf*m+MA;}Wve5}vV+Y<=x0|0s5e+4T@O6Tknd0Z9PB-1;Gj~i=6Ei3K;zFU&|U!(57%>`|LE78-pR*t^Rj%{JlQ&X z+owC$NalH>uHbsv6vMs~$i!da9Z1afJt3yttS`X{Y|1LE7hI!NZ;q11DERxv-y{LD zV&0J7jR^YPu!nbNIua9g($ni>zmrD&AU^1K@{(_75^xM?H7%22#p z27zf>){Rl|t3d_FaC37);8&Xdvx9@{HSqu((g#o6&*z4R@1)^XRVbi!-P+NTIdatf zpp73slCPIzvt$f7Bq`a&?%mDYP)f@3)mcMVFZ;L754X2YVF?K@;jP8no1=E=3i7%Y z9CoAGfnW?uiu-JjMBD|OfHW<3xqb(}p+VeKuKD_6>uoQ2FXzm#YIb)vufFTKcZ{i4 zK29T(+nrAnXjwqrXbl=!>flTgc6!RXH9cF$7)D)ZeYAS>Na~i)Y4_ag?&<+7Pn&2k zPX{e7H{IVA|BH zb*@WIm7{kJ4rF8N5eFBhkWgu6X&IArTL8pNQ2YS9n&SQJYV3J+yc%!G%v=K+-NE-) zSiNNc4b+yS*(fkk*W-}nwdKwOcofJ`tnLnFuRJ$|vY*j)80g-2PU_%CS1yv-P^JVd zkT3xN=KpS@I1%JI`4<>8Pg48QXkL|8oYlA-c^VlV_+oqxTA!{$)X~|>*AoVfUbVp7 zIJ_pbBfhGg2IO-z0XQb##b`)CUI< zKyx4d;8sDyTXXX|_X`D}LH5Q^fp4am17TZVf9C#U6}p|>ha!+RfuPsh13%jpI|aFp9HB4fb4G?c`|dF6Ss9#27k*X(R4>-26+nAE-rl zpvDc#e5Y6e%-YAR;1vxh(pl z(;OA}T8*WvGn%ulald4s)$L*)+1uIzEZ&*+lK*sD&}DN(v8sw99`xoGw27uxTzg})$aQv3I_`K#h_UIBvAYanC5&Md_cZv#zA+V4!mlDb~}*B>)`~C3^X$NaqcaXO26}e)-M3p zC%ca4$*2a{@E4pc$pj+tX6Q<1^2*=msBS7G2}B|^vyBaVC;@@c zPcL)F;hi50!9PiQi|HynK-=eaVKP}%rw4vX2qMg?EnRO}Ne;M0NYJL4Fw3L=rl>5b61isXkssZ2f)rQwli^^7|Pl}ghMF?gw(4G zgs7860N4PPl1;O49(-p-HOuElqRdCu4`9mj@}bQ!>IxWu1qKHLB6K+4^!YJ<5cv8W zAb|mQ;?8}72i7~Fa{@38nhhe8LfUy~T4FC}V z!7%vx7T{_3^+o=_%KOf!DAsPxYCw_-h@dDE8UvyNk~57YjItrSy@eW`~oBaLFPhPNlDM7wso!@?*A6~UgQQm z-Is9r2Ls}EX)9Q9%!{?W0a(}ay7V|q%0&*N2x`b_o0-f+p*?o}IL4Jg(9bzk706GP1J@eD2d$)`Zv=_nm z0`#Q6xbsgYdiq?@l>)BSJQLFR2-E@ukL8L!KszDp06GR`F@@_HSvL%iuO%~-sU)2} zPYJSf!CmX*t8&jVusSf?-FF8MtcFE%=S+N6kMs+p-w`N@vPm_gv(wYggk7h!d+v*a zLXpb75TgN|WzH2HsHXvn2K{(^yw7Yq+FIjCt*Dq7QM(RFD`18If&kROcOx29Yq)Dh zMhGB-z0$l-SoW#1ou~oO9!w>GEfIiCcwxhm>}eq5{SZW}ypS#h;>NBN6$`LZG%>sx znjOaVWM~3}>NC|40v`eaW#aW9)(9TGJN!coJh2#$6WkiD+YFy1>y{|j$!YC8Ll?;-GV$w^6Jso&T7q8fOgs%B?p zO&?4t3JtTlJo$>(Wk;ipz`p~cU}t;#(;y;vLP`;KH!OAaf0qYH8Y!@(`whh%<=q@C zS0HcK1)B$vy?tzA5<0x-^q+yU`Nx`DPA@N0^bZVx9|bnxOdo=;2)s}G`}<8?)OU$@ zHSm-y0>;Xqq6XReH6VLt5Kn3?(@HdMfxKv>IP;sd{wd*XhzAD1;B%OVo6uWD-?v2#Y zW;Dz$-CRGqi|S5)qMn##^Ta+03z}WX^O3lEwH<(HleRd3(E;DhatZO}8g4kVF~ z2@afj>`8F->|>AQw_#sjBSSeor$q7tudVUFqkrpBw$DbgYasjhg_iM%EEzIbJ6gCJg01br;$3iFvW!{DPoe3Iv)G7x3LW}W9C;Ae93u7<{i+i-C{ z7Z;0iJYf3T)6)YwaE_2qS~*En3pMR#``jo*qYN-{?%PF+pH(3dxu2HsGBM}Xhq00CP3}L8jLi>GnirN}J}}zd6SNXB z(&M=t@tm7CgE=c=Im-L^pKNJ5rd0D;W>I6xnituqMrSP|v!cU`j^22(MwsmOOpQb- z7+S~otyQzt&N%SIi_NseYyl-v(}d{-neteI&Mk~W7bgrqWI{xvI)XPfzdOy>3uGbam@$X6b^D>IgOU?rJk{ z^dL*q)|O7LjdGa{!&X;|okiMraU?&$`5fOSZ9{TSj+$ucccMO@GO^1`q}cK*lk$bT zN=kojW>-}mKmyL0Z(5p~TXn}(e}aS%7TZk+2tw-Mk9a&$^tg*jw66DBM#HHrR3wDL zX;X&0c>{TB^q^BS@44g`3bAR>Ij4Zb5xhnm97!+~(oXs8fmmZB+Xpi6;=siRZU-}g zK9~c2=^B9#9vA@Mm1A#SSZ!?386>@DXEdcxJ6rND;Ux%%4nyYgg_7IO<9lI)1prNCVT93ZqDXy1U? zni^TnqUN=B3hYo`*>8;t#w?gC7}k>i}Utn?;Hc-*9#pIrnA88wox` zC8HR#4?+x*27hZG1o1+0#~m;T?lhGQHSu*}rbEFb@Ck%@9V}t&XX&vn-+N)gnC7D% ze_mWbi;Ne}lCH=S-&&+VvO@2OCq=Y<)esw*A`Fu70gjOqk8#7Xd%ur8Q$vE}iO1f; zu^Yr=nerqnOvGb@bW}J2(;08+UD&7YL%EWFBOus91vV@`X^71>SEtCDE5IJ?1)3sc zw&e8K=-;nqLut>?e}|F}Lb{022@`@~f~l;mglq84>U2AgW!1f}eJ$;he%C4e0%y$4 z#~Mpi;R?5&H1M`3%}N)Cy|g&i(~iNWjevDOiy$-4Nh4y2&D``n$STheKGl@bjuHVLPBNUh0EH;2kVMn=ZWYz_pIN66*e-FJbg z^rZu{7$CZEhDX3ith?jV$ zuGD&xKdXMkukMwdkT71*r!N6#49rYWi>E3_Cg}xJ=8Mo{n^zuVa1v*v-0x8yJ8`1W zqL0Up!e9b&Jft0_m7#uz+Cg4k-pI%Zl<)(VU^%eW)`ode(r3S1VDRW%2%`IypOqAs z{P@u$$HhS>pm>iSJxcy;0+dn3j&pYex}saB0kmt05fgxs0K@J4`5%yYG+ruMUm8tXGcoba1+PA z@70o9eMs|~iSbGo{h{HJ^+!+n#c|oza$j!sS0sq-(FL7F=pt3s!d6yRz!AO(vlw`Z z*u2(5el!0DK9Z5D88ngk;Xng)k@OXLokqLCc$(nqIs1MB@%DA$od% zZ4ZEo?kX=YT)l+ya!>H5X=ernwSf;B#xYR%pyUyEoLzyXV9)_+1i3XU^j)67)Ch+| zbntFQsmhZeB@UkBH&nQ-hN{dL)B3j1Xe8-Vxc8aq|R^F8-SY?~rPtk(^l& z>sGezj;sd=4!-WLRs8t%9$d64QSYU^=RQPOnybc$8m%Qjmk1(4*j#cIqi?R`Hx3h~ zLi?7|7qRsY*<`kDQn4m2{)IehVIdO}=wwByT!)zns1rTcJ5H%Hg0w?F=fRTyF-(ts zODJa$Twl`0#?Y;wV%lnU;@npANeWe;G6`^nF`&ADL1Gf`bp_*7SyeUa&Iq}p+7+c! zYi(8e@v9-%jVaL(9~%?AVt;>t9{)p2dt+zD0I;Dim77l}O8uU1fI25MCT5O{D|BJr zdVjai$9pocqM%^x^{L~(<}9yuLXJU$1MflVE${t(clD8oNHK19+->brAb};H zRYOCiA1y5?_%S^_Aw3-?8Ao&-{BPyQ=a!b1x*0ZM)5|K05;lXW z;UcFNHy-mp*V->&c;V;Q634=P`m~_yiX41l{p(6na^I@0(aYgQDUG4m=Qb+m=6=b& zko?q#H#Xt?IA0kRrAI}j>a_Hejn42L-`Ua>$>nYwQEW=cU0-iOqB%tp6ivxOE+YQ1;Wx1Rg?QKC?wbs1sLx#q{eg zJ{auw%LhC0-&0b$H9GEP_NJ$p7ibW+>oJ|D1#AtA>AnvZu%wq}=h{DX+Y$E@7~Kr4 zWf=`qLi81D$P6>3q|Jhnahj!bsN%khSbe}xY zd-nMnLh2a>f288GgaQN8w3~nTvCeHV)#ZRb6j!kkm+bgGUszTBO@u7MR5+_;zgya;_kDN0yCE{-O|*E3-o_? zU#obiR6{MykBx>=c5f}-KnU~L!kin()r-D2lRrvrLo439!ZLr zd*sNo9!`%4g!=~)@O=ZU4H&*uTBIOkYeS2r6L)=0x?VQFdU-PGHy{phg@ zz){+29b>@dLh2ew?(Zu;OqGaKd$?8-ABQBw4u9bcbX(I;`zV^(hnLl9TI ze_&~8w8PBnwl<%;ly;kzc16~c1%s7dlc0o2O~+rMonK(q_q6NrA!tV4N{tp?1Ps{3 z<>#!${gjQvr)+a2N<`SHaEn@1c7jzBx~r@zBrE*6=Mm1VFfv5*`w}j0vCyVEtMmeH z;*S#XYKPzDH`e7WsyKV-^;Q=Jwm0-WEv`oe84juUJSlUl)w5|UMZ^@ru9ZMV*vjiv z8&w-eENbDTz9hrF#rFPO3s#{VU#HDyU=u(*tV0l6op3tb99!{Wo*f=+Xdh)h11!Nu zh#wJ#n)4j7__X@Mt%#cCAw_VF!yG8v^9e$$bnVlw_febhPei8d`yVnm*1o?=Us#^` z;YFx|i;8KmC;62Ix@d z_H8lLbdc&dpyyY|lcTN+BHwH+Lq0Q-G|%ShE$q4-NuI_^NtGmCsNV ztI#YeDJyCzsd*Rwjb+meT*s1B0>dx`3p2$|=MW*iB&A=q|$D z^SgNi&-!p!(#7!lEO82*rN+581*D4su->Xbz^@#o-CXB+b#)MIej+R=hX?)Pi@2VL z#Zp8F;$qSA5GcLuy;TOj`1-m!N;FtV!lRlgUMp`pQE!9DLBts(89E_A7Nfq~K#kfQk z9g(EeB!Sn4H_6&;k#cf~zTa=NQe9a`;Vgm?WSk<33Kg?Ip>hM5(`F;$px~7QxSYaL z7D@GSWrLq9YW({hZ{Z#7=eWsicl|W~y0&oa@5}sOwtG}epc+AF>xs_@_@qCbqQ5I3Ey;u<4CZ zBl=H)x4^!FVSzOG|6_MWJAfZlZrds5CM{Y~AvycE!b9H`*Y$1vdiQRuP_GNYZEOp( zm-m)BaXonw8|Lwu#dctMR%J!5@QsiVZEfSZRlk;mbD1#-u zC5}-4=~JICT>wA7;QByEvcdWmTbZL-4jl*osvEklF?8m^18*H2JhY21NlD`PPbarb ze}FQ|Jnx#deraW zg8~Cp@T<+2H*ZR~t?H_%#5x^byoum;ZXhf7K+4|Spv87tT#U=Cr1s5=7hhkzAkUm1 zF1eYLQ>(7t+B|g5*Ojm_MunD@d)E8O&F^JRea*?4ontWg z;^>F!YSp%=je1&X(JaEpcrT?Ph+?u~-p@)(x(Lm-Rk|}Yx3F0i@F3snE+Ud`WBZ#y zaN?x*x0Nk_t_WG^pOFx*sjM>&m-c!()8?}a#O=cR9Ir1Otz^3%Wnv%xg|8#z`Ass5 zm?tHjFux12Ps)E679DerycO%EP~&81ZdG_3+|zcSU70xUu^Dz4Z9V*v>oWc}Wk__i zsh~48ZCiFmS&3n_dGrTpDL90kUG09w{hAb5DoI`2+c|FF-e`H3-(`s`)v}~42OI~G zpOs?Xmu+Cf9|=8p?7%t1>Zvs18pk3*!y=(USZ&VJ$liByT&FV_quD$!oVUF_>q{pd z`%LvK`LoeS)M@FL+V`ocJM&kGh1UqJK6{=qfsco$0$dE*^;o*395qHvdB_t&r=$4D z$^;>THy#hgHMFSTekGOF9q^efMg&bpJmKZkrldk3wb&j_ov>PW_*)YBJ*G0@alZ&huBcWlL`L+*b z;Lck7{^n5C{k8`L*XHn_S$fMSq~`pEi&*WuHrD}KyY`W zw({t|7*JDzTI6cFktre#j=D;a9y|dg07jV5=|E6}6ubUPN>2w225@~YF0PK0U%z=P zG5e_o=zm=RzF8Tsj^CT&gu#AXR=3Jqik%%A#PqDJrI72a9g3)YuXLx$cu_l9wJ-oB zfM?JJjuU?1UpZbm-TOaHF!*}RJ`pkm&+jr&#xQ8|B5`KS>8-!AC{??OmD2+TWQ80w z{>Nm`adJYaz5!@SF2DL$5GUcsfFZ)Td-P}u{LNAKn~A)ry?uVjQ!rwiKZiNw0Qf#2 zP|eW31D5b)7lG(jS$~r_x0I1M9;`6YOJ@@t73B_2L2z<*lo8pV<-(lV6X}B`?+)H7#JC?hKumB^Y?&enBFUKQgJfQV9eUyp;4qT3sXnP4-s}Urn?cyV@iN5LAb`Jfcg&k0 zi`khfaMpefef>%`>&p`a`}uA@tAa;=wV*T>uy~(laI~?u{;tPe64<7s!X41XIzDm( zv9*9P(%2fCD7DmiK7pX|YuTr7dgfrGWM;oTRdwaF5kaS_-)Z3v38{pTIw(+S;2W3d zvFYhn{S>w{Ra6%_AJCN##Ez-b-H!EeF*I^|slO0C^}hfG#^^!#5vIQ!9mk4!)KCkE zfwS||^reinfw#dc_uzg;pqRSwl}p&_Sgoam*Xp3gJAOkF zHxScPoScY7wD1Ru=hD)pd=EMDYaTbh33z#u3eCZx96tE=vcXlRJzu(#l0Rd`cXsd# z>P`m6)A?9L&TQ_x)zIn@@~ZW9*J!fack^yi{_2XCHpP7Cz5My{&CNn9H@KIm4lhLh z2MDIX8Y29-!p~bQwzR~AzhmO|y>ZJMCR&kvt(BdbXajGz6gmzbYghOa#l;h{{^xHR z4_#?8A~DTqy+wkQcgCJW6j9^7P`5NSRhH@K*{*mEK7*-opu|DxVY2qWU+Fu{LCog8 zze5GZ8VH$6y1Tg!9V&xzh10kHf7A}4ETXob(%ufL?uyGSLqE3)+__u(Vdr6K}r5t`Zi9)w*M=52fFEEcnJWs%#%I$BzlBdXb^U0dSp22Ujbu;-7|Cm&#y1jV}=vswt_F{ zr=hp7a@f|*|IklHLTIC$q>B#IbpxuWn4^t_d08a4!G4tn ztJc~KFVK4bw1Nxf&A&WZ^{sK>T}-(mC7<)pw)~ofJ_~rjQVp2iF8N-KjtGD2_0fr0 za;>G|gcSuhS-$BBgbtcNhsXaSv|^f>sz>=N+eeQtI^t3Q{fS%pyI z^+EBm7z~DohcMl`3lmEO_sxJ;dqK?+*^G`2r;2-@PeJor4h~fu_jH zg}<1&U1a>V!@ucw{`+n*J>8Oj#we0d5rT|6-&5~lg$MnV6`n`Nzc3v_5E;dQA8WlX z2bT+fmoER{*K$-*LA}JEs{rw#fB)S7vR3*(`4h=Bn+gF*qE#$FuSQxPhdG`cS*LDfKvN`Rc-wpEB;q!=+!Y%nMS;MFQ E4SjM0SpWb4 diff --git a/doc/devel/uml/fig128261.png b/doc/devel/uml/fig128261.png deleted file mode 100644 index a92d6ec838f76ebbe475010ec4277b5452e149ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45419 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

Vwt(YG%pF$uO`KMZ!R#8{h?XF8L)Z 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 Pu@329HG)@Ov5)#EQxJr{ diff --git a/doc/devel/uml/fig128901.png b/doc/devel/uml/fig128901.png deleted file mode 100644 index 1ae03c3a26ab6b6c47b340f6ed1aac636b4e54cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52125 zcmeEuWmr}1y6zy94wY`C1Sye{4(V=b5u{7HL8PP`>F(}s5$Wy{>Fy5C%lGYd&f05# zzs~u4xV)S?VKV1<$1|Syu4jCemlZ=pCP0QD2u(u#ts(@$5kL@ZA|fn!=C0nXAA-mr ziMN8vPD#59&hMV7%`qRkR)j+$%HJoE-xcD8(@heK7|`}+2B=hJKhMaQD!w)`QOPTQ z;Tx!dJsT*ci-IVk9Ju)fxgyW2A`n@{+gtUMu;8Qgr?LGP-Br$`@Iqt;t)95JYAo@u zH~Lp8ZHL|%$s$Hl!jSu53L)C#%1k^GKm`9DHOG_v>#3ecowN_%BCmhX>HF|ViHn;1 z@aVJZy^Qtn7_P;f^zeuoiQ=d9@F--{ZjJo#D9-r*f64#Nnsmt9!-Q`?fluFlPWG^@ z5|IUr-m;z6$S`?38{uS#XY_bNi22w}bgFN5cZL7om)@E{4xFt~#N2@ICiV(qWs&c9 z{{763^WAPe^)c{yINj+E0rpFq<}~P$k5r$c=E`%^(b46|B<7TsS{WFy8Vx2PV35f7 zNl8j3B_+M1kIm1|PfgWTQhHX+!@ywC|Lqm(WBtwH^q!s`c)_w6^9gKH@^LuvNURiM z`zzM3vm%&2?^d!y)t(Aa&u5N5_zj^b~&~S2cQbS#x zjh%fkmA^G3m^e8(nfJr@fN$Tv zfkT3S^r*VJ`qAUZv44GC-`o^7Tq343W)ct{Mh9oLmD?%)@<*t)RbN?Ok4;EGhBC#% zQaG#@jZ)nwbLB{_tPbkxILoVYwQ#4fOb85RV|({Ss-A+jsWU_IQ3)R@U_NbfwV{4lZu$8(V5_?#B9he5k*_9~BKP zJ1cu^>ljy{n?Dwj7QsIB`w+o4mTIJ|o)M|3n1FzQg~eXJQttiji5&E^uMf^EUDzMC zZL(O?nTI5-J18Ik5gomzvXYR)k_fuJTnSU2Jv_92W83`>nVc$(&-hYZSn>Tq%I;y4 z?<|t;j}SsNEiE3`^IfB%l(p5>>6saAu;k}^a};8s2F!RVDJg7hY~Uzss;e1Zy!hGM zo4{^CAQ5@cd_e-uH`o`}*VoS_yW>fb`^c-EU2@RWXgOfl$fi4d|M7#1n>#lv>){l0 za=sN2f$_@D{wOKgd$`=W^82@qt!=%QrHe~LO3ESvshjoh?_U)%MHiZ!E6dA|rpxsg z266RieXzui2OWI4ycy!OeT|s1!ut{|t7P@)LEBmwqgYCveolp9o-AYv^YEkTxe1wN z>QXyBq*7Z>RPEe1;oA~lv+ZtAXfaUb?1^ev(-_+ep3|V_h6mcuGKxgvMyufL31Ws8 zFbd&rDi0S`Ma8azsx9C+oKJT>)t<%rQ?jeN#4!=E(W?f-)7DeFtFewFzdg`QL; z;(Uxi>gJZS%c;^(&-j&T+AJ2Z2IF7KvSI9zRAW+niIiZyE$F<{}~R5YJv z5nX;38r5qnmIqA~yX_tFR#6I?ZH$BW_n{)cr<1h|nl)bDg@NE=0iUsA>rxCoJ;j@p zijupCF3?XuH(YTU3Hs|9pK%1xmw%<|rpm*vB|#q7wB>50`0&e@t39^R`$}!34u#8$ z^+em-+whkd$T?{BUhA|#A`^G1#31^ zV=ZZ-_nBVVow>nF8E0)*R$l(JP|fq|x?yXl(g)=Yku7@ne8=yBTshs{8C$oLb=_<$ zpUzjL?EOt+P3Goq3=GX{46hoMS7pKi4A7M?&w`k_)5V5PkZTQ6A&z zvr1T4uHY}4nsf6Da4fHbVA6E?S7v7$bUk^aQarNDtUdqSySp?gD`HObm%Jq!Y%NJc zMVle}E&Ag_t<-UqmX)-Gt8%a%{ zISCDI;q6IC*bouxratvp*P;iTz57h#g*07hiB5s4TI=Bv($>-+VXlRl@83JeY)=*% z!$j1kt9SCskNQ3Cc!Y#L_!uem-0k(Yk2&$^NJ~i2SOktnP&(gUK7xj)jIgm|mRfZe zMiL?-j9$MELO|bj+?!1|8j|I6IlZ|&n!GqrJDA5`TFKr;ALTSrboQTWV71F`CQE*Ok))7Q(W!Thrx9<@#^lyveq-BxKa8qwdcu zE|&QgIAo<>K{-A?KHcW!zBNkvQgs&=l9GC@r(<`$luE7c;u%Yi6cQq%&%9Y_ID1DoT|W#`Wwoix0SH73cG&4O^;bg6T%6ow zFhj+{3_Duk=1(?CLrMSOM{Thf4|jk1w8dh1`y+(Eudk4k=;Z2z80Mj-LMMYmWZ=9= zJuc@b9T1_@gC(P>lA&DLY70wCY)vJW-Nn{F%Bg(&)YK$`f+NT9!qe5cHXq`^52=Xj z6x-WHJi~X6?L5+BP8t~4@b~+nVD+&U)be$wwdCiTd*O*kBXq^Z7BAHXJ#IOVdZISi z*zC#4r7|<&Dk?pRUj1J9_RV%ErFr$}!#jFv=+NoaLCZ}Ib9zinSWL_i_kkOa(I5xZ zwsud$$tg;PxjTKNE;~3hGsC|(eH1T1hKRIP7RJP2p{6j>-qeH$y?F5g&a0yXuA@m> z##O1Xhh?)smtS8_&OZpZGb&Pug~b7`t=bGb{tWQq*a^!S%-~C*%?hgq*b$4rt`?P|D zgbUNwsbAsWZ2*Z&->Pv^5g;g8`6tdfEf=1jQ!r{FVqoY})X0>Vfer60h{>a-q9U)< z3Kcb&$8J+P&Ovv@PurBW=OyX3ruTIsmwoZ{8h%h0R-?ww=5reI<>zsYcgvkdmX<4t ziJEY*=%Q~a1rc!Hi*x^)`^t(MB05)PvaD%!*6e&j0$pD1Q6Y+PE!0qeCJhYkSmFWBRjmVG#84B?@G0 z^290|Gcx;vhOT#MZjOzfz8zfn{wr`0>}P>XIzh~o6m;ltL`?Q@C_kC5c=x6-Jx7Mn z$iN^xLScS>UQt{*-1Ku z-J&RkQULp~?tnT}w-ZZ0_0qov2!$T;yuHFrketMMlOg%&$1z$d7VT_Ivq8 zLD4R;lCqI%eB-t7XKLzK;awjBbyCzdF`oXtV)VP5(DyF)#3Z7G*mJmK+00q)xn^jL zKto-^AlFxTB*HO#>|d)rM0z|7E+>MeI(}zoA!ul& zOHRVAQfoAb9b>k1kduq7b{%t;)KN)jYDl!)u|rfzC?>AXDmb~=jP$hm^bE}?5F?{L z^nUdxd2w;P4GwlbKY#=Yrklf`p)&iOr>4WkZ@=TVw@dBqnj0*2e0$X?kahR#SNk8> zHqetSu|!Yb{#;pLVk(Vn;bWVpA=leUV6)9HR4Ff3=yVAs<_1fjry!h8bFQW&50|K@ zgu=oSh>v<*q#pHMHEqP0?CI3#mYq7g)Y<98c73!<#{p_K=JMIg(SR}mNZ?xifJ-6wL&1-1*A)9Ft zNePy*xhd({Q^s&g6Ep6rOg5yDYhI1B`tCA>uPrMJ6iq*uZHyoRL&GD`*mrl$i;5Y* zrW6@vyD{Y0C9qv&pQA3RgD|l!;H&KbAaU1TjBCHSz{ezVMi8p?J4y7uzgZso@#LJr2w&56*86z2Bp*=pgATqfO= zSm_qMPMQz-T(i1+W{k-kL$CPwqC_*@FVmY>3&EMlm341*J}I3lRXaae;-)u0Yp~~+ zS|Xbm;{dxAyQW;-VJAlJ>PFn%{Y{rIN*7Jddlr17q5aGK#?IEe*z;fQl^%D&3k!QK zH~V9<{un!3uN?NS=a>GZMMSjwp{0sj;^)6Ex4bqQ+RiGK(_S^7F5_opT=@CZt1r3S z{RWwrH>bANOkaO&F!?Ay-xm(y90fynWrsUi^7lb2*^5nUH@Edr;#68wj&M3-%`qZD z%!(w9tkapV&2|9xoSzrcNS6)v&C&3tzm*`WHJ=gUMMp)AF1{>CA7rRvX-O9keyqYj zoZ%QxM$~ofOrHy2qAD`uFeD`OfeJxK@Dg>d9}@6#Dlm+Pn_^V zFt!J~iOf# zD*7WTw-BNUnt7XO^5~Id1~?!}TBTrlCO}lc{)>xKqhYRNsQ#mj;z6|%+mz>|>RSyQ z)!jZ-$wKUiM|se@&a#A;u}0-Nn`#MJ86Qv7!R`=HEtPqn2|nAp)RuV=x|HR_ybXh& z8e~zN367Mt&_`*XwxJgk|zY3u2Nf$<-<9hh48jrbeFt35wQJS4y`@Dt- zH_r0ons6?+riP1{NcM~8C=9}wp@2&~uhCM!%FFnj{**#nW{ zYAU?8wuHLccOQBphqJPXRB$C7X&H@EnDwXxIRo!$pW~{GOv(~k}Pa|(-{-DlW%czLTt_Dvh_t|TStrb_O%j@JmAUGOh2rEl(U zKAP8%+>XiNVq=$mTKOy%W=btx78;10=5jQc+S=f8*J3tBN6#>De(+~>$TmPTm0AT z;F;f@7<;bA0%R%_5*0Q7BgP0io8wb*TiVZU^M z5fBudIo;YR)v9N6yX1z2+1lS{(pnlF4R&c;{x-Jd>B$JtQgic{oAbTw(xKi#M)jIq zgv|zUtkC=3=!lL#R8)=)^+VdVANz3F6N{^MvC{tsU3^`gv>o^L-^gEe+0^>&RiS=2 zqY-mbaWSrTlau!J7YYJae&=JYZ(U!X&3r*{eHG7$j{fIhvY77cbG!ZJ&IGm6``H%v zM}W26MmY{CxUy#O85rWUdJO2cF1}>5H`398hYUVy$JusABmlM1q+oM1Iw7GUJUn}3 z1P0KCP`o2c>Hc~Ij1(j_aj7{KWxMce#+MJQAuVk)Hg=Lh6DKbEws(bCr>0-K&PHz; z1}6v!;?W7tH?cA$mxwePG;g(8d+%}22i4hRYZamP^wfX2`RL{sKWk*L1{X7XO1#BRX?*k*Ea^MF5 zOohm(vfIY19A#t{LW#v%{_v?jL3rD3BI(Zj`t{wfFRu&@b4p5dXJ?8DI0otXbY{ND zg-7af`m(Cn+M+<;;^PDTSUS{v<0LY0rC~oqkWXB?v>}Z?f^USpn3}e%>_L#jzPx8& z+|X0)?(g66AXBp)n6#Gr(i-;9UnQ7ma$OGwZVV2G#~ppp_AN*N$!ZZnvqZ{&6)p`kY9_0V#?I@Z}% zDd6t>v7Q{qM3}c992~p=2xk5K9yoIxwMV|bYcMbfA{^86^SgU{78VxTKqgL3ZZ@B( z0BWqEpe2PHQmVtI2@JloXF?Bw{^<@z)~*k4G{N3b$okDH<` z8lP2a>8I!Y>t+5w@dCUlY<;0*h$H2k8Uiww6(iBthnormpg|4{+?2jsE`Q&S@Z-m8 z&)cJmU%%wCb4Tq=6(y7(X@c7PZDUk6<6<^-U*+^Eud%T;C`i}(aM_{Nz?a?p5*}hV zpXPTttyu1KZ~b$xI~4@rIrPh>c4~sH_nqI5A34Xzbmjb}WzoZ6r-ONa^n3VXNq2jX z7!@j19RQ03x*jhtF{2KuoFsD3&uO$jsD`+ayMu@*-00A!PfOG^{yEuqWIVR=;*mVI z>-{k=)s9b2V1D(+yo4}`i0Cm99d@U|YD9sB((gw9EP(m+>2v7`po`h8^>&Am%BAvY z|Hw>7>`03@y$TAre9q})k}LQc+FkNQhO*!XD&m$wpHfxj`{0Ryaj#}a%u#!G&~$Qi zwi5$c1AQQp(jV1X^PIlH$CO)n_{T(2&bWVFT`)L?>jg)Dm|vhoC?!7RwoX3uBRVOm z%IN6iPXE?txN#|ou2Fr-5h*R2K*Xc^+Ss@dL6KNoj1Uv8%+67JfA1Q;S$Kbsf{HqQ zbQC|1T}D5@uqS@(J)H_5_=r6qP2E2%33!~^z$f|gxEUXN4e$vA+PUDsaf~u53(` zKla7K2q-8-Fk}BEFN|qgHD{NWGOdir!^*?hLD)Tc{;S4wHS zbG}~b9lfEGQ^(JUd8B82a1awy9OEACC@0va(S##$efV!#>V=N`F3*pk^l-0M$MaGx6~S*{swf_H>UEYVuV|dt*oXr zYd<{lKEcNR)Y4)(s;1M-<+eX>WwqqN>{!xSuCMuB$D)?|%jn1&Q;2Ak^mDE0k;!k; z)KRny>?-Ks<8xRXBcW=Uo8O8`NUVjETaj{A=^g!+T{IrZpysdu9na}vq4v+sl0~K{ z8pF#*qxWq(jSh<`yoC)7l>}lkbYBaAhiHcw=ID8IUS~4aLcqGYQoD4nRmThuxw+-! zH)#ENiW`RxAt7l_6~#*}IE>SpnV~@9vV)Jj3e~ItT~4OPe{F~g-5&QbjgNgnz<6Ng z`i+{~Bsrf1Unk4XReU_^^hW~B9*Dki+`^~h&zqVds0JM2>E;M7(|rm>;&y#dSQsg* zF=kXxRc&o)-esc|2MbGN=Q1-Ms;%wG@UVP2I_*Gna~dIQ2_NKDxHDa-_NO$PYGrFI ztE_B7`8D3?2Tm;Ft?-{eLvV2J!bn@?RnDa4!t~6zzjqtWHrSu2XqR~6Gq+`xlzjUA zeF(Tm0y1|rnBk)cKTFkLbMW&UjAR^SW-1{gJ6TwGhfZQ$uP0hP7+D^7*HJWbumZBO z=*hBw&gZOLt;LjmyBj@sr?2+rR_N&$%`Gj{{d@}9jd2!rAgI~pjPB)2Gh<^!6qHPz zwUaBUSo-qva_6h#wQQ+4)uMM1;43`5ZOsM^sK@j3$S5dqu&|&lsuo{2`U+=SG0C&A z6=8_K)Z4)tC4c;QH{S8-vM}wY5xibf8fL0!t2f zH{kD~J^$XfqL#PYg<%M2E+_3@i~z--o<+Y}_K)FqEK$~r@TtXx+A>6fpkJU7XS~eH z&c?>ZURzsxz*#Vme7mZamX?i;jfMt6vTRt$-O^jt-qvOTTdP^c&g-;d*4oHZ#M_Yi zl&tjDncTrHYD8~Jro0BM1b?!>d6MdVn3_Y(WNRPnXCNj?ZEdMNe;#>ycBTtZ(0gVL zjl5J2^3&7POE*3U$QhX<@90&Pl%mSZKe@ZR3k!cqPfwqoMD%{o5rNf&pV z??T<)g3j>0T9xRMj#s!UaF57+u%w(^VW8nHyL$8Gy?L$SYjyuQjx4y?YE%&TQ>HG6NkQmq7yy zn49wQ!;_QeTe->o`NdtexMW%P%t_l4;}@B;p~9nYGZ1Wd09vF+5?a6kApJuZ#<+Rm z$;Qy1yNjj7goMFlZkmtcb+xsQ`uZ#2KT1kU20x6i$SCxwNL{RDpb z*DoNZsqWP^L*!@v556(&qz}^MR0%OGdjn{k%T;H@#T4h` zUEnMGZl-pvslT)E?KmxQDJ7@Fe`N`#xqMmuG!`}sJ9M;1U^uuu-UMI@nZj!3VvdTB zzcW;cgWWL~?E-v2vu3QD=B=HcmR3Vd3`X+4xycqWcFgFOO-POsZy!!SE8(C+j(m2uBRa|LLHz40$9h_X5=?$M7mxS0OS?NQ{{S*0(nhO z%jC-WgMRQrYjnhh5@Q=};osekJstjlGl#Eyyq@>l)8&2ms77WxBDhRCaoM`NAsnY) zyz3zA?eXk=?769_fhos^%`dVNGrp0Lk~F#Y^s$BcTju<&%`!3r3xkhnVQTYaT3{bC9m%^?g1hQ11D`bP|;|+ z@#({d$(8QvIHrT_n&C<6!((KC<$SFZl?zH@zb`BdE-au!)8;_Z%hYOAg@J%3hIP+G zTTk(^K1a!U!qn38?srhCSO|fJvN8!C-qrcsT`XfVt^TaHcg5D&RBcriAV!R-OTPj0 z)9)C`WPnL4+V!~TZSrW2n}$P9UHb5GZ7f^nZ&C?D3xHIrDf7%%Za4wTu-vID)gyAH ztRta}@=(eo8n2@Z>Mn5vF2FccLZY&LhEiK$y;|Huptj*~ncOi` z)9oz!xJO4A_)}A~loBLdRpcBT&*^$eA&)C6_46uVR{@TtSwqiAdll2o-DDo$7>smw zrjGjfZlbXDdu*SQ?F%5%cJQlDhK0(4oCgY$Isq|pc=Fv!z>|X?-;**mEFu!xCTV?G zgHLz(_wXcvaL2_~J>1)Cbh@br_`==pYm6RyU{T1WG-2VyTA!?^0zD4aOMncsMKW`Q z-9qE1f#gjfP>yXm*FT`-i{~k^YTO9QiS==NM^*F&kRi$q(QXJtajh`I?WGmWG}Ep`L#K)-)Pi{b=-uvSx65Vi{a`cJ{$F^BVC@mdKNSFxtnv9I=)YPAeN$RwO7A_4&iONL^ z`xi9W&WdPG#4%!Z@9ZAY4dOVQIcU7{2@JA=^Qx})efYGpxw8wt>+3iWAd+mX%1iC* z+wv01h(Pff6-wZHsUpzER9$@rq|84XsbVl>Ob0oeh2ymjT3TEXC8fD`r6J=)GEMTT z;~n5s#YJx4??IO-rKcidGkpOiajPLd_;ejq#0&=k>n&oEqLBt4KCpvVYLQ8dPSzx6 zf^z_r3$WwEw)vt=`Sgi}62U?bHfc?z*_491jk&q`Y}1t*ba?oU{ydV0O{^i*LGNEa z3JH^6chJ|r_&|Pga>(tQj1=!;u&xXPdzXE^4J0_R;jyZxyE9S{9>-vyMoH<=?-R|s z`8_>7v&X2+`GsaloJRm2AOJZ60s5SFN2bUcQ-1V^%aVXFky5Ng{!1!XwawZt&>k6d zh^{*^#Qt2aFhWHdY+}8~4kj~b@W>*V@WB4-CiP^ZUxjJgp4cOrc%|{YxMetcX|P>?GY_LzW>u%@aigrS6ley*=8* z1QYnr7wh_e;7F%U0M%J86quSllTKu3q|kRv<@^05V>SQHsC^YmY^)(IEw?|0Ck-Pb zFUJLS95)58du@u&Mo2|(*0E%UhLg&8C+m@r(zCuIn*{seakp>if|!)ff)m;DkG-wu zD?Xx}aWXT@7vbdFW-A)bQ0~A1MGtj{n&bvs;mEWVdjHp{vLzgp^ zQM~e6Y}BetSgFa^s_&`V2KjudNFC@*;2G-t1$d8~F2abpTisoge7h0{1{lW8OZfQ4 zl(iYNR6q(*T+Mi2o^Bz%=5uL7Os*8je`vfr<@dN1Qki(o%j;LXhe?`hvNJiLW?x?w zBC7WE3g|H5=zgV7w$5V#c z{5i~(H3HrV;_?&|y)eEO96LQW-2 zYbCwQ!hWK1KI0d}U(dL`D>Ep3SnZGPh_kj@e*}crJp3YfuO~60BLPd^RX7Bv-^@ckCh4wGB~+(B&;*w zedKS(ja2DEI+v{hVs40=1lHBihU3b&!pQvnxqYJRPPwk9|@T?Dv!>{9?V#=ZchxAt7oEScNnfp+?(6m z3CYO-obz4&`jYB#-2+l@l(IgN8(n~*JbLu#ReV2F%jNH#($*Xy{KsF~Ka_*32_`Ko z%V2L7Z27wT6NPbMVM7;7o^tm4Z$(A@{QOi^RnhU7-%k{%fY=))Vus_vq8ndo@8;1; zw^j3*>V*S>3m4+#KJqXX;2x=-_it2GpkJUFC1|R+!~$iWh}#!)JBblBTT)6Yk;l0L zL{1bHM*(Rukm%Sr0UQftO?1@ME(SQ3i1^&TX)J=g;^gFG2t)`O85ysxu5@&CI{nb* zK%x&M7h%ZA$v^k4@wr_N4-6F7*S{enBYXZF7NTch$Y-$TB;rbD9NPaS|$b~>*g>yG~Mdix>^X{2kP`awIJyvo=q$ zEaRzhTSBY*=~H=G0p#VNj7`a(Y?+{hNo;kf%<4^6R%z82%P_vu)+V5WC4gd9$NUSA z*X6Xy`GoIgx028O+H0JIh)&wX)O2)g%nbZJHDy#eQ>xpFqdhP;$IZwnOJ6#cE9ZIK zLvwa^23RUMIUh>tj0J*KTg>Q||4)_@EStyuZGEf?_BihYAsALbW&RUQjNg|R) zHVN|5?+%Tid}BKPq8!@~ofsL?thHP_a^fLjdj9-5C+GCw;Na{m0TdY(1@mirq7Wor zd!uPTXzm{oe@EhXeJdc~HK~R@j`m;)H3;84UMtdRcG;h=2Q>jPTh4QuE`NIk0t(}K z3gCV0ZEd5ZtBpr8B%-K4)oVfT8XbzK3$+;I1`JC<`5*o6+TY&?i__lT4wlYrvM7DD zp|SCSiWV2|jmhz6M{e%yC?V}^Z)24wF1W5#ZH2@tsj9|?D#w%nBMcPQGdg?W>x28nf+LVP#Y%OW9rouXl66JYH8gUvvQSC+c)+LR;E3y6%gN2% z+1he;btUDr1{o51HnxejHZmTb`KhTmV1FK1y?>8MN-B4D|H3=A`I96LA>qr1qF+#X z)FX?6Adr`&ivCi8v;so}C?vw|?XMta2m0KyL$9AWMC$a0N=gaSD zYIEzAl;rnTy+*M$;Snkm!Q_J@^#rU}7W!dP?yNC5OJgUKNQ$U9rhMQSX6a%-@^um;YJcR7VC-rij&ik%Vtr;K~?sq0iIYkmuFQ2wx{YUO=i2&@< zZf-)?7k|QK9ob(U9iGm+UF_>an+vYgsY|fXzw(-YB>}kxe7Bzk|GOV#9G0FicABot zJADOmx$u92%|;Lt?iWoMLkj7{k%0vgiwQ*gaO)?a?5SOyq#t{I|1R5+-{1d%qZSRM zKlHn8euRQoMmN-3)LAbRRMRp#-gNp80iBeCqxLa8QE-4btQSz;foYBRkY{lKrnQuG z|M5BcB=Ps}@a9WFknETfarm z21&pkgA$Eu$%#i>uxjc=H>*@>5kFv z)|U0r2PZ{EanT=^P@O|DECl?EvUk$ZucHqjEto?c$>i>4-h$u;1DiN;cXxMS?xE3Lbc9L_6B54hQQ4{4&xmptIuP z<8yMig8WZU)EmV}-Fh1oD3&Qzgjc(!pBM@Z?1f3II%R}_whiMILE#U?+Vyo&NI*Hd z6(j-Pz4MM5<3jI7fPndaDkRzCn~~dHRSP2Us;W59@aX7lS7#aybH=FFw6w4M#lt7S zoETHn)Es)x`OHUOQW6HDq&Ae05X!vUxg~ezdZGzlS&E*@eK9vzOWL2jW4$|#qmDdj z!r1XB!Go`JnUer*iO;7286-8SoSJR`ksH_lJA3onx<8*E`uX#P$5lmo=BoY=R5&kP z4~d)<5}r$42#-4!Fsw-&C_E_%1yUBq(9$sb-A|J{JDR@0MT3M?Z z?q$isnP2bRDngg4d=1i9V&G{c1vEN9qKNIwc(JAmfZ&TDzE!l#oLDT@%=PJa@9k~H z>gv2N%3P}KNum`_GQX$A-L<=N>U&vP+GN?A^EnZy%y3}-_BLE3s0Hv&+84j7tC9Hb z?5H7By!VP~Q=FfEZvb8RXKw>K1lzu3MCR^}le*NgW{H8Ksc&xnLW*$~c|(5KxMC

(m%(1Xu82m}FQ0pI$@=WE>(9FT)oAyPIw+aeZF)wS0h|I^v z9Jx8CVZCZ=cRs`ECd9|*zbn@>&+bD=!byoFfN|31Y8dBxoS1U~Xc<>jkEAQ)AETl=fW9t_S7M@?}9n#=pL049s19+R{S3XFri*A;ruFyT}i?p zExrL2Ozeao=UKcJVH11;KLX|to;{07OC#&q+1=hYB_&P0zq=XRvU~RInVj5EqvL@h zlZdFO4JXm#FM5`iBm@L>(wd5jzgJhke<%kq;O_R;M@DPh*>S2w+p6iv&(~MP#pT*@ z$$hHT(~~;tjq~v;|NUj=Sk=+d(U-?)A6Vkg&(Fu5%l`&d8p}Y&Mdp&n!!bi3BqWrQ zl2VBiDtv&QigeW$%f^pQkSob2Sq`=Xkp`tQsH&lJ-LWVF?h~E$a<^5ph z3k8l=!Cqp3vUr^9HT2hN<{P0P*t7f`7zhargasGGm58}7(CeLDTy&b8UeVIhg1{zJ zqTToy^dc}vf{Pmm24G@iMRUjW_4Q%MxVRc}a;PaODY>}7oP+E4fG4kBy}}^j!L(!s zS;DHSXwl5-s;aEqTo8^}sQUy50c6Q7lNcMTs;nFx7l!}=pbN>rd-wB0Ipo#75}%Mj zcPtO4ffDoJm3M$ic9ZWXZOjzh<|j>@H3rv>CDtvrN{fXqGBupOxu=*ahdePU^EmSQ)Dby+GLnXJkBhT ze7in`5U>^G<>dj9B2L#sy}^z)Ksg5ZH%Yv%4sBjAE8StOwi~i0CO{xqSnG=eV>jzV zsaD3uo12^O-o3j#-5LYf+ZmvAfSUni4+#kYT6Ae%UL8=|0is{-^j}WxH2d)3_y?iY ze4}Gnk3l4e{+YP~>jB7&!Gs+9yEB!eV-+*zK!%yCwVIlm;^yWCVO#L6lDs@bAQs9x zIMh7#w$kPq%1RTmB6eyVJO+|Gz z8wUq2RH9W63wd~WzzYIL!IW*;@a*&yKvq)&gYO0`Fm3JaFwkREJP4wca7dV3TqJ>t zii)7L>^0rj%jqOO4}4QuS|(>P2btMqG^?XS2zuA-Qaz0f_ZT&=urLwyTEL1bD=Hu$ z*@aWq8xADg-rkA?;fRQd;bLJ`Rad)TZ{>pgxlLzB$7G3iVoZz*7=5@tHPO`6#K6E% zM;>dg0tE@Um!z4w`FwIF83G$PQsL>>D0^L{gti7LAEdRh0qbstcCqBd+IDLLv$*kpU<+f4fo`?YZhbrzJy9 zvF;b;RO-Y55;jw1(0ahM1-LHU-P{BWUNnFz26Ym3%AnEu6!;jyu2$r$Mn3klULehB}P>u2qzivjW=$hvhuzw6I=a5d$A8 z^&<$L0(zsOVt=}+0K6kms^IeaM+$)ZKzo%G6#;`L0ZlY95iI`L*chnW*&a=yi%~Fn zM~H{_y}Mh<-B;XW*7+iCu|&?+a)xv_2srOsPwwTQUK_?<~@)ziIu`-2Z-fW6&NELs#FxAT1iU zSBh#wXw9GiCHJa?z5GRnz5G~WemEYnmCz5M^El5;H|f7`!*M5TWNHl#0MMUh)dC6# z=8=jtFvx06no}kqPAwO*{mTM8xTP2$JYvtjV+wm_%`r zvAz4hyGSc5Jm3L&*bS}u8tyKU#i1gK27)}8Ujb^OO!4IW{B;*De;5HF`})v_grff(y#Mq)z)}ChAg|M5uto@FkFY;G7-D%Vas}7M z)JiF3sds()slyi}(%_e0oZ}J@Oqn?UH?ANxGYA4E`uZF&ZGalW!?stMtZ>b+3i0ag z@GEO$`c%OKkIF*ezl;kO%f%)H(0X0(ZqJc*8EEraU%!3?d6V(*=E8dAZjAe)2un)R zQPq+)s0$0T`|C5tsx7sMYBT8M&b_hU9tEBsNXe*zQ3UM;PGDfhJj7q%sH0>>gn;M? zy*D&8HJ-jdv@m@SvAq?jGSR4eqyVB~Cr+=9apkTZ91i%-C)94hhV8IDegXIR+s{;D zA>Pook>6ax(}pt>sqhnjlYcs}@xX(PCl2V^5ZUX>OJEfM6=l4TQi7V=(AD`3&EIx_ zL*8jI0OR&+y$c^u?r!-sTHIoT*U~K?#Z@FvPgjAGEUT=PkeZuNKm?|&_yEvAtB`?O zOi!=3H=9~fA!%x=lfsv51Tqqx`cKcmAdJ@jIjQIEUtfy# z5Q1p0Lyc7!oEJ!Xh2U2PYb;Xi>23QBIAmMeXAK)y^+YXk+Zdd*eZI@edX6ZD6Erg( zP5m($T#2CR>Qx0x7|Tw z+SUfATikt9NTOT-hA%gp+PJ?*0J1uWVi_!V$QlwlI@a!-Gl+v^k+(N`cel|#7^RBd zJ9N5$No%+kvA1`$q#LInhgc$gZY~NdE2V%{@QR#Ve9$6LCa!n+8_JTUGxF87{mI?U zgzGtx5exoYZE1LAcrWG3ZMpV?#40WdXj_f`{RW?ezXCyc0PxX4;^ zOiwsx^u4g*P{-G&UolSx*Y&?axq1Q^W7?__M~6Wu$p{csZ7uZ}4Ul z8DrY5*;(!2ya4B-LF~S}kyFq-JiJUGBMKuKh^FH1?T>#3^XuxwMO_jW`nSlThp}AWuOp_%x8l#&nv6NHYRj{1g}PL6Fz*!$f;H|mS~Llz6@#_;qs>*Ftc zX0Z#PiohUfQ}Y*?Hjv=e5aiT0)l5t)E=Gg?d9Y2rA~Wet6b1wmWK>cTV35?NevXvS zZGD}+rM{kx?AQCZZxwT0yEkgh=gu`-J$?XUXw*NAhlORKH?s8e=Pxh`2~4l#9PR%Y zYc##^I>n-riyc_$0&f4>+A9$e1dxD1i>IQpc_g4rez3ru@a>WqB6^b{3@o+LBm9Y1 z;3f>TKC2V_Y@W0s>#O_w{02YgZZ15Lppg+;MMItJf7C-LbEL3kSS)5aDJZ@K2mc0& zYevTL_4SXfv2H?qe7l6?|1nD_78~i~ON`)ES7#L!B|J9jkv3*hUT#vctF5!xGCC?w z5HdMBnvl}cn78>WgiryJ*Ko-lt1>ZZ3=BkHUlV~qjwk*UE+f5+{8<^fk}#lxc8?@< zh67;GG=z`0Q@4rAt625Rzk!r?5^o{~^e>YZepx)1J1%w+1{%Rvg(3Tg@j91%^O{94 zXaz=pUvgX+ivGZc4o~gEsTzUJ2L6ET0>Ech>t9BS%LYp?cVLiP&* zi#-myh!`U6SL^5tFmt=)ei3Cc=K&;Po!r-@u)ufxA3kw!xeW=hrsCnNvU-S5|;->)SNqzjWsaC{f5sGRw8HkrD=vKj1y0AUc*ItskE zLS`)R*&l-S<5nc{dF!1PbFrEl31En(!t)P?FIxQg<)@xR?6-t0K|z50aJV>0v$L>F zH{X0a-31mWl$M`=wb*RBnMSTuLD}IajS<#EMHQ1N#uOAHqgf5?XV5Y*!Lu57^QJ0^9SQ9+NSv1mkiYax*` zl5a|Z84kk2N@(#!q4j0;B@3zH8DM`;<#DE^r(Xs_U8!y|^b z{xRzk5zYMr2^P#b56|=$MuV`)_BH{H?5*43FBo<8DHs7Vvitx+y9Q-_ec=)1Yap3c zQg?M5!9r)6AuNV8B4SkPm4=oc9zQcgmc+zzv9J!ouS)gcQX1TCh*Rx_86levrxpFH zz<@H^8NhytT9t=qj1z?%;xzf9nBPujH0k0ea} z_mQXF8Ho`EiKb?4z=Iw3gXLrxh&ao1oh}J|8dmWx97_pT6gum{@wTCkQY2;={F47CiiN9hg(tE)Q18LuehKGz;Avj~n+Q8Nv3E zvIH?w8_Kx$G*=f{Z1yQ^tlg=xo2AwG$;lufF-}f?0Tt@!HziH|Wk`+!F++~@0>rd& zm>e=^_r9;s-L6KF6_B6&YA=mtutk7qXC!bGZFITlB($`yJABE_Yf^&xHoajND~*^a zDDH5X9HKrRP=;ZgDVmsM(VKLkS5Lz{DH)z=+LLd9^J&`g~(9k^+i7zhb2XsT7=ml%K?Aq1TEQ3&X}B4Db*4%So60 z#e1Ho^!FbB54UcSr#Ynl_;>K_C6`cM;^CABrcl7ct#$?qbFT<(+1qJCE~ApMf}6PduXu* zIV)yL05!q%$y_D)al7Ynw^{b++0EAhOu9nUY9XV$xLFJL3S$^tt-1EG)a5Z=07x<$tFXL3TxmP9XCM zFbmG=nwpTIyj(jj?U*iD$P46{!^82ok`47=UzWBe0L46x9?AXa_XMtPf3B*yc%1;R zxO6`<;$iH(kmY^|7y?CwuC6%d288Mku)ywRNfc7D{=xWXYz3Q7I1h7@B3UG*y&DO- z57%g69C;Y7Ft1^yHXt+0N-^9{hpj;EFY^RJB*=PI{D=3WrMt_O17%K;fAD=es_eKz z$O7i)3BiCFoPdW1equ4;74-j$x3>uy`}OSL7!y2I|dH zU+Z{N6D1wpGskA6Y-qYx?Tb5?(>=}v`}@KKtw+kc*Ov=P-J#P11h)9t zJqMeo?(V~&WnQ~3f;IaKDWMeW16;2{t&`d1F{>YG+UXgV51RrQ z;-pCQXX3DlUH7&ZgKl>}qFitsJqHsm?RMWEHeF7R^D}kz`JX>yQ?%!1XCJ(Hdyp*9 z8q0Dfyt~S%v4Dlhl+nD1@Ot${X;w#FFwA_XL}JXZJBL* z8uf05E`rMZ1+j}0rjH*j(e-E+^*Ncc3+G_N5Jj_%q@ror*wh&-lai#>hHIeIC*bt^ z`1Hh-pP#Ia5jM8h9txQStB>zSM+UV+0f+6&kf)Yg7xK3t2S~*mO_G4C1t^=%_2G>l38&{hIn>^ zs|l+)g+k`w9AaW3is*DgF1ZEghC{r901!{^)JBUFoD zJHGl!VRua+QbGm~O$1%fZZP@}g0S`M5X!6R!}^(=KLyW66Un!dX@=)O>Lr~(%pMn< zz_WhNGi6c>m~;&)f79rOLxH~9*LU~cJ!nxX%5?IEm2KSzs#ecYcUG{_8-MMkOq8TQSjLUxSo_x5aNQA;5*kpeD>Q#*Dz4Ywa z@a3-cu!AZi_1Bs|MpwF)4}SQCjaRw}ZpFQv`!>(MHJ7QRG|<+TTbWW@E1;n8Zfty% z5TB&`V1K)(T9GlL{s>Fmo>$a0giO&WT1|!}$e;boy(bxZ*@}-)P=Q7L0^g>E-sgn0 zhwEc;5mDPS`RW<$ah!CrNnM?sxi|@ z%*lfnk(;Se=RSCRFcT$V5O#aLwV7PA(t0G0V{~b0E+sLMkm#eT{?8nxJ`$#QIsQgJ z+;BBz?cKxW0?=K>u~ELY&CTpj)h{zRX$d8lS5r%hb21so@nF&xEE8USb^RePCc-yU zE;u+;CXs(Hx3lweNr@OJHGglf5Z!w4@F>1JpgH{tp|7au>fQA6iQh^o&8)$XiVbI4 z*1Hqw@1zfxPWH1kXUcX|4kGPvDNfVaX4gG%HH&m?j2GtD)>f$rHf4oQq)^k-GXl0N zHi?C_xHu3m;ZYZ;ZFz-+d=w^&WBtN%&ooTKg7C&dhTwS1V}k2D)9Iqxfao%5>|Y~k zU5L=rNsVP5518wwFfwBp{p{qSs~aHRw7oRT=dkwUN#wCgK`?E4IOS2U9zBwj!_dlN zZD74lDDAe)%af+;P-f}vW3{Avd+S1j@wp>Xk%7fKOS8^@#5<8^n_=aP2O@R0u4|1y zn@2S@MyRRtk9UUHX)}w*A}K!(Dp<>6C{Bhl55(lF^URnQ^{13BE&O1-JN-k9!aR=O z;f3w?ih8+(TFk&@JmEWx)iXCN`D^29)`^6IF!Qc7vR+(SJbu&~nnc0P_<*YE=x9AQ zJ7bwL@<~UBLP-2aJN+9epb4^`q(n-M_lnJQwtcNwm?tSvym#s9(qq){@PS@2oq(Hn zc{#0sM^?6}Q%H*2p{v#D@lNl%OWw=dR5>5eokQ#!Z!b`vJ4b=vyT3W-5kzsr(laPbHtd~P-7U_n(cw~``7X_^ z-CZe3_3mc*XU(l1?NX?pV!VKYrZN5SUFDC0tqg zRqc>zbM@6djk1iEd7olMb8`OLET_*y2Pfsm8cpn0>fEnV3=n)@_ z#1X!XG0}0u_U=X`#xxOv)A!JhgPr|*@cnZLR(>vXhh zZsDw@m0Va@C`DsqYm0-6%fiAk{~`0khux(CNn|+qBvR4Ra^O(L^860ThjZPL8dT=z z0v#HlT}KB8CkOK>M|a?+e^8HUGZF!piX!SoNzU@;lrKf z`R3-}}?C)G#S{SR0l%Q6B*Gs6dC>hXtHtKFe~+y9<3@NY zHAG+iNU;Az&%8_lB*5;#iUb~Kx6qjsO5-FFuvB~?Mi7JjBoWbziO*49;+J}K)r)YrvMV<$P~X;X?mqR zM(B+1+qe-1+~DCcT5FVcIxVen;`k8p_U#w9;c}M9BYD|myRoE^(O=-jhH;Vk^kbW}{iUG(5Mv+SZrpFH$dp7M+N;orwBo2zv?SuJGn4V#L zGQIx!g<9Uy_k7tvQrO1kK{CL@GyihN)qlZ{qJ*@DUh~sUiWCVH@JP}!jcAdkeIG;> z`~5_G9f9YtoWjg`xq-gsPRx14UDn+T+NP#a5O^@q)4Od<6{l!B!mhJ9<5yM1XZfSZ z;c%P9ZnEqBlT%bwlx>7Rgh~?aCS+tLRvQm3EDQ{Gjt|ak9W2j&we|V?lTW(Z`1{{} z;Fu2MA|RB-dkXJj?sYrD!IK#%{T4(LBPo4E$&U8Ram8Ef%MPQv-Vs3$t0z?tl<@){^5^L+H=rk6`Sc^B9ZKXaN+~f+`Zf z-PkYe6n$!SjK8QykH90+*WP?DU#xiVZhCwBJtQbvKbBkm8eO23*`BQApr&7Jh0Wf8 z-9)Yju~VtxLbOMNW07h5q<5&?NLV;=@O`B++J-}%N<@ipZ?z*)P$28&QMz5ic(p@k zSC_1;P@!oLa8mkTU(tr>1tk23k7-AE&(|>_6HQs0z;*iZ&!68z{r`I~yz%>Yj~h1R z6u_6T+nCCRV9?w95+{^2Vs-zI(Qx+7q}P6R8Thm>^Q{X%|K?Gmmiu?ad%9cU++X(% z!cGIDc^1{8gR&tl@E)8!+M@u=-L1`;%o>+!F6R5joUawGdaGg~>K%y!!+U!Jz&|TG zE>1;xcVX&_LUMA_EALCj+FSRFRXKGVin6i5NOY zR%+afv13r7T#1e(f8It%lC1b{XD0!^(XYBjqa>*Pa0{Uvb%mvFY-xA(=vxAh(|Qe$ zOw!2Dg&&_^(l3cjQ64e!3$hxx_APwexFL%uvUPQA3tj{JIiVM-j^h4%dy^~*k}4g9 zj9wcNHw9E(^;6m!bnm86BM>oq5Nbh~jZB9n#8mS}y&R)p;-jbw2%Q(iwiz`J>uFLn zNt|tG-*_%1@Ut}N3DX9!sk%aLfk?Gp>L<1_I`{fAgenMCA*~wvn|Zj8ch4a_iO*Af z#H_;GfAR`qa0KEZ%i!>j*76&}+XuaDqF#HqFc76WHz?rP`uaSML?mbAGD3wD(Gz~| zY+HU(5%>#f+}MV+8+F~iKQ6)XsU)uz;6DiG;uW!mp&fA-!p}|hSPNV1=iqzeRVVbG zn@HUJJPRRuGeAdE=<)m=TzL{dvS{kXZ)CNu92=|b0iVH_V8-x;hhZbK$&?~WM-`U# zKQS>^t(lU>u{tEIku(QG$vX?ZDX?%4CNmQU<>dD5bh2`>ra<(Bcl-8j(14r|bH}+h zt>_KnjL{$Bc50xBF&+76*BYknsLM-Dz-D35HMR$fyhR6!ia6+MEJT3_RzA*ME>&S+ z4Xugt9hS%x5B;vhw*{J+w_sl>Fo@?aW1;h(5oC{x8nqS{9+MSX<$U3L4zb--t|I*w zdnmn?RcdSQ8%&)t@Fy9ud$6}Qj*X3N*7qSql@S&mC7{W{#Hdu`w_mXWk$^ZA$PR!p zrJSD-8#@nr?8vrTWV#+GqC$^3RZ9>Q}l?-+n0AR>Zq zb2Tvdq!W3={Rs#OuVXcXOo0>+Pfks((sA=A+&#kHzan638ynzV0fbVe+vp2~uG~+` zPoEZ>4&;DE4zTTjP-i_{VgNM`2P-RHr{C`%rS(*;!I|b47L1LI_GZF_+&8{lLiJbL z7+Dk~B#@Dc-~^OCx0_AzSLOCTf;d_T2_e_OLhprYyJc~dme%btMr1_W`y6T|A=#u6 zWVD3;*T$LaxM3gRG|~mDFbk-IYt(iYl476cc{_pDeBx)|_N? z$L-gj^E4>lPVh;~n&g|AnF+`O?pKZ)RPqdli;9XMLNyyIC}srbQ3=$iPoEe&uHE8& z;}3t;m#jbz3E}wJ>4{nl5Mhz&KqM_?R98^wgV+*zkDmT1wF88@K)kUkPXH5=7z2-^ zRUYKedj(6{JPZs$2Ez<01$a**X{0Oi+Ml!Q-;(o6p&HcYAE>e`?U7q2q}AJ9*M7P3 z!x>rS__V{{*PufWEGLA{TqWF3LywQiQ`|{+8=7NS!W8aBgSjM-dW@6@Rp9^R?nN^w zH<^5kNJuEn%`Ih)D=a98yKl3d#D4_UlHUzA{-G0+s4G`esA&sjq)+4-iJM!`GS&}h zQ(l0%PUkC3OOFlVB4+yYi2j!J(cd;XH2FY(MYeZz^r`AVDndvr6C4`4yR!p=97<${ z{1X(YxKKbl7DK_73n%MpYrC5cxF!BmM@Qa9R=wi4>QZHDz<4GhA-QzvQnsQ53ZiOM zKgctYdTPqcRX~+SA{`tYkRSnN*D8K9B}=fp9$0HLpMK$zI}~v~ThGo*#s)4P#A${_ z(y|ctesR_hnWmR(C13nJ>Wa-Ch(P>o(~-Pr^Lry!#?;knuW^F>WO$#=nS%c!zLH115`SpS4r103dTd#8s|!aUdRu|x?yd=#ot+5{lF!OiCJDjOSw=-0>p4y z7{V>|5UNn@wyEs9ZSy`=s0}i!Pv>XlT^XP7D2h1`!b{$xy zhX)5t+O@|%WzuC_7GP4PZZQta6OYyUGUaw;(~FuV<#$Pw-l9`nJG@SG?+gMlF0-vv&SgN zDj7R0Mn8RPZWcv`+XB~>hURgZ#pB11Cu`j@7J!QX!Q> zEpy;N$98~d;HoO?*}(;!o@*D(&~Llg~!ZL7S6G(%1tTcAqH;S zdc|Mc+QNe*6{kBqPD^u)y1S6!3y=fcBo{dHnI`Hme4mj|!I_nyVWDrv0EMOg8-qsm zRyoNvz!38alH?CSjioh8va#7zh(FceNliV6+Mf2)hvLmc%FD+x+38rBok{qD1dhd@ zQ^}GropgEX=leLMlF6|fSp_9ynP+RoP^hX#r|yk7DPNwC56uTB9UwNUm&23% zf_)b>CQv8BhB^_V=h1@qr(}^DMFFT2-T5#70RBFIer4+UiuvryF;(%1!!BEJSY;_3 zig=}yG#%v}eCy^-la@sI-E%-hp8|m}zPll;o{9~N>g7!I+qU(RSmLJdDi{vD3dBS( zo-ep}D@sHFLyI>n2}Z#5+BE@#96nkY9pC*s?E3TTv&*hM#0!t6Xs@70`OjefHRvht zPY+4X3qAR#qV?Zmu>TegKIHeRLt!rY{T&*j2lf!Vzui;$&(U$0J4()5s$4`Mij@Bz z^PeE{ni^o@eum~0r_92`G~il%GBdiFH7)uAo$!hnf8a>&O3@u z(FSnw>N0a4Hin@&kD+ww+c)fDn$A?g2g*aUY~tm9jf#Pp@BB zdfbi!mv$ri&Y_HS^5+O$*H0GGKiw~0@@QZcblH7R7>;7^pAhs+fWn|pt(%c}hC4am z=cG4pKGgbr{;a1x>BJsa_ikokV?%m&HhOHkzrPe*Wx_j7%+37(BBkZpVdOc9)m|eP zOw66<;Dv0Sc@M3_Kiahfk`fW|r*!EAHoeUr<@{G7B0^xbbFKVGD7oMGSOZl=T36SM za-mGtN$Z#Y8T26*yoya@YQ3FrYY6wtKv|NCd2Jz_GSjH@azR1C{g*!@q-enz~tz7yEug21I=Q1Y*94l9JYHd$)*W zcfmV4Y4X{(csICwbxTS?%1wNm|IbUf_Kon zdT#2SLbTvyG}dXp%R7>mhngl?j&AVBXvc-~hspO9DjYY5(2Z6MYqD#793~FZEB4Ft z)f@e;E@yb?V#O_;CA?wyD18O9i-H%!H^M987d3^i?zUMT5o)!6W7-YYUdZmW)zs{E zUra;5D;B)4Jf)La+gV~z3}9f2hafd9eGnwc3SCwB78oK;&*1V|ulcCBIHiK~IE)Jv6S{tLuAH^b%L~3Lc{fFy3nv3<90~UTZ zBawmsA(Wz)IQkX23O#Ssil$a^1uqX$i=ML1Q_$NLjU}qny-U_XAeK~P2IfmB{YU64 z$7tw`LC^I}rYm}7dv6*+^@C{6sP5cY60hb*Hz6=j4=szP_vk_y;kS}4e0XhZIL!Q=<8#RPxnUE6Hh>tp4lIj01TlbgP;I0z9^0YO=$4p&J~ zt3>!AWb+~@vCu?8`<2fq?X182g#Q=fAw4tz?FLX z-qo{*7~_@s3-V~WhHQMwLzp&ziwQdYE=ieOW_reJ%-BJ zAta=n@4OP;cDnc6k6Cks@F`S6@HH!}G?6#K6Xn)`MgS@?=_I<&V_m&`t+~l{GL;B& zY>cdz_|bPrkNm$5DiafN0x!rG9vZp4iq5eOL9V{>6LoXl&F3GeTH_4ND z9oAIh;+&u^c6p6zo9 z=A)mSkM~W^PAO^+O-DOBB_V7oVeIINBaBF>*8BY{y11A=QM?E*WA%4x{!ceA4CJ zNz#!i2 z<%46Zy@Ip%Pri|piz1))#W2-~JUVroxyZ9TV_9csZ+AVQIaEfbPbHtPK+&)$&#lxj zr~06l-=X3eGF$4yNa~W2fV#4_=*~C;>l=SVF)^DyF{xxJRLaUoM)GKt{F&ZlZC%ap zKvm?Tpre(B?%nbYo>=Ccjm_|pADm|6&SS?1VkrW-HAiPv?lt9gbs-uSqwm{N+4Of~ zq81{y;K# zb3zd>Z?(6)iA#GeWT^fe^HHyNVh$^VA^s0Oe`Z(ZwqDmlMvRW`QE=smCUB!T_fpO} zb=1lyYATIehQFD6fOvRXQB%EuA@R_4&jRV}w$OtUBVCwn()%H#zh!Rfo!C;Po9+@$ zmcy2;$p*9X&&xUrw^SRS8Xqg zp#svN`pcOQ!p_8MKek{cOWCnXKfCVO)e^>MZHX13I0)JsfEc#34j zvsE~ku}W;LDx%^JTGt_~s@QNbF`4v4>?~zf$s4KJe@he5PT?=7=85&k>IT#=>c@{( z1B3NK)nZ<5dwpf)R*Uh_mgey~H+9Nhv-xfg91agCgT=+YoA8(%9#D!+w7hR;D&}4b zxn4oevy_mKi@> zKAS2%0h0Otj_xpjKD+f~Elu+*rXf)aqj_@D_!67>#i*#sz@UJy^ZDhrPsEYYyBokq z*j-ygDJp16qlVBprS$Z4LPMjHB=P+0eZKqIg-2B>lW~+{4P)c*Slqt;DE`7>X#B0R zzr~kKg)T-S8brP|H33;lqn}VsC3&HXq!^~?c-`@?;qFTJqem9nb!+4VCEL~OoOA5R zaf{*Z3)(xED^8i}-kdcBptkkp<-yKdKJLXsxi`#a+3eY;?A|%;5=d)XYioNO1vk^e zYIb^hz3$|5!otl?PNPBxzapn}R_~uJGZ1o4q^9auUGy43NA+6blHzyLzc!(cK1gqs zlqmL%IxJd)a+LP|u+dn>G6}P5PiB~3?2w8nc2W0aGZjHV&OHW6Nr@3&e(lb$Jyo;L z+uJ+l1D{s2y)Sj72$JL7dNKLYL{qY4WCEjE=}ryF&HM6ccha{O7d;-hE=0`^JC=d1r$MZ$2iyE4#D?KfKoc5NG+F^ECY*!ksk}`5d%jBYsN^ z6_{MPqGE0R_#V-6-}m?2+@wKnq!g1j3q5`G^eQ$s0yQ-xt7F3pi9B?g-bE{cgh5&R zY;H76>8gz6Si|U5*7>5)@(tg%qO89C<6`~kMqekt*NjJ}E;jSciLSQ1ggrkl_1w@< z;;`7D@jlPPLR5=jx+!qjpC*Fhv^{o&cb)$$L6yc`ACGK*ei})0)qP7E{krNd#Vz8^ zON69HdDq*~=Q5<~Y!K6@u(CB-5mB*4r@5ZRL=V0HV}fhz^c?B=29jc9DsqYrY~NSs zFCiu#@fv6}+`0yN&>gzJa>jF~YW_mLX~O>_CC?d%UOtD+7XQ}oWuPQI`4gUxpMHFE!F=a)%0RE zOO5`MNIs_8(7gsJJ(h~4G2OrO%2X1ZaUM3J3boXni+{KTn_-*34t%2Lp}GYfUDfP) zo3~VNu0<8uqxB71Nx*AT8~W)ot{ zgO!eq^xSk*@sto1LiMWRrGMTCAM!sikcBD)x?=EOKl!f{=^z{lA_CItrExN@{^xg~ z@5euhfAW|)QOuFJtrw5`g&S{tv@kHbtP3Y}v_~uGy5qb42@goTeWEr zuU`FidA)c4PTW0pbrx#jZ09_M{_8U{{xWZ2T2J_YDjqEC;Qo)HUG)Czfi?a-DAo1q z#*?{u`&8t-XY?1YKkSWvK&O9~4?fcUe<03ukcBgEsgz}IL}vWzGu`-9e>H;5`?NStsy>LYS_r6-o*)>U|sP z;)Ra*HH?yk$H-N(x0s30Ow~pM{*?UZc$PI(`zrL#Tg4W8+O<==X%K zZiDZH!%{yzGM>ls_K@P{UftRF=eSDH#bga1j6+3mVie0f%iP&0^ITIWJz(qaGVtX(N%YopHEd{DXsk)dC&pEe|b1PN-kT zi}?Q?0p~5#B+UO0uSV#5kQ^KwV6Oqja!__fHDO9&`9N+@J1IDqe?v~<3J+t)XDfn-yb8Fm|JLJPglG&ws5)Yg?AqN33)O^tp-7csWY z6|Mg&7AehCGk1`XoVAqX1xZ$u80G=eLr8lKaKS3@pEu}ukXEcv#ukj5R)1B@%Q6dZDn)o`dPW zf0u#kS1GWt-WrULm$B=#y{q@aRm3eJag;)Y_|_`aQyyw}e0p)eo>ef3PdY0n2WT{g zHz?vd>mVJ)hx|fgtNBk}07KtZ#L)O| zR=VuzuI7i34y5?s7IaM)+?=SHY-~{eXu|QB@%BiLk`>TZfl-t#)cn8eRNa!DP=^W& z9O--iN~K=%QIOxVvD ztq@c6#5nEWgZhIHhQ#9m+7meuK>>by#2on~0Gwgeb~bl+pAQEwEp5A>RN?iW9eGgH z9L(t;522}S&cIFI@DB6Cz4d$H{sG2EyJ4o5YCCT06XM8{^4KuafjW4wsO@f#t^w5# z4wgJ?XWE7~u}>#&<$!Bj%lvB0Jaav1)7PrvPa8c$J+ZZf1X(*-(6f z-R4go;NjRU8v+7a+E;2MHehLZb~u#Dn1D}F_uBt(cU8W7+-<6U$bX^U>pEk?%f;{L z13b@e+fq;guF#>iv+Ymcoz96r<4Z3H?_p=OZLaPari|lDpwyp^lG4|J!~JO0WvwgUZagoqP?dY8Jz5oM`n_q_ zhhOPvE%ZFkORt1k4}<)(Fy)S_y{_jNTEPqam~)x>WZJ9OICIpa_+-0fw&p^D0!Ktp z2|V4g9p?RnP~~`pN=p-=k$x5)tD+%m4aA{cfD>qEc||x+u?vPaoaxEdRh^jTGO<&k`zH??=S7w2C7mDe;GY zh*#q4%4b)kKU!QJPx2r6WG;$g>@d}I=t;Fe{aTwy_6LB_ZcKP5Ld+|26Z=;1rIU>M zJ9si)aW`k4?M|M>*k~(`EB8kn)uHU9RH(iS))##uX>qz&YSj8-*t&kQ&H?x!5!AY% za9ffsE-48F9^@@;-Uu0ejQ1`6;^adE2Dc0Z{5iq;Tizj*WO}!+6X786o zQr^(@m>h!i+xPDanUBY#S^YPC(8+Z-$tO>qa9aXk*D~s83DL>JS@_@h*1tlc`x5HS* zjskTa{hv*`0LH0T*=9NiVl~H~yI@#zv}THo7dZOn9Ff35``RCr<~MIt7&rNcLFHB< zGc>2>ZGL{RKT#l87=_TlOR);yG?1i&Gji|Oa0$b#evpm-rQO|vCVv3}1-)m&DUDWE zo&y5)LF(pHmtrWh0Z+|gU1t87lPy5MdN5VtH0^bmy8mziKxgB!i{dmh)K*e*+g=#1 zl3)3cT&1DI1xcBi!GS6Tx{azE+4bMLem$CFjRE$&3VQxCw^Fjv*gwzFiwh7U%72dCY;dlTaJ=gWB zNOkO{-lE)8J)wU_JqF|=5Q}bPVy33yNyY`wCR1JXLdU^*gnIO>HR|=VvM9T z?A1j?5jz|bCC85r=T$W{;GEkST2laWoj$U3n`lToH}TVXxMI9{shsp*|XPob%mW>^FG?b~sSeZruO+{1g!9cpi#oE+Y2e?(u5eN*3$NI#cW= zq005YX)z~9rCYxP-Q4Eeo}Yp*U1K9pbgW9eJ_!(pn&)-kiz0jZm`>GvRdH43>DroZ z&ieGUrF6<|6pD+hJwBck880Y6$IVR*a7cls7*u3MQ9;DgRt}ax-|Pc^J?huo93%12 zO}8ArkimXBIH~fp!z1rYVVTnEd)p=lpn`#o5Sa3oYQr;{)q-s86Xy|^3H0cvuH@z? z0e!~a?nKfk8yHXn^V5w&oH2kXkA6B4VI*dHw!MQZ^xST3<)h;!3dv_@+%oeuaE z6l$OK<^PMOu{PnRs=Vvi9Jr^iPhwUGs4)C6xSl-{uICYoFA$)ANWK~SsxG(c>Jo>D!HwWggae`zGy@ivVKrYUa{lcn_x1U7j z_|+7R$f@Hr8b7#|=Kk-sbbZW;)lB&#RF`R_UntqA#mv6C9WJh@rluq>zqB$&Lph_T zsXlY>>Hnf>I!-rStYp5iWIl0d*~%Gv-zKD8qey3KZG16_uSNh*$aI2ym^NorjW zm^DpvNJF?VykGdSVT9D=3N*=c-HS{P%MSj(23<(@{)Zhf#{(9c0-&%*7GOMCoA>xO ztE6Gc`Lms&5-=ECkLRKwB5KMO^qnB<37wVRf2A5&j^VBWz^y5G%&jwP*Dg+PwvSrk zhWIolteS!(*_sR)!5FK-`^e4yU|sEQ_?!u_l1 zcdGi{m)orrmcV%8-bnWJnL6zu*cTvk>@X!e>UUA;?^9PR`vJNZxT1PDhnFTQnn?xE z=4QfZU5__02D*XSv9rCHpOZpJd%Av8kyMk<7iY8c+xYjlV9&xPH2 zb3VBguz}YtEsxuGR3assuV0t2Twg;Ys0_f10=qr4_vWb?H8r2@jjDlbt@Tzz{(BgR z&<~?kPCq$qxr(d@8n8-xRafz`s1Xp8E{&HO%>!ZT7KdRQm~BJR$ayZr5KnS5CCATK zCyc0pzKDRdCZE$;dy&28`%rmi=!x}U;n^C+*$+^Ko5_EdVD`kj(?_&VX1VPGp7~>Y zsdrd>bt{r>?%aYc1qt;k>_$Nfz2Q4mI3FLlA2)QyEpsU=3Ov-N78JDm^6DEzE!o*m zACs%=^x`N@frjZi(HNhVP6n(`gtW}Xj2$7_7+wz<4e)We3dYhQISbN-h&C%ro^B8& z)@?G_Su4DJkBIW!J3?srdyj*oFmI(7goqCW_%Scx%4yF5Obx4Q$aOQJhaTVJF_2X+ zXUer|KD<<59n9kvxejfZ3&C;DaH?JnIA~~AyYX~`LvWH));C7Bt9ta3UX7^Bnf0$2 zpKs!)^vUD~qs1t#E(#lLwo2Pm>!utw?Jg%Gb8FE6dC2NWgf{A|2>?+Eyw zJe*_=x>@J7OQ@u>pO;(8LJnvD(xlvKnt#2POsC29g5{l1!+w=FoTsk-Fv2Sywv`OD|{M5PS@GS>JLw&d8Ym<%nM;K+(3!mTY^#6l3 z=_E-xU1}bWPf={e6r1VPR5;P9$sXKC%V+lN;X#MbXn{@eqIq8D#Q8e zSg0?;*i5+aqCf~;dDFS*pW%4^Qp24;afcndeC+eFhJy?6!k?(Zj=iOZxH!rw&7}Lr zpBFrI`-Ok|XLN=dsNFj6{fGT=OrbxdekX<&tr%$VAdi8Xf3E~?}J^H?ft3;|exMB3L$S@}8t_3eNefu`t z^4Ro!2^Kq=Soxf$gsCagrk9 zXAK?z-)@YSYtU`92s0YEZMfekg}Sw>@7y;ru(ZacNIeL>^K85BZgU;oXxg-|0 zdhdsCH;NsNLFJp4mNNO-$xr=dYiOf|g)TvxoYDNtTou~>+7Cjm`%TRTuQb+DV(bgj zD&rqGQ8(_t7>{o{!MS$&TGw@V>>gsRy?~pvcQ90f6^;?e89;S2I&uxlXELTsY8HpUf9H4Q9a>S5B&rx-wJ&`B zIk*IX`Se7{q^TNVpqs5zqg|$FWHBruD z^RsCd74_EfQJU)3a^W5jGC*a+qIJA8_w8taM_u8a>wFSRV30>pKpe*l)k5Dn)0H20 zQMSLnnjmxjE32e@79C2pf2-lsYZ5c+BC4po586>*pM1sq)2T0nkR6PT<<7L?g5Tpr zk?#8TqV^w|F>IHhuLPk3unS|7k|^+sSSe?a_?Q=+uV1Gox=#J|d5h_f@0eI)=`Zhw znh-R&jdRLT8rZ|vmOb%)X-IVn)LriLanI8zs|2kyTj+qf=^B58k6{$k84M=SoM8x!hWReC%~c&zq~3J+P|Yp*$i|>-_73rJgubE z+RpzUm?bwd*m7UWO~rIPzkBUohSY@}j|X103OZj<$leI*$oKMX0GVI9c6@_8$#J&5 zJC^x6WM6>D9UmtEy>=+bzsg}<5jMJ7XCOe0l%3I}CktqrT8>RJk#0Oi7IBHaRv#GW2Er?EezN~bmX&D??vPFt_-uOf4a4?w+_UPn&(g6 zLPwXKW>h*~?iXNpyiM_#iIhFn7WXgD&zEwGDYTT;bmj>on~!|+#{SpWMew8$r}_zG zLQ-sh6jDAnkR+%%N9}JxK17&>w2cq)TEx86@%q9d#TX4>m+nEBW3!3 z$jkr5lGW2lhk3lHilXs6U(V>Ck$1)U{U#xLt@|<3e(zomAKD7T_jalOX--*_-qXGhyV|a7P`_Pi zkKTkNU2&%!nGPZ(Y-~x+-y0j#6lFHo{|ozse-v^U@hA7m@r(7>CvcG9?EJwr<`Ek^ zAKy#J+1WX^+S_k~=%5|g8CDyfvO-C&$NSA;f+N;b54rI{kQCIM-Yu9g_Ew(b8c_u% ztda(D4acuX=!I34}O zWMysr!1`BkQW7JLVOJDACFkJkP@yDDNOaWtJ%fKB^U_7<;upRxM!o4*$~d^~^KkJ4 zQ0Z*?7YCA;S6AbrK9&GO6-q_&%DcRL&Yw(`=euNp&RS*f=Ch3RUM?7P&zAa>JDZCy zw-;i)FWT|DeA<9OX<{PT#AF#PWXTjvTfENCb3|Sp%S~cl+iuY*xPW!_RVl^kD4xrOsz{zXmQM{mL#L+8U-&9pwwbZ1KTnHUQgpPsW%2d>1i#WaLW-cek2rjreVtq4&c zv5_Woxj0HUjWr)pm3{%CN>D1)fL|PS+V2wojy3;+Y34&hkH=B0f5@yXz9Ra1#{oL~ zk%ZXIDcFoRh)?xBF##UnbRb4_2GDjVJz~U^BSDi^Jnj86NUw%*k(~eY8!`GfQCd9S zPDIPAjw};ZwfkGTQ^^+@7<3W(u$dwdVH-@)wqro<0rZi_KtoV(Z(3T`!(r#BX`~hc zuOW0~G`==8y0GfekEdncPld>!KGE?;$;PKo!G3be_2_FR?tEk>x9^JksRzkL5_R3` z&&Lp@%v=|o4-wkGb=A8PjcKydPfYmYOD>+zz+ib@uz*0c7~tbJKaNVJj3W4q2X&F) z^E|Y2(`Rv>ePzr!yff;T`&N zdst%}p_1M#eAhD^eb7UG?ELVbmmkD5*u1aDK+h973Q5b`j~JG`kjIY0OZ>iFu&wT82{XyIl z<6@$mcl9fOCLlGJ{4L>T`9Ub2q9bM22g2jsd7fP4EM_AlnwL$D(9qvG&mOf_Cbc^| zoH_OaxswV-i~##Rw8~@oji;CqWwlGhcp0XgC!Sg#)9{i${Z8`SU`?h@CHnJU=}VVC zUk=S+eU8hB38dzt2UkPx<`vq7>5mr^smMImrv)##j{KMCiUgtdj3Dmjdll@gDs9P{JB*LGiaxHvDw*gY*c2(}|Tsxc@|{Xi%lW!omU&DpEqbF=<@fFn}BE!ffDoAF;?L z^1`lQH&yQiYCLc+NP(71%w`b9GHQLU0Id>~a8I}UWFgmV267bo=WaTHeU8q~BO@cB z6hadN19pJVfdc|Q09vsEVhYycXP_Fp&1-dsmzS4?WqoHz zd%Z6cx4giK>}cZ_JtFj=Py(Usi_7D(+~P-Y?eb+_>tC1gYfcZBp(#)joBrbRlt!YGOY>LT3Nu&^))?KhzDJ1#jN7(q0DlQ$?l#o`VjpMI1MP&PjF z0asWp3V`rs%c1+B9Z@}Y+?fz9!n0W*$rxG@0r6X0LgElCCIS|qkJ6a!pIVlhy!;~+ zIGdB26*C?+;tJvQLhp#yk{56@6ic78-~2y`dImBiNstmUGBoMfB+TMe5g;Zpdoe8T z^2~*Vae?*R+iTc}i#}({kDDWZu8voii&HsofoSzADGKy;T4UQ_N`MC%7$zuwH48{c z&_up0t&l8$9s;qku_)wS~p8@%uJ@6-lC`s7PkXRz@O3W->Ag znPp^TWu=UYR8k>{vf?(Am6cUVvXV{ND`X@gv*)<`e4pp}{a)Yi!3z740WyGxTH8dK5lsC%ntYuDY_P4$4}s7toRz~wqqXV1$kcJ(ifW& zRg}LP#y-Z{7?9iIe`BCGFZF=h) zp6)?d6p`vq(zn~KWMPq@#}^}R|D-rKXJ+q<09Cr;BQP1Dtt^GJ_$gAD#hzkg({sHO z(QVY2id$KoYs8rCA*Nt6?{QL^Zc1xV-4+cPT#ja zJRIm&6KnA>+IFKP%v`pyN_7{xBtiuSb7hK;;Xk5?Sw2NQZEf?L$0s{;xMXC?z+Lzc z69Pi}bTl+l;M9XPf=Snu@+8||6!9Adb{Vkzn}j)i!{Yk=(zS}#eCi~<5RJcy)=$o! zyKMngaahM(0doOlJPeBnNK2Poof|!Qo0fy~t|Di64Fo|>DPm#`mYfeE_4N~G?O8B; z^5MFA^(y!iQ0ud7N!EZT#MxKIHR5`tq*C^X^$9o2)tA~E8 ze;1~Yzr1Vjx9{&Y1&N!~)SX{noaLt)=DegtQliue2rjy@j`>x+Z$|Sr>RI>N9v)I? zGvXg}&&c=xa);^Yy^XnB47wO^1;)o;cCiW1q~91d!`3pIyk(0;==_@Zub-CIpZ9ZA zU-|reNlQTit(*wVpTNfCXy0{Fc(~dA#vm=su#e+b@o~YIVdufqgg-`WVG;f$A_B%J zc4(oWFK`IeSb+HgHX_1dZb891cs*%NM;OIPNA3j&V>C?`({g`ihrV6rXKeUp;qK<{ zuEe<`q623c>OAi5MnswuAuy$=>O(0{8!GI3Gy6xrS#Ls1dX|xsubs>fDDl9J2LZIy zYZiJQgU^p$fiL`y{rk81d2WhE?IbVHrXl(OQ*c9lJrQ42WWX7!9f^kX>C>m-q8KS) zr~}1qc=f`h27eM_Fp^SIr?|rwd#^oYzXS6`hyY?l6Rs-78{yj0+SUe<9~d_BF=-i5 zRV}tAkVsaD#xSM8`Gd1wkfj5TgF-@%h^%-&KM3w1%)lQ8!F6EfGyk&&2~p7!zrVgF zCNZ~eodki%&Fwdgdf*s7IXQ{VV}|?a`@8Om53hM&mqS5X+Bn7rfBg7?j0B_YdL571 zsik6M;qC!h$m{Sehxy69%cK`q+tMBYYNJ|9I2U(gGWq1mljIL?dk0+j2yZJT(TV8w zpT(V>o%i<~<~(pfNq|XrYYMto+`A95v!4)Pn(53*#52v#b_TbqS$$w&AR;0HL#X%$ zXWQuLC`Q5X2x(|(AFFcX(ab|32ojOy>&y24hS8G@{ITKb=t4YJbkak)uTHeWd#xUh zL9Z@Bj}F1yr(cIKXD%Luo1OXaxvxjW+m0NrmX2TY~4|-Me?0 znVDPrqr{+xoHhFWyN!(vS(;Rqa5HFu*CdD;H~@cl<=IRXMBE$IPmu!SNPuZ85ulLZ zV0J2o>BPj_CSI{r+8CEzH?x6odFFfj`YL!B^p-o!$6illw0CJ`n)PTGL%Qkb&!2eG zFU=~}d&{nY&bDvcW=rK;pi+^w158XZQ&Kh)cEuP7b!M2_SGv#Xi6EI+qtEem-}{RTimnKm60MVL&Y?;wp!+O!J;VFV|@mpsI_e3rtV+!{vH*;0qc+w9@)vxk<-t@Z4bMAmZKc-kS= z9Udw4%rBfhviv3r9Tn@F2v~t_A|{%#Q$c_{ozl|N)5FitpVqJq8yr3vHAAx? z@q~oX5jecCF}V&LsA_LND`cNzP(L(_U35w8E7Z@HCc8wzB($`2`_V3lm$ilaI7obJ zZa#vK9w7vDON5$S-e=L#G=U0`BtXVWN=Z2?CWeO)s>*HhQ7C31Y(JU&2Zu1&kixK& zhbQI53r;aHH*oe`i|h8I^JSu>VRez$J_DQ1sv*PLJ+-S7i>6>bY~CnAycgVRC&tF^R9)zjQD=nlS*)bXd-w#xytZ;6ARxf& z+O-U!+soqm?PvL-&oxZ^Sz21rjw+4`+>x z?q@ruqa`8DNU|$@URID=tfidN>7Wv-T0ipO337|!WC*RZFbk!=d^x}1v29CNd}87O z&(8e&-YGX-SThp0J}B)fvBG8y^HIjKvAsxPKiF3nYNQ#o?n_> zlRu{<_r}Vu?WDSO)MIkFb)yMLE|I6)iQczW!B`XtdmSVe2a!Nmoajb~1>`Pp79 zFfC}6cJ2pvL(s^`Xhfm*$-U@5(!R%)wHo!!{CrQG@H$%Ixw*Q-6G2{Lp*OH2tvaW`F`64OQ5v=J61K*n7vg_&cZtmZ8 zno5qJ>tww(bW)yrgGb62_5!b22LjC34gT%za4eS=V5+RLI!L_ESHr3y*riK4YixBL zUp=a01qd1+nU9FR3vK%iZ&#OQ8sh%$hmY>hhtrQI`5^qNLpXcH3YFPiyy&~;jklyK z79){f-~{wtU-Hv9{js%8e0e1(R?0nJw{52I=$*9qBJcVSAJmtlWv+3_(>IUH33-YI zS3Q!kJTeX{&GA?#509Lnpvn(-6SwbQ9Z!5%zQKQNOpGng=ONoUNog%7Tic#D^Chr1 z*x;X&6Ds!RHr2X}BDMRD^`#TH+Mgdg`}OPd;o%e?&;N9ETsJXE zyiKKXt}v!-vp$#Fuhz7Ns3?`n_p3zza82iDWj5zqY`Ig)AQDHGqeh))K${=}Pi(?p zdyj>k)Y%2+)jvnyR}S&>+uyo*HYmuc;gh7LqpU3F;MYVI#&_@JHV|=t{c>`y?c7<> z^d3MG(T@9JUy3I zE+OV_CE|Pvo-)^U6*ZZ}JPr=_6XsjiF!L+Q&yOmQsD5VwQ?y9ozDHE_G+asiwL#lE z?CitE#Kd^jPV?Sm@9wdoAm(-159#upvbi#T&hlG`LRbeWOXcAU>C+r?c+P*8_j6E7 z)6oUJf4>W+iQ-PT<&5qI*dskxAkJ_b@k4--{OU z(S~d1g#4pf=<4thr>9ShxosZrS=lX=RLJ7>Yj~D8(bJ_;>@BW-&Qs{&_iq-;dc}{Y zMpqjju?Fp>F*5oF=;o%Wam|#T90&?)kZ1Tjo zZQZ7)hbwmxz)V`Kw*%acuW#^c{9QKR{v+3{v!Aa#pV$T|qG(kg>kS>vw zkhrqsszQi}n{f1K*v(HA+kED>v828q5?O)xm1om-!6hR!bii+Y?#9G@>YG1jyFACf zEOi@m5XkLPb=}$S;5oug@nM^TeS4AbY+$;_+^ox%Z4aQ_>g@dnD&8Xz{Dw?SPK|MY zr*G3ac6G_~pS{kwe}7y!mxF!y^*;l~eD{(Ms&g}}{F&UkZMwEVpPGYGQYw(DtSWel z@K;V0G`^JR)z;q5d2lp?SNA?BWmzv@(rq*Cv$)xMIxe{Gw5=Hp!6fv26Y;$m>Ji=;_gjpMiswiGQ%*m-r)>Vud;eMkoK&m)}S|DkmPG?exAzHsC7<(uuHz zzc2xmXBj*Cg(HA|!VrrrmG$u9qq_ya_D+*hw1i97m+zPgZCCIKCg-3pG#jkl2CiO} z`E^I8OR=`LRyFLoh=s!T8Zovn3T=o75_Uyt!n;Zj}h68&}G#=H6k&0ly1LJXM{a}kHj zmw~%ed_$;jn&))^sH042C9(%)XVj_elq31?cPHFCjcY147K+g%%cBBIj40=Q%?!>R zMa~a8mMr%9u@Sj>c^lZtrkJU( z80TA>nsyL4vQky3gCY=Uy43c`^ReG!Oo`s7~cvtj1Ue z;xAbg2v8dm$jiVGWQ$~X7t5WY{1Wo?v{Z>C(k4PREUD=dvg%hm!fTQaj=!Ndc_oq? zRC{6kUm*f_pxqLg`?yWXaL(J?8{EX)H*buzw6+sKaP#x?v!BcN2dFnSnV+Qh@G%LH zr#{b^Zx8J<=nq3!8Nv<_!DJElPEuXi(WAHhEymw-g1>NJslr1C3i_xVWAFzBEvUlH zKrNZ!Zb0z3AGLkeXss`&AYcd?(S zqS3rQ%k?rHJ9d}?dqV^mbp+RQYGJ5w3~pw-?mXRnEQ}i~a)bX@TU*SIVW|<1!oqY+ zOpwwG?ml;D7X#(Hky<(4)wRVwEltgBbaXL*gs6yQTcEb~zJKQGTaQrgwDtCqboO;;M$`{k3OHJ zOS^3kFE#44D#eem(%oQ=vJD{ueXimw-{HDU_(QHPW~Xt^g{qR7a&@14r|u#cJzT%u z>9FuIgawawd}5+@Xm%q71*1wj%$5ZO1a{S(aDRp;fC(wh#3p#(>geiL4mewXexA0+ zKvy@sHm9KAR*K9icY{PB6@-n+gj@sIIurhk{AY_$K{<8|8{X&7Kv4SD_?K7VO^t(W zaq;NCFE)cK4HO%JuyMsCMP)<7y+lA@prL^Qj&KaK#mQVdtD=HRyjh7y2u~_yqSsmSea)=U4qq(jSnja6qS_D z=$cPxn^ zBEYpk^heSdMblf8d%Y{FVel+D+ugY(VSS4V`JU#b5$FnYb0>c2uqO#kqHwj$dow%H z)W?Lrb@T7}`Lv#NdS-gEr769_+JmetC$rrf5;VzWo=-ahSf6FKw+qMUpIu0L{o6&@ zvUU5sQ3hwg7k~dA-hels>g&ICcIFK^#~i)*(P;d5hxW6nu*>>(Ytq40W1){*T4rE- z@Z??p_*lJ3fx}|(ZgH6~0R`#}nhPAQeUG>ejaN&`*PQ{=%7yCsXaBg6^5(2VRaa5W z?5_AbRv$I|_3KCea|;XZ#q634P+BB2`1mkOt9P*99sKPpn;LFMKR=*-uN=*uL<$!ZWLMYvA?OqTKTJ zMxPZ~CZw)e)9tJJ%=DSjVXhg#<+kA}3h&onzDy(@#rmc^V^pE$;GNV=NO+N+{-AoU z;j_@fPv@tSF2CR1lJoi9bhJ5xGt{dsz3ldFseRj4AZO&eI=ca-I9?CeuaD#WoSKsg zxfz<<+O(LFZQSv$9C^_G<+6&3xBAySl0gcDV}0SG34OU4vgxzjvJJ^*g>^R`kb{ zxbv{_uvjbN!rJl=Q8ORLB|hdP723yV#g808LDdtrQ&!fB>;h98D=P-Zz>-Ux0p7HT zYucf4e%p!bJ`d>wVs76)X)yqCKkC}ljME1zKYrXtoId@LAjH|-=0>xKY?q-61UvPG zAMM+iVnz43+11}Vm6V^aA>{vr=~*4C;3D&3h4T{i0CI(w=V}{dW`9~h{!>|dnl7H-)nX2-!iC1&bMm zyOcyyo+hpG<_cjk=7gtr1g@>{vI+$(FIL!q#Vne-I5%pzlaiz4UTOv2dwE!G1jDE* z5BD$4R?i{xH&d~hPB{6UffEfTP1v(&#l>lvu(I^D8iu(=^@NA3u(U zF)XpPq-XrF+KvXO*_JKEpkzA^erRg#?iy`SZ%el@+jA&$VpPI@Wnt!|!V6s;N7%zq z6335w*|pKn(+frNU&F3w586s>*suYoFJfVIbTqEn%G&xM!(FL1vl)e5RR+dFku{bc ze47|iKLk#D9v9a*;5_;{hGpMAP^>=1p4#V5_wT0uAIW`s!5ugEeAz43L22U#H{xHC zNYFngx-$N6az8-YcJ7>gSgFwBuetLFS**WF2>bnwkdmsTyqR0r=Q{+b&VNqIvmm$3 zI{x*cDy~RQhOq2rJ6`lEFG8t@V>Jc-eQA4h%FFi?3g{-dx$WA% znI=K|5IwawcN*GX=!#$jS4vWH?8lF|V^^$EYm*5(GO-N-NB#kK7F0HLW^5V@K7E#j zd#j#4v7qrTno$XYilP_tU0M5@wy=S@soA5B`A@t?&IrxB3Q@FGW0C^)tSY3 zUiG9rF|kY7@z+-+-{gxc9lHN>*5yorb?SDyqO+R_m1^5UCqH2(o(eA)$S;*8AIz{H zk3Xl#PT%?MTb_Zye-Hv%7o(%rH`x_Acfc&__05|byG|x(cRC92*#DGu=1)d z)a*YJRqt_;3`V4+zE)SOsH+DvS0S&@C@5G!c8~M`X?E%uS}(2#a6R=kH3PF=baZr) zLMG{%nHp+pp}~VwQ>?ppAGK?RF#RYtK|c!bFoh_?NLhr!`SZ_$f~pZ*l59_j+M)Aq zztX3X2Dw(O4Qp#_VW@tNM4HK>MvW8`bDBInJg9g(Itnq|H8wFxkU=jGogckxIzF;! zx(fO7rG7`5hl8YWvhe<1QE~+n4jM46+!|b1Ryulpp)0IhsN?PJOeyCxCQ;MXmoHs< zRKmP}zp0_&5?akDw0*}`M+Kdeb1);ToPj3LLE=0&!Xh$f6L#W$T29r@?F!<&o7L-0y@>u zXXaBDLkj?Q@`Q>?_3z(q{N(Y8L-TUfzwgn`zg~?&UbgqKV+ZunC@09TU_+Z zm)6-9bJnNLdrtR-MTlul4IpE=QZWobk6@Yt2}?zM)0G9@7iRw zJ)+78Bdh?qCr{oQyy?jp=;Gm_sj5o&qv;Q-5XjWBO)V|q!Qf||)~C89FRm1nw3YMQw=j*9(MBaMpik*&YisN4 z&(Bt~Re$`*KV;S#@&ipwtQoa`TEA)9;%C{PuDwDAn$4Ab1FX6 zYHomT?rl02gO?9xtjAhc8-bh1XXVh(jwcSAztVmDK9_PjD)-u=BY`H3Th$VYPtqDTk zytVK@#f$UZ-QDQ9171PN4E-qVP$A=@{*jRbEXl)he0+SCS%^o~)zw; z%|ox=#pQ5NWml2Q#S;GZGs2amu}j)}rGk@Pc$ZIzIRm1Y_Rq`+Gu-t$9-ElRr51Kw z)(@UIP%L&e(Q1_&P~L(ErQNra27XO3SPgxM`3UBzYjPu0OWGBIKpLp&%mm)P{a~-? zD7+E)goSO6L@_Zjp>Y@IvtVczxixK5iSEC58FH2c391j$B4)cO-8TurW0_pxV#4Xk zk^XX0&31gK_b%zFs-@-bxS?-<$p~kvQj9;OO4;kz&tslTAm?shdu)}bE#Q1K znj{+|oqbBt}<0#XbzKTlh^o?A-bJ zbBpK^%8av9ZKzi|CxqnA`RK39a_>?mPMkd1a&yx+bd(^vvQ#G=>B+$=npY^fuVC`o zxdcyFdFpw7a=o;;xw-nv=&A}@js*)9s3@+JQNh^6XU4l9FktP`7^^SmXF4>(DCRn> zKu5RPXKiVES{ikeQ%WhL_By&wXkOtHiE()O`N{BNUtDz+St#U(u*w5tO8-xvE}wff zDRZse%v-r@Y2DxM3A$3he;d!wf8R_QP*`#+rrRNM(!y?H%C<%JMGNa`jdMw)o-;P4 z4xJ(m{sbFw=k5~8zG`8?1OLK&S~wW>k?2oO$z9CZM@P3Cm491D$8lGD*f+KzQD*-> zzV~UkZvBu3PMyt*LN>ZaYU=Q*MTmH_K^zT_*G{5{HD= z6YZ^fU)P+Rrh{9|v!`y3o^k2vQu`YVb8@;WD`B!c3pl8MwjC`x(mi7U*gZ%=<)_;- zuTjeHJNE0U_i_UMgywTeX2SJ~R<;2xfu;#9ojV<^TXzpwDGEX+G^aGznbxOkwb9gU ze`WIX_jn*orXGbHc&6^)knC3V`ggvkuvrWPCVVK~-r4b$h$mIGe~HH*O_%J`dPJs+ zjG|>?Vc|_V~eebr!ljPyAgN;&Gll#Z7!`l2tA4+d*?q-Ooq71g^0(W|Zd z$XtNw>z-fZ5DtWV(ss%oKVF`jD{<(OyVsxg`}a?djt+5gzB+R;4viRU^0TTQ($G-- zBz|}{TFQNJuqsb($+G;y(`=E7x=24X0)+UMr^u)U0kJtlj2UX3Beb{E&6orQB_gGb zrn%d8PSA%Wi~LRbbzM%LKA>d9fpGSWE4zO6(FyHj-|lBe{Wkd{h1MN+=$XK%tk#60 zgB?SDK>;0`&|k~$>DO{Zw!!_;(Z4FXkjI1ob<=^9=7WZ~k zjr$wh*8T4yf8n$PPs)ZbudAPt)#!z3Md?QX3F`N8fzU1u6Xx+^n z7e`4nHI+y>I4360>FG{NB_;Pt9G(rk=Cjz-IPn+_V`Qr(Pqq?Uwj65~#Z~X*Rx>Sn zv;n`=p%(T!`%;R77;`2`$=Gy#Bk{^i_)%=!@ukazr0?2OfmxAQzwWFjx{w>P@ru6%w4W}otK?GzP!Bm+cy|J~+ zV|jl+U83@MN4o@QbK~GCHn+^6hKT-|+M({-JS^%e-~DtoLqZzv**m6IX|WoWc*viw z7v?`V4V$Pu&ly=tf5=;<86D#~MW%jQ0R=r&FujZC-1GsPMjNUdpQ}0AF@P4R>TZe<&%H$}R!>4qEQFa<;W4$bnCP+fYkRDZ6ypB@ zlzSR;{L-_sHiN&XU1fI9H#IKu?7zN?c4H;Ex~8P;=;{2Ffh{gP#>BziUOw{~6(Lt) zwQrj=A0LUNw2!Hv?fu}?KMuuio5tlIW0&q$Wp=z8;Y~isqP|d?ks+>T8hH((|GFsw zI6Szx3PB#5_zct8i)LH5&YjQhmtp+AvgKg7Z~xnriuL7Z1rkX89zGFvvMFoYF6WSw zdn7IMve$a)Xb_u(dSl5Oqqt*vm91_sPiVI{H+!#N_n#;|b*grzhu_IQyguq;#Pik6 z*x1z}u1^9UOMCRrsNp^=CDyzMhkfEix&|DXRWKki_Qa{~v59md+1xk7o^< z8XBx1E1|;zZW{9Yw1k9&tgIO*p8Xs!Thrw0gslv+JPEL0lai9)IRPiruy^LAAPxQ_ z0^K-a4(Z(sIka?i&`TrfnxjR8nlkubt?limuP=dL{mW+>`7HlvhJg{1@rg(5cW}dL zpUxEM0BPws+yheubi+M+_E2uxq!yGKL3$D$Ep_>;m{g3Ton16&uLm?uUbKuO`N)k@ zR#Jjc_>*_$SoUDV@>z#0%aQo^(=*?pzR6zm!w0oi9H~f_lX_QHRw@QdhtEf_PYyqE z^1N5!m#WG=I-4vdrHO2(QOl_O_@}ogQeF(YZr@eN_M<^7GX-3DGC_vH?&6MVv{?ZA zu{hD;I(*>+U|y$oYfyN5?XS((qNQ}-O+8594$U*Xd0h^oqIpQiI@;QfNlLBMsO{fq{Wy%o+krJRrb~jGzjcMZmBdvm=15dtt@6e}8OfsD+~=M3Lp`6oEVc z145HhQsAO(fnp2Y%fWEO1rG}^-!r`i5j3AYi_0_ztKDpoj z2W|^_zK-m8-Y9#%Ik4f(<|j8KrIal4x&RWFedOsWLzL|u9j!(7Fx(yfHByIB3k=G5 zPIqHWC6v|M;z(4hF-rstP7*#|Ox?i@M;KW%-)q_M$pMR7Qd*jao11uxX$tUJS8I6U z#>U5MsB}ZKjBTy9gBKk!a_Bs7G0{4efxA6@Ft51S5KWW@>!af0yy};coWo)SUvJ*L zArk@*yAG>bCF(XGk%a$=V%yg@c6~rIHAA|XBf}wi&sPOdAD;ydeB-a2i9D@pR7m+@v zudMVSH$q3=!-n1}ZLN&)&TTQnwk@?~@)Tqeq(Y2@;%y>SDs>o8 zt_i`tlTcMtOM3;nL;;n5=J`U+ry{Tn8J!)fhG$5tqJifx(sY}C=*6HWu)qJj+syVH z;)UF50LhFafVZy7${+FCqnE!bh7BVcNwo=FVn^p*EVbXVFQdjj6$Dp_rw3P(uIPaK zh(2j+s~eyrfH-P7v{WZi0!fstJ=mYBjo&rFWWyGatQhBxKG{jI%S zLO|eU-4eWI{;~2>pFCk=JeL0Pzjwh-DlH-AHaevgi|@@x31?u}2>P1RjpTLUNkVKv&OC>S(;M-{94?c4Yl8`;8SE}`E|hjV;t z;s@vNu-?@R`=v6M)A7TEca%IUXleo3{|E7*=5aIJhm7&?O(GcslE3)}8L1N--%W$M z3vgLTE_abpfk5DjKSL=X5SX|K1cv$* z4ET-VlFTFmaR(uedaU#^W_i>_i)dg>Xnl?P?Zpd^)fX{LGRdwJ@G3DXe3*Q#NjzdM zsCnjgL_S99=a=AZhAOjyM}&9W6Pfd0T=$8&2oHB~ z9$tk9VKO_y^C#J-so?>k_gnn@q2@#A`NP}0bQj>^ipc-}#`EF$|H|MPe_OiD#p|Qz zF#5Ltjgh)GFHCa6RdOvEBr;sO%aKR}(`TdKkqEwV6iIvee_R2^esiP3nl-hxrC54; zdS#Zdf`k=+Zv3mIqvzfo|J%@0!sy|d5;Y+%dH2$vU!Co-S%nHhwJ#-;KXrG%z0B)x zzu4>Z@g5eBCIx&N4w2m_L@7GXPc3|P)Ga1FJl|%b=*yR|!%phB^z`o>%H$N1H%F1M zTKn-IihDoFjdxq`krmooc^=Vrj_LI^;53YOh-Q3C(;jNiQYko_SVc$}D^~ z8QwItLdW$*weXYEqo8Jqz7gy4>s|RT*gQN$I61AP;vRh$!#`rteBT;(@=#YTojLxY zeQa>BXf#hAm1hahi*{OM^Y0Q4{kqf$R)%RiH+%cggamGPm$pJ>l?+;09d)(+xABwH zH|owRx7weyEw!~){CzRo`0`MGrbPXF@_Z$aaz-ZQu&}Tw^G@_57+B0#F(|uIj}S_) znnYRga<+7`30KAGUZMzv|lUTrUC&l&p;X*9esJR0s;FFj1-eRk%hRUqO*<{Joy2cki??fpdetLo$$R3?| z(O1kvmwIO>HQzW`y<(q@n^-4ry0)MohDOrq_M?}(JLWTO(RhEHe=#sWUl&N4gN1cOM{CvZUi*}dt+=Fw+vA8&r`oePZC(^rcYJvuMesd8 zTh97I59!T*e&e9VUvCoI+qLcNt~EC^R-F`$@itlfY=C2_KoF-Tugpp$U!Tm!NYP<5 zAcdHOBwZ=|=x}#yi{fXVg@eOnZ+d1{7E7FTss)FCO$6uVZHk2i_|wyylw^-wf|u0Xp(}jy@uQcs%?|-P>f|5m>AATd zqcw{Y5+(vkDsz^c&MOD|Z}BWS*o(mwbC&1_vIDsAOOqk?_viKLKcAI84+Q=7DjY}8 zk5iKiIIMK(<7|wN9%=cqz?%>PzFU9K-G4hv$&Iw# z-67_G7u~z)}&1EBFS6@?DxlPCpTuS2bN3k(QQ$vN2h|HP^wy!s4G+QZm@woUzdu+8K>t!Pd!_ zV>+KeVgAXiV^2=@##57%;o}M5qGQw3(|wHU^=+ppym__Y+{T(4 zO$bvfvKY#L(E;!DJUw`Ul#rFB`?@+>P9*>GWyzC7Ir{aL|U{7(oG!kKS*op0C9nb#_fTd%IJ4h;=WHHLT{ZZ8~c%?Uhu#Hv+d122Zr zp&%!}bn)U1V&d3GF5PWyEcfr<=jL|YU!P!Z*H^pGF}({24S{KDZy(`j7zp-@0Ka#9K3s(3$mWb1f&5xFNBI`^a_y@rc*6Vq2|0k~ zi`VX6Mf~i%L$`n<=%7imO^Wco0E;^9HVluq-ub^So&W1s&5l*40(|TvrVPnvW1u9MbT(MSU^2aQ;`|=L5B@^X6M$ zUwizTni_`@!p>_B^z&E$y^4LKDCxZg74qzVG6oYtz!{+jea3UMOJXYDLS#;~;v!MQ*_#RZ&>&3;>afHXU1bY~|HnGIP@f&@!vty^5 zEo)V0f>XOIXT6!^jqj7CWA>}D@Z;)VnAvBvcwufcc*p&8;YF}S^H}26zFZq7ZWOr9 zyGn&K+`k$Yrg#OkMtX}@_Wt4L6{tGZEaQCkHeCH+3$aw#z z^+XX;YHCB7#JdgsnIV3x&|^zKKixjv`LXV%_=ed6&Ly_nc#-U8##4vR4T{frb#s;3%NiMrg@ zT=Fa=Tn>hcETxkbnpz^p?W^D14U~qYmUpWy*ir*CcT_sC|s%952y}zv~ ziV|>hnh78$_qVhhA?SL2iO5`I;N!gsl%W|Tg@7x&>i+ndPFms+b2O(-!hM2+!(9rl z-;sXq?uTYyvR&@?QMfD*GVWMvZD3_N&!@@1@k=uh%iNgqEh(!KMNv|+_U&2TK2ohD zJ1j^M>~r-sTQ)&Ruj`_C*C#EgJw{$FQYq!=#&hsm8(57!O_wTpX^TY=Ou_rDxiPx> z>^brpZfv#!O{P*)Vq(vMdNj{Tm>-Yz=@%nKMyAjb{MnkCdxC-<{wB3PrCQ1qJgqce zoyS*nmtJIOS*{lLU&s!P@KXv-I0aa zCh^CQYcVk@tj2=$hd$HE>ihq$LuEXqGo9Dn(Vy>$I=u1l>NeKuWD;hHi^9~xh@c^v zkMhw_@6VsgU0wbR44NJB9S6(#IeV+xJeI>(kosiS=}HP3QJvYNUp{@(4GgR{A83#9 z3kcNJP!FCmwrx>KKbvlHr1ISFh+xwV`y5m7gPrCpymF+F!obvY_xRvy)fcJRRHg8I z?lW&DRd281DvuHM{01NkAJv%Q&wqTTq~ZD$$&vSiOuMJ7M7{d-rnMQPVoqs_@zD`J z<-^UMo>VphIA#QBrCndFqHWPC*fIk@%&f3BgO9gP_jGdgFYT!@6?H0vZ&M{29V4kur>a4eC#tJs;aQ-rJ$H^F1AdhPb@ z*q4V6#;%8s_wH>B=31*V{EYQ^eoE$vBndoFH!_+*8NPU-I3prSeb}Q$oN_@#^;E9M zHyeeV70fi#Rt>{Yvd{OYXSI^HSUyNgd#jkrnU`x;`GGrdY7v1iRZV8 z7PjhpUoT)z7xFw!EQyFvRm<5mSBuEc$0Ue-VEfU}^LQitW7iL;HYO%K1T31neLyj% zCi{<%x9-A;THUV9^q}%r^pHb|0V4;;1U8A(w2a*b3MsFy?xHtAgp?33t&tt*tX}L) zMX-3wbR3e?FFQR(QHMz^>3lI73J3_0j^-&XDIuevXfe#YfO#49^l64tMv6s>&+f75 z#ir?|+LDOD#XhRhGRK7GpP%jLitNTS+;&{^RdaZO6@QQBO)}&(xPL!%p-0SafVH&L zQIV18Q|P^tq#JQ@+34qLxoQrp=>CSFgRJx~K8~WIEOf}o)|XH#d3eH6H^@tsMDo>n zjD8|YpHWA#>(Q$c3tiE$DVuHkCKQ5Y7PlcTBZG&UUPjlCd;N%vyhl(id_RRdidKbp1vE3a|)3{OhZc0X>26DWTwMyFHpQsBX$ z5QlAkZf@O3c}L{^csJKFW1|`ED)*k278ZCSB0^J~1$N z_vPI?Qx})|$ouN30=K>K(a~6)iv699skw4zwh7X%e`fU%Uu4h$aS!Vf2hP1P2}w!G zCABX`>YAD(sj~4pRqmy_)t)Ga^*_HD6jK~lhIiUy`K8fnzjnV}Y0q%H#mc1<`hLo1 z*4GxDAY}9C>PO-;d{wY0E!^5n^WNiFfwY_xTm!vYN4 zBLRV}t*uh^rluxLEWFRpsI|)+{NKM<$B3t-pTV<>1(eKRZs%%F03^$vF*w z7n%=nDM_L@Bgc8isT~(KN&V{vdh7wwVcMSOUMMoUy5lelUs-bkU?HwKCc}9}*@?BLPM(g zU~uz|+Xw^ex%)muMmA;j_Vp>JE4?SbpVCai5Y`Nruc4_qUgDRM~Bj`3uWKZSUX1f^|VrM~np4Bazo|w8A1? zY6ptPbE>P}2Me4{)@OeE#v(lk^sV#CgSd;hs`Bz2)?*dE_*8LjUVP6*@tofSp89JVjl-8l9I{B_%ul7!?`G>o?z>%vPdTbgkag>aB&- zuC$L{k@Xohx8sNyRq$$8teKB}1$evOYhJ}YqP=EUQ^Cu%+yWc!a z?&;|%PA$|frZ5SlzPbuEq3xRw!-eLm3JMBZTIg(Tek3C+Yf)a_q_JssuqFrr9Mu#| zOiaYr>gxkZfeS^(#tPW{`3bB9yPw^0v3IT`UdZbd-QE4kFHX?I%-p;MKS04cLyA_B zF^n-Rpxn%#f}i;M^#t4dG!jNNRM88y<4Ql8_rFD1bz%j-+7QpeX`p*`3W(F>fj?z>hNLI0J3&8lz2bW-S~K%u zYo;gpS(aw8>)xuRq2Z0|*X5Ly95$!LVRg5*N*NeTF{&PI$pVe7tgKWIU+K#vC9qWu zwas5tpeUx`g=PA3Lmz2pXUECOdH#jf!bf47{LrhtX#T){wskPqz(37;yedbxy2@oM zMIu>2XstnLw!M5qpuVlSt*vj6{nhvZ61kdMW!y?ePLTVvrlxn)L&j-03!vj84-LCh z_iSI^mUq}A(Zx#|cVnE*jcmqnx3L;*-;g}u<7;Sa+*=;H&&PK-Ss(c8*Drs6|AvN! znIFU@@1tHOMxm}7Q8<1 z-Z6wp=<4bU2?>Q80o6>Ei8ZsdJlQriu-5PWqRW0MtMhQ}3d>0Gw|LvN#+QznfB-0Xtz>2_YL#= zF1xGLKzV5s_s(4!pN;UQ;{u(PmWUisdOKYU<(S~wB;UsLy6@Zc+;Ch>Ou^F&*3!~E z(hV#$Z9$htlQ)z%kDr~4i(6T_yU%tdrK6M-HkY6#a^0seHGRnU;N=Nh^>G6+8JCGp zn2}@Q-Jg$rG3Kwgmp@k2i{6a6(^C?-RY+mA&B9o@@suAt1}_b@{q5p$iIF19S^)u% z!|rp6VX`rKd)z&=H%pTa84&cSKF`8%S|QxX8eL*;)Ym^e{Ddypcd;`O!S{Ab{JCF& zV{1@O)*&N^neOf+;>n&oJX0c1iXy_pZF@>X+0Oq^a*HlCp{{Jl!NCE32^@$*c()#? zA~#mRbO5-HJ65*79tm}B)%xsoW@d&s=_zg$*TU`WbWniGjxJy9-145mi-p$;o+XWhwiU zd{4qz#Ed&mW8yQF!aHJ0+Z!6bN>dEs3u#5)e?dfGWQZo?nCy{^xM5dXSz0PC*BRAN z{G*_Nncl<^h6Z^r0*D~8%=5%5Ri=MsIFhJqeF76e44-q6=Tz`6RI+sDdta9ZylB4~ zGD z(~}pg<7aC*E42S7o8kV1ZY;m;r2bAK<5IsUHp$qJiRU^x6B)`>=QC>6ywDQ~u-iTa zpAsiHKtl#4_WoO%QpQB>sQ-LJa5?G*RlKQzfx6PReyz_N^L|vH*Ioh7yd2`qyO@h| zLg;5UZAnS2x>e$+yLU&(8#I|I!=v4z{a|WKN*fvoWo1>*i_#tB>e0zN>;XTMuCL-+ zCtx;Q>9;Ur3~gD-JTA1h)~TF^6)kvn{2?}0+Gd^Ja}q$_(;%`m9cI>5UpUGgSBCW( z-^==?fde$t@`hFWaI!ttTHgS8`GBsM?wm)DS)#}VoO2zdSLAkMNJLl|5vXXv>FH8w zpU(OlWT$14))njYbDy^XJzaWGHU0bJXI;+&%ZVCD>Lk|~xcqOlZmi!lFj z59e2Y4M8r^@t>li?i)U1%iZ5g`YkViHIQ^|eceX<* z^XBi5H;`pcEAOA@s^&;+ZC=ZiVrD%}c5MPbBC!6ephwx3VsB&K^{&I6E|kO3uGisS ze7&?h{ciP%Qx4EkT=GrZ5XxQjP%@3A;P+aRV!+gYS3-gZfUAuSiU{T*;@hz%R%5ge z2E9%WA096dKGxB(vb8mTBI2xDsqx(0oScBetLv+mDjSb+5LQb{@31#)T0xghbbI?# z#*;M(+4!pMCc3pPS>gaU)b{?y7H)=V*S}=}K*QN0ieST6NFU6p;`)_A8*6j_5?eE>0f>c+NKAJ3NlQyRA zoO3cCPG3G10OD3am2tuEBe*AS0sCllA;?9HxUC3B1oG zz-Z|A?_~6Mn5W>I+-WJC%q?Rjwgb%>S)fJXjo>RMh+K%mJy%ct!LqIOJ!`8oEGa!m zyGkTj?sdjMpsw*=g|WroPp^VXfYI}K-$ky|Omk$fZc+)y9NnG=mTH8D$5Efs?5{Up&o>&Z1*q4j zIl1L2Mo(apXh8urA$;{Jlk>jy{^9P?&cFcFY~6~NVV?`?ySiAJm_q!(#LZRX@;DrZ zf#Y*3xXIrSvZSwANQ$8Q{&LN`6)oJbu#BcqRaiVRIiZ>v7lO$J-M!VASJ6Xdc?vXy z{-2vUt>A2T=6B4q8fdRb;T*_0lR|;0$)dH-Mnq(4^W!W-`AincQMZQ+1y`@81v5e1 z@Wr?xneoxC?3jCgZ6lSKU%fsO_!)L&t86;+TveT>rslmKdSzJ50~>G|cMz4k!%ZKvh^x6yWo+sOp?E}PN!z^S)6^EiUl!*;HnH#axae|{;a zI%luSg!u1S*$9gkrG<_f9NdEHlqzEcV|9Fbv|Ui(rOa^O>$E?XKji2D_sfGW^MlPh zLe=$)_B4dHS#&56C;M&Pn`Ya5&vuJr0qyw(YWCzN5ffB;W>r8rDlZT9;ef$)y+v9K>j}wUF21lZ&^MRI+`=y9;D98kuX|f; zX&x0Gu4o>MR#;U06zT<2VIQV{_bydyoPdglgpyJXY!2?=>3qnbrsBKFv5hHnG`cL7-#N@kef5w5^XRLmj#C{eF+w){QsGvHC7lfKOEii#S>cY%Rk>6}I< zhbG7}k0YUzqchJUu<&yP!;@1uK_On+UXT>=aYrZldRVPmA~nEHZdeWv$G&~-`4<4H z3F0VG4;~A(@%{bQpdbpUsBXK*o^H`#O&6Hn0|nt5n7047T1TI`qOOF;;TH}{=4geP zoaQgONCo;;g088?4mbizg^+vzyud@GC zP!uQyRdw&Y=Wv+sR1seq4QPMI_eAD3iGQC#*%+@6-tFOLlS+}UYB{zNBYwp739MTh zN&UmAS&rqxLK80uy(xeBBfK?onFI5UJ1xMb7S{cv$tiq$A`GMLGFlb|fz?T}gDLsa=znYnZ(*Glib7yfO_ypnDd$*ox;q~Uzcd-+5U#EysylSA{McAUnefG+!y=oZJUc$<&xZ;kb6?N{Rg(p6UZ3 zAuq5#X=!O^XJ?6MrAoZcs(dc@Duq1HD8-OS_h!QynXxj zu80o^VRa1+GSNKJBKOTQ=0MP19G8tL~vD+?0?0|ZM_3JSN~Wp!kk z-OM#rL4N*dy)P>x#i=PNp4(kw0M zht4fK=ZC7Ue%n`zK0eq2rRF8r+x|p!l!ESRmF^&CC5reqyuS^a>{f`^u>tV)n^E5q zDUpk#<$H7SUU4908Ml5hAIR3ObXDGRzgi9?BKu!r&yg07Gv)V7R@4nPcLk3ZH3N`?-L}art*HLOjbBpDIR}MB{ViR z2H6O~J9qxXI*)a+kFwuA;=xSLbMOBi{P=OEISV;aXpO)FSFXZCt$)0>uG+D|L3$RJ z7ZWv>!^(D)w3^>Y1B zSCZJ#(b3;|>eewcW84#e=(1^uv~za078Zaj1QjQS%k-(cZ`Mi~qMOjBD?r>5$N?uW*+-U_gXFliETcpu1xutn+LMR0^ zsy!={lI{_xtEt62uzgay9d-DbA8QVT#kDnSW83tj9=YV^USpcL|K4a+etQ@Kvil49c(LU}uyudkz_L4lgE(0bfy z5|uMjjBl6k_lz-Yo#r5Q+@rV%4p%UM4yW>&MQe4ftf&c^W_Ej0g719w^E)_ZPFMO` zRU#3_OcEFr?4>)^m#ORKw#UH}uBNH!zS(pH2Cckx10=%m@T|$m{e5v39GChpSg9y< zlQ=um-Mg3jrj`N=&pl<#v#pSZ#xl3KSis4GSje`Xs-R>fu?h;uMY2DtS1{4jvu~F* zV_o^kxy`N}=}|S*T_bC{xoj*Mm(rAoR8DFb9gdTH3`{u{Q!vn4|MddvyIx zwq`@rd6M%u{jqJ{y%XDy`5eB>7A{@t>A^-285#M*BH+I`+?T;=P#X;L#Sb}mnHL}W zN5y8JInNUW$zrgZ!1^aV7p1R%obI3$%I5RI)VLTXp)4=|OPgMGWON;&K=~BHl>ju>(7ZxN?=XRcwj?QBgDXZ2!&?0F$ zAkNuZ^X|eiBi8^ep?^4A{BWX(8&RlGFvS#?Cap=UpmkP|!zdU#`rbn0yJK!^w$T>e zBV!u%_4U$U*k8G|(mWrl^~L9Rm`@0N+NXbdoW<`K)2&+yvr&f_?*UsoLrHH6NfUM4r>|c#Qp7DS z*&-hgj1DwfZ0z{Kk&%>dTImMw{su*XCL$-Z9hQa*F}(sZTEm7o@5@F!n{G`5nJ^4!J}r zF*2}7m$>A!^X?UadlgJ^1b(j7>Yra*5Mzd7W4oyIieH!$2V%*7^k9D?k;W4>Udbu5 zH;BVx9!0Ls_FJM$in+f#gW$cf5viy5QR@MeuxeZ@Vao)3U;}@guZSbc@?LasLPiw= z!|&e7;@!TM|AQUA{2wd*|Ke<>TeqRbdA-hlxj#dG-5aBjK#hC4$!z8QBiX>#xd}0V zjme!q&(G@W+8P>^8$B|&Hthm|qZQ{&0e^;!GYZveEoI5~t6ovN_({kgY%YM*HX7#N z<~*9&alFz=l^WT{j>D|LA8so*t2~YGX$A8W=XTXYz|PViLVqUQrRElX{1_Hbm7o#^ zqO%tuH_pxXEWF-cgsRB0 z0Ug1K-E7E7L`1a8AQX7+tg4)(CnqPvMoD?(y6qPao<}ys@xYMF(klIQ_T#%7%|D?> z90DI20(k|6Za8znk`j9U(;K|`>s|0)MFj;ew)&GQ0jR-tr#iJpMn>`OoBpApJuMMz zz=f(Hl6YAOBRG}P-52k6h9LGY(u7x0OJW8<5>7|#A=>5#c^6!?;wtXMsPp(t{IydX zftEalbR`ceJ8a4aHr_@<0QitMAJ{ziV0zWS@3zalmqae&gR`-{J$*>?@L^=MrlPJ5 zK_n<12jHm=3Rz9Fgf?Bqr?fCMM4@y&c9cDs(gRaYEX;}b$A9(JoP`|Tso?4RLwOZ( zxw)oha;7B${8kbYlI=zg9!bd-Fx~8Blh1K7gR0s|I+$%#{xv6Kb4vp`r5FHYIU|?B zj@ik$c+-0DhaOnV6g(FD+dZ=WCQ}W;lHtrQfK*C*(svf+kbGd~eP&Pu`Tg9@dxeQ* zY-re<`RVW)KE8EpQL$@@*C)Jl*7Iuey@1KjYWe<|+o4A`Gn}EW2d>H(!L|pRM#v}u zH=aF*bL{&$EUeEvgUsjZl`9|#kH^Hs42OHGysKv^?E`-$@sD7Qvjqz9U;hED#U2h+g{(N@? z-|MrLJ{meY`}ps1adBuHl3X?SRrEuv?DI?{oX1sOXQyCJedA%TKer_T;=#J8Ipv4} z09IF9`-Y-D4_*4d z`?cTf5uO~}r0=}D^Ji&hCV4FNN|hYj%aLh4DgFZE^h2ZUdp znhYvS&dc4=+Dy4TRdNA`Kyze=`DKKK?V?>I2CESw4H%M1+n~^U%B8ZqhtEWmo;)-2 z|KM>U3d0kN^rww&{C8ab(G(s3qLE9u)Psq)-a_E=vCL}~ym;IwgV23&)xrNy#fu>fqr1!_h|->2H)-y+%}CF-J&$6OD2Bi{5jp@^1>$ZW)lR zF?vBEcC^s^N6$^`&?j3XqGMG_udd4KUgg2?E;1>haW*vkrp3z3$(dJNtP8l~5TB~a zkhAK`q2j8oon79WHzF1m7GbG3qY`yC1KFysT)UQ6SV$aLucD%I;lc&5&gI#POnYb{ zYm0^D3oFs>IUI-QqU;pcZ7Ug$ub3h4gO)T#3z7WuZ;S zkdt5}l8qf^x10W1_PrqCkI>)Z8yPQ(0*va^N`}94xa7wB*2faN;0kOxFm_X*V@K?L zg~LL3o>2=#zlBcsr!+{vfBzoy$Ym31*Tr~3$S)9`J%B9d?(&eb1W=s_KOm3~oR$Yi zimj=DT|&wiu*#o+|6`P+d0=4gU&KtzEO|hVc+YU-XvfL1kfh3KrTrD=RY1=sT1nn% zw*KTBq!0^2T_g|{69byXN=KIpnH_m~dB-MkVq)U0*|unY=j?ayM0ZkApCcj~Ng*nb zUG?YnC2X~D?Q*9qh+{y)+tSi9N2~N}RlxT4Ht*QW+V1YWii$@xG&8`vT=v)XfNk5^ z+wZN8YAPuexNObJ3Lc=66?TC7pPinV_kYjL&+kE7RNy3V_rymN$VM0W=v6qc1Wd)f zr`W^y*${M~_xFPYYh={>=@dHfglzt3`PUUoMpUE3=rRUAgev}-%74bVlb=gYMVMDv zP!JRy_u&J#!#qZ0Ye${oerF;!Az|L)ND)xU`$5jdR*KCnOklf#e#W??NWYq1+}3T! z<=pxDT+Tl{Igw;0QCBa-#U0f?dFkV$!u^~A_bu=)x);uGB9zZ4_zIj2RO;%-eF`sX zRHD&Z$jzM{ny-)rS5;Eds(6`O^v=%@buKBl04#j2udi^zK#*$|&Z@29@k_)P?>zsG zLP6}?=1r9{Be8Dl;9v=aUO+Jc9_3e2Q2{B`#`junkd>qbAbZ_MuTGz%m>7hCLf&$# z@=J)DM%~|>{pPn9q>veDX^)&&Gn5!N_Nb&#An`XhOZ=={N@%q_bJ3qF+ z$?kIQo68T!t4`uQj$}Z@^z{p8jh&pHP8j16YaFk(1AcL=cNxNwfP0)#8u9#MyxGr)7>LBw`4d@>mT}uo)&bO3Wl)(3v<*uI=y9I7q*GOlC_H1Rx=_Gb zc0whCVvepksr2+{Kvx8px=y9d7#jmSA2J@H?iX;g%zpA@_p|8 zMVV>z?Zd-0btpc|VZY+>RZ$dVfe&!I;^Qtoer=uj<}xnwD-3czb98Jh3rV1WfIz9b z*1&kVbBNKJ^u7bgOwZMMxVZ~c4l{cj+9vVjJWh57 z&~?y$LHW?`8%T7!v2x~D5hi3i9ZKQSk(@Ky5DgtFGwVCM2W^27$_Jf!1zh*OPEM|s zEOf-xZ{(L4Wj=7R(;g{Gfe41(C(Y@DEh3bmsj140{WJD?r2|c9B-1K{NEeqorD{Ae zdFkgPoLOuW6J^XI`5Zy%zCGc8L4nQM#m`q7$D4p^*Y5l~&)CaRqM`&JrD!23UJx9N z3rYE>cKPVhQU5e(ngQd5mxrg{Rc7+CD?dL!C_B-Skpv$BVWlfs+_vj(i{>@r1SUKL z`82T*N@0}VA{0QQ%u+b~roH4OROn<=aLm&(488mZ1*#q?m4iIQWO<`@}`WV2Ht_dHK_9HnW7%nb1A^t+bRE0SgvYAc zTIt`vw>C9x?Cr5JFzBf})%g)92Pmfp$M3ZBuNfK|0`Lc!U>V#*fHc`HwD;&9o2Lj3 zloNb}CW+<2Vn_->%m(XXg<|E;?qo$^2-txRjnJtu@O>5t`CVKMU zvH&^c_xpp%^Lqz)4f`@YQd06d1fxOk5Ik|1gTv7WPy2^q6Kk&8cJufCqKq4@v{&msI-&~ULe#jWMD z?FCyaSN%z2$j(Hz4%VR-XJ%3ahgEH;C5XMwjy@NfzaaV;C^--i@J+KA&#xW{UvVnr zOx0+^aml#Y6s(V+KCI(SCJE`$-9}9bmh&pT*g;RSBRIo))xl|Xa!qKkwe_tZHQ~K5 z#z-SY^k}Rf6o(=x4u4ja>MW;9?KMk7zUowtE%z-+TZJf7#h*8-+)musc9?l81u+qb zteefN>?Cp9m7YKk2NRRzvMV}CB(t+8b+{!QKWq73hyAz36`xmbQ~eWXHa>cT zu4DCNT+hkYh?!JuLL7H8Hy1skKH3_z$8^}+ua%TIfX27`nc>VGW(m#|Fts~ZCQ$NjuxI6a4~>2l*S z5J9?Kbg|&d5b4hZVChxt>zWS2f!@p53695-;zDb2@0Lb|LrnHKm0~6@BD|m0Y*2Ty zW$mPW^7NEd7+`efM+o1$OZRHbG)w-f2Dv~-)k}g4CYRdFUkP?MUwz>I4DPJa)t7k* zXR3{T4CF$&c-GJZ+n&BN2?@_WW&Rza_jIq~YUDx3$@23TpP;-Y5LITO{yeM{kjtUs z$1C^v&n`l559wFvaJ-kx>^A-E8bRcjXZd-Xa4&@AKkGiO=N5yNM*kCFpYw$cG2XR1 z&|fTcvTd)UlL(OF^k@v_u&kz`9S&VNk*#bG55%y1@vHWctn?;@Su1Yf>M&*6Ubv9x zy!uG#oTJ^npZ^i!FVwU;r*lGkL&H^cANTRdInRa*`B9($3vU13R8%Mq%@gzQZUnnr z5etJ^gosVDg1D(E#@=56722x|I}_rLc4Gxyxge4zzBm&b^LoGWpY%ewo0fWd)FYRf zP`Zw}_ED+7DC_o;?a^*+l9(cupu5vVjZ^j)1$E#-7tGBA%blr?j?Q8s7hh~eOdJMG z3mZ?zYq9sT?)V1?ebLEMhR2^hZwbFAD$2IIawK+t8O!pq42DPI1kcRaju7WtlS>F6 zan@p9p73?q(okrE$F;RzGPYnAmuzu4-anwQE||ieo*~{0flR{$74U=hXkJg~PXeFE zNFBttALEqGBoVNDEHDA9@~BQ};utggU6WzD9XHRi!3m(G^riazM0l zd4GcniPX>j+bo5F1f|ZM!@xlN{0;-pkOWL&jBGh$sNVB@3aqDtO=;w{t3#B8d9k|G zbg2liu{G$Rk0DvXzvH<#$t(T^;JK1;FN@9+6{y^S%vUP0aq0hHCxae z`c43)Jbn5Uh~^5qbPKFYOiWDw-(6iFneIfiKri+A7X$bC?p-}lRDknCg1aY0dWtFM zuX+9i@6!jZU+|Q?0b$juRR`ad9y)l#9x|>*-4h2EQURRj$5*yA>(U zHBh5=FM0@t$i}zA&5G8f=(p_JBkyyn_oOSn%Nlb2eLb_c*ILJ;(Cf()xWNidVq%r4 zDFv}_T|%9T6|MS z2P90VCMG5_RdX(TgZ3gOD*DkD4cpNbR)&Ma_J_M7&4GrM3PttLio=0A5)=R zH2a?DU}4Gn_HDX5S(2NZd)eM5z~z&VK3L??u5{5`KIy4+yr9SF z@xe6x4N=<%F+M(*qf%hmE-o!W?KFA*JfRJH<5A6{h5A=63aYi9yxOR;CRRhk3QNn_ z(9aH)X(k){8)NRLnzOT-;jEVKpH@HUFC6VvLq~>aPaqmSxSEAcPQDczTWNB5n(?!oHlhEAwaR1cT*Sx#T<+gI10lwI`_S)g~Zx9@F@+-q)G%E$U%GUHLh9w{ zEWJMC9WbkG7#@7XcqyNjK2469QqW4vi@!YP+c(F2;|tz>p^1#}TD*vI&s_^!_eT+p z_OYDF9ZWffw*@O`>7NyTnMKGs-@I>(gRmGb@Mi}3JujM&kPva_T*zk*>X^%1l^kZ| zx}lk?FRHAp4E7wf!XWPO@~RdRLf{hdz;&A*0rw|()i_mJUhdqSe)p~1i(ik##khI7 zD+{0hng|G3eHTk-(6Fc(Yt+U)Sb)(ugXp*$l+mGJSHhbIvA_FlPk zi7Or-;YLGfU~iu!=Fy>(XlZG|t&-e5JT3^cMueiD(ci!jHZd{L){gbj2fylDp(#`_#GmQuZ#RX3 zYav>rxXmGs5lSmH`# zS52ISQ`QEy)sg-ED12nF%rTE%Om@=VhL8xYX*a{i^uxQ|ot3dsq{)4d4S5#Tj!bS1 zeMH#2HVuO_7=o{z%o0=%TQ;8Mr*rMSlWu;qwPi?5=Q{Yozqptcm;6A{vD~7mV}E56 z=bH4JAPs(R&kvH9Q%TaDCqs!?<%BQfT4|&k`jJV5t|yKW{&q( z0SJdB+dD824#36LtBb`SB{0%eo89P~2;;NeIIxkjui^+>RT+LR#qv>RpJ?f!XiGIg z=fyoM1HU0XqZBz+n#=T;3c&rssV0((PQESM$nUOJFx*(XEqIR8dsCj`a5Tmzl(Y5XWlh{?^dw=m{WRD|8?P zj)b_P0!l@5+f6W8E*Q2ki%13u0RgB@hdVpyeSOZw#iY)q6c6au zzXY9I4-?{3;vhlSX5@wy$&eNG(&^adR|8p@qvzXQi>j)3o1jk9F|~=kiwZQq2wuKGas2>LRUe2R89> z0S$Yk@ogRgY#;W{PDhQ}t~}(i>gdYZ-HA!vGb3U(F}b(51Ip&6jVZ)-d&>l&PSVs% z%5amD%Ub9P_gF3({{DSBnVe5;;GS6*YLhWRbYMk=AeATHO@fb2t#i0RU%o=))a3g_ zLnE9@aQ1h(I#U*dbg6o0y~n-F?+#y1;#%Y=clr?y=%@BNR4~dbCI3O$b&QOR9L7n1 zY^#g(QmTT&H9B$lyictMA0LQ;Z9td;cUMAaGCPf8G zQ~tq0Bmv!QPPT4)hXef3nQ>veM@Ky7&Th~CdORmrF~liFyn1}tR{(q5Z5(now)+-Q z?bqZ}l$hYsDX3B3^R(bLi1Nb|xpc<0Vy*estSqPHu(}pUDt2%lJ&J!SYdIY%3Aod$ z3JUtqpHsjWA))AS^xAm+af#3AGORz?j$pe2CUL_1coj(FH=&`+OH1DxfJq<}%e!|4 z0nnDp=fn=uuEN_qW4KvqcRPy0IBd|5WPS;_4ANla{W3ByMur>?5TU1HO zItbYA-n$3#Ho#02wY684mfS(g2OP)e&mst@l|W`eLqlT`g3<(!Gz8<+*VTdGEg?Rh z8#MhpJC4XZhTyiDw~2}4V0wm?2SUXwSFXV41MVHzjN`N8b?6y#$2wjrpc^!jiAX9_ zkuNc3WMmlM*Kl>^K?sS6N|X|KiXgQGWQ%4$lcl7kK|subM4;cmymsx|rF8tDFQcP% zS%!%1*@;_l1}vhe*jP^ZNnr2GV!1gv@2P)ymyt0I)dCU`5n&6JMXCCaIeTzM*RG#j zUm`s)b8%_e%XDtC8y!O%nR4gY^9Ot<8>?j!^B8Z5a4^+RK`q@qG4;mB%0}IkSF9_K zbD1Ykq%fS)DNiYFbOH#z=E7O?1FjTDz^lX2uq(bejz%t|Rju||d89?YoB z&&agdE?WPah9;HJ$zol1HQ6lwcW08Hy7r$nN;*7OOn-v0v6e5>BF+S2Zr3i2TM)G` zJReb#k)ca^dnh5+%2-a4JJB&X817i07_*SV*Vl#hqpRyOl3%bqBz^xri@H{0N=(dq z8dFM}moHx69%`#NdYv4!dNx$m9BMs@w>E$FjCL7VBO3h6+pYvhyGfos0YZ(x+wpVU z%G$b6CE<;{q0tlR?{B%D_Z5`vov&625YDyF*vZOzOw_6o+`Re0y2clKQ`_%A8)S=bu>2<_#By=7*4+>d2kC0>r!g!?Q7SH$7|KLPxsUAYV*i4)=f{7 zC6-{3b#)1qyyfi+70`IzndTQhRP|W?ON#tR;q$)>s%T?`x|69(R8d8Lav2dm(^7G)r$EWYq5tGwakA96HR01} zX))|ERJMPUHT6-y15Yw*gKMLWUQbligciYrhZR{*suW`AQoktDO4_o$T!L4iBT|O%DU9j`9Kq zzQ3pTi%`|~z!w>7?s52%r#$hgW{BvfF7SGml$1EoEer6If9uz&jeGbIyP&|sb>F(P zSSO8nwIHW$TCFPUqb<|JooL|zj=+G_hIMANBRo-v(Oh2YfYO{nv+4?_Ps5kRE@;Q#v?Bs zg6pLotHbr$ENwrno8C)c`}?bb`%+JNTfaSuWEclKJ@wj1^e3`c!(t;7WbWVl3g$RE zwP2}KqCJwQk;j~0u&H%4H#1*s@bmLQYs!{A?{n71*ws&SwS&kis9Uk$x3r4pmuB;rP3EOUb!l4wi6Ryu$ zz$mT$^>ghN_XPRO(oud$$e09`EIg8niwjYso`A_7GAzAU{*aDEQq(A`fUF6>8`Hslk>A$gZUp1_?_I;qDkvERb+P1iH>#XhldG$53=Ji%tfB)fzO=Xcy8mK6v2M`QYv|o?y++PWzzQaEAr&eIE-NiHknL2&PLJv$$H_^bB9z^J^X6n}`P}<}?djrW&PR_dRXlLRDYVv? zmp`k%-bQ_wig`SSx5N~@NZL?3Ra5>gipci7qQ-@WVGm2-o;VrQ?O-N@?E6iNBu;FmD+%czwi3eSn>690B*|xX@@7S-9CV*>;*KCO5!_l!m{P_Oq z5@P?bg$)Zpu6i$xTKG?GiB=U0xM>mD?E}x@--_if>qN%Nn#1DU+#WB4x>(x*3Y5rRSXX}wf+r&$qb zpQN(7i4J*{V{$4V3u8DD{H?38i9MfFiLm0YxIF&j9~T)p1qn1gpse z#(@A=n`Pj~kGpJa8=x^m^sTJ!#!933X5{j@td*-^A%ObR$t5!oUISL06Xc(uhl}3L zv}C<~yJdKomyyvN`mbA&uiHR#Jz#Tsw99J$;D(4Kx`7A2#RH18ExCcuJ8lWS9Xd@YE>HLC%Cy*r?%gxQ*mHcoUR9}$a0*K55_#m5`K)0v^EC+F^ zH=!@|4|$0vvNWlW(`$M#9?<`uL7w77?@ebkU|Zmd0Z2zqml>iemO$|=m^Sh27aK_7 zKuZErJY16dU{eLRjtB!G1S(-5mrzmo1f?FcCuV~_7PNL3-IPBj5!lH<3fmkl$^{$^ z0Jq-W-XLg}my_EAbpaC-DW^pYXtQe^Xc#AC{-p(2D0g{|C-R384kE4={=8jBe);?C z?0MkjD=y|@XGej}$^w*?QD7L^0;gGdd3jV+)J42&Z*RozhGS}GdO~=3S9>%)ihggd zBB=i$wMg*cH8DWia?;aZWSfIs4`3{af+8g*ezy6N+E3vLJT)S$EI5H^*92mnga zA>6{(*SEX78~y|ip;F~lfFao9&~eBU?wf#7<~KCF0Dlk3a>({@6cJt#!C0g|+4WNx z2=){id2#aCPTZH>=qm!pYSK4Dcy_ejyjhf!k-@^moY_9i-;I#||Ba6x5CT%zGs$D^ zr>p%>_Zs^8HIL&TJVg8d*1saK=VP@f5Z)oY1`;R$C1qsZ`~@Weoi!}2E-S-FK&q{R zhJlIspM9*igTrz_zVuT3;k5fHRk4}UZZ zfAy*b7zKC*Tyh?LV`JLrb_iCwjKCWl7#O&S--S5b0K?7AO)y+Z%F1?jbZl>I0KyY) zaq+;yVyP-C<8|B0Y-oTI%1TmF(o7fC4{wQ>ye)JXtIe*8Qp_z%q8*{WbxVW{g@5;) z=cig2p2+i;t5UfI3NbmtlVjgyApzh96{~e#K0rnaF$*s*lMQh~UlN+ZujlUPUG3YyGN{O!kU^i2xJZ9Qm$1^SYuP2y)abr z$LN#eUI}=NLDLBpq0_fQjb(=K4kML>Wq;NiqcZq$$tBT|fBI34v`D+=AvZx;kDlJkHM?$&y^24R>@tSJW6vOMLHT`W$Nf!lDT| z>F?&dyUREhNiht;pJ}fG#Bp_-Hbq<@eN|W!vK*EX+bv^3goBe4R8v7+IbL2m$h#Vi z@zGH%#LZ2OPWGtqo$xLE-Q~U~#N>5hV_sXv17&4?Wo4HH(^QMJ?eu>|7gwQPbP<4E zoSn@))2w+EV~{Y@ww;(XXVf-~BK-7eef$8J?wKE$$r1CGPq<7_B=YTRRen%mN)qsZ zte(h*hRJw6mae3#M-JtQmj9G_Pj$UZ9ut)>my+PqNx}V=Nub}wieXX2vYHmn(XHPB zv}d`3q&x7{pcwEw*t;*+VsKVOXOQ*+95GxuKq7|7^-#+d=IbNS* zJyC4Dj~~KKc=IeFsrCl4wO#ToOx58ztOv}Sbx#%TT)SyG2`-xxjbw@%1i;Dn9C)j) zra$G5LN3jjE?0XnXeIX+iUa6o4xT;2AVs%{Pc9 z5MOAbjfn&VhC4eckpS$ESCF@bQWsZp#+FCVbJKgGAzLIpaj3xQ#nM0^o`~cF^0uNL z;(&BVZ@l(5B&pCG(aX;-%*RDoiRbwS#J{d+@6CgRn7re?AXeSGm>3(s28bA}P1@`x z>NMDGCu@KIK8B`xe2@VRVP8U@Ga%Y}wEMi9_R>FP=TzM8TROm{ z5y5b}{v%pJLN;;MSf5%_`g@Jt3?xx2($Uq&Tzf-ezBJ0`!Bw&AOv)8?sIWj$sYc1jjHmtm5$}b$ANOmokNG}_@(eZ9a<*TXGQ%D z`?ZV1H~NpXmf((R!PY|qkDjE!e->B&`o@yMw;waGi3*0qM=Q(pe<*P?mq=M1CxWfO z2tdhRY^s3#04#}pD{ZmpGCXJsX_PkVXCn3E< z@S8WihP13W!CNZHi2!csta8~1YAbIGGsT{6wvD-rlXT5XeKac(vb)vQ-EH-qaDa@P z39u88tn+$6p?>LdQF~Y8^c?5XR7;zb)I%pHpPU?@w*H~fyFUA4tdP!YIZ~MgaHk(0 zRILi(0MaQZ9(b$_PC@F_&yLz#vELEkTAn&9rwNL`ctHuEY#>%?eqkYS#O|AhBtwp8 zC!80Ey2gEd;R%0CqnL52I{UdW<(zAfH<;qKeNuate1QTt@#mpK(*8j9toWGBt)YVQ zfI1%#u8PuGzRcOq1mP_>4)6)0)&FVn5YR`o)4>{{m%oWcc9Y+t_t#>NUYgLk&tZfL z)A7;rInwkk@>T7D6})!a#p8|9&?=%;Sac7>aX(Xzi)w0yhL5u1_10RfHOm?H0;!_v z>nYGs`9VZAIC8A)tStTgQ)XuJf$L@vf!jit9-lWqH=oCY+P-mbeY?%jSmtv*Vc$T7 zZ|nWraM-5!b=A`JqDj*FXxD2NR|jO|mKv>YZAk<2$izj5A}k_8iqO)D2l!v!IF#S* zFH$dkpPw&y$7HNX3mx&LxQc`DQ*zUreXOdQq4F6G4L!9XO2vYuLViIU;OblQJuxTe zMyfvzpYAtmY-HkwnScsgZNDm{qYdqfx~Yi{DpHe7Q(vW_5pQUS-#Y#I`*%&m)}Hk1 z8u0P%`&IBFa)&sIuo8hR!jwD23?w+D5=OFf2eF=sX{q!aM1!`&}351|Mxcp(A;vh zMii;xCs=R(d%e2RUGEnAOC!QB!mmfHDJC;B-@mUE5=rg%3lj(0?tgbpe;2kVnRxh% z5|&34enRjUy{d36d+{(X#RLxzYd&xDho5$0hC)meA|D8e9+Lma_u#sZNyNnnB*gL* zYbWJ zPmZ@bSV5ukERhl#A@D|`yo2o4lY>o9!HLmP&&BR6AZaKXrQy;km>DW`rSBa>^Z_0M z^5%oXLy&YMP5To*U2zNBhrzWULy)GKP02$LL~EEwb}gX!N;bndiKi~KK*CM9FW-ag zTEy1L$s`2D7nJkBTqD0YI%hV;!zrH|8lob=C_%`=dQVQc0z)#VWj_RQqEPejRAZJ< z7!qguQ(fG?d(C=@0ztz`5I`}5P=g)RAOTtvyBcj!nN`*W@Lxr4-MR&Hf*_qTvs`kE zR_yoh-}!uUX@UaKpFz|GR?BFu3oZiulVK@zA4f;-_dhT~fV4qEcz-&U##EmMtwU#AN{@W(a|G)>VMV=e_L*5%~;f+n~ruMK7;Y@JwK1 zVX1U%A9_{_J+X_-V899N`SnY7$%Jhaonn;jff*VV;A;KrnQKkKHBNk||Dqu}t#OK_CE6A9|91DGhPNjm(X}tE2YeHB_xuUP#%dgLfZ0?~ zRpqjq7EMu@d}mk-PZ4$G|W-=LzxMNnTfb#--(j*=tb zY?kE$#S)5dUfv?)zU=PoOfGIp-NV*_={>Xp_gb6c$hoYDk-_0%=r&17Nl}r-H_A-e zDr7?tHO=`#SpV5GVtoARg#~m32L~sU8QqDqwd6K8cYHa{Fd!F0Ly-YeTVwTy^GWZl zlN%u5;&7D)KM3H70VVbT1Bm88Y3k^(goIUu&HKca3)wUGefN&~+0>&;fJF2Dh<1;P zvyX=;7+gyJgtnO>sE=U$l8nDW0t_pmr>BQCXJR7Oo%gdd8oY0inaV>RR$qS#K{lZH zK&Ux6W6i}Vq0iF*rx`~E4OwNz23ODu9^uZJIP zwtfBbB@?^^pFSnZ3@Pa7fY?y{tDPlrP6?d zDo>wgWoC|ka>7L5T0Ld{y+Mr%5EexPx>^qVy~b)nvS@`I^#)HjST-{jT7M@c8otBrEF)zIYWvw{_U8Ll=>kM|ff@Dv5U|<_G?nCdH1-XB9zrui> z!fBB1w^76u+HRef6QoPjS$mRJsiGJ(6}FyA;mwniw7qT{ZBQa=qHSlU`YHZ#d7Qh; zks~^o@OQVf8%-%BI}=}DdOUe=`|y=OC7dUM3G_~a7iS#Cs)SG{M|FyUOU_u*JuNi`S@h;?BysOq8EB5y0 zts%BcDk#9R-|cK? z+o&?!1e(e>Jw3c)cf{Ph(fe>t9)7}n*mAU5ES`1Z(naGo)5bc#UEkR`q4~-2$>YaH zL}?rs$N4LR)ZRJCBN0LQl%*^3TbaqphIuOU>q24K=L7lNR_biW>uprwAC{An<{p@d z$Hq@23Hca#*1;Yj_jdZ|JF^!Q!Pl;7w%m-CHi3Q(2oEOK#)akDyG%@A&C5_@J%uR? zfdSqirdgk>;9y<<{^KnH@Ei~{5IFzyv@)p})&|sk28~+r1VKlOi@#?-{?9HtvDOe| zsU1UIeSNrtUH|mMoIVXc>gsn}*#1YQ{MHZ~u<*K_sG!nK;3RU z^?~?5y*GG+wabhHv{|Uw4Sz!K-CuP4?fdsS%r2_DcMS4^Y1Ys1T*T%8GHPY}G1**_ zJH~_u6BzG1|Ni`$mf=t6pFcI8f@4RI9cjHgr)c~liktcKIv8;tPH$E#XTJ#zdD7Vx z|GL%x=;&n-0mTi>Dvl1Ez?Q@5kbUz+mq}q!`z=;>_Mkg=s#tVB;UI8c-pkIBh~~qS zb;wex32d`O^v%t$AXqIYN6Vau`X|SZ?kufAo#5bNqtxC`LgfWHGczJ+7&znyL@9|} zPpUV=h1P(8qDh?h+U=|Br^>j!Sw+VW`#QzodjFW@z(|AFbO=$0r)To+?&YGPknEaF z59{9*D)CjOJIs=Y`nzEI;qTVG#s5&Juw=}kH)!6Leh4~C&{=HgoaRUV%-l2KMB zbc6f(NSvYJ{h=Q}gqWDZyi5Y8-*LB!85s$67r{DpSyK^ufG;FOgya?%2j)-_LDvsp z9EdwEq1r&QT&)N3BAsezV-`J{^MA`R_^~AvgL5bbNPu<6+0JA!v*hb&risykmK+{3 ze#(Kau8N|HNI4E5b52iSupSE<^atj1WF^2sUq-E$7aTfiMqj3v*Ik>daO_M>!@|<+ zd*{!q=Xq2EJGoZt^0`NG1_x;s|c+36V2Zj>R*amGDy;@Z_d)6)Err`>Q>1kDCGn=w1s%n?@ zypbwqBSRc$0zWr~Q|hqZ^y!$hpPp&WpDNP$sJ5**=t?JRZ*eRphLJ8OJk?RfMITBBxmeVH=Xdx-74$8=F3zy$KbbS2yy#kLS z^)HW;1HxQ>yX1pL8qZu=XkIk zgtsJjP)8=B`8BLkjnt*2Iu=yA?n@=4dq#X`z2=M|hEzlf?gnAQO~O;{NJV{Bm*?`& z2jQQ;z5?RwB~X})EdN8o5xonJ~r-eJTk1XF%3J?;0I{X%s6Bc$W z%kZ863FI+jBNE}MXug<4(r$HE*VYX3rz*A>KAFR;3lKr8fAH1W2G^z%;Vv{)aH)ec zE}`z;KIgDn@=knJ?q*xc~q-TT-o zV@O?qJ};YL2?8Nfp3*PXz^N_iqDXjy^r&yJ6jSIxUjVtQ$q`yePxAHkbq8{ag`)${ z;_48EZ|J_iewDzqGCIqcRN7~uPYX;z#@{7)+&m`mV@zOWyQ|8sCfVoQBTlI_E)@$n z3dC3AW4~-_oo9Du7ofsa-hXmPb(zC6lCtGet|5@yU^oDwzGbN`Q?ErcK$B>3uUalD zAwg1*T+p+6rlMjd5#VXrRQ^LqUWD|+?7Tc6`uiY%5!8EYW6G4n6E#HqOiWA7uh2nh zDU$x-NYF#XySKXQ9 zH5*O@yu6xWo6A%#^x_wgNao!wN=ouFnCgSlV}5EXBChgx%i}{aKe$PFgtPTt$2kCC z0Y39*dE3aSMMQ+|ucGA-9XdKXjFo|q8n6|n6iPjLf(Gmpf<#EtiiwF0zbR=U4tRLc z-D3EIW%)D2b-aIdqjDw@#=-Fk2%N^M>DIvD2#9&q^EsVcSvhH=^6}j69{NOj1 zsBr4)s7T3r^7ECP*G}r>(|p#L9Twym?~Tz%r!+V%H=UpAQIpjuxsrxuxHCEeHy11` z4gM~e62Z>J1@7ko6yLTP5@OG9DVbcWyP%9)rX*qZ zb38^pH7pa1iboC~Plo(;v4Y){V8o^h)9(I$jyWlkn3U8`s0>PaFbOa*Fo5{C-hKBP z4vwiyNq+v;*4B3roj!D!he0zS)T{-;I;ya{`={`5;8Me2)xuoHzXLnvO--}Af5TWG z3M#6unaymOw_D$tOJFhZFfhCxV~UlAzj_WHtCEs)SP?&xxaA$#@+EVU8ZW+t%8Qp} z9Zpv`&F8M7Ho*`Wl%}?}K%JTS`M9@lNyx|wRHBNKVb~)STJ1271Z+3AZ{32}(>#@i zEMkUW{Gc-u8hZR72w6#W>;F>|*cIg{7`z320EScS<_u9ww1GG)4;-G#$~_=nek&uc zc^mlAY!y1VXmrv3fq~JBSTM?y;>HazF6e(?ERWAWAy$zcbGOCc4A#1=e}Z(xLXF!O zhs@D3Y#dlf12o88Lg${aFhTen%n5<57rCUoyzbx(13(0reA)v2pjJb;;V{sr4#KE_ zFHd}>D8@T>a(W7P6y9&y$B&Rldffel)x4UzsIW1X9s}9k-318%w1O><`V5Ip7k;L! z*YA(RXrysazk-zvoLf1Z?6CVlZXg~;rV=9;9S!P&{1S}U{YNM7o%pl6L8BsuPOAGl zYduF%_I&d~T4SwgXW*ERqfV00B8+`{9TL*f-mU?BGsK;N8w>tX5E=YKw_ilFfMEt2 z;tTYtudmP4)YMoRVr?zD1}+kB!S@5m0$_Icd9o`j`{DV6q?YV#@lwbxg2w{TGiF9c z*w>Y0WwG<($aUo9!yPFhQEUSr2M=mt3`Km07i<$Sjs{vtInBDkkGK7` z9Lj=Q0SC}@c!>y00}a*mOQAESF4%y<3$}eY9E?L@L@CB4ShK1{HCe=xsearNqWT~) z=auG0|1(;D>|kV+s2W8}A^K??FgBOXX)(wnFr%qF%9vZ%$}nBe9*ir62>Mb zUXypJFMa4|c>nkJBQ3X=$i}c`2?{I=-r9L^zJbyoR1x=9GgOL}z8F0ZMWOkt{z&;p zw&Aieh$5frsC*x0n&`w1y5vTV2~jenvEV7#)Vj4r#PpvQ{3f` zW+NFQlfughU}D?MQ&rWn+vbDT??9?9FE1Zp5P(aC1F|E%D@a*hdHGJofbPtuD~S04 zsl34HAgT&xfq`_SzOD|A@}wj(1T+)2HKVWqAp^B_W_Wm5nihOnBM_lyY+@qdc@U9p zo~I(MsnEL@VvZqRIu9{?@Pt2p+yYSD-Xks|qIf_k;QWX4@EEpcuo{4#AFP55EG*W* z<;$L05d%n9^zac9(QXWP0FW&3I9;4h4hvy2bRU8E_c?=Vx@O*+`-LzY3=@0#@+G`P zn)i{ExkAl6F$e+${2yUBu|Gf8JJZ%U^{Z^`^MON-41rshTaAw#cnThR0_YKWTf&|v z8CE0!NDS8BfBc}8{|!>&0LVmARgKy;H#Y}6>1?DEE^auCuFmgw==IG-A_OR2?PLF5tAJ5?}zsj#847tF?<`V{f=QHgfJVds}y2 z#Rr*`RX`Q_<1-Vjx&0IUg)oFxZ>mWQ)KfiPyynvXf;fQv{(YEzw%n70 zTMHO%uD~a47PTZXnw^Yhz<%(Sa>0)RI|?Avpg{rXx$GgfdD=*$Pa^>EvORDIt(3LJ z#RC8U4R8BcQ6b`oc0g<6k{Po+n*Qcvsa{he*=E7t`7zK72 z^+kI6RBxU#$ZFc%?O(&WRu&u<7S}O1{E6^+t8M{!@!-6Z zU?BVn4#SnfQUs5j{6`!L0_zG)zHnR7n*6R35C^n(bi9Wm1N_|(duj3P*|+}rKYt|m z0Hg((no(-`_ErDSfX_msfQj()^ABI&xX@2sK;2DE?*McK%ES#6J%%r!+yZ)s5(I6_ zvw!$0yP(249f#T2|3RNTWSCye2S2bWq@d)76F@Vb&TOf%G17oWOdmMmX0k)?Z7zY{mt%-;_mZKn9^S z!H6=F04OCO71O}dh&Z5Yf%)wE6Q=fW-}IT;+1M1W&4bP<-{%T!@Sq0?3PM3x;^8^; zQS!a?PIUD*)H*=i00d15L=_PYTDvwL! zti6Nx$KZaT2*VJ#7Pfd6ooV|TaJi3pU=N4at3n-;Y7u6?GRUqZ4u^V7e8=1hOJ;0V zc6NZ(t$4Y|siHmQ7I%VS(TOoZV12Rr#c>F7j#jX3lLUar3)L4Mti06trQZ+9am?Mo zlnP^5HsEwySzMHodl4$SDIjl!O_V5eeWsfpY;h}@#gSnO5zcZT9 zfz&zDQLlesAbJ;U-ih0^6|s(@4h|2*6s?Z3BwKzH-Bm{ru-n31Y8V_T?G`nEz^Q#F zPsM%muT6Txl^?MMr~c#+SdDDSxk0(tE%aHi|I7b}!&=1J8+s_H|91BG&A5Mabnfk! z8thy&Mpt~leUrR@-~HdGecy);%Mwt@!00bDWL~N(1wZ?qJRxMIVkvLJY)7UzP_->W zh(Byq$RrejSS?tj9J#xJh_9dDB}DSC$nSQ$!m@d_G_z`9ZhpSBlvIt=@=auRe!eo# z)bCSV+%|__#9qX2F{l)0)ld%K4NfYmskO1m085ZteltS%26ijN@jS zmw6(c(A9h)8fngF)zV>MVdOYw!{rxe={vSB*fcu6aGLUY`^mr^Y}Q z>*Qq9lr3y*;S_x0WwX7#D%m$6G@yX?-<*f3z=fIlVw+~UP#&|EL+Irj@`w1y(cbEl z)WBO+9RKm|W30C?k}dgN+2F7#Ee#3{U468T>L}{!dH^ArpmA(vdjkvh&=7(M$|;CM zBuRd@h5ichPjT03A?@uOcUz#ipWHD#{He4w@&|p5aeEXb!dUQe`2A9L9mYYR2!LP? zQ$xSE%4#rpvI?&FMGSIB2e5}Q*Yf47R}fBJxLS=T@_nOD>JCvP2m9)TS$(kPzkp&F|6~ z8`vW+)CJvwL89GZvb@XC3LqaqVNk^1umOWHL6GVLk!7@30t|qS9XmC6w}1vFMLz|P z2;F?p9luRTNO=1e)_v(cX2a6Ku`wNZD*Z)VTwK7Tx(226fAhWzo37xX{XcSVsng7! z;IYgaQ~a*8(_Qgo~F9`FAf37!vSHfB@dApXeSU`$QFR=AGwf)TQ;irsZ7=(AZ-uM z*l?>d%V6jNdM~<*cYIx35&RRLf84}g#oV1ueE@RLw+Ta$|^0)q|J zIfMj4^Ng@TfHLG7fW!{e(erb2kN_ztAdu4gbzz%~loU?zYnYfQ!nF8sx`NF6V-m-J zjHdM^)E6l!I)6{VQz$kr`k$vyIjsgiG@hS%e0@U#o@xLcuyJtC;FbZB0fasz6Q-n4 zATa1d4Du7u7*n(VS2J`UkCYqCdYzoK-CcTGwg?9qfRf;s{Fm)HoKU$aLf|q~9MGXm z07#W>eqnqghij&&tULq3B-3B6RxD)f^wj}w0-?Twf(w>2$b*GD1jQWu2N^+V2wY6W7epZ6 z=CR3h*+WM*c<0gHBl*l>PnU)Y9p(pqykD~-JXX@Mx*f6A8PN)c7q!|m+Y16v@h z8g3Z;+l{AtWEVE@Dn}M+_VWdy^Puo>bYF-=1aUoht}PDmuXkgC^J$5$$V#4+>#n+d zI15lm#aI5J)C#OE3Z51?1D*;s$lwsR>rQTZ;fg#mSZy~Ib>{)EuA9V8^Hn9tH$3LK3=)o}M1~4vmd3Ar%!B5MvI_I+Oy)4Wr

  • vY%E|EnA>WJ&X1Lf!PQ5OcN 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 FO#sj9(1id1 diff --git a/doc/devel/uml/fig129157.png b/doc/devel/uml/fig129157.png deleted file mode 100644 index dcaf4449ac7df3729b84bcfe93625666155c9dec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45859 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μU`WBaerJ8hd3JxpU+iNfE~c+S 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 gisZXw0yGH9GV<_3+=*c7bIv0NXFQ_kny#N3J diff --git a/doc/devel/uml/fig129285.png b/doc/devel/uml/fig129285.png deleted file mode 100644 index 7dc65311b2551786281abe72c047017fcfd7f6e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45097 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�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 diff --git a/doc/devel/uml/fig129413.png b/doc/devel/uml/fig129413.png deleted file mode 100644 index 0227cf31a5965e450a4b70b9933a9018c524103b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23137 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 l^A8&DpEThA`Q?Ru!m=Zq#<@~ diff --git a/doc/devel/uml/index-withframe.html b/doc/devel/uml/index-withframe.html deleted file mode 100644 index 84edf1322..000000000 --- a/doc/devel/uml/index-withframe.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -/home/ct/src/cinelerra3/doc/devel/uml/index-withframe - - - - - - - - - - -<H2>Frame Alert</H2><P>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.<BR>Link to <A HREF="index.html">Non-frame version.</A> - diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html deleted file mode 100644 index 3c87012a6..000000000 --- a/doc/devel/uml/index.html +++ /dev/null @@ -1,386 +0,0 @@ - - - - - - -cinelerra3 -Documentation - - - - - -
    cinelerra3
    Documentation
    -

    - - - -
    - -

    1 Package design

    -

    All things concering the big picture.
    Not a real code package, rather a container for design drafts, specifications, decisions.

    - -

    1.1 Component View Architecture

    -

    The various Components comprising the Cinelerra3 Video editing Application

    -
    - -

    -

    Overview



    -

    This drawing shows the top level compoents and relations

    -
    Component Builder
    - -
    Component Session
    -
    - -
    Component EDL
    -

    nested in Session

    - -
    Component Fixture
    -

    nested in Session

    -
    - -
    Component Controller
    -

    Depends on Builder

    -
    - -
    Component AssetManagement
    - -
    Component Dispatcher
    - -
    Component Engine
    -

    Depends on Frame (Stream) Provider

    -
    - -
    Component Frame (Stream) Provider
    -

    Depends on Cache

    -
    - -
    Component Cache
    - -
    Component RenderPathManager
    -
    - -

    1.2 Package codegen

    -

    This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skelleton.

    - -

    1.2.1 Deployment View Codegen Deployment

    -
    -
    - -

    2 Package ProcessingLayer

    -
    - -

    2.1 Package AssetManager

    - -

    2.2 Package MObject

    -
    - -

    2.2.1 Class View Session

    -
    - -

    -

    Session structure



    - -

    -

    EDL Example1



    -

    A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks

    -

    -

    EDL Example2



    -

    More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip

    Class Session
    -
    Class EDL
    -
    Class Fixture
    -
    Class Track
    -
    Class MObject
    -
    Class Placement
    -
    -
    Class Clip
    -
    Class Effect
    -
    Class Meta
    -
    -
    -
    -
    Class Label
    -
    -
    Class Auto
    -
    Class Wish
    -
    -
    - -

    2.2.2 Package Builder

    -
    - -

    2.2.2.1 Class View Builder Workings

    -
    - -

    -

    build process



    -

    This figure shows the process of building and starting a RenderEngine

    -

    2.2.2.1.1 Activity building the Engine

    -

    Pre Condition :

      Post Condition :

        - -

        -

        build flow



        - -
        Activity action pin build Request
        -

        Direction : input

        Type :

        Selection :

          -
          Flow <flow>

          From build Request To configure Tools

          Weight :

            Guard :

              Selection :

                Transformation :

                  - -
                  Opaque activity action configure Tools
                  -

                  Defined in building the Engine

                  Pre Condition :

                    Post Condition :

                      Behavior :

                        -
                        Flow <flow>

                        From configure Tools To fork activity node

                        Weight :

                          Guard :

                            Selection :

                              Transformation :

                                - -

                                2.2.2.1.1.1 Expansion region establish partitioning

                                -
                                - -
                                Opaque activity action define segment
                                -

                                Defined in establish partitioning

                                Pre Condition :

                                  Post Condition :

                                    Behavior :

                                      - -
                                      Activity action pin inFixture
                                      -

                                      Direction : input

                                      Type :

                                      Selection :

                                        Flow <flow>

                                        From define segment To segments

                                        Weight :

                                          Guard :

                                            Selection :

                                              Transformation :

                                                - -
                                                Activity object segment Tool
                                                -

                                                Type :

                                                Selection :

                                                  Is control type

                                                  -
                                                  -
                                                  Flow <flow>

                                                  From segment Tool To define segment

                                                  Weight :

                                                    Guard :

                                                      Selection :

                                                        Transformation :

                                                          - -
                                                          Activity object segments
                                                          -

                                                          Type :

                                                          Selection :

                                                            Is control type

                                                            -
                                                            - -
                                                            Activity object Fixture
                                                            -

                                                            Type :

                                                            Selection :

                                                              -
                                                              Flow <flow>

                                                              From Fixture To inFixture

                                                              Weight :

                                                                Guard :

                                                                  Selection :

                                                                    Transformation :

                                                                      Flow <flow>

                                                                      From Fixture To inFixture

                                                                      Weight :

                                                                        Guard :

                                                                          Selection :

                                                                            Transformation :

                                                                              - - -
                                                                              Fork activity node
                                                                              -

                                                                              Defined in building the Engine

                                                                              -
                                                                              Flow <flow>

                                                                              From fork activity node To segment Tool

                                                                              Weight :

                                                                                Guard :

                                                                                  Selection :

                                                                                    Transformation :

                                                                                      Flow <flow>

                                                                                      From fork activity node To build Tool

                                                                                      Weight :

                                                                                        Guard :

                                                                                          Selection :

                                                                                            Transformation :

                                                                                              - -

                                                                                              2.2.2.1.1.2 Expansion region build Processors

                                                                                              -
                                                                                              - -
                                                                                              Activity object build Tool
                                                                                              -

                                                                                              Type :

                                                                                              Selection :

                                                                                                Is control type

                                                                                                -
                                                                                                -
                                                                                                Flow <flow>

                                                                                                From build Tool To create ProcNode

                                                                                                Weight :

                                                                                                  Guard :

                                                                                                    Selection :

                                                                                                      Transformation :

                                                                                                        - -
                                                                                                        Activity object segments
                                                                                                        -

                                                                                                        Type :

                                                                                                        Selection :

                                                                                                          Is control type

                                                                                                          -
                                                                                                          -
                                                                                                          Flow <flow>

                                                                                                          From segments To create ProcNode

                                                                                                          Weight :

                                                                                                            Guard :

                                                                                                              Selection :

                                                                                                                Transformation :

                                                                                                                  - -
                                                                                                                  Opaque activity action create ProcNode
                                                                                                                  -

                                                                                                                  Defined in build Processors

                                                                                                                  Pre Condition :

                                                                                                                    Post Condition :

                                                                                                                      Behavior :

                                                                                                                        -
                                                                                                                        Flow <flow>

                                                                                                                        From create ProcNode To connect

                                                                                                                        Weight :

                                                                                                                          Guard :

                                                                                                                            Selection :

                                                                                                                              Transformation :

                                                                                                                                - -
                                                                                                                                Opaque activity action connect
                                                                                                                                -

                                                                                                                                Defined in build Processors

                                                                                                                                Pre Condition :

                                                                                                                                  Post Condition :

                                                                                                                                    Behavior :

                                                                                                                                      -
                                                                                                                                      Flow <flow>

                                                                                                                                      From connect To complete Render Engine

                                                                                                                                      Weight :

                                                                                                                                        Guard :

                                                                                                                                          Selection :

                                                                                                                                            Transformation :

                                                                                                                                              - -
                                                                                                                                              Activity object complete Render Engine
                                                                                                                                              -

                                                                                                                                              Type :

                                                                                                                                              Selection :

                                                                                                                                                Is control type

                                                                                                                                                -
                                                                                                                                                -
                                                                                                                                                Flow <flow>

                                                                                                                                                From complete Render Engine To activity final

                                                                                                                                                Weight :

                                                                                                                                                  Guard :

                                                                                                                                                    Selection :

                                                                                                                                                      Transformation :

                                                                                                                                                        -
                                                                                                                                                        - - -
                                                                                                                                                        Activity final
                                                                                                                                                        -

                                                                                                                                                        Defined in building the Engine

                                                                                                                                                        - -

                                                                                                                                                        -

                                                                                                                                                        Builder Entities



                                                                                                                                                        -
                                                                                                                                                        -
                                                                                                                                                        -
                                                                                                                                                        -
                                                                                                                                                        Class Assembler
                                                                                                                                                        -
                                                                                                                                                        -
                                                                                                                                                        Class Buildable
                                                                                                                                                        -
                                                                                                                                                        Class Tool
                                                                                                                                                        -
                                                                                                                                                        -
                                                                                                                                                        -
                                                                                                                                                        -
                                                                                                                                                        - -

                                                                                                                                                        2.2.3 Package Controller

                                                                                                                                                        -
                                                                                                                                                        - -

                                                                                                                                                        2.2.3.1 Class View Controller Workings

                                                                                                                                                        -
                                                                                                                                                        - -

                                                                                                                                                        -

                                                                                                                                                        Controller Entities



                                                                                                                                                        - -

                                                                                                                                                        2.2.3.1.1 Activity configure Render

                                                                                                                                                        -

                                                                                                                                                        Pre Condition :

                                                                                                                                                          Post Condition :

                                                                                                                                                            - -

                                                                                                                                                            -

                                                                                                                                                            the render configuration flow



                                                                                                                                                            - -
                                                                                                                                                            Activity action pin Render Request
                                                                                                                                                            -

                                                                                                                                                            Direction : input

                                                                                                                                                            Type :

                                                                                                                                                            Selection :

                                                                                                                                                              -
                                                                                                                                                              Flow <flow>

                                                                                                                                                              From Render Request To determine Render Params

                                                                                                                                                              Weight :

                                                                                                                                                                Guard :

                                                                                                                                                                  Selection :

                                                                                                                                                                    Transformation :

                                                                                                                                                                      - -
                                                                                                                                                                      Opaque activity action setup StateProxy
                                                                                                                                                                      -

                                                                                                                                                                      Defined in configure Render

                                                                                                                                                                      Pre Condition :

                                                                                                                                                                        Post Condition :

                                                                                                                                                                          Behavior :

                                                                                                                                                                            -
                                                                                                                                                                            Flow <flow>

                                                                                                                                                                            From setup StateProxy To build necessary?

                                                                                                                                                                            Weight :

                                                                                                                                                                              Guard :

                                                                                                                                                                                Selection :

                                                                                                                                                                                  Transformation :

                                                                                                                                                                                    - - -
                                                                                                                                                                                    Decision activity node build necessary?
                                                                                                                                                                                    -

                                                                                                                                                                                    Defined in configure Render

                                                                                                                                                                                    -
                                                                                                                                                                                    Flow <flow>

                                                                                                                                                                                    From build necessary? To build Render Engine

                                                                                                                                                                                    Weight :

                                                                                                                                                                                      Guard :

                                                                                                                                                                                      • OCL :
                                                                                                                                                                                        -build necessary

                                                                                                                                                                                      Selection :

                                                                                                                                                                                        Transformation :

                                                                                                                                                                                          Flow <flow>

                                                                                                                                                                                          From build necessary? To merge activity node

                                                                                                                                                                                          Weight :

                                                                                                                                                                                            Guard :

                                                                                                                                                                                            • OCL :
                                                                                                                                                                                              -reuse exiting Engine

                                                                                                                                                                                            Selection :

                                                                                                                                                                                              Transformation :

                                                                                                                                                                                                - -
                                                                                                                                                                                                Opaque activity action setup Build Params
                                                                                                                                                                                                -

                                                                                                                                                                                                Defined in configure Render

                                                                                                                                                                                                Pre Condition :

                                                                                                                                                                                                  Post Condition :

                                                                                                                                                                                                    Behavior :

                                                                                                                                                                                                      - -
                                                                                                                                                                                                      Merge activity node
                                                                                                                                                                                                      -

                                                                                                                                                                                                      Defined in configure Render

                                                                                                                                                                                                      -
                                                                                                                                                                                                      Flow <flow>

                                                                                                                                                                                                      From merge activity node To activity final

                                                                                                                                                                                                      Weight :

                                                                                                                                                                                                        Guard :

                                                                                                                                                                                                          Selection :

                                                                                                                                                                                                            Transformation :

                                                                                                                                                                                                              - -

                                                                                                                                                                                                              2.2.3.1.1.1 Expansion region determine Render Params

                                                                                                                                                                                                              - -
                                                                                                                                                                                                              Opaque activity action determine Render Params
                                                                                                                                                                                                              -

                                                                                                                                                                                                              Diagram : the render configuration flow

                                                                                                                                                                                                              -

                                                                                                                                                                                                              Defined in configure Render

                                                                                                                                                                                                              Pre Condition :

                                                                                                                                                                                                                Post Condition :

                                                                                                                                                                                                                  Behavior :

                                                                                                                                                                                                                    -
                                                                                                                                                                                                                    Flow <flow>

                                                                                                                                                                                                                    From determine Render Params To setup StateProxy

                                                                                                                                                                                                                    Weight :

                                                                                                                                                                                                                      Guard :

                                                                                                                                                                                                                        Selection :

                                                                                                                                                                                                                          Transformation :

                                                                                                                                                                                                                            - -
                                                                                                                                                                                                                            Opaque activity action build Render Engine
                                                                                                                                                                                                                            -

                                                                                                                                                                                                                            Defined in configure Render

                                                                                                                                                                                                                            Pre Condition :

                                                                                                                                                                                                                              Post Condition :

                                                                                                                                                                                                                                Behavior :

                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  Flow <flow>

                                                                                                                                                                                                                                  From build Render Engine To merge activity node

                                                                                                                                                                                                                                  Weight :

                                                                                                                                                                                                                                    Guard :

                                                                                                                                                                                                                                      Selection :

                                                                                                                                                                                                                                        Transformation :

                                                                                                                                                                                                                                          - - -
                                                                                                                                                                                                                                          Activity final
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          Defined in configure Render

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          2.3 Package RenderEngine

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          2.3.1 Deployment View Engine Parts

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          Overview Render Engine



                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          Node timeline
                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          Node playlist
                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          Node proc
                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          Node pnode
                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          Node Frame
                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          Node State
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          2.3.2 Class View Engine Workings

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          Render Entities



                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          Engine Example1



                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          Engine Example2



                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          Example2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          Automation Entities



                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Processor
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class ExitNode
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class ProcNode
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Trafo
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Link
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Hub
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Projector
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Mask
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class ARender
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class VRender
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class GLRender
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Frame
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class AFrame
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class VFrame
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class GLBuf
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Source
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Parameter
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          3 Package BackendLayer

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          3.1 Package design

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          3.1.1 Class View Backend Components

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          File Mapping



                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          Shows whats used to access Frames

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          In Memory Database



                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class File
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class FileMap
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Frame
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Prefetch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Scheduler
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          QueryFrame



                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          3.2 Component View Cache

                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          3.3 Component View FileMapping

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          4 Package GUI

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          GUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          5 Package CommonLib

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          5.1 Class View Service Components

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Time
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          5.2 Class View Posix Threads Abstraction

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          C++ wrapers for pthreads

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Thread
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Condition
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Class Mutex
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                          5.3 Class View SmartPointers

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_60.html b/doc/devel/uml/index_60.html deleted file mode 100644 index 8712d7074..000000000 --- a/doc/devel/uml/index_60.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - -< - - - - - -
                                                                                                                                                                                                                                          <
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          <flow>transition
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html deleted file mode 100644 index f2ddaea9d..000000000 --- a/doc/devel/uml/index_65.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - -A - - - - - -
                                                                                                                                                                                                                                          A
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          AbstractMOclass
                                                                                                                                                                                                                                          activity finalactivity final
                                                                                                                                                                                                                                          activity finalactivity final
                                                                                                                                                                                                                                          AFrameclass
                                                                                                                                                                                                                                          Allocationclassa directive to place a MObject in a specific way
                                                                                                                                                                                                                                          anchorrelation
                                                                                                                                                                                                                                          applyoperation
                                                                                                                                                                                                                                          Architecturecomponent viewThe various Components comprising the Cinelerra3 Video editing Application
                                                                                                                                                                                                                                          ARenderclass
                                                                                                                                                                                                                                          Assemblerclass
                                                                                                                                                                                                                                          AssetManagementcomponent
                                                                                                                                                                                                                                          AssetManagerpackage
                                                                                                                                                                                                                                          ATTACHattributeattach subject to anchor (e.g. an effect to a clip)
                                                                                                                                                                                                                                          Autoclass
                                                                                                                                                                                                                                          Automation Entitiesclass diagram
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html deleted file mode 100644 index 2921c0798..000000000 --- a/doc/devel/uml/index_66.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - -B - - - - - -
                                                                                                                                                                                                                                          B
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          Backend Componentsclass view
                                                                                                                                                                                                                                          BackendLayerpackage
                                                                                                                                                                                                                                          buildoperation
                                                                                                                                                                                                                                          build flowactivity diagram
                                                                                                                                                                                                                                          build necessary?decision activity node
                                                                                                                                                                                                                                          build processcollaboration diagramThis figure shows the process of building and starting a RenderEngine
                                                                                                                                                                                                                                          build Processorsexpansion region
                                                                                                                                                                                                                                          build Render Engineopaque activity action
                                                                                                                                                                                                                                          build Requestactivity parameter
                                                                                                                                                                                                                                          build Toolactivity object
                                                                                                                                                                                                                                          Buildableclass
                                                                                                                                                                                                                                          buildEngineoperation
                                                                                                                                                                                                                                          Buildercomponent
                                                                                                                                                                                                                                          Builderpackage
                                                                                                                                                                                                                                          Builder Entitiesclass diagram
                                                                                                                                                                                                                                          Builder Workingsclass view
                                                                                                                                                                                                                                          BuilderFacadeclass
                                                                                                                                                                                                                                          building the Engineactivity
                                                                                                                                                                                                                                          buildProcessoroperation
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html deleted file mode 100644 index 1bc2d0be9..000000000 --- a/doc/devel/uml/index_67.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - -C - - - - - -
                                                                                                                                                                                                                                          C
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          Cachecomponent
                                                                                                                                                                                                                                          Cachecomponent view
                                                                                                                                                                                                                                          checked_inrelationchecked_in objects are subject of cache aging and must be not in use
                                                                                                                                                                                                                                          checked_outrelationthis list keeps all mappings which are in use, and thus prevents them from Cache aging
                                                                                                                                                                                                                                          cinelerra3package
                                                                                                                                                                                                                                          Clipclass
                                                                                                                                                                                                                                          clipsrelation
                                                                                                                                                                                                                                          codegenpackageThis package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skelleton.
                                                                                                                                                                                                                                          Codegen Deploymentdeployment view
                                                                                                                                                                                                                                          CommonLibpackage
                                                                                                                                                                                                                                          complete Render Engineactivity object
                                                                                                                                                                                                                                          ConditionclassI provided a reworked Condition class in my cinelerra2 repository
                                                                                                                                                                                                                                          configureoperation
                                                                                                                                                                                                                                          configure Renderactivity
                                                                                                                                                                                                                                          configure Toolsopaque activity action
                                                                                                                                                                                                                                          ConManagerclass
                                                                                                                                                                                                                                          connectopaque activity action
                                                                                                                                                                                                                                          Constraintclass
                                                                                                                                                                                                                                          Controllercomponent
                                                                                                                                                                                                                                          Controllerpackage
                                                                                                                                                                                                                                          Controller Entitiesclass diagram
                                                                                                                                                                                                                                          Controller Workingsclass view
                                                                                                                                                                                                                                          ControllerFacadeclass
                                                                                                                                                                                                                                          create ProcNodeopaque activity action
                                                                                                                                                                                                                                          currFramerelation
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_68.html b/doc/devel/uml/index_68.html deleted file mode 100644 index b7834de4a..000000000 --- a/doc/devel/uml/index_68.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - -D - - - - - -
                                                                                                                                                                                                                                          D
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          datasrcrelationThe predecessor in a processing pipeline, i.e. a source to get data to be processed
                                                                                                                                                                                                                                          define segmentopaque activity action
                                                                                                                                                                                                                                          descriptorrelationtype of this frame
                                                                                                                                                                                                                                          descriptorrelation
                                                                                                                                                                                                                                          designpackage
                                                                                                                                                                                                                                          designpackageAll things concering the big picture.
                                                                                                                                                                                                                                          Not a real code package, rather a container for design drafts, specifications, decisions.
                                                                                                                                                                                                                                          determine Render Paramsexpansion region
                                                                                                                                                                                                                                          determine Render Paramsopaque activity action
                                                                                                                                                                                                                                          DirectPlacementclass
                                                                                                                                                                                                                                          Dispatchercomponent
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_69.html b/doc/devel/uml/index_69.html deleted file mode 100644 index ab6f13363..000000000 --- a/doc/devel/uml/index_69.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - -E - - - - - -
                                                                                                                                                                                                                                          E
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          EDLcomponent
                                                                                                                                                                                                                                          EDLclass
                                                                                                                                                                                                                                          EDL Example1object diagramA simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks
                                                                                                                                                                                                                                          EDL Example2object diagramMore complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip
                                                                                                                                                                                                                                          edlsrelation
                                                                                                                                                                                                                                          Effectclass
                                                                                                                                                                                                                                          endattributeend of the timerange (excl)
                                                                                                                                                                                                                                          Enginecomponent
                                                                                                                                                                                                                                          Engine Example1object diagramExample1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1
                                                                                                                                                                                                                                          Engine Example2object diagramExample2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.
                                                                                                                                                                                                                                          Engine Partsdeployment view
                                                                                                                                                                                                                                          Engine Workingsclass view
                                                                                                                                                                                                                                          establish partitioningexpansion region
                                                                                                                                                                                                                                          ExitNodeclass
                                                                                                                                                                                                                                          ExplicitPlacementclass
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_70.html b/doc/devel/uml/index_70.html deleted file mode 100644 index 8eee4f792..000000000 --- a/doc/devel/uml/index_70.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - -F - - - - - -
                                                                                                                                                                                                                                          F
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          Fileclass
                                                                                                                                                                                                                                          File Mappingclass diagramShows whats used to access Frames
                                                                                                                                                                                                                                          FileHandleclass
                                                                                                                                                                                                                                          FileHandleCacheclass
                                                                                                                                                                                                                                          FileMapclass
                                                                                                                                                                                                                                          FileMapCacheclass
                                                                                                                                                                                                                                          FileMappingcomponent view
                                                                                                                                                                                                                                          FileProviderclassThis is the Factory for Files, whenever something wants to use some file (or temporary storage), This Factory will hand out some smart/shared pointer to a File object which will be used to retrieve Frames.
                                                                                                                                                                                                                                          FileReferenceclass
                                                                                                                                                                                                                                          filesrelation
                                                                                                                                                                                                                                          Fixtureactivity object
                                                                                                                                                                                                                                          Fixtureclass
                                                                                                                                                                                                                                          fixturerelation
                                                                                                                                                                                                                                          Fixturecomponent
                                                                                                                                                                                                                                          fork activity nodefork activity node
                                                                                                                                                                                                                                          FrameclassFrames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool.
                                                                                                                                                                                                                                          Framenode
                                                                                                                                                                                                                                          Frameclass
                                                                                                                                                                                                                                          framerelationmaybe weak reference
                                                                                                                                                                                                                                          Frame (Stream) Providercomponent
                                                                                                                                                                                                                                          FrameDescriptorclassA FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes
                                                                                                                                                                                                                                          FrameReferenceclass
                                                                                                                                                                                                                                          framesrelation
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_71.html b/doc/devel/uml/index_71.html deleted file mode 100644 index 6a0d8d1d3..000000000 --- a/doc/devel/uml/index_71.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - -G - - - - - -
                                                                                                                                                                                                                                          G
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          getAutomationoperation
                                                                                                                                                                                                                                          getConnectionoperation
                                                                                                                                                                                                                                          getFrameoperation
                                                                                                                                                                                                                                          getPlaylistForRenderoperation
                                                                                                                                                                                                                                          getStateProxyoperation
                                                                                                                                                                                                                                          getValueoperation
                                                                                                                                                                                                                                          getValueoperation
                                                                                                                                                                                                                                          getValueoperation
                                                                                                                                                                                                                                          GLBufclass
                                                                                                                                                                                                                                          GLRenderclass
                                                                                                                                                                                                                                          GUIpackageGUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_72.html b/doc/devel/uml/index_72.html deleted file mode 100644 index 1ee557ed6..000000000 --- a/doc/devel/uml/index_72.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -H - - - - - -
                                                                                                                                                                                                                                          H
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          handlerelationweak pointer
                                                                                                                                                                                                                                          handlesrelation
                                                                                                                                                                                                                                          handles_availableattributeinitialized to the maximum number of filehandles the backend may use for mapped files. When no handles are available, the handle which is last in the handles list is closed and (re-)used.
                                                                                                                                                                                                                                          Else this number is decremented for each new filehandle used and incremented for any one explicitly freed.
                                                                                                                                                                                                                                          Hubclass
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html deleted file mode 100644 index eb7f59b49..000000000 --- a/doc/devel/uml/index_73.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -I - - - - - -
                                                                                                                                                                                                                                          I
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          In Memory Databaseclass diagram
                                                                                                                                                                                                                                          inFixtureactivity action pin
                                                                                                                                                                                                                                          Interpolatorclass
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_76.html b/doc/devel/uml/index_76.html deleted file mode 100644 index 30a001baa..000000000 --- a/doc/devel/uml/index_76.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - -L - - - - - -
                                                                                                                                                                                                                                          L
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          Labelclass
                                                                                                                                                                                                                                          lengthattribute
                                                                                                                                                                                                                                          Linkclass
                                                                                                                                                                                                                                          Lockclass
                                                                                                                                                                                                                                          Lockclass
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_77.html b/doc/devel/uml/index_77.html deleted file mode 100644 index ab99f6fba..000000000 --- a/doc/devel/uml/index_77.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - -M - - - - - -
                                                                                                                                                                                                                                          M
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          mappingrelation
                                                                                                                                                                                                                                          mappingsrelationweak pointers
                                                                                                                                                                                                                                          Maskclass
                                                                                                                                                                                                                                          merge activity nodemerge activity node
                                                                                                                                                                                                                                          Metaclass
                                                                                                                                                                                                                                          MObjectpackage
                                                                                                                                                                                                                                          MObjectclass
                                                                                                                                                                                                                                          MutexclassI provided a reworked Mutex class in my cinelerra2 repository
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_78.html b/doc/devel/uml/index_78.html deleted file mode 100644 index 046bbfb3c..000000000 --- a/doc/devel/uml/index_78.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -N - - - - - -
                                                                                                                                                                                                                                          N
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          NodeCreatorToolclass
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html deleted file mode 100644 index c61c32505..000000000 --- a/doc/devel/uml/index_79.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - -O - - - - - -
                                                                                                                                                                                                                                          O
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          offsetattributeOffset the actual position by this (time) value relative to the anchor point
                                                                                                                                                                                                                                          OpenGLPipeclass
                                                                                                                                                                                                                                          outputrelation
                                                                                                                                                                                                                                          Overviewcomponent diagramThis drawing shows the top level compoents and relations
                                                                                                                                                                                                                                          Overview Render Enginedeployment diagram
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html deleted file mode 100644 index 069cf7d8c..000000000 --- a/doc/devel/uml/index_80.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - -P - - - - - -
                                                                                                                                                                                                                                          P
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          paramrelation
                                                                                                                                                                                                                                          Parameterclass
                                                                                                                                                                                                                                          ParamProviderclass
                                                                                                                                                                                                                                          PathManagerclass
                                                                                                                                                                                                                                          placementrelation
                                                                                                                                                                                                                                          Placementclass
                                                                                                                                                                                                                                          playoperation
                                                                                                                                                                                                                                          playlistnode
                                                                                                                                                                                                                                          plugIDattributeIdentifier of the Plugin to be used
                                                                                                                                                                                                                                          PluginAdapterclass
                                                                                                                                                                                                                                          pnodenode
                                                                                                                                                                                                                                          Posix Threads Abstractionclass viewC++ wrapers for pthreads
                                                                                                                                                                                                                                          Prefetchclass
                                                                                                                                                                                                                                          procnode
                                                                                                                                                                                                                                          procattributeholds the Processor (Render Engine Element) to be built by the current build step
                                                                                                                                                                                                                                          ProcessingLayerpackage
                                                                                                                                                                                                                                          Processorclass
                                                                                                                                                                                                                                          ProcNodeclass
                                                                                                                                                                                                                                          Projectorclass
                                                                                                                                                                                                                                          providerrelation
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_81.html b/doc/devel/uml/index_81.html deleted file mode 100644 index 8b6ebec10..000000000 --- a/doc/devel/uml/index_81.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -Q - - - - - -
                                                                                                                                                                                                                                          Q
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          QueryFramesequence diagram
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html deleted file mode 100644 index 3bdd947c8..000000000 --- a/doc/devel/uml/index_82.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - -R - - - - - -
                                                                                                                                                                                                                                          R
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          RelativePlacementclass
                                                                                                                                                                                                                                          RelTypeclass
                                                                                                                                                                                                                                          relTypeattribute
                                                                                                                                                                                                                                          Render Entitiesclass diagram
                                                                                                                                                                                                                                          Render Requestactivity parameter
                                                                                                                                                                                                                                          RenderEngineclass
                                                                                                                                                                                                                                          RenderEnginepackage
                                                                                                                                                                                                                                          RenderPathManagercomponent
                                                                                                                                                                                                                                          renderSegmentsrelation
                                                                                                                                                                                                                                          RenderStateclass
                                                                                                                                                                                                                                          reprattributehuman readable representation of the condition characterizing this allocaton, e.g. "t >= 10"
                                                                                                                                                                                                                                          resolveoperationcreate an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html deleted file mode 100644 index 04d5e3649..000000000 --- a/doc/devel/uml/index_83.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -S - - - - - -
                                                                                                                                                                                                                                          S
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          SAMETIMEattributeplace subject at the sime time then the anchor
                                                                                                                                                                                                                                          Schedulerclass
                                                                                                                                                                                                                                          segment Toolactivity object
                                                                                                                                                                                                                                          SegmentationToolclass
                                                                                                                                                                                                                                          segmentsactivity object
                                                                                                                                                                                                                                          segmentsactivity object
                                                                                                                                                                                                                                          segmentsattributeholds the segemntation to be constructed
                                                                                                                                                                                                                                          Service Componentsclass view
                                                                                                                                                                                                                                          Sessioncomponent
                                                                                                                                                                                                                                          Sessionclass view
                                                                                                                                                                                                                                          Sessionclass
                                                                                                                                                                                                                                          Session structureclass diagram
                                                                                                                                                                                                                                          setup Build Paramsopaque activity action
                                                                                                                                                                                                                                          setup StateProxyopaque activity action
                                                                                                                                                                                                                                          SmartPointerclass
                                                                                                                                                                                                                                          SmartPointersclass view
                                                                                                                                                                                                                                          Sourceclass
                                                                                                                                                                                                                                          startattributestartpos in source
                                                                                                                                                                                                                                          startattributebegin of the timerange covered by this processor
                                                                                                                                                                                                                                          Statenode
                                                                                                                                                                                                                                          StateProxyclass
                                                                                                                                                                                                                                          subjectrelation
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html deleted file mode 100644 index b92dacb67..000000000 --- a/doc/devel/uml/index_84.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - -T - - - - - -
                                                                                                                                                                                                                                          T
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          the render configuration flowactivity diagram
                                                                                                                                                                                                                                          ThreadclassWe can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads
                                                                                                                                                                                                                                          timeattribute
                                                                                                                                                                                                                                          Timeclassdenotes a temporal position (time point), based on timeline start.

                                                                                                                                                                                                                                          investigate posix.4 realtime timers, wrap these here
                                                                                                                                                                                                                                          timelinenode
                                                                                                                                                                                                                                          timelinerelation
                                                                                                                                                                                                                                          Toolclass
                                                                                                                                                                                                                                          ToolFactoryclass
                                                                                                                                                                                                                                          trackattribute
                                                                                                                                                                                                                                          Trackclass
                                                                                                                                                                                                                                          tracksrelation
                                                                                                                                                                                                                                          tracksrelation
                                                                                                                                                                                                                                          Trafoclass
                                                                                                                                                                                                                                          treatoperation
                                                                                                                                                                                                                                          treatoperation
                                                                                                                                                                                                                                          treatoperation
                                                                                                                                                                                                                                          treatoperation
                                                                                                                                                                                                                                          treatoperation
                                                                                                                                                                                                                                          treatoperation
                                                                                                                                                                                                                                          treatoperation
                                                                                                                                                                                                                                          treatoperation
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_86.html b/doc/devel/uml/index_86.html deleted file mode 100644 index 865b0103d..000000000 --- a/doc/devel/uml/index_86.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -V - - - - - -
                                                                                                                                                                                                                                          V
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          VFrameclass
                                                                                                                                                                                                                                          VRenderclass
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/index_87.html b/doc/devel/uml/index_87.html deleted file mode 100644 index 00c555b01..000000000 --- a/doc/devel/uml/index_87.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -W - - - - - -
                                                                                                                                                                                                                                          W
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - -
                                                                                                                                                                                                                                          NameKindDescription
                                                                                                                                                                                                                                          Wishclass
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/navig.html b/doc/devel/uml/navig.html deleted file mode 100644 index 5f9b1d858..000000000 --- a/doc/devel/uml/navig.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - -/home/ct/src/cinelerra3/doc/devel/uml/navig - - - -


                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          -Top- -Classes- -Public Operations- -Packages- -Activities- -Class Diagrams- -Object Diagrams- -Activity Diagrams- -Sequence Diagrams- -Collaboration Diagrams- -Component Diagrams- -Deployment Diagrams-

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          < A B C D E F G H I L M N O P Q R S T V W

                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/objectdiagrams.html b/doc/devel/uml/objectdiagrams.html deleted file mode 100644 index febb4a426..000000000 --- a/doc/devel/uml/objectdiagrams.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Object Diagram Index - - - - - -
                                                                                                                                                                                                                                          Object Diagram Index
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - -
                                                                                                                                                                                                                                          EDL Example1A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks
                                                                                                                                                                                                                                          EDL Example2More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip
                                                                                                                                                                                                                                          Engine Example1Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1
                                                                                                                                                                                                                                          Engine Example2Example2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/packages.html b/doc/devel/uml/packages.html deleted file mode 100644 index a81fe73bc..000000000 --- a/doc/devel/uml/packages.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - -Packages Index - - - - - -
                                                                                                                                                                                                                                          Packages Index
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          AssetManager
                                                                                                                                                                                                                                          BackendLayer
                                                                                                                                                                                                                                          Builder
                                                                                                                                                                                                                                          cinelerra3
                                                                                                                                                                                                                                          codegenThis package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skelleton.
                                                                                                                                                                                                                                          CommonLib
                                                                                                                                                                                                                                          Controller
                                                                                                                                                                                                                                          design
                                                                                                                                                                                                                                          designAll things concering the big picture.
                                                                                                                                                                                                                                          Not a real code package, rather a container for design drafts, specifications, decisions.
                                                                                                                                                                                                                                          GUIGUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft
                                                                                                                                                                                                                                          MObject
                                                                                                                                                                                                                                          ProcessingLayer
                                                                                                                                                                                                                                          RenderEngine
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html deleted file mode 100644 index a61cad017..000000000 --- a/doc/devel/uml/public_operations.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - -Public Operations Index - - - - - -
                                                                                                                                                                                                                                          Public Operations Index
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                                                                                                                          OperationClassDescription
                                                                                                                                                                                                                                          applyBuildable
                                                                                                                                                                                                                                          buildAssembler
                                                                                                                                                                                                                                          buildEngineBuilderFacade
                                                                                                                                                                                                                                          buildProcessorPathManager
                                                                                                                                                                                                                                          configureToolFactory
                                                                                                                                                                                                                                          getAutomationFixture
                                                                                                                                                                                                                                          getConnectionConManager
                                                                                                                                                                                                                                          getFrameFile
                                                                                                                                                                                                                                          getPlaylistForRenderFixture
                                                                                                                                                                                                                                          getStateProxyRenderState
                                                                                                                                                                                                                                          getValueAuto
                                                                                                                                                                                                                                          getValueParameter
                                                                                                                                                                                                                                          getValueParamProvider
                                                                                                                                                                                                                                          playRenderEngine
                                                                                                                                                                                                                                          resolvePlacementcreate an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.
                                                                                                                                                                                                                                          treatNodeCreatorTool
                                                                                                                                                                                                                                          treatNodeCreatorTool
                                                                                                                                                                                                                                          treatNodeCreatorTool
                                                                                                                                                                                                                                          treatNodeCreatorTool
                                                                                                                                                                                                                                          treatSegmentationTool
                                                                                                                                                                                                                                          treatSegmentationTool
                                                                                                                                                                                                                                          treatSegmentationTool
                                                                                                                                                                                                                                          treatTool
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/sequencediagrams.html b/doc/devel/uml/sequencediagrams.html deleted file mode 100644 index 8896468bf..000000000 --- a/doc/devel/uml/sequencediagrams.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -Sequence Diagram Index - - - - - -
                                                                                                                                                                                                                                          Sequence Diagram Index
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          - - - - - -
                                                                                                                                                                                                                                          QueryFrame
                                                                                                                                                                                                                                          - - diff --git a/doc/devel/uml/style.css b/doc/devel/uml/style.css deleted file mode 100644 index 2f256177f..000000000 --- a/doc/devel/uml/style.css +++ /dev/null @@ -1,30 +0,0 @@ -div.title { font-size: 150%; background: #87ceff; text-align: center; font-weight: bold; } - -div.sub { margin-left : 20; } -div.element { background: #d3d3d3; } - -h1.package { background: #ffe4c4; } -h1.view { background: #98fb98; } - -h2.package { background: #ffe4c4; } -h2.view { background: #98fb98; } -h2.class { background: #87ceff; } -h2.usecase { background: #87ceff; } -h2.state { background: #87ceff; } -h2.activity { background: #87ceff; } - -h3.package { background: #ffe4c4; } -h3.view { background: #98fb98; } -h3.class { background: #87ceff; } -h3.usecase { background: #87ceff; } -h3.state { background: #87ceff; } -h3.stateregion { background: #87ceff; } -h3.activity { background: #87ceff; } - -h4.package { background: #ffe4c4; } -h4.view { background: #98fb98; } -h4.class { background: #87ceff; } -h4.usecase { background: #87ceff; } -h4.state { background: #87ceff; } -h4.stateregion { background: #87ceff; } -h4.activity { background: #87ceff; } diff --git a/src/main.cpp b/src/main.cpp index 382a2e953..63b73cbf7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,6 +26,6 @@ int main(int argc, char* argv[]) { - printf("hello cinelerra again\n"); + printf("hello SCONS build system\n"); return 0; } diff --git a/uml/DIR_INFO b/uml/DIR_INFO deleted file mode 100644 index 896a0163e..000000000 --- a/uml/DIR_INFO +++ /dev/null @@ -1 +0,0 @@ -uml models, created with bouml diff --git a/uml/cinelerra3/10.session b/uml/cinelerra3/10.session deleted file mode 100644 index 8cbd84327..000000000 --- a/uml/cinelerra3/10.session +++ /dev/null @@ -1,19 +0,0 @@ -window_sizes 1274 775 300 964 633 60 -diagrams - active classdiagram_ref 128181 // File Mapping - 964 633 81 4 0 0 -end -show_stereotypes -open - - package_ref 129285 // ProcessingLayer - class_ref 128437 // FileMapCache - class_ref 128693 // FileHandle - class_ref 128225 // FrameReference - class_ref 128778 // FileReference - classview_ref 128645 // Service Components - class_ref 128266 // Condition - class_ref 128394 // Mutex - class_ref 128906 // SmartPointer -end -end diff --git a/uml/cinelerra3/128005 b/uml/cinelerra3/128005 deleted file mode 100644 index e48b8d387..000000000 --- a/uml/cinelerra3/128005 +++ /dev/null @@ -1,93 +0,0 @@ -format 38 -"design" // design - revision 7 - modified_by 61 "ct" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - comment "All things concering the big picture. -Not a real code package, rather a container for design drafts, specifications, decisions." - componentview 128005 "Architecture" - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - comment "The various Components comprising the Cinelerra3 Video editing Application" - componentdiagram 128005 "Overview" - package_name_in_tab default show_context default auto_label_position default draw_all_relations no shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - comment "This drawing shows the top level compoents and relations" - size A4 - end - - component 128005 "Builder" - stereotype "subsystem" - end - - component 128133 "Session" - component 128389 "EDL" - stereotype "entity" - end - - component 128517 "Fixture" - stereotype "entity" - end - end - - component 128261 "Controller" - stereotype "subsystem" - simplerelation 128261 - -_-> - on component_ref 128005 // Builder - end - end - - component 128645 "AssetManagement" - end - - component 128773 "Dispatcher" - end - - component 128901 "Engine" - simplerelation 128133 - -_-> - on component_ref 129029 // Frame (Stream) Provider - end - end - - component 129029 "Frame (Stream) Provider" - simplerelation 128005 - -_-> - on component_ref 129157 // Cache - end - end - - component 129157 "Cache" - end - - component 129285 "RenderPathManager" - end - end - - package_ref 128645 // codegen -end diff --git a/uml/cinelerra3/128005.diagram b/uml/cinelerra3/128005.diagram deleted file mode 100644 index cf3c8dfa1..000000000 --- a/uml/cinelerra3/128005.diagram +++ /dev/null @@ -1,73 +0,0 @@ -format 38 - -fragment 128005 "UI Layer" - xyzwh 321 22 2000 829 100 -end -fragment 128133 "Processing Layer" - xyzwh 64 156 2000 1089 655 - separator 4833 -end -fragment 128261 "Backend Layer" - xyzwh 64 848 2000 1089 105 -end -packagecanvas 128389 - package_ref 128133 // AssetManager - xyzwh 561 201 2005 265 214 -packagecanvas 128517 - package_ref 128261 // MObject - xyzwh 94 201 2006 458 335 -packagecanvas 128645 - package_ref 128389 // RenderEngine - xyzwh 94 551 2005 458 235 -componentcanvas 128773 component_ref 128005 // Builder - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 121 419 2015 229 105 -componentcanvas 128901 component_ref 128133 // Session - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 122 243 2011 323 156 -componentcanvas 129029 component_ref 128261 // Controller - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 372 419 2011 189 105 -componentcanvas 129157 component_ref 128389 // EDL - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 288 302 2016 153 79 -componentcanvas 129285 component_ref 128517 // Fixture - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 124 319 2016 153 75 -note 129541 "Structures edited by the User" - xyzwh 43 269 2016 181 41 -componentcanvas 129669 component_ref 128645 // AssetManagement - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 577 241 2010 208 159 -componentcanvas 129797 component_ref 128773 // Dispatcher - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 406 31 2005 193 75 -componentcanvas 129925 component_ref 128901 // Engine - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 118 602 2010 235 176 -componentcanvas 130053 component_ref 129029 // Frame (Stream) Provider - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 121 876 2005 229 75 -componentcanvas 130181 component_ref 129157 // Cache - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 391 876 2005 193 75 -note 131717 "Coordinates Playback and Rendering" - xyzwh 483 494 2016 149 63 -note 131845 "border of the low-level, performance-critical part of the system" - xyzwh 666 450 2006 167 84 -note 131973 "just works, never decides" - xyzwh 317 668 2015 110 59 -note 132101 "codecs, stream I/O here" - xyzwh 376 592 2005 166 39 -simplerelationcanvas 131205 simplerelation_ref 128005 - from ref 130053 z 2004 to ref 130181 -simplerelationcanvas 131333 simplerelation_ref 128133 - from ref 129925 z 2004 to ref 130053 -line 130309 -_-_ - from ref 129797 z 2004 to ref 128901 -line 130821 -_-_ geometry HVr - from ref 129797 z 2004 to point 493 469 - line 130949 z 2004 to ref 129029 -line 131077 -_-_ - from ref 129797 z 2004 to ref 129669 -end diff --git a/uml/cinelerra3/128133 b/uml/cinelerra3/128133 deleted file mode 100644 index 3c6c34c2d..000000000 --- a/uml/cinelerra3/128133 +++ /dev/null @@ -1,29 +0,0 @@ -format 38 -"AssetManager" // AssetManager - revision 1 - modified_by 5 "hiv" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - -end diff --git a/uml/cinelerra3/128133.diagram b/uml/cinelerra3/128133.diagram deleted file mode 100644 index 784c2e36c..000000000 --- a/uml/cinelerra3/128133.diagram +++ /dev/null @@ -1,193 +0,0 @@ -format 38 - -classcanvas 128005 class_ref 128005 // Session - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 30 608 2000 - end -classcanvas 128133 class_ref 128133 // EDL - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 232 607 2000 - end -classcanvas 128261 class_ref 128261 // Fixture - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 202 895 2000 - end -classcanvas 129029 class_ref 128389 // Track - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 306 712 2000 - end -classcanvas 129413 class_ref 128517 // MObject - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 313 137 2000 - end -classcanvas 129669 class_ref 128645 // Placement - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 574 129 2000 - end -classcanvas 129925 class_ref 128389 // Track - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 319 1005 2000 - end -classcanvas 130949 class_ref 128773 // AbstractMO - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 317 251 2000 - end -classcanvas 131461 class_ref 128901 // Clip - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 279 361 2000 - end -classcanvas 131717 class_ref 129029 // Effect - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 336 361 2000 - end -classcanvas 131973 class_ref 129157 // Meta - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 389 368 2000 - end -classcanvas 132229 class_ref 129285 // DirectPlacement - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 664 373 2000 - end -classcanvas 132869 class_ref 129413 // RelativePlacement - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 471 346 2000 - end -classcanvas 134149 class_ref 129541 // Allocation - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 590 366 2000 - end -classcanvas 134405 class_ref 129669 // Label - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 439 483 2000 - end -classcanvas 135429 class_ref 129797 // ExplicitPlacement - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 660 233 2004 - end -classcanvas 135813 class_ref 129797 // ExplicitPlacement - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 466 807 2000 - end -classcanvas 136581 class_ref 129925 // Auto - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 373 467 2005 - end -note 136837 "Placement \"locates\" a Media Object" - xyzwh 368 83 3005 207 36 -textcanvas 136965 "the Timeline is a list of placements reduced to absolute coordinates (time, track)" - xyzwh 464 925 2000 121 90 -textcanvas 137093 "Fixture is the actual assembly of various Media Objects ready to be performed" - xyzwh 39 909 2000 147 108 -classcanvas 137221 class_ref 130053 // Wish - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 573 485 2000 - end -classcanvas 137349 class_ref 130181 // Constraint - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 623 485 2000 - end -relationcanvas 128389 relation_ref 128005 // - from ref 128005 z 1999 stereotype "<>" xyz 139 627 3000 to ref 128133 - role_a_pos 201 604 3000 no_role_b - multiplicity_a_pos 205 637 3000 no_multiplicity_b -relationcanvas 128517 relation_ref 128133 // - from ref 128005 z 1999 to ref 128261 - role_a_pos 240 870 3000 no_role_b - multiplicity_a_pos 214 870 3000 no_multiplicity_b -relationcanvas 128645 relation_ref 128261 // - geometry VHr - from ref 128261 z 1999 to point 252 931 - line 128901 z 1999 to ref 128133 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129157 relation_ref 128389 // - geometry HV - from ref 128133 z 1999 stereotype "<>" xyz 286 629 3000 to point 326 626 - line 129285 z 1999 to ref 129029 - role_a_pos 338 687 3000 no_role_b - multiplicity_a_pos 314 687 3000 no_multiplicity_b -relationcanvas 129797 relation_ref 128645 // - from ref 129413 z 1999 to ref 129669 - role_a_pos 513 144 3000 role_b_pos 401 144 3000 - multiplicity_a_pos 547 177 3000 multiplicity_b_pos 401 177 3000 -relationcanvas 130181 relation_ref 129029 // - geometry HV - from ref 128261 z 1999 stereotype "<>" xyz 314 935 3000 to point 339 931 - line 130565 z 1999 to ref 129925 - role_a_pos 351 980 3000 no_role_b - multiplicity_a_pos 315 980 3000 no_multiplicity_b -relationcanvas 130821 relation_ref 128517 // - geometry VH - from ref 128133 z 1999 stereotype "<>" xyz 258 548 3000 to point 252 167 - line 132357 z 1999 to ref 129413 - role_a_pos 280 145 3000 no_role_b - multiplicity_a_pos 298 178 3000 no_multiplicity_b -relationcanvas 131077 relation_ref 129285 // - geometry VHr - from ref 130949 z 1999 to point 350 277 - line 131333 z 1999 to ref 129413 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 131589 relation_ref 129413 // - from ref 131461 z 1999 to ref 130949 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 131845 relation_ref 129541 // - from ref 131717 z 1999 to ref 130949 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 132101 relation_ref 129669 // - from ref 131973 z 1999 to ref 130949 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 132485 relation_ref 129797 // - from ref 132229 z 1999 to ref 129669 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 132997 relation_ref 129925 // - from ref 132869 z 1999 to point 486 247 - line 133893 z 1999 to ref 129413 - role_a_pos 401 172 3000 no_role_b - multiplicity_a_pos 401 205 3000 multiplicity_b_pos 495 321 3000 -relationcanvas 134533 relation_ref 130309 // - from ref 134405 z 1999 to ref 131973 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 135173 relation_ref 130565 // - from ref 134149 z 1999 to ref 129669 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 135301 relation_ref 130693 // - from ref 132869 z 1999 to ref 129669 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 135557 relation_ref 130821 // - from ref 132229 z 1999 to ref 135429 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 135685 relation_ref 130949 // - from ref 135429 z 1999 to ref 129669 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 135941 relation_ref 131077 // - from ref 128261 z 1999 stereotype "<>" xyz 372 889 3000 to ref 135813 - role_a_pos 419 843 3000 no_role_b - multiplicity_a_pos 451 876 3000 no_multiplicity_b -relationcanvas 136069 relation_ref 131205 // - from ref 135813 z 1999 to point 433 897 - line 136197 z 1999 to ref 129925 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 136709 relation_ref 131333 // - from ref 136581 z 1999 to ref 131973 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 137477 relation_ref 131461 // - from ref 137221 z 1999 to ref 134149 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 138245 relation_ref 131717 // - from ref 137349 z 1999 to ref 134149 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -end diff --git a/uml/cinelerra3/128138 b/uml/cinelerra3/128138 deleted file mode 100644 index 525ce02c1..000000000 --- a/uml/cinelerra3/128138 +++ /dev/null @@ -1,453 +0,0 @@ -format 38 -"design" // BackendLayer::design - revision 3 - modified_by 10 "ct" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - classview 128517 "Backend Components" - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //class settings - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - classdiagram 128181 "File Mapping" - draw_all_relations no hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - comment "Shows whats used to access Frames" - size A4 - end - - classdiagram 128309 "In Memory Database" - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - size A4 - end - - class 128181 "File" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 128437 // descriptor (descriptor) - relation 128437 o--> name "descriptor" - a role_name "descriptor" multiplicity "" protected - comment "type of this frame" - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128437 // descriptor (descriptor) - b multiplicity "" parent class_ref 128693 // FileHandle - end - - operation 128181 "getFrame" - public return_type class_ref 128821 // Frame - nparams 2 - param in name "" type class_ref 128949 // FrameDescriptor - param in name "frame_address" explicit_type "" - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - classrelation 128225 // handle () - relation 128225 o--> - a role_name "handle" multiplicity "0..1" protected - comment "weak pointer" - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128225 // handle () - b multiplicity "" parent class_ref 128693 // FileHandle - end - - classrelation 128609 // mappings () - relation 128481 o--> - a role_name "mappings" multiplicity "*" protected - comment "weak pointers" - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128609 // mappings () - b multiplicity "" parent class_ref 128565 // FileMap - association_explicit_type "index" - end - - classrelation 128266 // - relation_ref 128138 // - end - - classrelation 129162 // - relation_ref 128778 // - end - end - - class 128309 "FileHandleCache" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 128737 // handles () - relation 128609 *--> - stereotype "list" - a role_name "handles" multiplicity "*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value}; -" - classrelation_ref 128737 // handles () - b multiplicity "" parent class_ref 128693 // FileHandle - end - - attribute 128225 "handles_available" - private explicit_type "int" - init_value "100" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - comment "initialized to the maximum number of filehandles the backend may use for mapped files. When no handles are available, the handle which is last in the handles list is closed and (re-)used. -Else this number is decremented for each new filehandle used and incremented for any one explicitly freed." - end - end - - class 128437 "FileMapCache" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 129505 // - relation_ref 128993 // - end - - classrelation 129633 // checked_in () - relation 129121 *--> - stereotype "list" - a role_name "checked_in" multiplicity "*" protected - comment "checked_in objects are subject of cache aging and must be not in use" - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - classrelation_ref 129633 // checked_in () - b multiplicity "" parent class_ref 128565 // FileMap - end - - classrelation 129290 // checked_out () - relation 128906 *--> - stereotype "list" - a role_name "checked_out" multiplicity "*" protected - comment "this list keeps all mappings which are in use, and thus prevents them from Cache aging" - cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value}; -" - classrelation_ref 129290 // checked_out () - b multiplicity "" parent class_ref 128565 // FileMap - end - end - - class 128565 "FileMap" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - associated_diagram classdiagram_ref 128181 // File Mapping - classrelation 128394 // frames () - relation 128266 o--- - a role_name "frames" multiplicity "*" private - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128394 // frames () - b role_name "mapping" multiplicity "1" private - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128522 // mapping () - end - end - - class 128693 "FileHandle" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - end - - class 128821 "Frame" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - comment "Frames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool." - classrelation 128181 // - relation 128181 o--> - a role_name "" multiplicity "*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type} *> ${name}${value}; -" - classrelation_ref 128181 // - b multiplicity "" parent class_ref 128949 // FrameDescriptor - association_type class_ref 128949 // FrameDescriptor - end - - classrelation 128309 // - relation 128309 o--> - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128309 // - b multiplicity "" parent class_ref 128949 // FrameDescriptor - end - - classrelation 128693 // - relation 128565 o--- - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128693 // - b role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128821 // - end - - classrelation 128949 // - relation 128693 o--> - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128949 // - b multiplicity "" parent class_ref 128949 // FrameDescriptor - end - - classrelation 129077 // - relation 128821 o--> - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 129077 // - b multiplicity "" parent class_ref 128949 // FrameDescriptor - end - - classrelation 128481 // descriptor () - relation 128353 o--> - a role_name "descriptor" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128481 // descriptor () - b multiplicity "" parent class_ref 128949 // FrameDescriptor - end - - classrelation 129377 // - relation 128993 ---- - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 129377 // - b role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 129505 // - end - - classrelation 129889 // - relation_ref 129249 // - end - - classrelation 128522 // mapping () - relation_ref 128266 // - end - end - - class 128949 "FrameDescriptor" - visibility package stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - comment "A FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes" - classrelation 128821 // - relation_ref 128565 // - end - end - - class 129077 "Prefetch" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - end - - class 129205 "Scheduler" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - end - - sequencediagram 128437 "QueryFrame" - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - size A4 - end - - class 129333 "FileProvider" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - comment "This is the Factory for Files, whenever something wants to use some file (or temporary storage), This Factory will hand out some smart/shared pointer to a File object which will be used to retrieve Frames." - classrelation 129034 // files () - relation 128778 o--- - a role_name "files" multiplicity "*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 129034 // files () - b role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 129162 // - end - end - - class 128225 "FrameReference" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 129761 // frame () - relation 129249 o--- - a role_name "frame" multiplicity "0..1" protected - comment "maybe weak reference" - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 129761 // frame () - b role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 129889 // - end - - classrelation 128906 // - relation 128650 -_-|> - a public - cpp default "${type}" - classrelation_ref 128906 // - b multiplicity "" parent class_ref 128906 // SmartPointer - end - end - - class 128778 "FileReference" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 128138 // - relation 128138 o--- - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128138 // - b role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128266 // - end - - classrelation 128778 // - relation 128522 -_-|> - a public - cpp default "${type}" - classrelation_ref 128778 // - b multiplicity "" parent class_ref 128906 // SmartPointer - end - end - - end -end diff --git a/uml/cinelerra3/128181.diagram b/uml/cinelerra3/128181.diagram deleted file mode 100644 index 78856668d..000000000 --- a/uml/cinelerra3/128181.diagram +++ /dev/null @@ -1,110 +0,0 @@ -format 38 - -classcanvas 128010 class_ref 128778 // FileReference - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 56 201 2000 - end -classcanvas 128053 class_ref 128181 // File - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 289 193 2000 - end -classcanvas 128181 class_ref 128309 // FileHandleCache - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 481 60 2000 - end -classcanvas 128309 class_ref 128437 // FileMapCache - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 664 316 2000 - end -classcanvas 128394 class_ref 128906 // SmartPointer - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 279 316 3005 - end -classcanvas 128565 class_ref 128565 // FileMap - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 509 315 2000 - end -classcanvas 128693 class_ref 128693 // FileHandle - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 507 202 2000 - end -classcanvas 128821 class_ref 128821 // Frame - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 515 463 2000 - end -classcanvas 128949 class_ref 128949 // FrameDescriptor - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 269 621 2000 - end -classcanvas 129461 class_ref 129333 // FileProvider - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 285 70 2005 - end -fragment 129589 "public interfaces" - xyzwh 240 24 1995 184 700 -end -fragment 129717 "implementation details" - xyzwh 432 20 1995 398 703 -end -fragment 131338 "References hold by others" - xyzwh 6 23 1990 227 700 -end -classcanvas 131553 class_ref 128225 // FrameReference - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 50 462 2000 - end -relationcanvas 128138 relation_ref 128138 // - from ref 128010 z 1999 to ref 128053 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 128266 relation_ref 128266 // - from ref 128565 z 1999 to ref 128821 - role_a_pos 544 439 3000 role_b_pos 545 370 3000 - multiplicity_a_pos 531 438 3000 multiplicity_b_pos 528 370 3000 -relationcanvas 128353 relation_ref 128225 // - from ref 128053 z 1999 to ref 128693 - role_a_pos 456 196 3000 no_role_b - multiplicity_a_pos 478 235 3000 no_multiplicity_b -relationcanvas 128481 relation_ref 128353 // - geometry HVr - from ref 128821 z 1999 to point 540 655 - line 131978 z 1999 to ref 128949 - role_a_pos 396 628 3000 no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 128609 relation_ref 128481 // - from ref 128053 z 1999 to ref 128565 - role_a_pos 430 298 3000 no_role_b - multiplicity_a_pos 493 338 3000 no_multiplicity_b -relationcanvas 128650 relation_ref 128522 // - from ref 128010 z 1999 to ref 128394 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129034 relation_ref 128650 // - from ref 131553 z 1999 to ref 128394 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129121 relation_ref 128609 // - from ref 128181 z 1999 stereotype "<>" xyz 523 143 3000 to ref 128693 - role_a_pos 552 174 3000 no_role_b - multiplicity_a_pos 538 174 3000 no_multiplicity_b -relationcanvas 129290 relation_ref 128778 // - from ref 129461 z 1999 to ref 128053 - role_a_pos 336 165 3000 no_role_b - multiplicity_a_pos 321 165 3000 no_multiplicity_b -relationcanvas 129930 relation_ref 128906 // - from ref 128309 z 1999 stereotype "<>" xyz 722 290 3000 to point 715 275 - line 130314 z 1999 to point 642 275 - line 130058 z 1999 to ref 128565 - role_a_pos 637 252 3000 no_role_b - multiplicity_a_pos 574 296 3000 no_multiplicity_b -relationcanvas 131425 relation_ref 129121 // - from ref 128309 z 1999 to point 716 387 - line 130186 z 1999 stereotype "<>" xyz 721 369 3000 to point 643 387 - line 130570 z 1999 to ref 128565 - role_a_pos 651 391 3000 no_role_b - multiplicity_a_pos 573 354 3000 no_multiplicity_b -relationcanvas 131681 relation_ref 129249 // - from ref 131553 z 1999 to ref 128821 - role_a_pos 471 457 3000 no_role_b - multiplicity_a_pos 485 496 3000 no_multiplicity_b -end diff --git a/uml/cinelerra3/128261 b/uml/cinelerra3/128261 deleted file mode 100644 index 9fefa1555..000000000 --- a/uml/cinelerra3/128261 +++ /dev/null @@ -1,660 +0,0 @@ -format 38 -"MObject" // ProcessingLayer::MObject - revision 12 - modified_by 5 "hiv" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - classview 128005 "Session" - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //class settings - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - classdiagram 128133 "Session structure" - draw_all_relations no hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - size A4 - end - - objectdiagram 128773 "EDL Example1" - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - comment "A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks" - size A4 - end - - objectdiagram 128901 "EDL Example2" - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - comment "More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip" - size A4 - end - - class 128005 "Session" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 128005 // edls () - relation 128005 o--> - stereotype "list" - a role_name "edls" multiplicity "1..*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128005 // edls () - b multiplicity "" parent class_ref 128133 // EDL - end - - classrelation 128261 // fixture () - relation 128133 ---> - a role_name "fixture" multiplicity "1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128261 // fixture () - b multiplicity "" parent class_ref 128261 // Fixture - end - end - - class 128133 "EDL" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 128645 // tracks () - relation 128389 *--> - stereotype "list" - a role_name "tracks" multiplicity "*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - classrelation_ref 128645 // tracks () - b multiplicity "" parent class_ref 128389 // Track - end - - classrelation 128901 // clips () - relation 128517 o--> - stereotype "list" - a role_name "clips" multiplicity "*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 128901 // clips () - b multiplicity "" parent class_ref 128517 // MObject - end - end - - class 128261 "Fixture" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 128517 // - relation 128261 ---|> - a public - cpp default "${type}" - classrelation_ref 128517 // - b multiplicity "" parent class_ref 128133 // EDL - end - - classrelation 129541 // tracks () - relation 129029 *--> - stereotype "list" - a role_name "tracks" multiplicity "1..*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - classrelation_ref 129541 // tracks () - b multiplicity "" parent class_ref 128389 // Track - end - - classrelation 131717 // timeline () - relation 131077 *--> - stereotype "list" - a role_name "timeline" multiplicity "*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - classrelation_ref 131717 // timeline () - b multiplicity "" parent class_ref 129797 // ExplicitPlacement - end - - operation 128645 "getPlaylistForRender" - public explicit_return_type "" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - operation 129157 "getAutomation" - public explicit_return_type "" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 128389 "Track" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - end - - class 128517 "MObject" - abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - classrelation 129029 // placement () - relation 128645 ---- - a role_name "placement" multiplicity "1..*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 129029 // placement () - b role_name "subject" multiplicity "1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 129157 // subject () - end - - classrelation 137093 // - relation 135557 ---|> - a public - cpp default "${type}" - classrelation_ref 137093 // - b multiplicity "" parent class_ref 134021 // Buildable - end - end - - class 128645 "Placement" - abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - classrelation 129157 // subject () - relation_ref 128645 // - end - - operation 128005 "resolve" - public return_type class_ref 129797 // ExplicitPlacement - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - comment "create an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements." - end - end - - class 128773 "AbstractMO" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 129925 // - relation 129285 ---|> - a public - cpp default "${type}" - classrelation_ref 129925 // - b multiplicity "" parent class_ref 128517 // MObject - end - - attribute 128517 "length" - protected explicit_type "long" - init_value "0" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - end - end - - class 128901 "Clip" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 130053 // - relation 129413 ---|> - a public - cpp default "${type}" - classrelation_ref 130053 // - b multiplicity "" parent class_ref 128773 // AbstractMO - end - - attribute 128645 "start" - protected explicit_type "long" - init_value "0" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - comment "startpos in source" - end - end - - class 129029 "Effect" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 130181 // - relation 129541 ---|> - a public - cpp default "${type}" - classrelation_ref 130181 // - b multiplicity "" parent class_ref 128773 // AbstractMO - end - - attribute 128901 "plugID" - protected explicit_type "string" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - comment "Identifier of the Plugin to be used" - end - end - - class 129157 "Meta" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 130309 // - relation 129669 ---|> - a public - cpp default "${type}" - classrelation_ref 130309 // - b multiplicity "" parent class_ref 128773 // AbstractMO - end - end - - class 129285 "DirectPlacement" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 130437 // - relation 129797 ---|> - a public - cpp default "${type}" - classrelation_ref 130437 // - b multiplicity "" parent class_ref 128645 // Placement - end - - classrelation 131461 // - relation 130821 -_-|> - a public - cpp default "${type}" - classrelation_ref 131461 // - b multiplicity "" parent class_ref 129797 // ExplicitPlacement - end - end - - class 129413 "RelativePlacement" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 130565 // anchor () - relation 129925 ---> - a role_name "anchor" multiplicity "1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 130565 // anchor () - b multiplicity "1" parent class_ref 128517 // MObject - association_type class_ref 128517 // MObject - end - - attribute 128133 "relType" - protected explicit_type "" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - end - - classrelation 131333 // - relation 130693 ---|> - a public - cpp default "${type}" - classrelation_ref 131333 // - b multiplicity "" parent class_ref 128645 // Placement - end - - attribute 129029 "offset" - protected explicit_type "long" - init_value "0" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - comment "Offset the actual position by this (time) value relative to the anchor point" - end - - class 133893 "RelType" - visibility protected stereotype "enum" - cpp_decl "${comment}enum ${name} { -${items} -}; -" - java_decl "${comment}${@}${visibility}${final}${abstract}enum ${name}${implements} { -${items}; -${members}} -" - idl_decl "${comment}enum ${name} { -${items}}; -" - explicit_switch_type "" - - attribute 129157 "SAMETIME" - public explicit_type "" - cpp_decl " ${name}${value},${comment}" - java_decl "" - idl_decl "" - comment "place subject at the sime time then the anchor" - end - - attribute 129285 "ATTACH" - public explicit_type "" - cpp_decl " ${name}${value},${comment}" - java_decl "" - idl_decl "" - comment "attach subject to anchor (e.g. an effect to a clip)" - end - end - end - - class 129541 "Allocation" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - comment "a directive to place a MObject in a specific way" - classrelation 131205 // - relation 130565 ---|> - a public - cpp default "${type}" - classrelation_ref 131205 // - b multiplicity "" parent class_ref 128645 // Placement - end - - attribute 128773 "repr" - protected explicit_type "string" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - comment "human readable representation of the condition characterizing this allocaton, e.g. \"t >= 10\"" - end - end - - class 129669 "Label" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 130949 // - relation 130309 ---|> - a public - cpp default "${type}" - classrelation_ref 130949 // - b multiplicity "" parent class_ref 129157 // Meta - end - end - - class 129797 "ExplicitPlacement" - abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - classrelation 131589 // - relation 130949 ---|> - a public - cpp default "${type}" - classrelation_ref 131589 // - b multiplicity "" parent class_ref 128645 // Placement - end - - attribute 128261 "time" - protected explicit_type "long" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - end - - attribute 128389 "track" - protected type class_ref 128389 // Track - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - end - - classrelation 131845 // - relation 131205 ---> - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 131845 // - b multiplicity "" parent class_ref 128389 // Track - association_type class_ref 128389 // Track - end - end - - class 129925 "Auto" - visibility package - nformals 1 - formal name "VAL" type "class" explicit_default_value "" - explicit_extends "" - nactuals 1 - actual class class_ref 134661 // ParamProvider - rank 0 explicit_value "" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 131973 // - relation 131333 ---|> - a public - cpp default "${type}" - classrelation_ref 131973 // - b multiplicity "" parent class_ref 129157 // Meta - end - - classrelation 138501 // - relation 136837 -_-|> - a public - cpp default "${type}" - classrelation_ref 138501 // - b multiplicity "" parent class_ref 134661 // ParamProvider - end - - operation 131077 "getValue" - public explicit_return_type "VAL" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 130053 "Wish" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 132101 // - relation 131461 ---|> - a public - cpp default "${type}" - classrelation_ref 132101 // - b multiplicity "" parent class_ref 129541 // Allocation - end - end - - class 130181 "Constraint" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 132357 // - relation 131717 ---|> - a public - cpp default "${type}" - classrelation_ref 132357 // - b multiplicity "" parent class_ref 129541 // Allocation - end - end - end - - package_ref 128901 // Builder - - package_ref 129029 // Controller -end diff --git a/uml/cinelerra3/128261.diagram b/uml/cinelerra3/128261.diagram deleted file mode 100644 index 7bc995b82..000000000 --- a/uml/cinelerra3/128261.diagram +++ /dev/null @@ -1,81 +0,0 @@ -format 38 - -componentcanvas 128133 component_ref 128005 // Builder - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 117 113 2000 204 156 -componentcanvas 128261 component_ref 128261 // Controller - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 573 100 2000 166 82 -fragment 128389 "Backend Layer" - xyzwh 89 690 2000 632 188 -end -componentcanvas 128517 component_ref 128901 // Engine - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 95 318 2000 487 323 -componentcanvas 128645 component_ref 129029 // Frame (Stream) Provider - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 254 711 2005 180 160 -deploymentnodecanvas 128901 deploymentnode_ref 128005 // timeline - xyzwh 142 3 2000 323 90 -hubcanvas 129157 xyz 192 63 2005 -hubcanvas 129285 xyz 222 62 2005 -hubcanvas 129413 xyz 255 62 2005 -hubcanvas 129541 xyz 290 62 2005 -deploymentnodecanvas 130053 deploymentnode_ref 128261 // playlist - xyzwh 148 389 2005 401 80 -deploymentnodecanvas 130181 deploymentnode_ref 128389 // proc - xyzwh 178 435 2010 97 69 -deploymentnodecanvas 130309 deploymentnode_ref 128389 // proc - xyzwh 424 430 2010 97 69 -deploymentnodecanvas 130437 deploymentnode_ref 128517 // pnode - xyzwh 202 507 2005 56 36 -deploymentnodecanvas 130565 deploymentnode_ref 128517 // pnode - xyzwh 201 546 2005 56 36 -deploymentnodecanvas 130693 deploymentnode_ref 128517 // pnode - xyzwh 201 585 2005 56 36 -deploymentnodecanvas 130821 deploymentnode_ref 128517 // pnode - xyzwh 318 505 2005 56 36 -deploymentnodecanvas 130949 deploymentnode_ref 128389 // proc - xyzwh 294 433 2010 97 69 -deploymentnodecanvas 131077 deploymentnode_ref 128517 // pnode - xyzwh 318 544 2005 56 36 -deploymentnodecanvas 131205 deploymentnode_ref 128517 // pnode - xyzwh 317 584 2005 56 36 -deploymentnodecanvas 133125 deploymentnode_ref 128645 // Frame - xyzwh 309 800 2010 70 36 -deploymentnodecanvas 134021 deploymentnode_ref 128517 // pnode - xyzwh 442 503 2005 56 36 -deploymentnodecanvas 134149 deploymentnode_ref 128517 // pnode - xyzwh 411 548 2005 56 36 -deploymentnodecanvas 134277 deploymentnode_ref 128517 // pnode - xyzwh 466 548 2005 56 36 -deploymentnodecanvas 134405 deploymentnode_ref 128517 // pnode - xyzwh 467 586 2005 56 36 -componentcanvas 135045 component_ref 129285 // RenderPathManager - draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 505 222 2000 165 65 -deploymentnodecanvas 136069 deploymentnode_ref 128773 // State - xyzwh 703 226 2000 83 52 -textcanvas 136325 "Render Engine carries out the actual processing by pulling output from the aprropriate processor " - xyzwh 615 363 2000 135 89 -note 136453 "Input for Builder" - xyzwh 125 83 2005 104 36 -note 136581 "Output of Builder" - xyzwh 119 350 2005 104 36 -note 136709 "optimizes" - xyzwh 616 286 2000 75 35 -packagecanvas 136837 - package_ref 129029 // Controller - xyzwh 486 68 1994 326 228 -textcanvas 136965 "Builder is instructed by Controller and transforms given timeline into a Render Engine, i.e.a network of processing nodes" - xyzwh 326 196 2005 160 101 -simplerelationcanvas 128773 simplerelation_ref 128133 - from ref 128517 z 1999 to ref 128645 -line 129925 ---- - from ref 129157 z 2004 to ref 129541 -line 133765 ---- - from ref 130949 z 2009 to ref 133125 -simplerelationcanvas 134533 simplerelation_ref 128261 geometry HVr - from ref 128261 z 1999 to point 653 188 - line 134789 z 1999 to ref 128133 -end diff --git a/uml/cinelerra3/128389 b/uml/cinelerra3/128389 deleted file mode 100644 index ab61eda67..000000000 --- a/uml/cinelerra3/128389 +++ /dev/null @@ -1,623 +0,0 @@ -format 38 -"RenderEngine" // RenderEngine - revision 7 - modified_by 5 "hiv" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - deploymentview 128005 "Engine Parts" - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - deploymentdiagram 128261 "Overview Render Engine" - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - size A4 - end - - deploymentnode 128005 "timeline" - end - - deploymentnode 128261 "playlist" - end - - deploymentnode 128389 "proc" - end - - deploymentnode 128517 "pnode" - end - - deploymentnode 128645 "Frame" - end - - deploymentnode 128773 "State" - end - end - - classview 128133 "Engine Workings" - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //class settings - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - classdiagram 128389 "Render Entities" - draw_all_relations no hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - size A4 - end - - objectdiagram 129029 "Engine Example1" - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - comment "Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1" - size A4 - end - - objectdiagram 129157 "Engine Example2" - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - comment "Example2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration." - size A4 - end - - classdiagram 129669 "Automation Entities" - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition yes show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - size A4 - end - - class 131333 "RenderEngine" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - operation 129413 "play" - public explicit_return_type "" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - classrelation 132485 // renderSegments () - relation 131845 *--> - a role_name "renderSegments" multiplicity "0..*" private - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - classrelation_ref 132485 // renderSegments () - b multiplicity "1" parent class_ref 131461 // Processor - end - - classrelation 136197 // - relation 134789 ---|> - a public - cpp default "${type}" - classrelation_ref 136197 // - b multiplicity "" parent class_ref 131461 // Processor - end - end - - class 131461 "Processor" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 132613 // output () - relation 131973 ---> - stereotype "has_a" - a role_name "output" multiplicity "1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 132613 // output () - b multiplicity "" parent class_ref 131589 // ExitNode - end - - classrelation 136325 // - relation 134917 -_-> - stereotype "uses" - a package - cpp default "#include in source" - classrelation_ref 136325 // - b multiplicity "" parent class_ref 132741 // StateProxy - end - - attribute 129413 "start" - protected explicit_type "long" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - comment "begin of the timerange covered by this processor" - end - - attribute 129541 "end" - protected explicit_type "long" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - comment "end of the timerange (excl)" - end - end - - class 131589 "ExitNode" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 132869 // - relation 132101 ---|> - a public - cpp default "${type}" - classrelation_ref 132869 // - b multiplicity "" parent class_ref 131717 // ProcNode - end - end - - class 131717 "ProcNode" - abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - classrelation 136965 // datasrc () - relation 135429 ---> - a role_name "datasrc" multiplicity "" protected - comment "The predecessor in a processing pipeline, i.e. a source to get data to be processed" - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 136965 // datasrc () - b multiplicity "1" parent class_ref 131717 // ProcNode - end - - classrelation 137861 // - relation 136197 *--> - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - classrelation_ref 137861 // - b multiplicity "" parent class_ref 134533 // Parameter - end - end - - class 131845 "Trafo" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 132997 // - relation 132229 ---|> - a public - cpp default "${type}" - classrelation_ref 132997 // - b multiplicity "" parent class_ref 131717 // ProcNode - end - end - - class 131973 "Link" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 133253 // - relation 132485 ---|> - a public - cpp default "${type}" - classrelation_ref 133253 // - b multiplicity "" parent class_ref 131717 // ProcNode - end - end - - class 132101 "Hub" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 133125 // - relation 132357 ---|> - a public - cpp default "${type}" - classrelation_ref 133125 // - b multiplicity "" parent class_ref 131717 // ProcNode - end - end - - class 132229 "Projector" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 133509 // - relation 132741 ---|> - a public - cpp default "${type}" - classrelation_ref 133509 // - b multiplicity "" parent class_ref 131845 // Trafo - end - end - - class 132357 "Mask" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 133637 // - relation 132869 ---|> - a public - cpp default "${type}" - classrelation_ref 133637 // - b multiplicity "" parent class_ref 131845 // Trafo - end - end - - class 132485 "PluginAdapter" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 133765 // - relation 132997 ---|> - a public - cpp default "${type}" - classrelation_ref 133765 // - b multiplicity "" parent class_ref 131845 // Trafo - end - end - - class 132613 "OpenGLPipe" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 133381 // - relation 132613 ---|> - a public - cpp default "${type}" - classrelation_ref 133381 // - b multiplicity "" parent class_ref 131973 // Link - end - end - - class 132869 "ARender" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 134661 // - relation 133509 ---|> - a public - cpp default "${type}" - classrelation_ref 134661 // - b multiplicity "" parent class_ref 132741 // StateProxy - end - end - - class 132997 "VRender" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 134789 // - relation 133637 ---|> - a public - cpp default "${type}" - classrelation_ref 134789 // - b multiplicity "" parent class_ref 132741 // StateProxy - end - end - - class 133125 "GLRender" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 134917 // - relation 133765 ---|> - a public - cpp default "${type}" - classrelation_ref 134917 // - b multiplicity "" parent class_ref 132741 // StateProxy - end - end - - class 133253 "Frame" - visibility package stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - end - - class 133381 "AFrame" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 135045 // - relation 133893 ---|> - a public - cpp default "${type}" - classrelation_ref 135045 // - b multiplicity "" parent class_ref 133253 // Frame - end - end - - class 133509 "VFrame" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 135173 // - relation 134021 ---|> - a public - cpp default "${type}" - classrelation_ref 135173 // - b multiplicity "" parent class_ref 133253 // Frame - end - end - - class 133637 "GLBuf" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 135301 // - relation 134149 ---|> - a public - cpp default "${type}" - classrelation_ref 135301 // - b multiplicity "" parent class_ref 133253 // Frame - end - end - - class 133765 "Source" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 136069 // - relation 134661 ---|> - a public - cpp default "${type}" - classrelation_ref 136069 // - b multiplicity "" parent class_ref 131717 // ProcNode - end - end - - class 134533 "Parameter" - visibility package - nformals 1 - formal name "VAL" type "class" explicit_default_value "" - explicit_extends "" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - operation 130821 "getValue" - public explicit_return_type "VAL" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - classrelation 138245 // - relation 136581 -_-> - stereotype "implemented_by" - a package - cpp default "#include in source" - classrelation_ref 138245 // - b multiplicity "" parent class_ref 134661 // ParamProvider - end - - classrelation 138629 // provider () - relation_ref 136325 // - end - end - - class 134661 "ParamProvider" - abstract visibility public stereotype "interface" - nformals 1 - formal name "VAL" type "class" explicit_default_value "" - explicit_extends "" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - classrelation 137989 // param () - relation 136325 ---- - a role_name "param" multiplicity "1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 137989 // param () - b role_name "provider" multiplicity "1" protected - classrelation_ref 138629 // provider () - end - - classrelation 138373 // - relation 136709 ---> - a role_name "" multiplicity "0..1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 138373 // - b multiplicity "" parent class_ref 134789 // Interpolator - end - - operation 130949 "getValue" - public explicit_return_type "VAL" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 134789 "Interpolator" - visibility package - nformals 1 - formal name "VAL" type "class" explicit_default_value "" - explicit_extends "" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - end - end -end diff --git a/uml/cinelerra3/128389.diagram b/uml/cinelerra3/128389.diagram deleted file mode 100644 index a70ea7935..000000000 --- a/uml/cinelerra3/128389.diagram +++ /dev/null @@ -1,202 +0,0 @@ -format 38 - -classcanvas 128005 class_ref 131333 // RenderEngine - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 175 325 2000 - end -classcanvas 128133 class_ref 131461 // Processor - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 276 165 2000 - end -classcanvas 128389 class_ref 131589 // ExitNode - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 417 444 2000 - end -classcanvas 128517 class_ref 131717 // ProcNode - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 462 265 2000 - end -classcanvas 129029 class_ref 131845 // Trafo - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 496 444 2000 - end -classcanvas 129157 class_ref 131973 // Link - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 648 444 2000 - end -classcanvas 129285 class_ref 132101 // Hub - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 593 444 2000 - end -classcanvas 129413 class_ref 132229 // Projector - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 417 561 2000 - end -classcanvas 129541 class_ref 132357 // Mask - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 481 561 2000 - end -classcanvas 129669 class_ref 132485 // PluginAdapter - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 539 561 2000 - end -classcanvas 129797 class_ref 132613 // OpenGLPipe - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 684 531 2000 - end -classcanvas 132229 class_ref 132741 // StateProxy - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 36 374 2000 - end -classcanvas 132997 class_ref 132869 // ARender - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 31 511 2000 - end -classcanvas 133125 class_ref 132997 // VRender - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 110 511 2000 - end -classcanvas 133253 class_ref 133125 // GLRender - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 175 511 2000 - end -classcanvas 133765 class_ref 133253 // Frame - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 278 612 2000 - end -classcanvas 133893 class_ref 133381 // AFrame - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 228 737 2000 - end -classcanvas 134021 class_ref 133509 // VFrame - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 291 737 2000 - end -classcanvas 134149 class_ref 133637 // GLBuf - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 360 737 2000 - end -classcanvas 137221 class_ref 133765 // Source - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 741 444 2000 - end -relationcanvas 128261 relation_ref 131845 // - from ref 128005 z 1999 to point 216 200 - line 137733 z 1999 to ref 128133 - role_a_pos 184 178 3000 no_role_b - multiplicity_a_pos 249 211 3000 multiplicity_b_pos 202 300 3000 -relationcanvas 128901 relation_ref 131973 // - from ref 128133 z 1999 stereotype "<>" xyz 354 342 3000 to ref 128389 - role_a_pos 440 419 3000 no_role_b - multiplicity_a_pos 414 419 3000 no_multiplicity_b -relationcanvas 129925 relation_ref 132101 // - geometry VHV - from ref 128389 z 1999 to point 445 384 - line 130693 z 1999 to point 499 384 - line 130821 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 130053 relation_ref 132229 // - geometry VHV - from ref 129029 z 1999 to point 516 384 - line 130949 z 1999 to point 499 384 - line 131077 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 130181 relation_ref 132357 // - geometry VHV - from ref 129285 z 1999 to point 613 384 - line 131205 z 1999 to point 499 384 - line 131333 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 130309 relation_ref 132485 // - geometry VHV - from ref 129157 z 1999 to point 668 384 - line 131461 z 1999 to point 499 384 - line 131589 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 131717 relation_ref 132613 // - from ref 129797 z 1999 to ref 129157 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 131845 relation_ref 132741 // - from ref 129413 z 1999 to ref 129029 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 131973 relation_ref 132869 // - from ref 129541 z 1999 to ref 129029 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 132101 relation_ref 132997 // - from ref 129669 z 1999 to ref 129029 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 133381 relation_ref 133509 // - geometry VHV - from ref 132997 z 1999 to point 58 472 - line 134277 z 1999 to point 73 472 - line 134405 z 1999 to ref 132229 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 133509 relation_ref 133637 // - geometry VHV - from ref 133125 z 1999 to point 136 472 - line 134533 z 1999 to point 73 472 - line 134661 z 1999 to ref 132229 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 133637 relation_ref 133765 // - geometry VHV - from ref 133253 z 1999 to point 206 472 - line 134789 z 1999 to point 73 472 - line 134917 z 1999 to ref 132229 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 135045 relation_ref 133893 // - geometry VHV - from ref 133893 z 1999 to point 252 704 - line 135557 z 1999 to point 315 704 - line 135685 z 1999 to ref 133765 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 135173 relation_ref 134021 // - geometry VHV - from ref 134021 z 1999 to point 315 704 - line 135813 z 1999 to point 315 704 - line 135941 z 1999 to ref 133765 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 135429 relation_ref 134149 // - from ref 134149 z 1999 to ref 133765 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 136965 relation_ref 134533 // - from ref 132229 z 1999 to point 315 465 - line 137093 z 1999 to ref 133765 - role_a_pos 327 587 3000 no_role_b - no_multiplicity_a multiplicity_b_pos 124 426 3000 -relationcanvas 137349 relation_ref 134661 // - geometry VHV - from ref 137221 z 1999 to point 763 384 - line 137477 z 1999 to point 499 384 - line 137605 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 137861 relation_ref 134789 // - from ref 128005 z 1999 to ref 128133 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 137989 relation_ref 134917 // - from ref 128133 z 1999 stereotype "<>" xyz 285 323 3000 to point 306 403 - line 138117 z 1999 to ref 132229 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 139397 relation_ref 135429 // - from ref 128517 z 1999 to point 432 265 - line 139525 z 1999 to point 432 295 - line 139653 z 1999 to ref 128517 - role_a_pos 414 273 3000 no_role_b - no_multiplicity_a multiplicity_b_pos 445 292 3000 -end diff --git a/uml/cinelerra3/128437.diagram b/uml/cinelerra3/128437.diagram deleted file mode 100644 index 1c61b8251..000000000 --- a/uml/cinelerra3/128437.diagram +++ /dev/null @@ -1,3 +0,0 @@ -format 38 - -end diff --git a/uml/cinelerra3/128517 b/uml/cinelerra3/128517 deleted file mode 100644 index 3357e104a..000000000 --- a/uml/cinelerra3/128517 +++ /dev/null @@ -1,175 +0,0 @@ -format 38 -"CommonLib" // CommonLib - revision 5 - modified_by 10 "ct" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - classview 128645 "Service Components" - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //class settings - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - class 134917 "Time" - visibility public - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - comment "denotes a temporal position (time point), based on timeline start. - -investigate posix.4 realtime timers, wrap these here" - end - end - - classview 128138 "Posix Threads Abstraction" - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //class settings - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - comment "C++ wrapers for pthreads" - class 128138 "Thread" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - comment "We can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads " - end - - class 128266 "Condition" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - comment "I provided a reworked Condition class in my cinelerra2 repository" - class 128522 "Lock" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - end - end - - class 128394 "Mutex" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - comment "I provided a reworked Mutex class in my cinelerra2 repository" - class 128650 "Lock" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - end - end - end - - classview 128266 "SmartPointers" - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //class settings - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - class 128906 "SmartPointer" - abstract visibility package stereotype "auxiliary" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} { -${members}} -" - idl_decl "${comment}${abstract}${custom}valuetype ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - end - end -end diff --git a/uml/cinelerra3/128517.diagram b/uml/cinelerra3/128517.diagram deleted file mode 100644 index badd12121..000000000 --- a/uml/cinelerra3/128517.diagram +++ /dev/null @@ -1,124 +0,0 @@ -format 38 - -classinstance 128005 class_ref 130309 // ControllerFacade - xyz 494 125 2000 name "" xyz 494 125 2000 -classinstance 128133 class_ref 130437 // PathManager - xyz 472 286 2000 name "" xyz 472 286 2000 -classinstance 129285 class_ref 130565 // BuilderFacade - xyz 250 285 2000 name "" xyz 250 285 2000 -classinstance 129413 class_ref 128261 // Fixture - xyz 141 93 2000 name "" xyz 141 93 2000 -classinstance 129797 class_ref 130693 // ToolFactory - xyz 381 449 2000 name "" xyz 381 449 2000 -classinstance 129925 class_ref 130821 // ConManager - xyz 142 486 2005 name "" xyz 142 486 2005 -classinstance 130053 class_ref 130949 // RenderState - xyz 550 424 2000 name "" xyz 550 424 2000 -note 130565 "Note: Builder subsys is stateless" - xyzwh 25 374 2000 128 58 -classinstance 130693 class_ref 131077 // Assembler - xyz 225 390 2000 name "" xyz 225 390 2000 -classinstance 131333 class_ref 131205 // FrameProvider - xyz 172 613 2000 name "" xyz 172 613 2000 -classinstance 131717 class_ref 131333 // RenderEngine - xyz 721 542 2000 name "" xyz 721 542 2000 -note 133381 "Fixture is the only query/access point to EDL" - xyzwh 14 17 2000 179 63 -note 133509 "Trigger: Play Request" - xyzwh 589 58 2000 141 40 -linkcanvas 129157 - from ref 128005 z 1999 to ref 128133 -dirscanvas 132101 z 1000 linkcanvas_ref 129157 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "1 buildProcessor()" xyz 542 224 3000 -linkcanvas 129541 - from ref 128133 z 1999 to ref 129285 -dirscanvas 130181 z 1000 linkcanvas_ref 129541 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "3 buildEngine()" xyz 364 316 3000 -linkcanvas 129669 - from ref 129285 z 1999 to ref 129413 -dirscanvas 132357 z 1000 linkcanvas_ref 129669 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "4 getPlaylistForRender()" xyz 126 222 3000 -linkcanvas 130309 - from ref 128133 z 1999 to ref 130053 -dirscanvas 132229 z 1000 linkcanvas_ref 130309 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "2 getStateProxy()" xyz 552 334 3000 -linkcanvas 130437 - from ref 129285 z 1999 to ref 129797 -dirscanvas 132485 z 1000 linkcanvas_ref 130437 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "5 configure()" xyz 357 345 3000 -linkcanvas 131077 - from ref 129285 z 1999 to ref 130693 -dirscanvas 132613 z 1000 linkcanvas_ref 131077 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "6 build()" xyz 290 355 3000 -linkcanvas 131205 - from ref 130693 z 1999 to ref 129925 -dirscanvas 132741 z 1000 linkcanvas_ref 131205 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "7 getConnection()" xyz 203 469 3000 -linkcanvas 131461 - from ref 129925 z 1999 to ref 131333 -dirscanvas 132997 z 1000 linkcanvas_ref 131461 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "9 prepareStream()" xyz 218 536 3000 -linkcanvas 131589 - from ref 129925 z 1999 to ref 129413 -dirscanvas 132869 z 1000 linkcanvas_ref 131589 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "8 getAutomation()" xyz 63 297 3000 -linkcanvas 131845 - from ref 128005 z 1999 to ref 131717 -dirscanvas 133125 z 1000 linkcanvas_ref 131845 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "10 play()" xyz 668 317 3000 -linkcanvas 131973 - from ref 131717 z 1999 to ref 131333 -dirscanvas 133253 z 1000 linkcanvas_ref 131973 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "11 getReady()" xyz 456 611 3000 -msgs - msg operation_ref 128261 // "buildProcessor()" - forward ranks 1 "1" dirscanvas_ref 132101 - msgs - msg operation_ref 128389 // "getStateProxy()" - forward ranks 2 "1.1" dirscanvas_ref 132229 - no_msg - msg operation_ref 128517 // "buildEngine()" - forward ranks 3 "1.2" dirscanvas_ref 130181 - msgs - msg operation_ref 128645 // "getPlaylistForRender()" - forward ranks 4 "1.2.1" dirscanvas_ref 132357 - no_msg - msg operation_ref 128773 // "configure()" - forward ranks 5 "1.2.2" dirscanvas_ref 132485 - no_msg - msg operation_ref 128901 // "build()" - forward ranks 6 "1.2.3" dirscanvas_ref 132613 - msgs - msg operation_ref 129029 // "getConnection()" - forward ranks 7 "1.2.3.1" dirscanvas_ref 132741 - msgs - msg operation_ref 129157 // "getAutomation()" - forward ranks 8 "1.2.3.1.1" dirscanvas_ref 132869 - no_msg - msg operation_ref 129285 // "prepareStream()" - forward ranks 9 "1.2.3.1.2" dirscanvas_ref 132997 - no_msg - msgsend - msgsend - msgsend - msgsend - msg operation_ref 129413 // "play()" - forward ranks 10 "2" dirscanvas_ref 133125 - msgs - msg operation_ref 129541 // "getReady()" - forward ranks 11 "2.1" dirscanvas_ref 133253 - no_msg - msgsend -msgsend -end diff --git a/uml/cinelerra3/128645 b/uml/cinelerra3/128645 deleted file mode 100644 index bf4597790..000000000 --- a/uml/cinelerra3/128645 +++ /dev/null @@ -1,35 +0,0 @@ -format 38 -"codegen" // design::codegen - revision 4 - modified_by 5 "hiv" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - comment "This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skelleton." - deploymentview 128133 "Codegen Deployment" - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - end -end diff --git a/uml/cinelerra3/128645.diagram b/uml/cinelerra3/128645.diagram deleted file mode 100644 index 1c61b8251..000000000 --- a/uml/cinelerra3/128645.diagram +++ /dev/null @@ -1,3 +0,0 @@ -format 38 - -end diff --git a/uml/cinelerra3/128773 b/uml/cinelerra3/128773 deleted file mode 100644 index a8fc4ed65..000000000 --- a/uml/cinelerra3/128773 +++ /dev/null @@ -1,30 +0,0 @@ -format 38 -"GUI" // GUI - revision 1 - modified_by 5 "hiv" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - comment "GUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft" -end diff --git a/uml/cinelerra3/128773.diagram b/uml/cinelerra3/128773.diagram deleted file mode 100644 index 28ef4578f..000000000 --- a/uml/cinelerra3/128773.diagram +++ /dev/null @@ -1,77 +0,0 @@ -format 38 - -classinstance 128005 class_ref 128261 // Fixture - xyz 65 271 2000 name "" -end -classinstance 128133 class_ref 129797 // ExplicitPlacement - xyz 221 249 2000 name "" - values - attribute_ref 128261 // time - "2" - attribute_ref 128389 // track - "video1" -end -classinstance 128389 class_ref 129797 // ExplicitPlacement - xyz 335 249 2000 name "" - values - attribute_ref 128261 // time - "2" - attribute_ref 128389 // track - "audio1" -end -fragment 128773 "seq" - xyzwh 175 235 1994 282 93 -end -classinstance 128901 class_ref 128389 // Track - xyz 70 101 2000 name "audio1" -end -classinstance 129029 class_ref 128389 // Track - xyz 71 156 2000 name "video1" -end -fragment 129285 "seq" - xyzwh 62 63 1994 94 155 -end -classinstance 130821 class_ref 128901 // Clip - xyz 239 399 2000 name "vid_A" - values - attribute_ref 128517 // length - "5" - attribute_ref 128645 // start - "100" -end -classinstance 131077 class_ref 128901 // Clip - xyz 344 399 2000 name "aud_A" - values - attribute_ref 128517 // length - "8820" - attribute_ref 128645 // start - "176400" -end -textcanvas 131333 "Video and Audio Clip of length = 5 frames positioned at frame 2, starting at t=4s in soucre. -(Values for PAL and 44.1)" - xyzwh 457 335 2000 175 87 -objectlinkcanvas 128261 norel - from ref 128005 z 1999 to ref 128133 - no_role_a no_role_b -objectlinkcanvas 129157 norel - geometry HV - from ref 128005 z 1999 to point 107 282 - line 81 z 1999 to ref 129029 - no_role_a no_role_b -objectlinkcanvas 130565 norel - geometry HVr - from ref 128133 z 1999 to point 269 167 - line 81 z 1999 to ref 129029 - no_role_a no_role_b -objectlinkcanvas 130693 norel - geometry HVr - from ref 128389 z 1999 to point 383 112 - line 81 z 1999 to ref 128901 - no_role_a no_role_b -objectlinkcanvas 130949 norel - from ref 130821 z 1999 to ref 128133 - no_role_a no_role_b -objectlinkcanvas 131205 norel - from ref 131077 z 1999 to ref 128389 - no_role_a no_role_b -end diff --git a/uml/cinelerra3/128901 b/uml/cinelerra3/128901 deleted file mode 100644 index 5e78dff58..000000000 --- a/uml/cinelerra3/128901 +++ /dev/null @@ -1,508 +0,0 @@ -format 38 -"Builder" // ProcessingLayer::MObject::Builder - revision 7 - modified_by 5 "hiv" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - classview 128261 "Builder Workings" - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //class settings - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - collaborationdiagram 128517 "build process" - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - comment "This figure shows the process of building and starting a RenderEngine" - size A4 - end - - activity 128005 "building the Engine" - activitydiagram 129413 "build flow" - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations no shadow default - show_infonote default drawing_language default - size A4 - end - - parameter 128645 "build Request" explicit_type "" - unordered - in - flow 130309 "" - on activityaction_ref 128645 // activity action configure Tools - end - end - - activityaction 128645 "configure Tools" - opaque_action - flow 130821 "" - on activitynode_ref 129029 // fork - end - end - - expansionregion 128133 "establish partitioning" - iterative - activityaction 128773 "define segment" - opaque_action - pin 128133 "inFixture" explicit_type "" - unordered - in - end - - flow 130693 "" - on expansionnode_ref 128133 // segments - end - end - - expansionnode 128005 "segment Tool" - explicit_type "" - unordered is_control - flow 130565 "" - on activityaction_ref 128773 // activity action define segment - end - end - - expansionnode 128133 "segments" - explicit_type "" - unordered is_control - end - end - - activityobject 128005 "Fixture" - explicit_type "" - unordered - simplerelation 128389 - -_-> - on activity_ref 128005 // building the Engine - end - - flow 130181 "" - on pin_ref 128133 // inFixture - end - - flow 131717 "" - on pin_ref 128133 // inFixture - end - end - - activitynode 129029 fork "" - flow 130949 "" - on expansionnode_ref 128005 // segment Tool - end - - flow 131077 "" - on expansionnode_ref 128261 // build Tool - end - end - - expansionregion 128261 "build Processors" - iterative - expansionnode 128261 "build Tool" - explicit_type "" - unordered is_control - flow 131205 "" - on activityaction_ref 128901 // activity action create ProcNode - end - end - - expansionnode 128389 "segments" - explicit_type "" - unordered is_control - flow 131333 "" - on activityaction_ref 128901 // activity action create ProcNode - end - end - - activityaction 128901 "create ProcNode" - opaque_action - flow 131461 "" - on activityaction_ref 129029 // activity action connect - end - end - - activityaction 129029 "connect" - opaque_action - flow 131845 "" - on expansionnode_ref 128517 // complete Render Engine - end - end - - expansionnode 128517 "complete Render Engine" - explicit_type "" - unordered is_control - flow 131973 "" - on activitynode_ref 129157 // activity_final - end - end - end - - activitynode 129157 activity_final "" - end - end - - classdiagram 129285 "Builder Entities" - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition yes show_members_visibility default show_members_stereotype default show_parameter_dir no show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - size A4 - end - - class 130565 "BuilderFacade" - visibility package stereotype "boundary" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - operation 128517 "buildEngine" - public explicit_return_type "" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 130693 "ToolFactory" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - operation 128773 "configure" - public explicit_return_type "" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - classrelation 137221 // - relation 135685 -_-> - a default - cpp default "#include in header" - classrelation_ref 137221 // - b multiplicity "" parent class_ref 134149 // Tool - end - end - - class 130821 "ConManager" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - operation 129029 "getConnection" - public explicit_return_type "" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 131077 "Assembler" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - operation 128901 "build" - public explicit_return_type "" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 132741 "StateProxy" - abstract visibility package stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - classrelation 135941 // currFrame () - relation 134533 ---> - a role_name "currFrame" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 135941 // currFrame () - b multiplicity "1" parent class_ref 133253 // Frame - end - end - - class 134021 "Buildable" - abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - operation 129669 "apply" - public explicit_return_type "" - nparams 1 - param inout name "provided_tool" explicit_type "Tool" - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 134149 "Tool" - abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - operation 129797 "treat" - public explicit_return_type "" - nparams 1 - param inout name "mElement" type class_ref 134021 // Buildable - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 134277 "SegmentationTool" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 137605 // - relation 135941 -_-|> - a public - cpp default "${type}" - classrelation_ref 137605 // - b multiplicity "" parent class_ref 134149 // Tool - end - - operation 129925 "treat" - public explicit_return_type "" - nparams 1 - param inout name "something" type class_ref 134021 // Buildable - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - operation 130181 "treat" - public explicit_return_type "" - nparams 1 - param inout name "clip" type class_ref 128901 // Clip - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - operation 130053 "treat" - public explicit_return_type "" - nparams 1 - param inout name "effect" type class_ref 129029 // Effect - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - attribute 129669 "segments" - private explicit_type "" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - comment "holds the segemntation to be constructed" - end - end - - class 134405 "NodeCreatorTool" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - classrelation 137733 // - relation 136069 -_-|> - a public - cpp default "${type}" - classrelation_ref 137733 // - b multiplicity "" parent class_ref 134149 // Tool - end - - operation 130309 "treat" - public explicit_return_type "" - nparams 1 - param inout name "something" type class_ref 134021 // Buildable - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - operation 130437 "treat" - public explicit_return_type "" - nparams 1 - param inout name "clip" type class_ref 128901 // Clip - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - operation 130565 "treat" - public explicit_return_type "" - nparams 1 - param inout name "effect" type class_ref 129029 // Effect - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - operation 130693 "treat" - public explicit_return_type "" - nparams 1 - param inout name "auto" type class_ref 129925 // Auto - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - attribute 129797 "proc" - protected type class_ref 131461 // Processor - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - comment "holds the Processor (Render Engine Element) to be built by the current build step" - end - end - end -end diff --git a/uml/cinelerra3/128901.diagram b/uml/cinelerra3/128901.diagram deleted file mode 100644 index 470765f02..000000000 --- a/uml/cinelerra3/128901.diagram +++ /dev/null @@ -1,167 +0,0 @@ -format 38 - -fragment 128005 "seq" - xyzwh 176 409 1994 282 93 -end -classinstance 128133 class_ref 128389 // Track - xyz 71 275 2000 name "audio1" -end -classinstance 128389 class_ref 129797 // ExplicitPlacement - xyz 222 423 2000 name "" - values - attribute_ref 128261 // time - "2" - attribute_ref 128389 // track - "video1" -end -classinstance 128645 class_ref 128389 // Track - xyz 72 330 2000 name "video1" -end -classinstance 128773 class_ref 128261 // Fixture - xyz 66 445 2000 name "" -end -classinstance 128901 class_ref 128901 // Clip - xyz 240 573 2000 name "vid_A" - values - attribute_ref 128517 // length - "5" - attribute_ref 128645 // start - "100" -end -fragment 129029 "seq" - xyzwh 63 237 1994 94 155 -end -classinstance 130309 class_ref 128133 // EDL - xyz 69 79 2000 name "" -end -classinstance 131333 class_ref 129669 // Label - xyz 224 70 2000 name "refPoint" - values - attribute_ref 128517 // length - "0" -end -classinstance 131461 class_ref 129541 // Allocation - xyz 230 158 2000 name "" - values - attribute_ref 128773 // repr - "\"t=2\"" -end -classinstance 131717 class_ref 128901 // Clip - xyz 386 71 2000 name "vid_A" - values - attribute_ref 128517 // length - "5" - attribute_ref 128645 // start - "100" -end -classinstance 131845 class_ref 129413 // RelativePlacement - xyz 361 195 2000 name "" - values - attribute_ref 128133 // relType - "SAMETIME" -end -classinstance 132229 class_ref 129029 // Effect - xyz 562 71 2000 name "" - values - attribute_ref 128517 // length - "3" - attribute_ref 128901 // plugID - "\"Hue\"" -end -classinstance 132357 class_ref 129413 // RelativePlacement - xyz 551 197 2000 name "" - values - attribute_ref 129029 // offset - "+3" - attribute_ref 128133 // relType - "ATTACH" -end -fragment 132869 "seq" - xyzwh 172 46 1994 494 102 -end -classinstance 132997 class_ref 129029 // Effect - xyz 354 573 2000 name "" - values - attribute_ref 128517 // length - "3" - attribute_ref 128901 // plugID - "\"Hue\"" -end -classinstance 133125 class_ref 129797 // ExplicitPlacement - xyz 345 423 2000 name "" - values - attribute_ref 128261 // time - "5" - attribute_ref 128389 // track - "video1" -end -note 135941 "actually the same object" - xyzwh 635 341 2004 148 41 -textcanvas 136197 "Video Clip anchored at a Label, with an attached HUE effect starting 3 frames after begin" - xyzwh 524 565 2000 175 87 -objectlinkcanvas 129413 norel - geometry HVr - from ref 128389 z 1999 to point 270 341 - line 129541 z 1999 to ref 128645 - no_role_a no_role_b -objectlinkcanvas 129797 norel - from ref 128901 z 1999 to ref 128389 - no_role_a no_role_b -objectlinkcanvas 129925 norel - from ref 128773 z 1999 to ref 128389 - no_role_a no_role_b -objectlinkcanvas 130053 norel - geometry HV - from ref 128773 z 1999 to point 108 456 - line 130181 z 1999 to ref 128645 - no_role_a no_role_b -objectlinkcanvas 131205 norel - geometry HVr - from ref 128645 z 1999 to point 108 90 - line 81 z 1999 to ref 130309 - no_role_a no_role_b -objectlinkcanvas 131589 norel - from ref 131461 z 1999 to ref 131333 - no_role_a no_role_b -objectlinkcanvas 131973 rel relation_ref 128645 // - from ref 131717 z 1999 to ref 131845 - role_a_pos 428 170 3000 role_b_pos 428 150 3000 -objectlinkcanvas 132101 rel relation_ref 129925 // - from ref 131845 z 1999 to ref 131333 - role_a_pos 304 104 3000 no_role_b -objectlinkcanvas 132485 rel relation_ref 128645 // - from ref 132229 z 1999 to ref 132357 - role_a_pos 613 172 3000 role_b_pos 613 150 3000 -objectlinkcanvas 132613 rel relation_ref 129925 // - from ref 132357 z 1999 to ref 131717 - role_a_pos 460 109 3000 no_role_b -objectlinkcanvas 132741 norel - geometry HV - from ref 130309 z 1999 to point 261 90 - line 81 z 1999 to ref 131333 - no_role_a no_role_b -objectlinkcanvas 133253 norel - geometry HVr - from ref 133125 z 1999 to point 393 341 - line 81 z 1999 to ref 128645 - no_role_a no_role_b -objectlinkcanvas 133381 norel - geometry VH - from ref 133125 z 1999 to point 393 606 - line 81 z 1999 to ref 132997 - no_role_a no_role_b -objectlinkcanvas 135685 rel relation_ref 128645 // - from ref 132997 z 1999 to point 600 432 - line 135813 z 1999 to ref 132357 - role_a_pos 612 276 3000 role_b_pos 444 540 3000 -line 134149 -_-_ - from ref 131717 z 1993 to ref 132869 -line 134277 -_-_ - from ref 131717 z 1999 to point 524 55 - line 134533 z 1999 to point 524 476 - line 134405 z 1999 to ref 128901 -line 134661 -_-_ - from ref 132229 z 1999 to point 707 55 - line 134917 z 1999 to point 707 464 - line 134789 z 1999 to ref 132997 -end diff --git a/uml/cinelerra3/129029 b/uml/cinelerra3/129029 deleted file mode 100644 index dca7d83ae..000000000 --- a/uml/cinelerra3/129029 +++ /dev/null @@ -1,178 +0,0 @@ -format 38 -"Controller" // MObject::Controller - revision 3 - modified_by 5 "hiv" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - classview 128389 "Controller Workings" - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //class settings - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - classdiagram 128645 "Controller Entities" - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - size A4 - end - - activity 128133 "configure Render" - activitydiagram 129541 "the render configuration flow" - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - size A4 - end - - parameter 128005 "Render Request" explicit_type "" - unordered - in - flow 128901 "" - on activityaction_ref 128389 // activity action determine Render Params - end - end - - activityaction 128133 "setup StateProxy" - opaque_action - flow 129157 "" - on activitynode_ref 128389 // decision - end - end - - activitynode 128389 decision "build necessary?" - flow 129541 "" - on activityaction_ref 128517 // activity action build Render Engine - uml_guard "build necessary" - end - - flow 129797 "" - on activitynode_ref 128773 // merge - uml_guard "reuse exiting Engine" - end - end - - activityaction 128005 "setup Build Params" - opaque_action - end - - activitynode 128773 merge "" - flow 130053 "" - on activitynode_ref 128901 // activity_final - end - end - - expansionregion 128005 "determine Render Params" - iterative - end - - activityaction 128389 "determine Render Params" - opaque_action - associated_diagram activitydiagram_ref 129541 // the render configuration flow - flow 129029 "" - on activityaction_ref 128133 // activity action setup StateProxy - end - end - - activityaction 128517 "build Render Engine" - opaque_action - flow 129669 "" - on activitynode_ref 128773 // merge - end - end - - activitynode 128901 activity_final "" - end - end - - class 130309 "ControllerFacade" - visibility public stereotype "boundary" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - explicit_switch_type "" - - end - - class 130437 "PathManager" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - operation 128261 "buildProcessor" - public explicit_return_type "" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 130949 "RenderState" - visibility protected - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - operation 128389 "getStateProxy" - public explicit_return_type "" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - end -end diff --git a/uml/cinelerra3/129029.diagram b/uml/cinelerra3/129029.diagram deleted file mode 100644 index 3ec7b8843..000000000 --- a/uml/cinelerra3/129029.diagram +++ /dev/null @@ -1,104 +0,0 @@ -format 38 - -classinstance 128005 class_ref 131333 // RenderEngine - xyz 80 75 2000 name "" -end -classinstance 128133 class_ref 131461 // Processor - xyz 435 172 2000 name "audio1" - values - attribute_ref 129541 // end - "7/25" - attribute_ref 129413 // start - "2/25" -end -classinstance 128261 class_ref 131461 // Processor - xyz 280 172 2000 name "video1" - values - attribute_ref 129541 // end - "7/25" - attribute_ref 129413 // start - "2/25" -end -fragment 128517 "seq" - xyzwh 232 140 1994 367 113 -end -classinstance 128645 class_ref 131589 // ExitNode - xyz 287 329 2000 name "video" -end -classinstance 128773 class_ref 131589 // ExitNode - xyz 443 330 2000 name "audio" -end -classinstance 129157 class_ref 132229 // Projector - xyz 287 386 2000 name "ouput" -end -classinstance 129285 class_ref 132229 // Projector - xyz 290 497 2000 name "input" -end -classinstance 129669 class_ref 132357 // Mask - xyz 306 442 2000 name "" -end -classinstance 129797 class_ref 133765 // Source - xyz 292 556 2000 name "vid_a" -end -classinstance 129925 class_ref 133765 // Source - xyz 444 398 2000 name "aud_a" -end -classinstance 131717 class_ref 132997 // VRender - xyz 188 427 2000 name "vid1" -end -classinstance 131845 class_ref 132869 // ARender - xyz 554 289 2000 name "au1" -end -classinstance 131973 class_ref 133509 // VFrame - xyz 112 492 2000 name "" -end -classinstance 132101 class_ref 133381 // AFrame - xyz 663 353 2000 name "" -end -note 133125 "render state proxy passed on" - xyzwh 123 355 2000 104 53 -textcanvas 133253 "Video and Audio Clip of length = 5 frames positioned at frame 2, producing two output streams (frame sequence)." - xyzwh 445 507 2000 175 83 -objectlinkcanvas 128389 rel relation_ref 131845 // - geometry VH - from ref 128005 z 1999 to point 120 205 - line 81 z 1999 to ref 128261 - role_a_pos 188 183 3000 no_role_b -objectlinkcanvas 128901 rel relation_ref 131973 // - from ref 128261 z 1999 stereotype "<>" xyz 301 284 3000 to ref 128645 - role_a_pos 339 304 3000 no_role_b -objectlinkcanvas 129029 rel relation_ref 131973 // - from ref 128133 z 1999 stereotype "<>" xyz 457 285 3000 to ref 128773 - role_a_pos 494 305 3000 no_role_b -objectlinkcanvas 130437 rel relation_ref 135429 // - from ref 128645 z 1999 to ref 129157 - role_a_pos 339 361 3000 no_role_b -objectlinkcanvas 131205 rel relation_ref 135429 // - from ref 129157 z 1999 to ref 129669 - role_a_pos 340 417 3000 no_role_b -objectlinkcanvas 131333 rel relation_ref 135429 // - from ref 129669 z 1999 to ref 129285 - role_a_pos 341 472 3000 no_role_b -objectlinkcanvas 131461 rel relation_ref 135429 // - from ref 129285 z 1999 to ref 129797 - role_a_pos 340 531 3000 no_role_b -objectlinkcanvas 131589 rel relation_ref 135429 // - from ref 128773 z 1999 to ref 129925 - role_a_pos 494 373 3000 no_role_b -objectlinkcanvas 132229 rel relation_ref 134533 // - geometry VHr - from ref 131717 z 1999 to point 137 438 - line 1 z 1999 to ref 131973 - role_a_pos 149 467 3000 no_role_b -objectlinkcanvas 132485 rel relation_ref 134533 // - geometry HV - from ref 131845 z 1999 to point 688 300 - line 1 z 1999 to ref 132101 - role_a_pos 700 328 3000 no_role_b -line 132613 -_-_ - from ref 128261 z 1999 to point 244 320 - line 132741 z 1999 to ref 131717 -line 132869 -_-_ - from ref 128133 z 1999 to point 583 259 - line 132997 z 1999 to ref 131845 -end diff --git a/uml/cinelerra3/129157 b/uml/cinelerra3/129157 deleted file mode 100644 index 10e4a87d1..000000000 --- a/uml/cinelerra3/129157 +++ /dev/null @@ -1,42 +0,0 @@ -format 38 -"BackendLayer" // BackendLayer - revision 5 - modified_by 10 "ct" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - package_ref 128138 // design - - componentview 128138 "Cache" - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - end - - componentview 128266 "FileMapping" - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - end -end diff --git a/uml/cinelerra3/129157.diagram b/uml/cinelerra3/129157.diagram deleted file mode 100644 index a8297d392..000000000 --- a/uml/cinelerra3/129157.diagram +++ /dev/null @@ -1,127 +0,0 @@ -format 38 - -classinstance 128005 class_ref 131333 // RenderEngine - xyz 102 80 2000 name "" -end -note 128261 "render state proxy passed on" - xyzwh 139 319 2000 104 53 -classinstance 128389 class_ref 133765 // Source - xyz 610 558 2000 name "devnull" -end -classinstance 128517 class_ref 131589 // ExitNode - xyz 610 329 2000 name "video" -end -classinstance 128645 class_ref 132229 // Projector - xyz 488 497 2000 name "input" -end -classinstance 128773 class_ref 131461 // Processor - xyz 602 172 2000 name "video1" - values - attribute_ref 129541 // end - "8/25" - attribute_ref 129413 // start - "7/25" -end -classinstance 128901 class_ref 132229 // Projector - xyz 485 386 2000 name "ouput" -end -fragment 129029 "seq" - xyzwh 254 147 1994 477 111 -end -classinstance 129157 class_ref 132485 // PluginAdapter - xyz 477 444 2000 name "HUE" -end -classinstance 129541 class_ref 132997 // VRender - xyz 409 293 2000 name "vid1" -end -classinstance 129669 class_ref 133509 // VFrame - xyz 134 497 2000 name "" -end -classinstance 129797 class_ref 131461 // Processor - xyz 478 172 2000 name "video1" - values - attribute_ref 129541 // end - "7/25" - attribute_ref 129413 // start - "5/25" -end -classinstance 129925 class_ref 131589 // ExitNode - xyz 485 329 2000 name "video" -end -classinstance 132229 class_ref 132485 // PluginAdapter - xyz 600 444 2000 name "HUE" -end -classinstance 132997 class_ref 133765 // Source - xyz 387 602 2000 name "vid_a" -end -classinstance 133125 class_ref 132229 // Projector - xyz 299 498 2000 name "input" -end -classinstance 133253 class_ref 131461 // Processor - xyz 289 172 2000 name "video1" - values - attribute_ref 129541 // end - "5/25" - attribute_ref 129413 // start - "2/25" -end -classinstance 133381 class_ref 132229 // Projector - xyz 296 386 2000 name "ouput" -end -classinstance 133509 class_ref 131589 // ExitNode - xyz 296 329 2000 name "video" -end -note 134661 "Note: because the Engine Components are stateless, various calculation patterns are possible, including all sorts of parallelism " - xyzwh 569 45 2000 240 75 -textcanvas 134789 "Video Clip from 2 to 7, with an attached HUE effect starting 3 frames after begin and overlapping by 1 frame beyond the end" - xyzwh 145 553 2000 175 87 -objectlinkcanvas 130053 rel relation_ref 135429 // - from ref 129925 z 1999 to ref 128901 - role_a_pos 537 361 3000 no_role_b -objectlinkcanvas 130437 rel relation_ref 135429 // - from ref 129157 z 1999 to ref 128645 - role_a_pos 539 472 3000 no_role_b -objectlinkcanvas 130565 rel relation_ref 131973 // - from ref 128773 z 1999 stereotype "<>" xyz 624 285 3000 to ref 128517 - role_a_pos 661 304 3000 no_role_b -objectlinkcanvas 130693 rel relation_ref 134533 // - geometry VHr - from ref 129541 z 1999 to point 159 304 - line 130821 z 1999 to ref 129669 - role_a_pos 171 472 3000 no_role_b -objectlinkcanvas 130949 rel relation_ref 135429 // - from ref 128901 z 1999 to ref 129157 - role_a_pos 538 419 3000 no_role_b -objectlinkcanvas 131589 rel relation_ref 131973 // - from ref 129797 z 1999 stereotype "<>" xyz 499 284 3000 to ref 129925 - role_a_pos 537 304 3000 no_role_b -objectlinkcanvas 132613 rel relation_ref 135429 // - from ref 128517 z 1999 to ref 132229 - role_a_pos 662 419 3000 no_role_b -objectlinkcanvas 132869 rel relation_ref 135429 // - from ref 132229 z 1999 to ref 128389 - role_a_pos 662 533 3000 no_role_b -objectlinkcanvas 133637 rel relation_ref 135429 // - from ref 133509 z 1999 to ref 133381 - role_a_pos 348 361 3000 no_role_b -objectlinkcanvas 133765 rel relation_ref 135429 // - from ref 133125 z 1999 to ref 132997 - role_a_pos 416 577 3000 no_role_b -objectlinkcanvas 133893 rel relation_ref 131973 // - from ref 133253 z 1999 stereotype "<>" xyz 291 273 3000 to ref 133509 - role_a_pos 348 304 3000 no_role_b -objectlinkcanvas 134277 rel relation_ref 135429 // - from ref 133381 z 1999 to ref 133125 - role_a_pos 349 473 3000 no_role_b -objectlinkcanvas 134405 rel relation_ref 135429 // - from ref 128645 z 1999 to ref 132997 - role_a_pos 446 567 3000 no_role_b -objectlinkcanvas 134533 rel relation_ref 131845 // - geometry VH - from ref 128005 z 1999 to point 142 205 - line 6 z 1999 to ref 133253 - role_a_pos 197 183 3000 no_role_b -line 131973 -_-_ - from ref 129797 z 1999 to point 445 243 - line 132101 z 1999 to ref 129541 -end diff --git a/uml/cinelerra3/129285 b/uml/cinelerra3/129285 deleted file mode 100644 index 2d211dbca..000000000 --- a/uml/cinelerra3/129285 +++ /dev/null @@ -1,34 +0,0 @@ -format 38 -"ProcessingLayer" // ProcessingLayer - revision 1 - modified_by 5 "hiv" - // class settings - //class diagram settings - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default - //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - //component diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //deployment diagram settings - package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default - //state diagram settings - package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default - //activity diagram settings - package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default - show_infonote default drawing_language default - - package_ref 128133 // AssetManager - - package_ref 128261 // MObject - - package_ref 128389 // RenderEngine -end diff --git a/uml/cinelerra3/129285.diagram b/uml/cinelerra3/129285.diagram deleted file mode 100644 index 2fec0c500..000000000 --- a/uml/cinelerra3/129285.diagram +++ /dev/null @@ -1,123 +0,0 @@ -format 38 - -classcanvas 128005 class_ref 134021 // Buildable - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 101 86 2000 - end -classcanvas 128133 class_ref 128517 // MObject - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 80 235 2000 - end -classcanvas 128517 class_ref 134149 // Tool - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 305 86 2000 - end -classcanvas 128645 class_ref 130693 // ToolFactory - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 571 96 2000 - end -classcanvas 128901 class_ref 128901 // Clip - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 146 404 2000 - end -classcanvas 129029 class_ref 129157 // Meta - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 24 492 2000 - end -classcanvas 129157 class_ref 129029 // Effect - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 105 472 2000 - end -classcanvas 129285 class_ref 129925 // Auto - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 86 582 2005 - end -classcanvas 129413 class_ref 129669 // Label - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 24 582 2000 - end -classcanvas 129541 class_ref 128773 // AbstractMO - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 82 319 2000 - end -classcanvas 130565 class_ref 134277 // SegmentationTool - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 303 355 2000 - end -classcanvas 130949 class_ref 134405 // NodeCratorTool - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 384 469 2004 - end -note 134277 "{ provided_tool.treat(this); }" - xyzwh 182 191 2000 159 39 -relationcanvas 128261 relation_ref 135557 // - from ref 128133 z 1999 to ref 128005 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 128773 relation_ref 135685 // - from ref 128645 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129669 relation_ref 130309 // - from ref 129413 z 1999 to ref 129029 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129797 relation_ref 129669 // - from ref 129029 z 1999 to ref 129541 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129925 relation_ref 131333 // - from ref 129285 z 1999 to ref 129029 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 130053 relation_ref 129541 // - from ref 129157 z 1999 to ref 129541 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 130181 relation_ref 129413 // - from ref 128901 z 1999 to ref 129541 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 130437 relation_ref 129285 // - from ref 129541 z 1999 to ref 128133 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 130693 relation_ref 135941 // - from ref 130565 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 131077 relation_ref 136069 // - from ref 130949 z 1999 to point 453 296 - line 131205 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -line 131461 -_-_ - from ref 130565 z 1999 to point 301 409 - line 132101 z 1999 to point 260 405 - line 132229 z 1999 to ref 128005 -line 131589 -_-_ - from ref 130565 z 1999 to point 301 429 - line 131845 z 1999 to ref 128901 -line 131717 -_-_ - from ref 130565 z 1999 to point 300 449 - line 131973 z 1999 to ref 129157 -line 132357 -_-_ - from ref 128005 z 1999 to point 295 514 - line 132613 z 1999 to point 382 524 - line 132485 z 1999 to ref 130949 -line 132741 -_-_ - from ref 128901 z 1999 to point 294 534 - line 132997 z 1999 to point 382 544 - line 132869 z 1999 to ref 130949 -line 133125 -_-_ - from ref 129157 z 1999 to point 291 556 - line 133637 z 1999 to point 381 565 - line 133765 z 1999 to ref 130949 -line 133893 -_-_ - from ref 129285 z 2003 to point 287 578 - line 134149 z 2003 to point 380 585 - line 134021 z 2003 to ref 130949 -line 134405 -_-_ - from ref 128005 z 1999 to point 259 158 - line 134533 z 1999 to ref 134277 -end diff --git a/uml/cinelerra3/129413.diagram b/uml/cinelerra3/129413.diagram deleted file mode 100644 index ea370d758..000000000 --- a/uml/cinelerra3/129413.diagram +++ /dev/null @@ -1,134 +0,0 @@ -format 38 - -activitycanvas 130437 activity_ref 128005 // building the Engine - show_infonote default drawing_language default - xyzwh 147 27 2000 581 532 - params - parametercanvas 130565 parameter_ref 128645 // build Request - xyzwh 541 12 2002 113 31 - end - end -end -activityactioncanvas 130693 activityaction_ref 128645 // activity action configure Tools - show_infonote default drawing_language default - show_opaque_action_definition default - xyzwh 529 71 2005 136 41 -end -expansionregioncanvas 130821 expansionregion_ref 128133 // establish partitioning - xyzwh 359 207 2005 205 102 - nodes - expansionnodecanvas 131077 expansionnode_ref 128005 // segment Tool - xyzwh 460 202 2007 33 11 label_xy 460 180 - end - expansionnodecanvas 132613 expansionnode_ref 128133 // segments - xyzwh 460 303 2007 33 11 label_xy 460 318 - end - end -end -activityactioncanvas 130949 activityaction_ref 128773 // activity action define segment - show_infonote default drawing_language default - show_opaque_action_definition default - xyzwh 409 235 2010 135 42 - pins - pincanvas 131205 pin_ref 128133 // inFixture - xyzwh 399 248 2012 11 11 label_xy 350 235 - end - end -end -activityobjectcanvas 131333 activityobject_ref 128005 // activity object Fixture - show_infonote default drawing_language default - xyzwh 176 235 2005 53 35 -end -activitynodecanvas 133509 activitynode_ref 129029 // fork - horizontal xyz 585 147 2005 -expansionregioncanvas 133893 expansionregion_ref 128261 // build Processors - xyzwh 359 350 2005 271 152 - nodes - expansionnodecanvas 134021 expansionnode_ref 128261 // build Tool - xyzwh 581 345 2007 33 11 label_xy 581 323 - end - expansionnodecanvas 134149 expansionnode_ref 128389 // segments - xyzwh 460 345 2007 33 11 label_xy 460 360 - end - expansionnodecanvas 136581 expansionnode_ref 128517 // complete Render Engine - xyzwh 460 496 2007 33 11 label_xy 496 499 - end - end -end -activityactioncanvas 134277 activityaction_ref 128901 // activity action create ProcNode - show_infonote default drawing_language default - show_opaque_action_definition default - xyzwh 419 390 2010 114 42 -end -activityactioncanvas 134405 activityaction_ref 129029 // activity action connect - show_infonote default drawing_language default - show_opaque_action_definition default - xyzwh 420 443 2015 113 42 -end -activitynodecanvas 134533 activitynode_ref 129157 // activity_final - xyz 543 527 2005 -simplerelationcanvas 131461 simplerelation_ref 128389 - from ref 131333 z 1999 to point 400 253 - line 131589 z 1999 to ref 130437 -flowcanvas 132101 flow_ref 130309 // - - from ref 130565 z 2001 to ref 130693 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 132485 flow_ref 130565 // - - from ref 131077 z 2006 to ref 130949 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 133637 flow_ref 130821 // - - from ref 130693 z 2004 to ref 133509 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 133765 flow_ref 130949 // - geometry VHV - - from ref 133509 z 2004 to point 595 179 - line 134789 z 2004 to point 474 179 - line 134917 z 2004 to ref 131077 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 135301 flow_ref 131077 // - - from ref 133509 z 2004 to ref 134021 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 135429 flow_ref 131205 // - geometry HVr - - from ref 134021 z 2006 to point 595 408 - line 135557 z 2006 to ref 134277 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 135685 flow_ref 131333 // - - from ref 134149 z 2006 to ref 134277 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 136197 flow_ref 131461 // - - from ref 134277 z 2009 to ref 134405 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 136453 flow_ref 131717 // - - from ref 131333 z 2004 to ref 131205 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 136709 flow_ref 131845 // - - from ref 134405 z 2006 to ref 136581 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 136837 flow_ref 131973 // - - from ref 136581 z 2004 to point 487 524 - line 136965 z 2004 to ref 134533 - show_infonote default drawing_language default write_horizontally default -end -end diff --git a/uml/cinelerra3/129541.diagram b/uml/cinelerra3/129541.diagram deleted file mode 100644 index 972d84456..000000000 --- a/uml/cinelerra3/129541.diagram +++ /dev/null @@ -1,68 +0,0 @@ -format 38 - -activitycanvas 128005 activity_ref 128133 // configure Render - show_infonote default drawing_language default - xyzwh 114 59 2007 574 540 - params - parametercanvas 128133 parameter_ref 128005 // Render Request - xyzwh 506 42 2008 91 35 - end - end -end -activitynodecanvas 129413 activitynode_ref 128773 // merge - xyz 539 475 2012 -activityactioncanvas 130309 activityaction_ref 128389 // activity action determine Render Params - show_infonote default drawing_language default - show_opaque_action_definition default - xyzwh 501 139 2012 100 47 -end -activityactioncanvas 130437 activityaction_ref 128133 // activity action setup StateProxy - show_infonote default drawing_language default - show_opaque_action_definition default - xyzwh 506 237 2012 90 54 -end -activitynodecanvas 130565 activitynode_ref 128389 // decision - xyz 539 321 2012 -activityactioncanvas 130821 activityaction_ref 128517 // activity action build Render Engine - show_infonote default drawing_language default - show_opaque_action_definition default - xyzwh 153 376 2012 132 56 -end -activitynodecanvas 133125 activitynode_ref 128901 // activity_final - xyz 539 559 2012 -flowcanvas 131205 flow_ref 128901 // - - from ref 128133 z 2007 to ref 130309 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 131333 flow_ref 129029 // - - from ref 130309 z 2011 to ref 130437 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 131461 flow_ref 129157 // - - from ref 130437 z 2011 to ref 130565 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 132229 flow_ref 129541 // - - from ref 130565 z 2011 label "[build necessary]" xyz 391 338 3000 to ref 130821 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 132613 flow_ref 129669 // - - from ref 130821 z 2011 to ref 129413 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 132869 flow_ref 129797 // - - from ref 130565 z 2011 label "[reuse exiting Engine]" xyz 498 406 3000 to ref 129413 - show_infonote default drawing_language default write_horizontally default -end -flowcanvas 133253 flow_ref 130053 // - - from ref 129413 z 2011 to ref 133125 - show_infonote default drawing_language default write_horizontally default -end -end diff --git a/uml/cinelerra3/129669.diagram b/uml/cinelerra3/129669.diagram deleted file mode 100644 index 06e609414..000000000 --- a/uml/cinelerra3/129669.diagram +++ /dev/null @@ -1,77 +0,0 @@ -format 38 - -classcanvas 128005 class_ref 131717 // ProcNode - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 56 41 2000 - end -classcanvas 128133 class_ref 134533 // Parameter - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 232 35 2000 - end -classcanvas 128773 class_ref 134661 // ParamProvider - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 474 24 2000 - end -classcanvas 129669 class_ref 134789 // Interpolator - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 396 161 2000 - end -classcanvas 130309 class_ref 129157 // Meta - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 636 287 2000 - end -classcanvas 130565 class_ref 129925 // Auto - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 547 373 2005 - end -classcanvas 130821 class_ref 128517 // MObject - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 660 83 2000 - end -classcanvas 130949 class_ref 128773 // AbstractMO - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 643 186 2000 - end -relationcanvas 128261 relation_ref 136197 // - from ref 128005 z 1999 to ref 128133 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 128389 relation_ref 135429 // - from ref 128005 z 1999 to point 26 41 - line 128517 z 1999 to point 26 71 - line 128645 z 1999 to ref 128005 - role_a_pos 8 49 3000 no_role_b - no_multiplicity_a multiplicity_b_pos 39 68 3000 -relationcanvas 128901 relation_ref 136325 // - from ref 128773 z 1999 to ref 128133 - role_a_pos 332 48 3000 role_b_pos 423 48 3000 - multiplicity_a_pos 332 81 3000 multiplicity_b_pos 457 81 3000 -relationcanvas 129157 relation_ref 136581 // - from ref 128133 z 1999 stereotype "<>" xyz 310 104 3000 to point 321 95 - line 129541 z 1999 to point 388 121 - line 129285 z 1999 to point 425 121 - line 129413 z 1999 to ref 128773 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129797 relation_ref 136709 // - from ref 128773 z 1999 to point 431 86 - line 130053 z 1999 to ref 129669 - no_role_a no_role_b - multiplicity_a_pos 405 136 3000 no_multiplicity_b -relationcanvas 131205 relation_ref 129285 // - from ref 130949 z 1999 to ref 130821 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 131461 relation_ref 129669 // - from ref 130309 z 1999 to ref 130949 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 131589 relation_ref 131333 // - from ref 130565 z 1999 to ref 130309 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 131973 relation_ref 136837 // - from ref 130565 z 1999 to ref 128773 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -end diff --git a/uml/cinelerra3/134021.bodies b/uml/cinelerra3/134021.bodies deleted file mode 100644 index 3b98d8802..000000000 --- a/uml/cinelerra3/134021.bodies +++ /dev/null @@ -1,5 +0,0 @@ -class Buildable -!!!129669.cpp!!! apply(inout provided_tool : Tool) -{ - tool.treat(mElement); -} diff --git a/uml/cinelerra3/5.session b/uml/cinelerra3/5.session deleted file mode 100644 index eea73075c..000000000 --- a/uml/cinelerra3/5.session +++ /dev/null @@ -1,15 +0,0 @@ -window_sizes 1140 830 287 843 693 58 -show_stereotypes -selected - package_ref 129 // cinelerra3 -open - - package_ref 128645 // codegen - - package_ref 129157 // BackendLayer - - package_ref 128261 // MObject - - package_ref 128773 // GUI -end -end diff --git a/uml/cinelerra3/DIR_INFO b/uml/cinelerra3/DIR_INFO deleted file mode 100644 index c9bfb0e73..000000000 --- a/uml/cinelerra3/DIR_INFO +++ /dev/null @@ -1 +0,0 @@ -cinelerra3 UML model diff --git a/uml/cinelerra3/cinelerra3.prj b/uml/cinelerra3/cinelerra3.prj deleted file mode 100644 index cb174d0d8..000000000 --- a/uml/cinelerra3/cinelerra3.prj +++ /dev/null @@ -1,53 +0,0 @@ -format 38 -"cinelerra3" - revision 14 - modified_by 10 "ct" - cpp_root_dir "../../src/" - - - - // class settings - default_attribute_visibility protected default_relation_visibility protected default_operation_visibility public - //class diagram settings - draw_all_relations yes hide_attributes no hide_operations no show_members_full_definition no show_members_visibility no show_members_stereotype no show_parameter_dir yes show_parameter_name yes package_name_in_tab yes class_drawing_mode natural drawing_language uml show_context_mode no auto_label_position yes show_infonote no shadow yes - //use case diagram settings - package_name_in_tab no show_context no auto_label_position yes draw_all_relations yes shadow yes - //sequence diagram settings - show_full_operations_definition no write_horizontally yes drawing_language uml draw_all_relations yes shadow yes - //collaboration diagram settings - show_full_operations_definition no show_hierarchical_rank no write_horizontally yes drawing_language uml package_name_in_tab no show_context no draw_all_relations yes shadow yes - //object diagram settings - write_horizontally yes package_name_in_tab no show_context no auto_label_position yes draw_all_relations yes shadow yes - //component diagram settings - package_name_in_tab yes show_context no auto_label_position yes draw_all_relations yes shadow yes - draw_component_as_icon no show_component_req_prov no show_component_rea no - //deployment diagram settings - package_name_in_tab yes show_context no write_horizontally yes auto_label_position yes draw_all_relations yes shadow yes - draw_component_as_icon no show_component_req_prov no show_component_rea no - //state diagram settings - package_name_in_tab no show_context no auto_label_position yes write_trans_label_horizontally yes show_trans_definition no draw_all_relations yes shadow yes - show_activities yes region_horizontally yes drawing_language uml - //activity diagram settings - package_name_in_tab yes show_context no show_opaque_action_definition yes auto_label_position yes write_flow_label_horizontally no draw_all_relations yes shadow yes - show_infonote yes drawing_language uml - - class_color yellow duration_color transparent continuation_color gray note_color blue fragment_color transparent subject_color transparent usecase_color yellow package_color transparent component_color green artifact_color green deploymentnode_color gray state_color yellow stateaction_color transparent activity_color lightgreen activityregion_color transparent activityaction_color mediumgreen parameterpin_color white - font_size 8 - diagram_format A4 - - mark_for_import - - ncouples 1 - key "html dir" value "/home/ct/src/cinelerra3/doc/devel/uml/" - package_ref 128005 // design - - package_ref 129285 // ProcessingLayer - - package_ref 129157 // BackendLayer - - package_ref 128773 // GUI - - package_ref 128517 // CommonLib -add_operation_profile - -end diff --git a/uml/cinelerra3/cpp_includes b/uml/cinelerra3/cpp_includes deleted file mode 100644 index 531b86f76..000000000 --- a/uml/cinelerra3/cpp_includes +++ /dev/null @@ -1,13 +0,0 @@ -// "a type" "needed cpp_includes" -"vector" "#include -using namespace std;" - -"list" "#include -using namespace std;" - -"map" "#include -using namespace std;" - -"string" "#include -using namespace std;" - diff --git a/uml/cinelerra3/generation_settings b/uml/cinelerra3/generation_settings deleted file mode 100644 index 28ec41de6..000000000 --- a/uml/cinelerra3/generation_settings +++ /dev/null @@ -1,224 +0,0 @@ - - cpp_default_defs - cpp_h_extension "h" cpp_src_extension "cc" java_extension "java" idl_extension "idl" - cpp_javadoc_comment - - type_forms 15 // uml cpp java idl cpp_in cpp_out cpp_inout cpp_return - "void" "void" "void" "void" "${type}" "${type} &" "${type}" "${type}" - "any" "void *" "Object" "any" "const ${type}" "${type}" "${type} &" "${type}" - "bool" "bool" "boolean" "boolean" "${type}" "${type} &" "${type} &" "${type}" - "char" "char" "char" "char" "${type}" "${type} &" "${type} &" "${type}" - "uchar" "unsigned char" "char" "octet" "${type}" "${type} &" "${type} &" "${type}" - "byte" "unsigned char" "byte" "octet" "${type}" "${type} &" "${type} &" "${type}" - "short" "short" "short" "short" "${type}" "${type} &" "${type} &" "${type}" - "ushort" "unsigned short" "short" "unsigned short" "${type}" "${type} &" "${type} &" "${type}" - "int" "int" "int" "long" "${type}" "${type} &" "${type} &" "${type}" - "uint" "unsigned int" "int" "unsigned long" "${type}" "${type} &" "${type} &" "${type}" - "long" "long" "long" "long" "${type}" "${type} &" "${type} &" "${type}" - "ulong" "unsigned long" "long" "unsigned long" "${type}" "${type} &" "${type} &" "${type}" - "float" "float" "float" "float" "${type}" "${type} &" "${type} &" "${type}" - "double" "double" "double" "double" "${type}" "${type} &" "${type} &" "${type}" - "string" "string" "String" "string" "${type}" "${type} &" "${type} &" "${type}" - - relations_stereotypes 4 // uml cpp java idl - "sequence" "vector" "Vector" "sequence" - "vector" "vector" "Vector" "sequence" - "list" "list" "Vector" "sequence" - "set" "set" "Vector" "sequence" - - classes_stereotypes 13 // uml cpp java idl - "class" "class" "class" "valuetype" - "interface" "class" "interface" "interface" - "exception" "class" "class" "exception" - "enum" "enum" "enum" "enum" - "enum_pattern" "enum" "enum_pattern" "enum" - "struct" "struct" "class" "struct" - "union" "union" "class" "union" - "typedef" "typedef" "ignored" "typedef" - "boundary" "class" "class" "interface" - "control" "class" "class" "valuetype" - "entity" "class" "class" "valuetype" - "actor" "ignored" "ignored" "ignored" - "@interface" "ignored" "@interface" "ignored" - - cpp_enum_default_type_forms "${type}" "${type} &" "${type} &" "${type}" // in out inout return - other_cpp_types_default_type_forms "const ${type} &" "${type} &" "${type} &" "${type}" // in out inout return - - cpp_default_h_content "#ifndef ${NAMESPACE}_${NAME}_H -#define ${NAMESPACE}_${NAME}_H - -${comment} -${includes} -${declarations} -${namespace_start} -${definition} -${namespace_end} -#endif -" - cpp_default_src_content "${comment} -${includes} -${namespace_start} -${members} -${namespace_end}" - cpp_default_class_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - cpp_default_external_class_decl "${name} -#include <${name}.h> -" - cpp_default_struct_decl "${comment}${template}struct ${name}${inherit} { -${members}}; -${inlines} -" - cpp_default_union_decl "${comment}${template}union ${name} { -${members}}; -${inlines} -" - cpp_default_enum_decl "${comment}enum ${name} { -${items} -}; -" - cpp_default_typedef_decl "${comment}typedef ${type} ${name}; -" - cpp_default_attribute_declaration " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - cpp_default_enum_item_declaration " ${name}${value},${comment}" - cpp_association_aggregation_declaration - " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" // multiplicity 1 - " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type} *> ${name}${value}; -" // multiplicity * a..b - " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value}; -" // multiplicity [..] - cpp_aggregation_by_value_declaration - " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" // multiplicity 1 - " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value}; -" // multiplicity * a..b - " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value}; -" // multiplicity [..] - cpp_get "get${Name}" inline const value_const public - cpp_set "set${Name}" public - cpp_default_operation_declaration " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_default_operation_definition "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - java_default_src_content "${comment} -${package} -${imports} -${definition}" - java_default_class_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} { -${members}} -" - java_default_external_class_decl "${name}" - java_default_interface_decl "${comment}${@}${visibility}interface ${name}${extends} { -${members}} -" - java5_default_enum_decl "${comment}${@}${visibility}${final}${abstract}enum ${name}${implements} { -${items}; -${members}} -" - java_default_enum_decl "${comment}${@}${visibility}final class ${name} { -${members} - private final int value; - - public int value() { - return value; - } - - public static ${name} fromInt(int value) { - switch (value) { -${cases} default: throw new Error(); - } - - } - private ${name}(int v) { value = v; }; -} -" - java_default_attribute_declaration " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value}; -" - java5_default_enum_item_declaration " ${@}${name}${value},${comment}" - java_default_enum_item_declaration " ${comment}${@}public static final int _${name}${value}; -public static final ${class} ${name} = new ${class}(_${name}); -" - java_default_enum_case " case _${name}: return ${name}; -" - java_association_aggregation_declaration - " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value}; -" // multiplicity 1 - " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${stereotype} ${name}${value}; -" // multiplicity * a..b - " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type}${multiplicity} ${name}${value}; -" // multiplicity N - java_get "get${Name}" final public - java_set "set${Name}" public - java_default_operation_definition " ${comment}${@}${visibility}${final}${static}${abstract}${synchronized}${type} ${name}${(}${)}${throws}${staticnl}{ - ${body}} -" - idl_default_src_content "#ifndef ${MODULE}_${NAME}_H -#define ${MODULE}_${NAME}_H - -${comment} -${includes} -${module_start} -${definition} -${module_end} -#endif -" - idl_default_interface_decl "${comment}${abstract}${local}interface ${name}${inherit} { -${members}}; -" - idl_default_valuetype_decl "${comment}${abstract}${custom}valuetype ${name}${inherit} { -${members}}; -" - idl_default_struct_decl "${comment}struct ${name} { -${members}}; -" - idl_default_typedef_decl "${comment}typedef ${type} ${name}; -" - idl_default_exception_decl "${comment}exception ${name} { -${members}}; -" - idl_default_union_decl "${comment}union ${name} switch(${switch}) { -${members}}; -" - idl_default_enum_decl "${comment}enum ${name} { -${items}}; -" - idl_default_external_class_decl "${name} -#include \"${name}.idl\" -" - idl_default_attribute_declaration " ${comment}${readonly}${attribute} ${type} ${name}; -" - idl_default_valuetype_attribute_declaration " ${comment}${visibility}${type} ${name}; -" - idl_default_const_declaration " ${comment}const ${type} ${name}${value}; -" - idl_default_enum_item_declaration " ${name},${comment}" - idl_default_union_item_declaration " ${comment}case ${case} : ${readonly}${type} ${name};" - idl_association_aggregation_declaration - " ${comment}${readonly}${attribute} ${type} ${name}; -" // multiplicity 1 - " ${comment}${readonly}${attribute} ${stereotype}<${type}> ${name}; -" // multiplicity * a..b - " ${comment}${readonly}${attribute} ${stereotype}<${type},${multiplicity}> ${name}; -" // multiplicity N - idl_valuetype_association_aggregation_declaration - " ${comment}${visibility}${type} ${name}; -" // multiplicity 1 - " ${comment}${visibility}${stereotype}<${type}> ${name}; -" // multiplicity * a..b - " ${comment}${visibility}${stereotype}<${type},${multiplicity}> ${name}; -" // multiplicity N - idl_union_association_aggregation_declaration - " ${comment}case ${case} : ${readonly}${type} ${name};" // multiplicity 1 - " ${comment}case ${case} : ${readonly}${stereotype}<${type}> ${name};" // multiplicity * a..b - " ${comment}case ${case} : ${readonly}${stereotype}<${type},${multiplicity}> ${name};" // multiplicity N - idl_get "get_${name}" - idl_set "set_${name}" twoways - idl_default_operation_declaration " ${comment}${oneway}${type} ${name}${(}${)}${raisesnl}${raises}; -" - uml_get_name uml uml_set_name uml -end diff --git a/uml/cinelerra3/idl_includes b/uml/cinelerra3/idl_includes deleted file mode 100644 index fceab64b9..000000000 --- a/uml/cinelerra3/idl_includes +++ /dev/null @@ -1 +0,0 @@ -// "a type" "needed idl_includes" diff --git a/uml/cinelerra3/java_imports b/uml/cinelerra3/java_imports deleted file mode 100644 index bbd370acb..000000000 --- a/uml/cinelerra3/java_imports +++ /dev/null @@ -1 +0,0 @@ -// "a type" "needed java_imports" diff --git a/uml/cinelerra3/stereotypes b/uml/cinelerra3/stereotypes deleted file mode 100644 index d96d5eb35..000000000 --- a/uml/cinelerra3/stereotypes +++ /dev/null @@ -1,54 +0,0 @@ - - package_stereotypes 5 "facade" "framework" "model library" "stub" "toplevel" - -_-> 2 "access" "import" - end - - class_stereotypes 18 "actor" "auxiliary" "boundary" "control" "entity" "enum" "enum_pattern" "exception" "focus" "implementation class" "interface" "@interface" "metaclass" "struct" "type" "typedef" "union" "utility" - ---- 3 "list" "set" "vector" - ---> 3 "list" "set" "vector" - o--- 3 "list" "set" "vector" - *--- 3 "list" "set" "vector" - o--> 3 "list" "set" "vector" - *--> 3 "list" "set" "vector" - -_-> 2 "friend" "import" - -_-|> 1 "bind" - end - - use_case_stereotypes 1 "realization" - - -_-> 2 "include" "extend" - end - - artifact_stereotypes 6 "document" "file" "script" "source" "library" "executable" - -_-> 2 "deploy" "manifest" - end - - attribute_stereotypes 0 - operation_stereotypes 0 - state_stereotypes 3 "machine" "submachine" "top" - activity_stereotypes 0 - flow_stereotypes 3 "interrupt" "multicast" "multireceive" - interruptibleactivityregion_stereotypes 0 - pseudostate_stereotypes 0 - stateaction_stereotypes 2 "send-signal" "receive-signal" - parameter_stereotypes 0 - parameterset_stereotypes 0 - activitynode_stereotypes 0 - activityaction_stereotypes 0 - activityobject_stereotypes 2 "datastore" "centralBuffer" - pin_stereotypes 0 - component_stereotypes 6 "build component" "entity" "implement" "process" "service" "subsystem" - deploymentnode_stereotypes 2 "cpu" "device" - classview_stereotypes 0 - usecaseview_stereotypes 0 - componentview_stereotypes 0 - deploymentview_stereotypes 0 - classdiagram_stereotypes 0 - seqdiagram_stereotypes 0 - coldiagram_stereotypes 0 - usecasediagram_stereotypes 0 - statediagram_stereotypes 0 - activitydiagram_stereotypes 0 - componentdiagram_stereotypes 0 - deploymentdiagram_stereotypes 0 -end diff --git a/uml/cinelerra3/tools b/uml/cinelerra3/tools deleted file mode 100644 index a8fe05f2f..000000000 --- a/uml/cinelerra3/tools +++ /dev/null @@ -1,17 +0,0 @@ -// 'tool' "the executable" "displayed string" {target}+ -tool "HTML documentation" "ghtml" Class Operation Attribute Generalisation Realize Dependency Association DirectionalAssociation Aggregation AggregationByValue DirectionalAggregation DirectionalAggregationByValue ExtraMember State Region StateAction Initial EntryPoint Final Terminate ExitPoint DeepHistory ShallowHistory Junction Choice Fork Join Transition Activity InterruptibleActivityRegion ExpansionRegion ActivityObject ActivityAction Parameter ParameterSet Pin ExpansionNode InitialActivityNode FinalActivityNode ExitPointActivityNode DecisionActivityNode MergeActivityNode ForkActivityNode JoinActivityNode Flow Project Package UseCaseView ClassView ComponentView DeploymentView UseCaseDiagram SeqDiagram ColDiagram ClassDiagram ObjectDiagram StateDiagram ActivityDiagram ComponentDiagram DeploymentDiagram UseCase Component Node Artifact Inherit DependOn -tool "HTML doc. (flat)" "ghtml -flat" Class Operation Attribute Generalisation Realize Dependency Association DirectionalAssociation Aggregation AggregationByValue DirectionalAggregation DirectionalAggregationByValue ExtraMember State Region StateAction Initial EntryPoint Final Terminate ExitPoint DeepHistory ShallowHistory Junction Choice Fork Join Transition Activity InterruptibleActivityRegion ExpansionRegion ActivityObject ActivityAction Parameter ParameterSet Pin ExpansionNode InitialActivityNode FinalActivityNode ExitPointActivityNode DecisionActivityNode MergeActivityNode ForkActivityNode JoinActivityNode Flow Project Package UseCaseView ClassView ComponentView DeploymentView UseCaseDiagram SeqDiagram ColDiagram ClassDiagram ObjectDiagram StateDiagram ActivityDiagram ComponentDiagram DeploymentDiagram UseCase Component Node Artifact Inherit DependOn -tool "HTML doc. (svg)" "ghtml -svg" Class Operation Attribute Generalisation Realize Dependency Association DirectionalAssociation Aggregation AggregationByValue DirectionalAggregation DirectionalAggregationByValue ExtraMember State Region StateAction Initial EntryPoint Final Terminate ExitPoint DeepHistory ShallowHistory Junction Choice Fork Join Transition Activity InterruptibleActivityRegion ExpansionRegion ActivityObject ActivityAction Parameter ParameterSet Pin ExpansionNode InitialActivityNode FinalActivityNode ExitPointActivityNode DecisionActivityNode MergeActivityNode ForkActivityNode JoinActivityNode Flow Project Package UseCaseView ClassView ComponentView DeploymentView UseCaseDiagram SeqDiagram ColDiagram ClassDiagram ObjectDiagram StateDiagram ActivityDiagram ComponentDiagram DeploymentDiagram UseCase Component Node Artifact Inherit DependOn -tool "HTML doc. (flat, svg)" "ghtml -flat -svg" Class Operation Attribute Generalisation Realize Dependency Association DirectionalAssociation Aggregation AggregationByValue DirectionalAggregation DirectionalAggregationByValue ExtraMember State Region StateAction Initial EntryPoint Final Terminate ExitPoint DeepHistory ShallowHistory Junction Choice Fork Join Transition Activity InterruptibleActivityRegion ExpansionRegion ActivityObject ActivityAction Parameter ParameterSet Pin ExpansionNode InitialActivityNode FinalActivityNode ExitPointActivityNode DecisionActivityNode MergeActivityNode ForkActivityNode JoinActivityNode Flow Project Package UseCaseView ClassView ComponentView DeploymentView UseCaseDiagram SeqDiagram ColDiagram ClassDiagram ObjectDiagram StateDiagram ActivityDiagram ComponentDiagram DeploymentDiagram UseCase Component Node Artifact Inherit DependOn -tool "Generate .pro" "gpro" Artifact -tool "Import Rose" "irose" Project Package -tool "C++ utilities" "cpp_util" Class -tool "Generate XMI 1.2" "gxmi" Project -tool "Generate XMI 2.1" "gxmi2" Project -tool "Import XMI 2.1" "ixmi2" Project Package -tool "C++ state machine" "stmgen" State -tool "Use case wizard" "usecasewizard" UseCase -tool "Check-in" "file_control ci" Project Package -tool "Check-out" "file_control co" Project Package -tool "Deploy classes" "deplcl" ClassView -tool "Global Change" "global_change" Class Project Package ClassView DeploymentView diff --git a/wiki/DIR_INFO b/wiki/DIR_INFO deleted file mode 100644 index 2bbb2fa6b..000000000 --- a/wiki/DIR_INFO +++ /dev/null @@ -1 +0,0 @@ -tiddlywiki for semi-persistent documentation diff --git a/wiki/backend.html b/wiki/backend.html deleted file mode 100644 index b58256a58..000000000 --- a/wiki/backend.html +++ /dev/null @@ -1,11681 +0,0 @@ - - - - - - - - - - - -
                                                                                                                                                                                                                                          My TiddlyWiki is loading ...

                                                                                                                                                                                                                                          Requires Javascript.
                                                                                                                                                                                                                                          - - Data Backend - design draft - - - - - - - - - - - -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Background: #fff
                                                                                                                                                                                                                                          -Foreground: #000
                                                                                                                                                                                                                                          -PrimaryPale: #8cf
                                                                                                                                                                                                                                          -PrimaryLight: #18f
                                                                                                                                                                                                                                          -PrimaryMid: #04b
                                                                                                                                                                                                                                          -PrimaryDark: #014
                                                                                                                                                                                                                                          -SecondaryPale: #ffc
                                                                                                                                                                                                                                          -SecondaryLight: #fe8
                                                                                                                                                                                                                                          -SecondaryMid: #db4
                                                                                                                                                                                                                                          -SecondaryDark: #841
                                                                                                                                                                                                                                          -TertiaryPale: #eee
                                                                                                                                                                                                                                          -TertiaryLight: #ccc
                                                                                                                                                                                                                                          -TertiaryMid: #999
                                                                                                                                                                                                                                          -TertiaryDark: #666
                                                                                                                                                                                                                                          -Error: #f88
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -a {color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -a img {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
                                                                                                                                                                                                                                          -h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.header {background:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.headerShadow {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.headerForeground {color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tabSelected{color:[[ColorPalette::PrimaryDark]];
                                                                                                                                                                                                                                          -	background:[[ColorPalette::TertiaryPale]];
                                                                                                                                                                                                                                          -	border-left:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -	border-top:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -	border-right:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.tabContents .button {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebar {}
                                                                                                                                                                                                                                          -#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
                                                                                                                                                                                                                                          -.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
                                                                                                                                                                                                                                          -.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
                                                                                                                                                                                                                                          -	border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.wizardStep.wizardStepDone {background::[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
                                                                                                                                                                                                                                          -	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
                                                                                                                                                                                                                                          -	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
                                                                                                                                                                                                                                          -.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler .defaultCommand {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.shadow .title {color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.title {color:[[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -.subtitle {color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.toolbar {color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.toolbar a {color:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
                                                                                                                                                                                                                                          -.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -.tagging .button, .tagged .button {border:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.footer {color:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.selected .footer {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
                                                                                                                                                                                                                                          -.sparktick {background:[[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
                                                                                                                                                                                                                                          -.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.lowlight {background:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.imageLink, #displayArea .imageLink {background:transparent;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer .listTitle {list-style-type:none; margin-left:-2em;}
                                                                                                                                                                                                                                          -.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.viewer code {color:[[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
                                                                                                                                                                                                                                          -.editorFooter {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
                                                                                                                                                                                                                                          -#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -* html .tiddler {height:1%;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
                                                                                                                                                                                                                                          -h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
                                                                                                                                                                                                                                          -h4,h5,h6 {margin-top:1em;}
                                                                                                                                                                                                                                          -h1 {font-size:1.35em;}
                                                                                                                                                                                                                                          -h2 {font-size:1.25em;}
                                                                                                                                                                                                                                          -h3 {font-size:1.1em;}
                                                                                                                                                                                                                                          -h4 {font-size:1em;}
                                                                                                                                                                                                                                          -h5 {font-size:.9em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -hr {height:1px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -a {text-decoration:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dt {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -ol ol {list-style-type:lower-alpha;}
                                                                                                                                                                                                                                          -ol ol ol {list-style-type:lower-roman;}
                                                                                                                                                                                                                                          -ol ol ol ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -ol ol ol ol ol {list-style-type:lower-alpha;}
                                                                                                                                                                                                                                          -ol ol ol ol ol ol {list-style-type:lower-roman;}
                                                                                                                                                                                                                                          -ol ol ol ol ol ol ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.txtOptionInput {width:11em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#contentWrapper .chkOptionInput {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.externalLink {text-decoration:underline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.indent {margin-left:3em;}
                                                                                                                                                                                                                                          -.outdent {margin-left:3em; text-indent:-3em;}
                                                                                                                                                                                                                                          -code.escaped {white-space:nowrap;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddlyLinkExisting {font-weight:bold;}
                                                                                                                                                                                                                                          -.tiddlyLinkNonExisting {font-style:italic;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
                                                                                                                                                                                                                                          -a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#mainMenu .tiddlyLinkExisting,
                                                                                                                                                                                                                                          -	#mainMenu .tiddlyLinkNonExisting,
                                                                                                                                                                                                                                          -	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
                                                                                                                                                                                                                                          -#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.header {position:relative;}
                                                                                                                                                                                                                                          -.header a:hover {background:transparent;}
                                                                                                                                                                                                                                          -.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
                                                                                                                                                                                                                                          -.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.siteTitle {font-size:3em;}
                                                                                                                                                                                                                                          -.siteSubtitle {font-size:1.2em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
                                                                                                                                                                                                                                          -#sidebarOptions {padding-top:0.3em;}
                                                                                                                                                                                                                                          -#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
                                                                                                                                                                                                                                          -#sidebarOptions input {margin:0.4em 0.5em;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
                                                                                                                                                                                                                                          -#sidebarTabs .tabContents {width:15em; overflow:hidden;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.wizard {padding:0.1em 1em 0em 2em;}
                                                                                                                                                                                                                                          -.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
                                                                                                                                                                                                                                          -.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
                                                                                                                                                                                                                                          -.wizardStep {padding:1em 1em 1em 1em;}
                                                                                                                                                                                                                                          -.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
                                                                                                                                                                                                                                          -.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
                                                                                                                                                                                                                                          -.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
                                                                                                                                                                                                                                          -.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
                                                                                                                                                                                                                                          -.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
                                                                                                                                                                                                                                          -#messageArea a {text-decoration:underline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
                                                                                                                                                                                                                                          -.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
                                                                                                                                                                                                                                          -.popup .popupMessage {padding:0.4em;}
                                                                                                                                                                                                                                          -.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
                                                                                                                                                                                                                                          -.popup li.disabled {padding:0.4em;}
                                                                                                                                                                                                                                          -.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
                                                                                                                                                                                                                                          -.listBreak {font-size:1px; line-height:1px;}
                                                                                                                                                                                                                                          -.listBreak div {margin:2px 0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tabset {padding:1em 0em 0em 0.5em;}
                                                                                                                                                                                                                                          -.tab {margin:0em 0em 0em 0.25em; padding:2px;}
                                                                                                                                                                                                                                          -.tabContents {padding:0.5em;}
                                                                                                                                                                                                                                          -.tabContents ul, .tabContents ol {margin:0; padding:0;}
                                                                                                                                                                                                                                          -.txtMainTab .tabContents li {list-style:none;}
                                                                                                                                                                                                                                          -.tabContents li.listLink { margin-left:.75em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#contentWrapper {display:block;}
                                                                                                                                                                                                                                          -#splashScreen {display:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#displayArea {margin:1em 17em 0em 14em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.toolbar {text-align:right; font-size:.9em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler {padding:1em 1em 0em 1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.missing .viewer,.missing .title {font-style:italic;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.title {font-size:1.6em; font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.missing .subtitle {display:none;}
                                                                                                                                                                                                                                          -.subtitle {font-size:1.1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler .button {padding:0.2em 0.4em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
                                                                                                                                                                                                                                          -.isTag .tagging {display:block;}
                                                                                                                                                                                                                                          -.tagged {margin:0.5em; float:right;}
                                                                                                                                                                                                                                          -.tagging, .tagged {font-size:0.9em; padding:0.25em;}
                                                                                                                                                                                                                                          -.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
                                                                                                                                                                                                                                          -.tagClear {clear:both;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.footer {font-size:.9em;}
                                                                                                                                                                                                                                          -.footer li {display:inline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.annotation {padding:0.5em; margin:0.5em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* html .viewer pre {width:99%; padding:0 0 1em 0;}
                                                                                                                                                                                                                                          -.viewer {line-height:1.4em; padding-top:0.5em;}
                                                                                                                                                                                                                                          -.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
                                                                                                                                                                                                                                          -.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
                                                                                                                                                                                                                                          -.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
                                                                                                                                                                                                                                          -.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
                                                                                                                                                                                                                                          -table.listView {font-size:0.85em; margin:0.8em 1.0em;}
                                                                                                                                                                                                                                          -table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
                                                                                                                                                                                                                                          -.viewer code {font-size:1.2em; line-height:1.4em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.editor {font-size:1.1em;}
                                                                                                                                                                                                                                          -.editor input, .editor textarea {display:block; width:100%; font:inherit;}
                                                                                                                                                                                                                                          -.editorFooter {padding:0.25em 0em; font-size:.9em;}
                                                                                                                                                                                                                                          -.editorFooter .button {padding-top:0px; padding-bottom:0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.sparkline {line-height:1em;}
                                                                                                                                                                                                                                          -.sparktick {outline:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
                                                                                                                                                                                                                                          -.zoomer div {padding:1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* html #backstage {width:99%;}
                                                                                                                                                                                                                                          -* html #backstageArea {width:99%;}
                                                                                                                                                                                                                                          -#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
                                                                                                                                                                                                                                          -#backstageToolbar {position:relative;}
                                                                                                                                                                                                                                          -#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
                                                                                                                                                                                                                                          -#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
                                                                                                                                                                                                                                          -#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
                                                                                                                                                                                                                                          -#backstage {position:relative; width:100%; z-index:50;}
                                                                                                                                                                                                                                          -#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
                                                                                                                                                                                                                                          -.backstagePanelFooter {padding-top:0.2em; float:right;}
                                                                                                                                                                                                                                          -.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
                                                                                                                                                                                                                                          -#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.whenBackstage {display:none;}
                                                                                                                                                                                                                                          -.backstageVisible .whenBackstage {display:block;}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -StyleSheet for use when a translation requires any css style changes.
                                                                                                                                                                                                                                          -This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which use a logographic writing system and need larger font sizes.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/*{{{*/
                                                                                                                                                                                                                                          -body {font-size:0.8em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebarOptions {font-size:1.05em;}
                                                                                                                                                                                                                                          -#sidebarOptions a {font-style:normal;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {font-size:0.95em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.subtitle {font-size:0.8em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table.listView {font-size:0.95em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -@media print {
                                                                                                                                                                                                                                          -#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton {display: none ! important;}
                                                                                                                                                                                                                                          -#displayArea {margin: 1em 1em 0em 1em;}
                                                                                                                                                                                                                                          -/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
                                                                                                                                                                                                                                          -noscript {display:none;}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
                                                                                                                                                                                                                                          -<div class='headerShadow'>
                                                                                                                                                                                                                                          -<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div class='headerForeground'>
                                                                                                                                                                                                                                          -<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
                                                                                                                                                                                                                                          -<div id='sidebar'>
                                                                                                                                                                                                                                          -<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
                                                                                                                                                                                                                                          -<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='displayArea'>
                                                                                                                                                                                                                                          -<div id='messageArea'></div>
                                                                                                                                                                                                                                          -<div id='tiddlerDisplay'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
                                                                                                                                                                                                                                          -<div class='title' macro='view title'></div>
                                                                                                                                                                                                                                          -<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
                                                                                                                                                                                                                                          -<div class='tagging' macro='tagging'></div>
                                                                                                                                                                                                                                          -<div class='tagged' macro='tags'></div>
                                                                                                                                                                                                                                          -<div class='viewer' macro='view text wikified'></div>
                                                                                                                                                                                                                                          -<div class='tagClear'></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
                                                                                                                                                                                                                                          -<div class='title' macro='view title'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit title'></div>
                                                                                                                                                                                                                                          -<div macro='annotations'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit text'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
                                                                                                                                                                                                                                          -* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
                                                                                                                                                                                                                                          -* MainMenu: The menu (usually on the left)
                                                                                                                                                                                                                                          -* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
                                                                                                                                                                                                                                          -You'll also need to enter your username for signing your edits: <<option txtUserName>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          These InterfaceOptions for customising TiddlyWiki are saved in your browser
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<<option txtUserName>>
                                                                                                                                                                                                                                          -<<option chkSaveBackups>> SaveBackups
                                                                                                                                                                                                                                          -<<option chkAutoSave>> AutoSave
                                                                                                                                                                                                                                          -<<option chkRegExpSearch>> RegExpSearch
                                                                                                                                                                                                                                          -<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
                                                                                                                                                                                                                                          -<<option chkAnimate>> EnableAnimations
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -Also see AdvancedOptions
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A task has a description, an estimate of how long it will take, and a record of how much time you have spent on it so far.  Here's an example, which shows a task estimated at 3 hours, with 1 hour spent on it, and ''2'' hours remaining:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 3 3 1>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you hover the mouse over any part of the task -- the bullet, the description, or any of the numeric cells -- a tip will appear explaining it.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Try modifying the time spent.  Suppose you've just spent one more hour and want to record it.  Just click on the second yellow cell, and enter "+1" (sans the quote marks, of course) in the popup window.  Watch the time remaining go down to 1 hour.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -In reality, I originally estimated this task at a half-hour, but it ended up taking 3.5 hours.  The macro also tracks your original estimate, if it is different from the current estimate, in a fourth cell like this:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 0.5 2 1>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can adjust the current estimate in the same way as you adjusted the time spent.  Click on the current estimate cell (the first yellow cell), and change it to 2.5 hours by typing "2.5" or "+.5".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You can also adjust the time remaining, which will modify either the estimate (if the time remaining increases) or the time spent (if it decreases).  Click on the time remaining and add an hour by typing "+1".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -When the time remaining goes to zero, the task is considered complete:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 0.5 3.5 3.5>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you haven't already done so, try double-clicking the description.  Yes, it really does open up the editor and select just the text of the description.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A task's description is a single wikified line, so it can contain any formatting that can be specified on one line:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 1>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 0.5>> Put tasksum on the ViewTemplate.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can specify just the description of a task, and leave it unestimated.  Click the question mark to enter the estimate:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -As this task implies, you can enter two values in the popup when you click on any of the time cells.  Separate them with spaces and/or a comma.  Experiment:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 1>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Finally, if you haven't already figured this out, you can double-click on a task's bullet to mark it complete, with the current estimate entered as the time spent.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          If you've been paying attention, you've noticed that I haven't discussed the actual adding of calls to the task macro within your tiddlers -- it's all been about modifying tasks that were already there.  That's because adding tasks via the taskadder macro is much easier and more intuitive than adding them by hand.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -And setting up a taskadder is simplicity itself.  Just add {{{<<taskadder>>}}} to your tiddler.  You will see this:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Just type a task description into the first field, and your initial estimate for how long it will take into the second field.  Click the "add task" button, or just hit Enter in either of the fields, to add the new task into the tiddler.  Notice that you can just start typing a new task as soon as you're done entering the first one.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You can have as many taskadders as you like in any tiddler.  The last one you used will capture the keyboard focus when it is redisplayed, meaning you can type a series of tasks without using the mouse.  Try adding some tasks here and in the above adder:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Notice that the one you just used takes focus when this tiddler is redisplayed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -A taskadder by default adds tasks above itself.  You can make it add them below by adding a {{{below}}} argument to the macro call:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder below>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          In this tutorial, we've been looking mostly at individual tasks.  In real life, though, you'll typically have a series of them, or even several series of them in the same tiddler.  In these cases you want a summary that tells you -- at a minimum -- how much time you still expect to spend on these tasks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To get such a summary, just add {{{<<tasksum start>>}}} before the tasks and {{{<<tasksum end>>}}} after them.  Here's an example:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 0.25 0.25 0.25>> Add tooltips to the various cells
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<task 1 3.5 2.5>> Add a double-click handler to the desc cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to allow entry of two values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to handle leading + or -
                                                                                                                                                                                                                                          -<<task 1 1 0>> Add a double-click handler to the status cell that functions like typing 0 into the rem cell
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you'd rather have the summary at the top, just add {{{here}}} to the start call, ie {{{<<tasksum start here>>}}}.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start here>>
                                                                                                                                                                                                                                          -<<task 0.25 0.25 0.25>> Add tooltips to the various cells
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can nest these things if you like, just be sure to match starts and ends:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start here>>
                                                                                                                                                                                                                                          -* Time cell manipulation:<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to allow entry of two values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to handle leading + or -
                                                                                                                                                                                                                                          -<<tasksum end "Cell manipulation:">>
                                                                                                                                                                                                                                          -<<br>>
                                                                                                                                                                                                                                          -* Double-click handling:<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 1 3.5 2.5>> Add a double-click handler to the desc cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<task 1 1 0>> Add a double-click handler to the status cell that functions like typing 0 into the rem cell
                                                                                                                                                                                                                                          -<<tasksum end "Double-clicks:">>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Finally, the simplest way to use tasksum is to add it to your view template.  See TaskSummaryViewTemplate for an example template.  Note that if no tasks are present between the start and end, nothing is displayed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The TaskMacroPlugin can be installed like any other TiddlyWiki plugin, and used without further effort.  However, there are two issues that may affect you.  (To get started with a brand new wiki that does not have these issues, consider downloading the [[empty LabWiki|empty_labwiki.html]].)
                                                                                                                                                                                                                                          -# The task macros don't play nicely with the default TiddlyWiki display of tags.  In the default view template, a tiddler's list of tags is shown in a little box that floats in the upper right corner of the tiddler.  However, this little box may interfere with the tables used by the task macros.  In Firefox, the tables are drawn right over the top of the tag box, rendering both of them illegible.  In Internet Explorer, the tag box forces the tables to be pushed down below the box, which can waste a lot of space.<<br>><<br>>Thus, I recommend changing your view template to eliminate the little box.  If you use Simon Baird's [[TagglyTagging|http://simonbaird.com/mptw/#TagglyTagging]] (as LabWiki does), then my TaskSummaryViewTemplate might be a good alternative.  Simply import it into your wiki and rename it to ViewTemplate.  This template also demonstrates how to incorporate the tasksum macro into every tiddler so any tiddler with tasks has a summary at the top.<<br>><<br>>
                                                                                                                                                                                                                                          -# Most view templates also add a minus sign ("-") before the "close" command.  TiddlyWiki interprets this to mean that you want the close command to be executed if you hit the Escape key from within the tiddler.<<br>><<br>>However, most tiddlers never have focus, and so never give you the opportunity to try it out.  But if you have a taskadder in your tiddler, then you suddenly enable this feature -- and you probably don't want it.  It means that if you type a nice long task description and then hit Escape, that description will be lost and the tiddler will be closed.  So I recommend that you remove the minus sign from the view template's menu altogether, as I have done in LabWiki's own ViewTemplate.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -This ends the tutorial.  To go back to any previous section, click the down-arrow and choose it: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          PageTemplate
                                                                                                                                                                                                                                          -|>|SiteTitle - SiteSubtitle|
                                                                                                                                                                                                                                          -|>|MainMenu|
                                                                                                                                                                                                                                          -|DefaultTiddlers<<br>><<br>><<br>>ViewTemplate<<br>><<br>>EditTemplate|SideBarOptions|
                                                                                                                                                                                                                                          -|~|OptionsPanel|
                                                                                                                                                                                                                                          -|~|SideBarTabs|
                                                                                                                                                                                                                                          -|~|AdvancedOptions|
                                                                                                                                                                                                                                          -|~|<<tiddler Configuration.SideBarTabs>>|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''StyleSheet:'' StyleSheetColors - StyleSheetLayout - StyleSheetPrint
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -ColorPalette
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -SiteUrl
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|BetterTimelineMacro|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#BetterTimelineMacro|
                                                                                                                                                                                                                                          -|Version|0.5 beta|
                                                                                                                                                                                                                                          -|Requires|~TW2.x|
                                                                                                                                                                                                                                          -!!!Description:
                                                                                                                                                                                                                                          -A replacement for the core timeline macro that offers more features:
                                                                                                                                                                                                                                          -*list tiddlers with only specfic tag
                                                                                                                                                                                                                                          -*exclude tiddlers with a particular tag
                                                                                                                                                                                                                                          -*limit entries to any number of days, for example one week
                                                                                                                                                                                                                                          -*specify a start date for the timeline, only tiddlers after that date will be listed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Installation:
                                                                                                                                                                                                                                          -Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
                                                                                                                                                                                                                                          -Edit the ViewTemplate to add the fullscreen command to the toolbar.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Syntax:
                                                                                                                                                                                                                                          -{{{<<timeline better:true>>}}}
                                                                                                                                                                                                                                          -''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -additonal params:
                                                                                                                                                                                                                                          -(use only the ones you want)
                                                                                                                                                                                                                                          -{{{<<timeline better:true  onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''explanation of syntax:''
                                                                                                                                                                                                                                          -onlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.
                                                                                                                                                                                                                                          -excludeTag: tiddlers with this tag will not be listed.
                                                                                                                                                                                                                                          -sortBy: sort tiddlers by date modified or date created. Possible values are modified or created.
                                                                                                                                                                                                                                          -firstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006
                                                                                                                                                                                                                                          -maxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.
                                                                                                                                                                                                                                          -maxEntries: limit the total number of entries in the timeline.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!History:
                                                                                                                                                                                                                                          -*28-07-06: ver 0.5 beta, first release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -// Return the tiddlers as a sorted array
                                                                                                                                                                                                                                          -TiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          var results = [];
                                                                                                                                                                                                                                          -          this.forEachTiddler(function(title,tiddler)
                                                                                                                                                                                                                                          -          {
                                                                                                                                                                                                                                          -          if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)
                                                                                                                                                                                                                                          -                        if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)
                                                                                                                                                                                                                                          -                                      results.push(tiddler);
                                                                                                                                                                                                                                          -          });
                                                                                                                                                                                                                                          -          if(field)
                                                                                                                                                                                                                                          -                   results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
                                                                                                                                                                                                                                          -          return results;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//this function by Udo
                                                                                                                                                                                                                                          -function getParam(params, name, defaultValue)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          if (!params)
                                                                                                                                                                                                                                          -          return defaultValue;
                                                                                                                                                                                                                                          -          var p = params[0][name];
                                                                                                                                                                                                                                          -          return p ? p[0] : defaultValue;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -window.old_timeline_handler= config.macros.timeline.handler;
                                                                                                                                                                                                                                          -config.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          var args = paramString.parseParams("list",null,true);
                                                                                                                                                                                                                                          -          var betterMode = getParam(args, "better", "false");
                                                                                                                                                                                                                                          -          if (betterMode == 'true')
                                                                                                                                                                                                                                          -          {
                                                                                                                                                                                                                                          -          var sortBy = getParam(args,"sortBy","modified");
                                                                                                                                                                                                                                          -          var excludeTag = getParam(args,"excludeTag",undefined);
                                                                                                                                                                                                                                          -          var includeTag = getParam(args,"onlyTag",undefined);
                                                                                                                                                                                                                                          -          var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);
                                                                                                                                                                                                                                          -          var firstDayParam = getParam(args,"firstDay",undefined);
                                                                                                                                                                                                                                          -          var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";
                                                                                                                                                                                                                                          -          var lastDay = "";
                                                                                                                                                                                                                                          -          var field= sortBy;
                                                                                                                                                                                                                                          -          var maxDaysParam = getParam(args,"maxDays",undefined);
                                                                                                                                                                                                                                          -          var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;
                                                                                                                                                                                                                                          -          var maxEntries = getParam(args,"maxEntries",undefined);
                                                                                                                                                                                                                                          -          var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;
                                                                                                                                                                                                                                          -          for(var t=tiddlers.length-1; t>=last; t--)
                                                                                                                                                                                                                                          -                  {
                                                                                                                                                                                                                                          -                  var tiddler = tiddlers[t];
                                                                                                                                                                                                                                          -                  var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
                                                                                                                                                                                                                                          -                  if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))
                                                                                                                                                                                                                                          -                     {
                                                                                                                                                                                                                                          -                     if(theDay != lastDay)
                                                                                                                                                                                                                                          -                               {
                                                                                                                                                                                                                                          -                               var theDateList = document.createElement("ul");
                                                                                                                                                                                                                                          -                               place.appendChild(theDateList);
                                                                                                                                                                                                                                          -                               createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));
                                                                                                                                                                                                                                          -                               lastDay = theDay;
                                                                                                                                                                                                                                          -                               }
                                                                                                                                                                                                                                          -                  var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);
                                                                                                                                                                                                                                          -                  theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
                                                                                                                                                                                                                                          -                  }
                                                                                                                                                                                                                                          -                  }
                                                                                                                                                                                                                                          -          }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -          else
                                                                                                                                                                                                                                          -              {
                                                                                                                                                                                                                                          -              window.old_timeline_handler.apply(this,arguments);
                                                                                                                                                                                                                                          -              }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Background: #fff
                                                                                                                                                                                                                                          -Foreground: #000
                                                                                                                                                                                                                                          -PrimaryPale: #f8a
                                                                                                                                                                                                                                          -PrimaryLight: #f48
                                                                                                                                                                                                                                          -PrimaryMid: #824
                                                                                                                                                                                                                                          -PrimaryDark: #412
                                                                                                                                                                                                                                          -SecondaryPale: #ffc
                                                                                                                                                                                                                                          -SecondaryLight: #fe8
                                                                                                                                                                                                                                          -SecondaryMid: #db4
                                                                                                                                                                                                                                          -SecondaryDark: #841
                                                                                                                                                                                                                                          -TertiaryPale: #eee
                                                                                                                                                                                                                                          -TertiaryLight: #ccc
                                                                                                                                                                                                                                          -TertiaryMid: #999
                                                                                                                                                                                                                                          -TertiaryDark: #666
                                                                                                                                                                                                                                          -Error: #f88
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          This just starts as braindump, I will refine it soon:
                                                                                                                                                                                                                                          -* handle all files cinelerra uses at runtime (media, edl, temp data)
                                                                                                                                                                                                                                          -* manage filehandles, cinelerra might use more more files than available filehandles
                                                                                                                                                                                                                                          -* manage temporary data
                                                                                                                                                                                                                                          -* do caching
                                                                                                                                                                                                                                          -* io will be blocked where the backend tells the core where it can expect the data (not read()/write() like)
                                                                                                                                                                                                                                          -* kind-of garbage collector
                                                                                                                                                                                                                                          -* do prefetching
                                                                                                                                                                                                                                          -* no/low latency for the core the prefetcher and other things ensure that data is available in time
                                                                                                                                                                                                                                          -* translate any input into a format which the cinelerra core understands (demux, decode)
                                                                                                                                                                                                                                          -* same for encoding to output formats
                                                                                                                                                                                                                                          -* offer a plugin API for encoders/decoders
                                                                                                                                                                                                                                          -* maybe network backend for serving data to distributed render nodes
                                                                                                                                                                                                                                          -* can do some load control or management (trigger adaptive rendering if system is idle etc)
                                                                                                                                                                                                                                          -* pull based arch
                                                                                                                                                                                                                                          -* Serialize persistent data (Project / EDL's)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Look at [[Overview]] for the current design proposal
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          DataBackend
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          'File' is the superclass of all possible filetypes, it has a weak reference to a FileHandle which is managed in FileHandleCache, on creation only the existence (when reading) or access for write for new files are checked. 'File' stores some generic metadata about the underlying file and intended use. But actual opening is done on demand.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Files content is memory mapped into the process address space, this is managed by FileMap objects and a FileMapCache.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          'FileHandle's are managed by the FileHandleCache, they are just storing the underlying OS file handles and managed in a lazy/weak way, (re)opened when needed and aging in the cache when not needed, since the amount of open file handles is limited aged ones will be closed and reused when the system needs to open another file.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          'FileHandleCache' storing a finite maximum number of [[FileHandle]]s as a list. As long the configured maximum of open files is not reached new file handles are stored at the begin of the list. Whenever a filehandle is accessed it is moved to the begin of the list too. Unused filehandles propagate towards the end of the list. When the maximum of open filehandles is reached, aged filehandles are closed and taken from the end.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Each 'FileMap' object contains many [[Frame]]s. The actual layout depends on the type of the [[File]]. Mappings need to be page aligned while [[Frame]]s can be anywhere within a file and dynamically sized.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -All established [[FileMap]]s are managed in a FileMapCache. This is similar to the FileHandleCache, but mappings which are in use are checked out of the aging list and thus become locked from aging/purging.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -FileMap objects are transparent to the application. It will only requests [[Frame]]s as in position and size (and some other parameters).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The 'FileMapCache' keeps a list of FileMaps which are currently not in use and subject of aging.
                                                                                                                                                                                                                                          -Whenever a FileMap is in use, it is checked out into an in-use list where it is not subject to aging.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          'Frames' are the smallest datablocks handled by the Backend. The application tells the Backend to make [[File]]s available and then only requests Frames from the Backend. All other datastructures of the backend are private.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Actually Frames are (references to) blocks of continuous memory. They can be anything depending on the usage of the [[File]] (Video frames, encoder frames, blocks of sound samples).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Each [[Frame]] points to a [[FrameDescriptor]] which describes the shared properties of [[Frame]]s of the same kind. For video frames this [[FrameDescriptor]] will define the policies of the used color model, resolution, aspect ratio and so on, for example.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Frames are referenced by a smart-pointer like object which manages the lifetime and caching behavior. There are 3 states such a frame reference can be in:
                                                                                                                                                                                                                                          -# readonly: the backing FileMap is checked out from the aging list, frames can be read
                                                                                                                                                                                                                                          -# readwrite: the backing FileMap is checked out from the aging list, frames can be read and written (depends on the filemode as well)
                                                                                                                                                                                                                                          -# weak: the FileMap object is checked back into the aging list, the frame can't be accessed but we can try to transform a weak reference into a readonly or readwrite reference
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Frames can be addressed uniquely (needs to be worked out) whenever a frame is not available. The backend can initiate a (probably recursive) render for it.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Accessing [[Frame]]s may add further renderjobs for related frames to the [[Prefetch]] task.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|FullScreenPlugin|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#FullScreenPlugin|
                                                                                                                                                                                                                                          -|Version|1.1|
                                                                                                                                                                                                                                          -|Requires|~TW2.x|
                                                                                                                                                                                                                                          -!Description:
                                                                                                                                                                                                                                          -Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Demo:
                                                                                                                                                                                                                                          -Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Installation:
                                                                                                                                                                                                                                          -Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
                                                                                                                                                                                                                                          -Edit the ViewTemplate to add the fullscreen command to the toolbar.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!History:
                                                                                                                                                                                                                                          -*25-07-06: ver 1.1
                                                                                                                                                                                                                                          -*20-07-06: ver 1.0
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var lewcidFullScreen = false;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.fullscreen =
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -            text:" ↕ ",
                                                                                                                                                                                                                                          -            tooltip:"Fullscreen mode"
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.fullscreen.handler = function (event,src,title)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -            if (lewcidFullScreen == false)
                                                                                                                                                                                                                                          -               {
                                                                                                                                                                                                                                          -                lewcidFullScreen = true;
                                                                                                                                                                                                                                          -                setStylesheet('#sidebar, .header, #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");
                                                                                                                                                                                                                                          -               }
                                                                                                                                                                                                                                          -            else
                                                                                                                                                                                                                                          -               {
                                                                                                                                                                                                                                          -                lewcidFullScreen = false;
                                                                                                                                                                                                                                          -                setStylesheet(' ',"lewcidFullScreenStyle");
                                                                                                                                                                                                                                          -               }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.fullscreen={};
                                                                                                                                                                                                                                          -config.macros.fullscreen.handler =  function(place,macroName,params,wikifier,paramString,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -        var label = params[0]||" ↕ ";
                                                                                                                                                                                                                                          -        var tooltip = params[1]||"Fullscreen mode";
                                                                                                                                                                                                                                          -        createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
                                                                                                                                                                                                                                          -Story.prototype.closeTiddler =function(title,animate,slowly)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -           lewcid_fullscreen_closeTiddler.apply(this,arguments);
                                                                                                                                                                                                                                          -           if (story.isEmpty() && lewcidFullScreen == true)
                                                                                                                                                                                                                                          -              config.commands.fullscreen.handler();
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Slider.prototype.lewcidStop = Slider.prototype.stop;
                                                                                                                                                                                                                                          -Slider.prototype.stop = function()
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -           this.lewcidStop();
                                                                                                                                                                                                                                          -           if (story.isEmpty() && lewcidFullScreen == true)
                                                                                                                                                                                                                                          -              config.commands.fullscreen.handler();
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin for ~TiddlyWiki version 1.2.x and 2.0''
                                                                                                                                                                                                                                          -^^author: Eric Shulman - ELS Design Studios
                                                                                                                                                                                                                                          -source: http://www.TiddlyTools.com/#InlineJavascriptPlugin
                                                                                                                                                                                                                                          -license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Insert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
                                                                                                                                                                                                                                          -!!!!!Usage
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Deferred execution from an 'onClick' link''
                                                                                                                                                                                                                                          -By including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''External script source files:''
                                                                                                                                                                                                                                          -You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Defining javascript functions and libraries:''
                                                                                                                                                                                                                                          -Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Creating dynamic tiddler content''
                                                                                                                                                                                                                                          -An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
                                                                                                                                                                                                                                          -* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
                                                                                                                                                                                                                                          -* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
                                                                                                                                                                                                                                          -* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Accessing the ~TiddlyWiki DOM''
                                                                                                                                                                                                                                          -The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Access to this DOM element allows you to create scripts that can:
                                                                                                                                                                                                                                          -* vary their actions based upon the specific location in which they are embedded
                                                                                                                                                                                                                                          -* access 'tiddler-relative' information (use findContainingTiddler(place))
                                                                                                                                                                                                                                          -* perform direct DOM manipulations (when returning wikified text is not enough)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Examples
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -an "alert" message box:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dynamic output:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>return (new Date()).toString();</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>return (new Date()).toString();</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -wikified dynamic output:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dynamic output using 'place' to get size information for current tiddler
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -creating an 'onclick' button/link that runs a script
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script label="click here">
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script label="click here">
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -loading a script from a source url
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script src="demo.js">return "loading demo.js..."</script>
                                                                                                                                                                                                                                          -<script label="click to execute demo() function">demo()</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -where http://www.TiddlyTools.com/demo.js contains:
                                                                                                                                                                                                                                          ->function demo() { alert('this output is from demo(), defined in demo.js') }
                                                                                                                                                                                                                                          ->alert('InlineJavascriptPlugin: demo.js has been loaded');
                                                                                                                                                                                                                                          -<script src="demo.js">return "loading demo.js..."</script>
                                                                                                                                                                                                                                          -<script label="click to execute demo() function">demo()</script>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.01.05 [1.4.0]''
                                                                                                                                                                                                                                          -added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
                                                                                                                                                                                                                                          -''2005.12.13 [1.3.1]''
                                                                                                                                                                                                                                          -when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
                                                                                                                                                                                                                                          -''2005.11.09 [1.3.0]''
                                                                                                                                                                                                                                          -for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content
                                                                                                                                                                                                                                          -Based on a suggestion by BradleyMeck
                                                                                                                                                                                                                                          -''2005.11.08 [1.2.0]''
                                                                                                                                                                                                                                          -handle loading of javascript from an external URL via src="..." syntax
                                                                                                                                                                                                                                          -''2005.11.08 [1.1.0]''
                                                                                                                                                                                                                                          -pass 'place' param into scripts to provide direct DOM access 
                                                                                                                                                                                                                                          -''2005.11.08 [1.0.0]''
                                                                                                                                                                                                                                          -initial release
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Credits
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.inlineJavascript= {major: 1, minor: 4, revision: 0, date: new Date(2006,1,5)};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "inlineJavascript",
                                                                                                                                                                                                                                          - match: "\\<script",
                                                                                                                                                                                                                                          - lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?\\>((?:.|\\n)*?)\\</script\\>",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - var lookaheadRegExp = new RegExp(this.lookahead,"mg");
                                                                                                                                                                                                                                          - lookaheadRegExp.lastIndex = w.matchStart;
                                                                                                                                                                                                                                          - var lookaheadMatch = lookaheadRegExp.exec(w.source)
                                                                                                                                                                                                                                          - if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
                                                                                                                                                                                                                                          - if (lookaheadMatch[1]) { // load a script library
                                                                                                                                                                                                                                          - // make script tag, set src, add to body to execute, then remove for cleanup
                                                                                                                                                                                                                                          - var script = document.createElement("script"); script.src = lookaheadMatch[1];
                                                                                                                                                                                                                                          - document.body.appendChild(script); document.body.removeChild(script);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (lookaheadMatch[2] && lookaheadMatch[3]) { // create a link to an 'onclick' script
                                                                                                                                                                                                                                          - // add a link, define click handler, save code in link (pass 'place'), set link attributes
                                                                                                                                                                                                                                          - var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
                                                                                                                                                                                                                                          - link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
                                                                                                                                                                                                                                          - link.code="function _out(place){"+lookaheadMatch[3]+"};_out(this);"
                                                                                                                                                                                                                                          - link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - else if (lookaheadMatch[3]) { // run inline script code
                                                                                                                                                                                                                                          - var code="function _out(place){"+lookaheadMatch[3]+"};_out(w.output);"
                                                                                                                                                                                                                                          - code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
                                                                                                                                                                                                                                          - try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
                                                                                                                                                                                                                                          - if (out && out.length) wikify(out,w.output);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|''Name:''|InlineJavascriptPlugin|
                                                                                                                                                                                                                                          -|''Source:''|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
                                                                                                                                                                                                                                          -|''Author:''|Eric Shulman - ELS Design Studios|
                                                                                                                                                                                                                                          -|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
                                                                                                                                                                                                                                          -|''~CoreVersion:''|2.0.10|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Insert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
                                                                                                                                                                                                                                          -!!!!!Usage
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Deferred execution from an 'onClick' link''
                                                                                                                                                                                                                                          -By including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''External script source files:''
                                                                                                                                                                                                                                          -You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Display script source in tiddler output''
                                                                                                                                                                                                                                          -By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Defining javascript functions and libraries:''
                                                                                                                                                                                                                                          -Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Creating dynamic tiddler content''
                                                                                                                                                                                                                                          -An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
                                                                                                                                                                                                                                          -* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
                                                                                                                                                                                                                                          -* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
                                                                                                                                                                                                                                          -* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Accessing the ~TiddlyWiki DOM''
                                                                                                                                                                                                                                          -The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Access to this DOM element allows you to create scripts that can:
                                                                                                                                                                                                                                          -* vary their actions based upon the specific location in which they are embedded
                                                                                                                                                                                                                                          -* access 'tiddler-relative' information (use findContainingTiddler(place))
                                                                                                                                                                                                                                          -* perform direct DOM manipulations (when returning wikified text is not enough)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Examples
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -an "alert" message box:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - alert('InlineJavascriptPlugin: this is a demonstration message');
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -dynamic output:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - return (new Date()).toString();
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -wikified dynamic output:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - return "link to current user: [["+config.options.txtUserName+"]]";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -dynamic output using 'place' to get size information for current tiddler:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -creating an 'onclick' button/link that runs a script:
                                                                                                                                                                                                                                          -><script label="click here" show>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -loading a script from a source url:
                                                                                                                                                                                                                                          ->http://www.TiddlyTools.com/demo.js contains:
                                                                                                                                                                                                                                          ->>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
                                                                                                                                                                                                                                          ->>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
                                                                                                                                                                                                                                          -><script src="demo.js" show>
                                                                                                                                                                                                                                          - return "loading demo.js..."
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -><script label="click to execute demo() function" show>
                                                                                                                                                                                                                                          - demo()
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
                                                                                                                                                                                                                                          -''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
                                                                                                                                                                                                                                          -''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
                                                                                                                                                                                                                                          -''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
                                                                                                                                                                                                                                          -''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
                                                                                                                                                                                                                                          -''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
                                                                                                                                                                                                                                          -''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access 
                                                                                                                                                                                                                                          -''2005.11.08 [1.0.0]'' initial release
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Credits
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.inlineJavascript= {major: 1, minor: 5, revision: 1, date: new Date(2006,6,1)};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "inlineJavascript",
                                                                                                                                                                                                                                          - match: "\\<script",
                                                                                                                                                                                                                                          - lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - var lookaheadRegExp = new RegExp(this.lookahead,"mg");
                                                                                                                                                                                                                                          - lookaheadRegExp.lastIndex = w.matchStart;
                                                                                                                                                                                                                                          - var lookaheadMatch = lookaheadRegExp.exec(w.source)
                                                                                                                                                                                                                                          - if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
                                                                                                                                                                                                                                          - if (lookaheadMatch[1]) { // load a script library
                                                                                                                                                                                                                                          - // make script tag, set src, add to body to execute, then remove for cleanup
                                                                                                                                                                                                                                          - var script = document.createElement("script"); script.src = lookaheadMatch[1];
                                                                                                                                                                                                                                          - document.body.appendChild(script); document.body.removeChild(script);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (lookaheadMatch[4]) { // there is script code
                                                                                                                                                                                                                                          - if (lookaheadMatch[3]) // show inline script code in tiddler output
                                                                                                                                                                                                                                          - wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
                                                                                                                                                                                                                                          - if (lookaheadMatch[2]) { // create a link to an 'onclick' script
                                                                                                                                                                                                                                          - // add a link, define click handler, save code in link (pass 'place'), set link attributes
                                                                                                                                                                                                                                          - var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
                                                                                                                                                                                                                                          - link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
                                                                                                                                                                                                                                          - link.code="function _out(place){"+lookaheadMatch[4]+"};_out(this);"
                                                                                                                                                                                                                                          - link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - else { // run inline script code
                                                                                                                                                                                                                                          - var code="function _out(place){"+lookaheadMatch[4]+"};_out(w.output);"
                                                                                                                                                                                                                                          - code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
                                                                                                                                                                                                                                          - try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
                                                                                                                                                                                                                                          - if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          ''[[Cinelerra3|index.html]]''
                                                                                                                                                                                                                                          -DataBackend
                                                                                                                                                                                                                                          -[[Overview]]
                                                                                                                                                                                                                                          -<<fullscreen>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>My TiddlyWiki</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          how is FileMetadata kept
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -copying semantics of smart pointers
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -explain opening/closing files (use() forget()?)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -difference between actual files and temporary. does it make sense to have temporary storage on diffent speed disks?
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -statistics hit/fail max/min/avg timings, hard / soft fails, timing constraints, when is rerendering cheaper than caching?..
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -adaptive rendering
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -background rendering
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -renderfarm
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -[[FrameDescriptor]]s and [[Frame]] details, Policies composing frames
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Storage and logging of EDL's, unlimited undo, database,...
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -When to Cache and when not to cache, aka instant [[Frame]] reuse
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Whenever cinelerra needs to access data this is done through the DataBackend described here. 
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -There are two main kinds how data is handled:
                                                                                                                                                                                                                                          -* Project Description and EDL's are handled in a InMemoryDatabase which uses a [[Serializer]] for storing and logging modifications.
                                                                                                                                                                                                                                          -* Media (audio, video, ...) is mapped as described below.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -The backend uses memory mapping to make data available to the program. This is little different to more common open/read/write/close file access while giving superior performance and much better memory utilization.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -The data backend must be capable to handle more data than will fit into the memory or even address space on 32 bit architectures.  Moreover a project may access more files than the OS can handle at a time, thus the for [[File]]s used by the Backend it needs a FileHandleCache to manage filehandles dynamically.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Which parts of a File are actually mapped to physical RAM is managed by the kernel, it keeps a FileMapCache to manage the [[FileMap]]s we've set up.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -The application itself only requests [[Frame]]s from the backend.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To minimize latency and optimize CPU utilization we have a [[Prefetch]] thread which operates a [[Scheduler]] to render and cache frames which are expected to be consumed soon. This prefetcher keeps [[Statistics]] for optimizing performance.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
                                                                                                                                                                                                                                          -	<div class='headerShadow'>
                                                                                                                                                                                                                                          -		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -	</div>
                                                                                                                                                                                                                                          -	<div class='headerForeground'>
                                                                                                                                                                                                                                          -		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -	</div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!-- horizontal MainMenu -->
                                                                                                                                                                                                                                          -<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
                                                                                                                                                                                                                                          -<!-- original MainMenu menu -->
                                                                                                                                                                                                                                          -<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->
                                                                                                                                                                                                                                          -<div id='sidebar'>
                                                                                                                                                                                                                                          -	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
                                                                                                                                                                                                                                          -	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='displayArea'>
                                                                                                                                                                                                                                          -	<div id='messageArea'></div>
                                                                                                                                                                                                                                          -	<div id='tiddlerDisplay'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|<html><a name="Top"/></html>''Name:''|PartTiddlerPlugin|
                                                                                                                                                                                                                                          -|''Version:''|1.0.6 (2006-11-07)|
                                                                                                                                                                                                                                          -|''Source:''|http://tiddlywiki.abego-software.de/#PartTiddlerPlugin|
                                                                                                                                                                                                                                          -|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
                                                                                                                                                                                                                                          -|''Licence:''|[[BSD open source license]]|
                                                                                                                                                                                                                                          -|''TiddlyWiki:''|2.0|
                                                                                                                                                                                                                                          -|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
                                                                                                                                                                                                                                          -!Table of Content<html><a name="TOC"/></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Description',null, event)">Description, Syntax</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Applications',null, event)">Applications</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('LongTiddler',null, event)">Refering to Paragraphs of a Longer Tiddler</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Citation',null, event)">Citation Index</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('TableCells',null, event)">Creating "multi-line" Table Cells</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Tabs',null, event)">Creating Tabs</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Sliders',null, event)">Using Sliders</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Revisions',null, event)">Revision History</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Code',null, event)">Code</a></html>
                                                                                                                                                                                                                                          -!Description<html><a name="Description"/></html>
                                                                                                                                                                                                                                          -With the {{{<part aPartName> ... </part>}}} feature you can structure your tiddler text into separate (named) parts. 
                                                                                                                                                                                                                                          -Each part can be referenced as a "normal" tiddler, using the "//tiddlerName//''/''//partName//" syntax (e.g. "About/Features"). E.g. you may create links to the parts, use it in {{{<<tiddler...>>}}} or {{{<<tabs...>>}}} macros etc.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Syntax:'' 
                                                                                                                                                                                                                                          -|>|''<part'' //partName// [''hidden''] ''>'' //any tiddler content// ''</part>''|
                                                                                                                                                                                                                                          -|//partName//|The name of the part. You may reference a part tiddler with the combined tiddler name "//nameOfContainerTidder//''/''//partName//.|
                                                                                                                                                                                                                                          -|''hidden''|When defined the content of the part is not displayed in the container tiddler. But when the part is explicitly referenced (e.g. in a {{{<<tiddler...>>}}} macro or in a link) the part's content is displayed.|
                                                                                                                                                                                                                                          -|<html><i>any&nbsp;tiddler&nbsp;content</i></html>|<html>The content of the part.<br>A part can have any content that a "normal" tiddler may have, e.g. you may use all the formattings and macros defined.</html>|
                                                                                                                                                                                                                                          -|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Applications<html><a name="Applications"/></html>
                                                                                                                                                                                                                                          -!!Refering to Paragraphs of a Longer Tiddler<html><a name="LongTiddler"/></html>
                                                                                                                                                                                                                                          -Assume you have written a long description in a tiddler and now you want to refer to the content of a certain paragraph in that tiddler (e.g. some definition.) Just wrap the text with a ''part'' block, give it a nice name, create a "pretty link" (like {{{[[Discussion Groups|Introduction/DiscussionGroups]]}}}) and you are done.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice this complements the approach to first writing a lot of small tiddlers and combine these tiddlers to one larger tiddler in a second step (e.g. using the {{{<<tiddler...>>}}} macro). Using the ''part'' feature you can first write a "classic" (longer) text that can be read "from top to bottom" and later "reuse" parts of this text for some more "non-linear" reading.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Citation Index<html><a name="Citation"/></html>
                                                                                                                                                                                                                                          -Create a tiddler "Citations" that contains your "citations". 
                                                                                                                                                                                                                                          -Wrap every citation with a part and a proper name. 
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<part BAX98>Baxter, Ira D. et al: //Clone Detection Using Abstract Syntax Trees.// 
                                                                                                                                                                                                                                          -in //Proc. ICSM//, 1998.</part>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part BEL02>Bellon, Stefan: //Vergleich von Techniken zur Erkennung duplizierten Quellcodes.// 
                                                                                                                                                                                                                                          -Thesis, Uni Stuttgart, 2002.</part>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part DUC99>Ducasse, Stéfane et al: //A Language Independent Approach for Detecting Duplicated Code.// 
                                                                                                                                                                                                                                          -in //Proc. ICSM//, 1999.</part>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You may now "cite" them just by using a pretty link like {{{[[Citations/BAX98]]}}} or even more pretty, like this {{{[[BAX98|Citations/BAX98]]}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Creating "multi-line" Table Cells<html><a name="TableCells"/></html>
                                                                                                                                                                                                                                          -You may have noticed that it is hard to create table cells with "multi-line" content. E.g. if you want to create a bullet list inside a table cell you cannot just write the bullet list
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -* Item 1
                                                                                                                                                                                                                                          -* Item 2
                                                                                                                                                                                                                                          -* Item 3
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -into a table cell (i.e. between the | ... | bars) because every bullet item must start in a new line but all cells of a table row must be in one line.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Using the ''part'' feature this problem can be solved. Just create a hidden part that contains the cells content and use a {{{<<tiddler >>}}} macro to include its content in the table's cell.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -|!Subject|!Items|
                                                                                                                                                                                                                                          -|subject1|<<tiddler ./Cell1>>|
                                                                                                                                                                                                                                          -|subject2|<<tiddler ./Cell2>>|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part Cell1 hidden>
                                                                                                                                                                                                                                          -* Item 1
                                                                                                                                                                                                                                          -* Item 2
                                                                                                                                                                                                                                          -* Item 3
                                                                                                                                                                                                                                          -</part>
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that inside the {{{<<tiddler ...>>}}} macro you may refer to the "current tiddler" using the ".".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -BTW: The same approach can be used to create bullet lists with items that contain more than one line.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Creating Tabs<html><a name="Tabs"/></html>
                                                                                                                                                                                                                                          -The build-in {{{<<tabs ...>>}}} macro requires that you defined an additional tiddler for every tab it displays. When you want to have "nested" tabs you need to define a tiddler for the "main tab" and one for every tab it contains. I.e. the definition of a set of tabs that is visually displayed at one place is distributed across multiple tiddlers.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -With the ''part'' feature you can put the complete definition in one tiddler, making it easier to keep an overview and maintain the tab sets.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -The standard tabs at the sidebar are defined by the following eight tiddlers:
                                                                                                                                                                                                                                          -* SideBarTabs
                                                                                                                                                                                                                                          -* TabAll
                                                                                                                                                                                                                                          -* TabMore
                                                                                                                                                                                                                                          -* TabMoreMissing
                                                                                                                                                                                                                                          -* TabMoreOrphans
                                                                                                                                                                                                                                          -* TabMoreShadowed
                                                                                                                                                                                                                                          -* TabTags
                                                                                                                                                                                                                                          -* TabTimeline
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Instead of these eight tiddlers one could define the following SideBarTabs tiddler that uses the ''part'' feature:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<tabs txtMainTab 
                                                                                                                                                                                                                                          - Timeline Timeline SideBarTabs/Timeline 
                                                                                                                                                                                                                                          - All 'All tiddlers' SideBarTabs/All 
                                                                                                                                                                                                                                          - Tags 'All tags' SideBarTabs/Tags 
                                                                                                                                                                                                                                          - More 'More lists' SideBarTabs/More>>
                                                                                                                                                                                                                                          -<part Timeline hidden><<timeline>></part>
                                                                                                                                                                                                                                          -<part All hidden><<list all>></part>
                                                                                                                                                                                                                                          -<part Tags hidden><<allTags>></part>
                                                                                                                                                                                                                                          -<part More hidden><<tabs txtMoreTab 
                                                                                                                                                                                                                                          - Missing 'Missing tiddlers' SideBarTabs/Missing 
                                                                                                                                                                                                                                          - Orphans 'Orphaned tiddlers' SideBarTabs/Orphans 
                                                                                                                                                                                                                                          - Shadowed 'Shadowed tiddlers' SideBarTabs/Shadowed>></part>
                                                                                                                                                                                                                                          -<part Missing hidden><<list missing>></part>
                                                                                                                                                                                                                                          -<part Orphans hidden><<list orphans>></part>
                                                                                                                                                                                                                                          -<part Shadowed hidden><<list shadowed>></part>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that you can easily "overwrite" individual parts in separate tiddlers that have the full name of the part.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -E.g. if you don't like the classic timeline tab but only want to see the 100 most recent tiddlers you could create a tiddler "~SideBarTabs/Timeline" with the following content:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<forEachTiddler 
                                                                                                                                                                                                                                          - sortBy 'tiddler.modified' descending 
                                                                                                                                                                                                                                          - write '(index < 100) ? "* [["+tiddler.title+"]]\n":""'>>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Using Sliders<html><a name="Sliders"/></html>
                                                                                                                                                                                                                                          -Very similar to the build-in {{{<<tabs ...>>}}} macro (see above) the {{{<<slider ...>>}}} macro requires that you defined an additional tiddler that holds the content "to be slid". You can avoid creating this extra tiddler by using the ''part'' feature
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -In a tiddler "About" we may use the slider to show some details that are documented in the tiddler's "Details" part.
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -<<slider chkAboutDetails About/Details details "Click here to see more details">>
                                                                                                                                                                                                                                          -<part Details hidden>
                                                                                                                                                                                                                                          -To give you a better overview ...
                                                                                                                                                                                                                                          -</part>
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that putting the content of the slider into the slider's tiddler also has an extra benefit: When you decide you need to edit the content of the slider you can just doubleclick the content, the tiddler opens for editing and you can directly start editing the content (in the part section). In the "old" approach you would doubleclick the tiddler, see that the slider is using tiddler X, have to look for the tiddler X and can finally open it for editing. So using the ''part'' approach results in a much short workflow.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Revision history<html><a name="Revisions"/></html>
                                                                                                                                                                                                                                          -* v1.0.6 (2006-11-07)
                                                                                                                                                                                                                                          -** Bugfix: cannot edit tiddler when UploadPlugin by Bidix is installed. Thanks to José Luis González Castro for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.5 (2006-03-02)
                                                                                                                                                                                                                                          -** Bugfix: Example with multi-line table cells does not work in IE6. Thanks to Paulo Soares for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.4 (2006-02-28)
                                                                                                                                                                                                                                          -** Bugfix: Shadow tiddlers cannot be edited (in TW 2.0.6). Thanks to Torsten Vanek for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.3 (2006-02-26)
                                                                                                                                                                                                                                          -** Adapt code to newly introduced Tiddler.prototype.isReadOnly() function (in TW 2.0.6). Thanks to Paulo Soares for reporting the problem.
                                                                                                                                                                                                                                          -* v1.0.2 (2006-02-05)
                                                                                                                                                                                                                                          -** Also allow other macros than the "tiddler" macro use the "." in the part reference (to refer to "this" tiddler)
                                                                                                                                                                                                                                          -* v1.0.1 (2006-01-27)
                                                                                                                                                                                                                                          -** Added Table of Content for plugin documentation. Thanks to RichCarrillo for suggesting.
                                                                                                                                                                                                                                          -** Bugfix: newReminder plugin does not work when PartTiddler is installed. Thanks to PauloSoares for reporting.
                                                                                                                                                                                                                                          -* v1.0.0 (2006-01-25)
                                                                                                                                                                                                                                          -** initial version
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code<html><a name="Code"/></html>
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// PartTiddlerPlugin
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Ensure that the PartTiddler Plugin is only installed once.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -if (!version.extensions.PartTiddlerPlugin) {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -version.extensions.PartTiddlerPlugin = {
                                                                                                                                                                                                                                          - major: 1, minor: 0, revision: 6,
                                                                                                                                                                                                                                          - date: new Date(2006, 10, 7), 
                                                                                                                                                                                                                                          - type: 'plugin',
                                                                                                                                                                                                                                          - source: "http://tiddlywiki.abego-software.de/#PartTiddlerPlugin"
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -if (!window.abego) window.abego = {};
                                                                                                                                                                                                                                          -if (version.major < 2) alertAndThrow("PartTiddlerPlugin requires TiddlyWiki 2.0 or newer.");
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Common Helpers
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Looks for the next newline, starting at the index-th char of text. 
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// If there are only whitespaces between index and the newline 
                                                                                                                                                                                                                                          -// the index behind the newline is returned, 
                                                                                                                                                                                                                                          -// otherwise (or when no newline is found) index is returned.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var skipEmptyEndOfLine = function(text, index) {
                                                                                                                                                                                                                                          - var re = /(\n|[^\s])/g;
                                                                                                                                                                                                                                          - re.lastIndex = index;
                                                                                                                                                                                                                                          - var result = re.exec(text);
                                                                                                                                                                                                                                          - return (result && text.charAt(result.index) == '\n') 
                                                                                                                                                                                                                                          - ? result.index+1
                                                                                                                                                                                                                                          - : index;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Constants
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var partEndOrStartTagRE = /(<\/part>)|(<part(?:\s+)((?:[^>])+)>)/mg;
                                                                                                                                                                                                                                          -var partEndTagREString = "<\\/part>";
                                                                                                                                                                                                                                          -var partEndTagString = "</part>";
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Plugin Specific Helpers
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Parse the parameters inside a <part ...> tag and return the result.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return [may be null] {partName: ..., isHidden: ...}
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var parseStartTagParams = function(paramText) {
                                                                                                                                                                                                                                          - var params = paramText.readMacroParams();
                                                                                                                                                                                                                                          - if (params.length == 0 || params[0].length == 0) return null;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - var name = params[0];
                                                                                                                                                                                                                                          - var paramsIndex = 1;
                                                                                                                                                                                                                                          - var hidden = false;
                                                                                                                                                                                                                                          - if (paramsIndex < params.length) {
                                                                                                                                                                                                                                          - hidden = params[paramsIndex] == "hidden";
                                                                                                                                                                                                                                          - paramsIndex++;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return {
                                                                                                                                                                                                                                          - partName: name, 
                                                                                                                                                                                                                                          - isHidden: hidden
                                                                                                                                                                                                                                          - };
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Returns the match to the next (end or start) part tag in the text, 
                                                                                                                                                                                                                                          -// starting the search at startIndex.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -// When no such tag is found null is returned, otherwise a "Match" is returned:
                                                                                                                                                                                                                                          -// [0]: full match
                                                                                                                                                                                                                                          -// [1]: matched "end" tag (or null when no end tag match)
                                                                                                                                                                                                                                          -// [2]: matched "start" tag (or null when no start tag match)
                                                                                                                                                                                                                                          -// [3]: content of start tag (or null if no start tag match)
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var findNextPartEndOrStartTagMatch = function(text, startIndex) {
                                                                                                                                                                                                                                          - var re = new RegExp(partEndOrStartTagRE);
                                                                                                                                                                                                                                          - re.lastIndex = startIndex;
                                                                                                                                                                                                                                          - var match = re.exec(text);
                                                                                                                                                                                                                                          - return match;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Formatter
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Process the <part ...> ... </part> starting at (w.source, w.matchStart) for formatting.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return true if a complete part section (including the end tag) could be processed, false otherwise.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var handlePartSection = function(w) {
                                                                                                                                                                                                                                          - var tagMatch = findNextPartEndOrStartTagMatch(w.source, w.matchStart);
                                                                                                                                                                                                                                          - if (!tagMatch) return false;
                                                                                                                                                                                                                                          - if (tagMatch.index != w.matchStart || !tagMatch[2]) return false;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - // Parse the start tag parameters
                                                                                                                                                                                                                                          - var arguments = parseStartTagParams(tagMatch[3]);
                                                                                                                                                                                                                                          - if (!arguments) return false;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - // Continue processing
                                                                                                                                                                                                                                          - var startTagEndIndex = skipEmptyEndOfLine(w.source, tagMatch.index + tagMatch[0].length);
                                                                                                                                                                                                                                          - var endMatch = findNextPartEndOrStartTagMatch(w.source, startTagEndIndex);
                                                                                                                                                                                                                                          - if (endMatch && endMatch[1]) {
                                                                                                                                                                                                                                          - if (!arguments.isHidden) {
                                                                                                                                                                                                                                          - w.nextMatch = startTagEndIndex;
                                                                                                                                                                                                                                          - w.subWikify(w.output,partEndTagREString);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = skipEmptyEndOfLine(w.source, endMatch.index + endMatch[0].length);
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return true;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - return false;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "part",
                                                                                                                                                                                                                                          - match: "<part\\s+[^>]+>",
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - if (!handlePartSection(w)) {
                                                                                                                                                                                                                                          - w.outputText(w.output,w.matchStart,w.matchStart+w.matchLength);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Extend "fetchTiddler" functionality to also recognize "part"s of tiddlers 
                                                                                                                                                                                                                                          -// as tiddlers.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var currentParent = null; // used for the "." parent (e.g. in the "tiddler" macro)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Return the match to the first <part ...> tag of the text that has the
                                                                                                                                                                                                                                          -// requrest partName.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return [may be null]
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var findPartStartTagByName = function(text, partName) {
                                                                                                                                                                                                                                          - var i = 0;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - while (true) {
                                                                                                                                                                                                                                          - var tagMatch = findNextPartEndOrStartTagMatch(text, i);
                                                                                                                                                                                                                                          - if (!tagMatch) return null;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - if (tagMatch[2]) {
                                                                                                                                                                                                                                          - // Is start tag
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - // Check the name
                                                                                                                                                                                                                                          - var arguments = parseStartTagParams(tagMatch[3]);
                                                                                                                                                                                                                                          - if (arguments && arguments.partName == partName) {
                                                                                                                                                                                                                                          - return tagMatch;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - i += tagMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Return the part "partName" of the given parentTiddler as a "readOnly" Tiddler 
                                                                                                                                                                                                                                          -// object, using fullName as the Tiddler's title. 
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// All remaining properties of the new Tiddler (tags etc.) are inherited from 
                                                                                                                                                                                                                                          -// the parentTiddler.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -// @return [may be null]
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var getPart = function(parentTiddler, partName, fullName) {
                                                                                                                                                                                                                                          - var text = parentTiddler.text;
                                                                                                                                                                                                                                          - var startTag = findPartStartTagByName(text, partName);
                                                                                                                                                                                                                                          - if (!startTag) return null;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - var endIndexOfStartTag = skipEmptyEndOfLine(text, startTag.index+startTag[0].length);
                                                                                                                                                                                                                                          - var indexOfEndTag = text.indexOf(partEndTagString, endIndexOfStartTag);
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - if (indexOfEndTag >= 0) {
                                                                                                                                                                                                                                          - var partTiddlerText = text.substring(endIndexOfStartTag,indexOfEndTag);
                                                                                                                                                                                                                                          - var partTiddler = new Tiddler();
                                                                                                                                                                                                                                          - partTiddler.set(
                                                                                                                                                                                                                                          - fullName,
                                                                                                                                                                                                                                          - partTiddlerText,
                                                                                                                                                                                                                                          - parentTiddler.modifier,
                                                                                                                                                                                                                                          - parentTiddler.modified,
                                                                                                                                                                                                                                          - parentTiddler.tags,
                                                                                                                                                                                                                                          - parentTiddler.created);
                                                                                                                                                                                                                                          - partTiddler.abegoIsPartTiddler = true;
                                                                                                                                                                                                                                          - return partTiddler;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return null;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Hijack the store.fetchTiddler to recognize the "part" addresses.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var oldFetchTiddler = store.fetchTiddler ;
                                                                                                                                                                                                                                          -store.fetchTiddler = function(title) {
                                                                                                                                                                                                                                          - var result = oldFetchTiddler.apply(this, arguments);
                                                                                                                                                                                                                                          - if (!result && title) {
                                                                                                                                                                                                                                          - var i = title.lastIndexOf('/');
                                                                                                                                                                                                                                          - if (i > 0) {
                                                                                                                                                                                                                                          - var parentName = title.substring(0, i);
                                                                                                                                                                                                                                          - var partName = title.substring(i+1);
                                                                                                                                                                                                                                          - var parent = (parentName == ".") 
                                                                                                                                                                                                                                          - ? currentParent 
                                                                                                                                                                                                                                          - : oldFetchTiddler.apply(this, [parentName]);
                                                                                                                                                                                                                                          - if (parent) {
                                                                                                                                                                                                                                          - return getPart(parent, partName, parent.title+"/"+partName);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - return result; 
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// The user must not edit a readOnly/partTiddler
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.editTiddler.oldIsReadOnlyFunction = Tiddler.prototype.isReadOnly;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Tiddler.prototype.isReadOnly = function() {
                                                                                                                                                                                                                                          - // Tiddler.isReadOnly was introduced with TW 2.0.6.
                                                                                                                                                                                                                                          - // For older version we explicitly check the global readOnly flag
                                                                                                                                                                                                                                          - if (config.commands.editTiddler.oldIsReadOnlyFunction) {
                                                                                                                                                                                                                                          - if (config.commands.editTiddler.oldIsReadOnlyFunction.apply(this, arguments)) return true;
                                                                                                                                                                                                                                          - } else {
                                                                                                                                                                                                                                          - if (readOnly) return true;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - return this.abegoIsPartTiddler;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.editTiddler.handler = function(event,src,title)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          - var t = store.getTiddler(title);
                                                                                                                                                                                                                                          - // Edit the tiddler if it either is not a tiddler (but a shadowTiddler)
                                                                                                                                                                                                                                          - // or the tiddler is not readOnly
                                                                                                                                                                                                                                          - if(!t || !t.abegoIsPartTiddler)
                                                                                                                                                                                                                                          - {
                                                                                                                                                                                                                                          - clearMessage();
                                                                                                                                                                                                                                          - story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE);
                                                                                                                                                                                                                                          - story.focusTiddler(title,"text");
                                                                                                                                                                                                                                          - return false;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// To allow the "./partName" syntax in macros we need to hijack 
                                                                                                                                                                                                                                          -// the invokeMacro to define the "currentParent" while it is running.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -var oldInvokeMacro = window.invokeMacro;
                                                                                                                                                                                                                                          -function myInvokeMacro(place,macro,params,wikifier,tiddler) {
                                                                                                                                                                                                                                          - var oldCurrentParent = currentParent;
                                                                                                                                                                                                                                          - if (tiddler) currentParent = tiddler;
                                                                                                                                                                                                                                          - try {
                                                                                                                                                                                                                                          - oldInvokeMacro.apply(this, arguments);
                                                                                                                                                                                                                                          - } finally {
                                                                                                                                                                                                                                          - currentParent = oldCurrentParent;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -window.invokeMacro = myInvokeMacro;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Scroll the anchor anchorName in the viewer of the given tiddler visible.
                                                                                                                                                                                                                                          -// When no tiddler is defined use the tiddler of the target given event is used.
                                                                                                                                                                                                                                          -window.scrollAnchorVisible = function(anchorName, tiddler, evt) {
                                                                                                                                                                                                                                          - var tiddlerElem = null;
                                                                                                                                                                                                                                          - if (tiddler) {
                                                                                                                                                                                                                                          - tiddlerElem = document.getElementById(story.idPrefix + tiddler);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (!tiddlerElem && evt) {
                                                                                                                                                                                                                                          - var target = resolveTarget(evt);
                                                                                                                                                                                                                                          - tiddlerElem = story.findContainingTiddler(target);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (!tiddlerElem) return;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - var children = tiddlerElem.getElementsByTagName("a");
                                                                                                                                                                                                                                          - for (var i = 0; i < children.length; i++) {
                                                                                                                                                                                                                                          - var child = children[i];
                                                                                                                                                                                                                                          - var name = child.getAttribute("name");
                                                                                                                                                                                                                                          - if (name == anchorName) {
                                                                                                                                                                                                                                          - var y = findPosY(child);
                                                                                                                                                                                                                                          - window.scrollTo(0,y);
                                                                                                                                                                                                                                          - return;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -} // of "install only once"
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Licence and Copyright
                                                                                                                                                                                                                                          -Copyright (c) abego Software ~GmbH, 2006 ([[www.abego-software.de|http://www.abego-software.de]])
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistribution and use in source and binary forms, with or without modification,
                                                                                                                                                                                                                                          -are permitted provided that the following conditions are met:
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistributions of source code must retain the above copyright notice, this
                                                                                                                                                                                                                                          -list of conditions and the following disclaimer.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistributions in binary form must reproduce the above copyright notice, this
                                                                                                                                                                                                                                          -list of conditions and the following disclaimer in the documentation and/or other
                                                                                                                                                                                                                                          -materials provided with the distribution.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Neither the name of abego Software nor the names of its contributors may be
                                                                                                                                                                                                                                          -used to endorse or promote products derived from this software without specific
                                                                                                                                                                                                                                          -prior written permission.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
                                                                                                                                                                                                                                          -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                                                                                                                                                                                                                                          -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
                                                                                                                                                                                                                                          -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
                                                                                                                                                                                                                                          -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
                                                                                                                                                                                                                                          -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
                                                                                                                                                                                                                                          -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                                                                                                                                                                                                                                          -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
                                                                                                                                                                                                                                          -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
                                                                                                                                                                                                                                          -DAMAGE.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          There are 2 important points when we want to access data with low latency:
                                                                                                                                                                                                                                          -# Since we handle much more data than it will fit into most computers RAM. The data which is backed in files has to be paged in and available when needed. The [[Prefetch]] Thread manages page hinting to the kernel (posix_madvise()..)
                                                                                                                                                                                                                                          -# Intermediate [[Frame]]s must eventually be rendered to the cache. The Backend will send Renderjobs to the Controller.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Both of these actions are managed by a [[Scheduler]].
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Whenever something queries a [[Frame]] from the backend it provides hints about what it is doing.
                                                                                                                                                                                                                                          -These hints contain:
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* Timing constraints
                                                                                                                                                                                                                                          -** When will the [[Frame]] be needed
                                                                                                                                                                                                                                          -** could we drop the request if it won't be available (rendered) in-time
                                                                                                                                                                                                                                          -* Priority of this job (as soon as possible, or just in time?)
                                                                                                                                                                                                                                          -* action (Playing forward, playing backward, tweaking, playback speed, recursive rendering of dependent frames)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notes:
                                                                                                                                                                                                                                          -* The Backend will try to render related frames in groups.
                                                                                                                                                                                                                                          -** This means that following frames are scheduled with lower priority. Whenever the program really requests them the priority will be adjusted.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|''Name:''|RSSReaderPlugin|
                                                                                                                                                                                                                                          -|''Description:''|This plugin provides a RSSReader for TiddlyWiki|
                                                                                                                                                                                                                                          -|''Version:''|1.1.1|
                                                                                                                                                                                                                                          -|''Date:''|Apr 21, 2007|
                                                                                                                                                                                                                                          -|''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin|
                                                                                                                                                                                                                                          -|''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc|
                                                                                                                                                                                                                                          -|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
                                                                                                                                                                                                                                          -|''Credit:''|BramChen for RssNewsMacro|
                                                                                                                                                                                                                                          -|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
                                                                                                                                                                                                                                          -|''~CoreVersion:''|2.2.0|
                                                                                                                                                                                                                                          -|''OptionalRequires:''|http://www.tiddlytools.com/#NestedSlidersPlugin|
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.RSSReaderPlugin = {
                                                                                                                                                                                                                                          -	major: 1, minor: 1, revision: 1,
                                                                                                                                                                                                                                          -	date: new Date("Apr 21, 2007"),
                                                                                                                                                                                                                                          -	source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin",
                                                                                                                                                                                                                                          -	author: "BidiX",
                                                                                                                                                                                                                                          -	coreVersion: '2.2.0'
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.rssReader = {
                                                                                                                                                                                                                                          -	dateFormat: "DDD, DD MMM YYYY",
                                                                                                                                                                                                                                          -	itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed  '@@'+itemStyle+itemText+'@@'
                                                                                                                                                                                                                                          -	msg:{
                                                                                                                                                                                                                                          -		permissionDenied: "Permission to read preferences was denied.",
                                                                                                                                                                                                                                          -		noRSSFeed: "No RSS Feed at this address %0",
                                                                                                                                                                                                                                          -		urlNotAccessible: " Access to %0 is not allowed"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	cache: [], 	// url => XMLHttpRequest.responseXML
                                                                                                                                                                                                                                          -	desc: "noDesc",
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
                                                                                                                                                                                                                                          -		var desc = params[0];
                                                                                                                                                                                                                                          -		var feedURL = params[1];
                                                                                                                                                                                                                                          -		var toFilter = (params[2] ? true : false);
                                                                                                                                                                                                                                          -		var filterString = (toFilter?(params[2].substr(0,1) == ' '? tiddler.title:params[2]):'');
                                                                                                                                                                                                                                          -		var place = createTiddlyElement(place, "div", "RSSReader");
                                                                                                                                                                                                                                          -		wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\n",place);
                                                                                                                                                                                                                                          -		if (this.cache[feedURL]) {
                                                                                                                                                                                                                                          -			this.displayRssFeed(this.cache[feedURL], feedURL, place, desc, toFilter, filterString);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			var r = loadRemoteFile(feedURL,config.macros.rssReader.processResponse, [place, desc, toFilter, filterString]);
                                                                                                                                                                                                                                          -			if (typeof r == "string")
                                                                                                                                                                                                                                          -				displayMessage(r);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// callback for loadRemoteFile 
                                                                                                                                                                                                                                          -	// params : [place, desc, toFilter, filterString]
                                                                                                                                                                                                                                          -	processResponse: function(status, params, responseText, url, xhr) { // feedURL, place, desc, toFilter, filterString) {	
                                                                                                                                                                                                                                          -		if (window.netscape){
                                                                                                                                                                                                                                          -			try {
                                                                                                                                                                                                                                          -				if (document.location.protocol.indexOf("http") == -1) {
                                                                                                                                                                                                                                          -					netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			catch (e) { displayMessage(e.description?e.description:e.toString()); }
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (xhr.status == httpStatus.NotFound)
                                                                                                                                                                                                                                          -		 {
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -			return;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (!status)
                                                                                                                                                                                                                                          -		 {
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -			return;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (xhr.responseXML) {
                                                                                                                                                                                                                                          -			// response is interpreted as XML
                                                                                                                                                                                                                                          -			config.macros.rssReader.cache[url] = xhr.responseXML;
                                                                                                                                                                                                                                          -			config.macros.rssReader.displayRssFeed(xhr.responseXML, params[0], url, params[1], params[2], params[3]);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			if (responseText.substr(0,5) == "<?xml") {
                                                                                                                                                                                                                                          -				// response exists but not return as XML -> try to parse it 
                                                                                                                                                                                                                                          -				var dom = (new DOMParser()).parseFromString(responseText, "text/xml"); 
                                                                                                                                                                                                                                          -				if (dom) {
                                                                                                                                                                                                                                          -					// parsing successful so use it
                                                                                                                                                                                                                                          -					config.macros.rssReader.cache[url] = dom;
                                                                                                                                                                                                                                          -					config.macros.rssReader.displayRssFeed(dom, params[0], url, params[1], params[2], params[3]);
                                                                                                                                                                                                                                          -					return;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			// no XML display as html 
                                                                                                                                                                                                                                          -			wikify("<html>" + responseText + "</html>", params[0]);
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.msg.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// explore down the DOM tree
                                                                                                                                                                                                                                          -	displayRssFeed: function(xml, place, feedURL, desc, toFilter, filterString){
                                                                                                                                                                                                                                          -		// Channel
                                                                                                                                                                                                                                          -		var chanelNode = xml.getElementsByTagName('channel').item(0);
                                                                                                                                                                                                                                          -		var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null);
                                                                                                                                                                                                                                          -		var chanelTitle = "";
                                                                                                                                                                                                                                          -		if ((chanelTitleElement) && (chanelTitleElement.firstChild)) 
                                                                                                                                                                                                                                          -			chanelTitle = chanelTitleElement.firstChild.nodeValue;
                                                                                                                                                                                                                                          -		var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null);
                                                                                                                                                                                                                                          -		var chanelLink = "";
                                                                                                                                                                                                                                          -		if (chanelLinkElement) 
                                                                                                                                                                                                                                          -			chanelLink = chanelLinkElement.firstChild.nodeValue;
                                                                                                                                                                                                                                          -		var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\n";
                                                                                                                                                                                                                                          -		var title = createTiddlyElement(place,"div",null,"ChanelTitle",null);
                                                                                                                                                                                                                                          -		wikify(titleTxt,title);
                                                                                                                                                                                                                                          -		// ItemList
                                                                                                                                                                                                                                          -		var itemList = xml.getElementsByTagName('item');
                                                                                                                                                                                                                                          -		var article = createTiddlyElement(place,"ul",null,null,null);
                                                                                                                                                                                                                                          -		var lastDate;
                                                                                                                                                                                                                                          -		var re;
                                                                                                                                                                                                                                          -		if (toFilter) 
                                                                                                                                                                                                                                          -			re = new RegExp(filterString.escapeRegExp());
                                                                                                                                                                                                                                          -		for (var i=0; i<itemList.length; i++){
                                                                                                                                                                                                                                          -			var titleElm = itemList[i].getElementsByTagName('title').item(0);
                                                                                                                                                                                                                                          -			var titleText = (titleElm ? titleElm.firstChild.nodeValue : '');
                                                                                                                                                                                                                                          -			if (toFilter && ! titleText.match(re)) {
                                                                                                                                                                                                                                          -				continue;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var descText = '';
                                                                                                                                                                                                                                          -			descElem = itemList[i].getElementsByTagName('description').item(0);
                                                                                                                                                                                                                                          -			if (descElem){
                                                                                                                                                                                                                                          -				try{
                                                                                                                                                                                                                                          -					for (var ii=0; ii<descElem.childNodes.length; ii++) {
                                                                                                                                                                                                                                          -						descText += descElem.childNodes[ii].nodeValue;
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				catch(e){}
                                                                                                                                                                                                                                          -				descText = descText.replace(/<br \/>/g,'\n');
                                                                                                                                                                                                                                          -				if (desc == "asHtml")
                                                                                                                                                                                                                                          -					descText = "<html>"+descText+"</html>";
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var linkElm = itemList[i].getElementsByTagName("link").item(0);
                                                                                                                                                                                                                                          -			var linkURL = linkElm.firstChild.nodeValue;
                                                                                                                                                                                                                                          -			var pubElm = itemList[i].getElementsByTagName('pubDate').item(0);
                                                                                                                                                                                                                                          -			var pubDate;
                                                                                                                                                                                                                                          -			if (!pubElm) {
                                                                                                                                                                                                                                          -				pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us
                                                                                                                                                                                                                                          -				if (pubElm) {
                                                                                                                                                                                                                                          -					pubDate = pubElm.firstChild.nodeValue;
                                                                                                                                                                                                                                          -					pubDate = this.formatDateString(this.dateFormat, pubDate);
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -					else {
                                                                                                                                                                                                                                          -						pubDate = '0';
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			else {
                                                                                                                                                                                                                                          -				pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0);
                                                                                                                                                                                                                                          -				pubDate = this.formatDate(this.dateFormat, pubDate);
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			titleText = titleText.replace(/\[|\]/g,'');
                                                                                                                                                                                                                                          -			var rssText = '*'+'[[' + titleText + '|' + linkURL + ']]' + '' ;
                                                                                                                                                                                                                                          -			if ((desc != "noDesc") && descText){
                                                                                                                                                                                                                                          -				rssText = rssText.replace(/\n/g,' ');
                                                                                                                                                                                                                                          -				descText = '@@'+this.itemStyle+descText + '@@\n';				
                                                                                                                                                                                                                                          -				if (version.extensions.nestedSliders){
                                                                                                                                                                                                                                          -					descText = '+++[...]' + descText + '===';
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				rssText = rssText + descText;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var story;
                                                                                                                                                                                                                                          -			if ((lastDate != pubDate) && ( pubDate != '0')) {
                                                                                                                                                                                                                                          -				story = createTiddlyElement(article,"li",null,"RSSItem",pubDate);
                                                                                                                                                                                                                                          -				lastDate = pubDate;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else {
                                                                                                                                                                                                                                          -				lastDate = pubDate;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			story = createTiddlyElement(article,"div",null,"RSSItem",null);
                                                                                                                                                                                                                                          -			wikify(rssText,story);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	formatDate: function(template, date){
                                                                                                                                                                                                                                          -		var dateString = new Date(date);
                                                                                                                                                                                                                                          -		// template = template.replace(/hh|mm|ss/g,'');
                                                                                                                                                                                                                                          -		return dateString.formatString(template);
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	formatDateString: function(template, date){
                                                                                                                                                                                                                                          -		var dateString = new Date(date.substr(0,4), date.substr(5,2) - 1, date.substr(8,2)
                                                                                                                                                                                                                                          -			);
                                                                                                                                                                                                                                          -		return dateString.formatString(template);
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.rssFeedUpdate = {
                                                                                                                                                                                                                                          -	label: "Update",
                                                                                                                                                                                                                                          -	prompt: "Clear the cache and redisplay this RssFeed",
                                                                                                                                                                                                                                          -	handler: function(place,macroName,params) {
                                                                                                                                                                                                                                          -		var feedURL = params[0];
                                                                                                                                                                                                                                          -		var tiddlerTitle = params[1];
                                                                                                                                                                                                                                          -		createTiddlyButton(place, this.label, this.prompt, 
                                                                                                                                                                                                                                          -			function () {
                                                                                                                                                                                                                                          -				if (config.macros.rssReader.cache[feedURL]) {
                                                                                                                                                                                                                                          -					config.macros.rssReader.cache[feedURL] = null; 
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			story.refreshTiddler(tiddlerTitle,null, true);
                                                                                                                                                                                                                                          -		return false;});
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          //last update: RSSReaderPlugin v 1.1.1//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Description
                                                                                                                                                                                                                                          -This plugin provides a RSSReader for TiddlyWiki
                                                                                                                                                                                                                                          -* It accesses asynchronously an RSSFeed
                                                                                                                                                                                                                                          -*Depending on the chanel item format, each item could be written as :
                                                                                                                                                                                                                                          -**simple text wikified
                                                                                                                                                                                                                                          -**html
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Usage
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<rssReader noDesc|asHtml|asText rssUrl ['filtering string']>>
                                                                                                                                                                                                                                          -	noDesc: only title of item is printed
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	asHtml: if you know that description contain html (links, img ...), 
                                                                                                                                                                                                                                          -		the text is enclosed with <html> </html> tags
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - 	asText: if the description should not be interpreted as html the 
                                                                                                                                                                                                                                          -		description is wikified
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	rssUrl: the rssFeed url that could be accessed. 
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	'filtering string': if present, the rssfeed item title must contained 
                                                                                                                                                                                                                                          -		this string to be displayed. 
                                                                                                                                                                                                                                          -		If 'filering string' contained space characters only, the tiddler 
                                                                                                                                                                                                                                          -		title is used for filtering.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -For security reasons, if the TiddlyWiki is accessed from http, a ProxyService should be used to access an rssFeed from an other site.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!examples
                                                                                                                                                                                                                                          -| !reader | !RSSFeed type | !working from |
                                                                                                                                                                                                                                          -| BidiXTWRSS | Description asHtml | file: or tiddlywiki.bidix.info |
                                                                                                                                                                                                                                          -| [[Le Monde]] | Description asText | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| YahooNewsSport | Description asHtml | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| TiddlyWikiRSS | Description asHtml | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| [[Libération]] | noDesc | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| [[TestComment]] | asText and filters | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -see : <<tag RSSFeed>> for the full list.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Revision history
                                                                                                                                                                                                                                          -* V1.1.0 (2207/04/13)
                                                                                                                                                                                                                                          -**No more import functions
                                                                                                                                                                                                                                          -* V1.0.0 (2006/11/11)
                                                                                                                                                                                                                                          -**refactoring using core loadRemoteFile function
                                                                                                                                                                                                                                          -**import using new tiddlywiki:tiddler element
                                                                                                                                                                                                                                          -**import and presentation preserved without EricShulman's NestedSliderPlugin
                                                                                                                                                                                                                                          -**better display of items 
                                                                                                                                                                                                                                          -* v0.3.0 (24/08/2006)
                                                                                                                                                                                                                                          -** Filter on RSS item title
                                                                                                                                                                                                                                          -** Place to display redefined for asynchronous processing
                                                                                                                                                                                                                                          -* v0.2.2 (22/08/2006)
                                                                                                                                                                                                                                          -**Haloscan feed has no pubDate.
                                                                                                                                                                                                                                          -* v0.2.1 (08/05/2006)
                                                                                                                                                                                                                                          -* v0.2.0 (01/05/2006)
                                                                                                                                                                                                                                          -**Small adapations for del.icio.us feed
                                                                                                                                                                                                                                          -* v0.1.1 (28/04/2006)
                                                                                                                                                                                                                                          -**Bug : Channel without title 
                                                                                                                                                                                                                                          -* v0.1.0 (24/04/2006)
                                                                                                                                                                                                                                          -** initial release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Scheduling is done with two priority queues, one for high priority jobs and one for low priority jobs. These priority queues are ordered by absolute time values (and a job identifier, details will be worked out at implementation time).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -There is also a variable defining how to handle too-late schedules (proceed, abort) for each scheduled job. 
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <<search>><<closeAll>><<permaview>><<newTiddler>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          design draft
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Data Backend
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -|Name|SplashScreenPlugin|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#SplashScreenPlugin|
                                                                                                                                                                                                                                          -|Version|0.21 |
                                                                                                                                                                                                                                          -|Requires|~TW2.08+|
                                                                                                                                                                                                                                          -!Description:
                                                                                                                                                                                                                                          -Provides a simple splash screen that is visible while the TW is loading.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Installation
                                                                                                                                                                                                                                          -Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Customizing
                                                                                                                                                                                                                                          -Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!History
                                                                                                                                                                                                                                          -* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
                                                                                                                                                                                                                                          -* 26-06-06 : version 0.2, first release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var old_lewcid_splash_restart=restart;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -restart = function()
                                                                                                                                                                                                                                          -{   if (document.getElementById("SplashScreen"))
                                                                                                                                                                                                                                          -        document.getElementById("SplashScreen").style.display = "none";
                                                                                                                                                                                                                                          -      if (document.getElementById("contentWrapper"))
                                                                                                                                                                                                                                          -        document.getElementById("contentWrapper").style.display = "block";
                                                                                                                                                                                                                                          -    
                                                                                                                                                                                                                                          -    old_lewcid_splash_restart();
                                                                                                                                                                                                                                          -   
                                                                                                                                                                                                                                          -    if (splashScreenInstall)
                                                                                                                                                                                                                                          -       {if(config.options.chkAutoSave)
                                                                                                                                                                                                                                          -			{saveChanges();}
                                                                                                                                                                                                                                          -        displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
                                                                                                                                                                                                                                          -        }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var oldText = store.getTiddlerText("MarkupPreHead");
                                                                                                                                                                                                                                          -if (oldText.indexOf("SplashScreen")==-1)
                                                                                                                                                                                                                                          -   {var siteTitle = store.getTiddlerText("SiteTitle");
                                                                                                                                                                                                                                          -   var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
                                                                                                                                                                                                                                          -   if (! store.tiddlerExists("MarkupPreHead"))
                                                                                                                                                                                                                                          -       {var myTiddler = store.createTiddler("MarkupPreHead");}
                                                                                                                                                                                                                                          -   else
                                                                                                                                                                                                                                          -      {var myTiddler = store.getTiddler("MarkupPreHead");}
                                                                                                                                                                                                                                          -      myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
                                                                                                                                                                                                                                          -      store.setDirty(true);
                                                                                                                                                                                                                                          -      var splashScreenInstall = true;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -/* a contrasting background so I can see where one tiddler ends and the other begins */
                                                                                                                                                                                                                                          -body {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* sexy colours and font for the header */
                                                                                                                                                                                                                                          -.headerForeground {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerShadow, .headerShadow a {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerForeground, .headerShadow {
                                                                                                                                                                                                                                          -	padding: 1em 1em 0;
                                                                                                                                                                                                                                          -	font-family: 'Trebuchet MS' sans-serif;
                                                                                                                                                                                                                                          -	font-weight:bold;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerForeground .siteSubtitle {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerShadow .siteSubtitle {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make shadow go and down right instead of up and left */
                                                                                                                                                                                                                                          -.headerShadow {
                                                                                                                                                                                                                                          -	left: 2px;
                                                                                                                                                                                                                                          -	top: 3px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* prefer monospace for editing */
                                                                                                                                                                                                                                          -.editor textarea {
                                                                                                                                                                                                                                          -	font-family: 'Consolas' monospace;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* sexy tiddler titles */
                                                                                                                                                                                                                                          -.title {
                                                                                                                                                                                                                                          -	font-size: 250%;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -	font-family: 'Trebuchet MS' sans-serif;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* more subtle tiddler subtitle */
                                                                                                                                                                                                                                          -.subtitle {
                                                                                                                                                                                                                                          -	padding:0px;
                                                                                                                                                                                                                                          -	margin:0px;
                                                                                                                                                                                                                                          -	padding-left:0.5em;
                                                                                                                                                                                                                                          -	font-size: 90%;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::TertiaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.subtitle .tiddlyLink {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::TertiaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* a little bit of extra whitespace */
                                                                                                                                                                                                                                          -.viewer {
                                                                                                                                                                                                                                          -	padding-bottom:3px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* don't want any background color for headings */
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::Background]];
                                                                                                                                                                                                                                          -	color: [[ColorPalette::Foreground]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* give tiddlers 3d style border and explicit background */
                                                                                                                                                                                                                                          -.tiddler {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::Background]];
                                                                                                                                                                                                                                          -	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
                                                                                                                                                                                                                                          -	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
                                                                                                                                                                                                                                          -	margin-bottom: 1em;
                                                                                                                                                                                                                                          -	padding-bottom: 2em;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make options slider look nicer */
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {
                                                                                                                                                                                                                                          -	border:solid 1px [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* the borders look wrong with the body background */
                                                                                                                                                                                                                                          -#sidebar .button {
                                                                                                                                                                                                                                          -	border-style: none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* displays the list of a tiddler's tags horizontally. used in ViewTemplate */
                                                                                                                                                                                                                                          -.tagglyTagged li.listTitle {
                                                                                                                                                                                                                                          -	display:none
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tagglyTagged li {
                                                                                                                                                                                                                                          -	display: inline; font-size:90%;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tagglyTagged ul {
                                                                                                                                                                                                                                          -	margin:0px; padding:0px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* this means you can put line breaks in SidebarOptions for readability */
                                                                                                                                                                                                                                          -#sidebarOptions br {
                                                                                                                                                                                                                                          -	display:none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/* undo the above in OptionsPanel */
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel br {
                                                                                                                                                                                                                                          -	display:inline;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* horizontal main menu stuff */
                                                                                                                                                                                                                                          -#displayArea {
                                                                                                                                                                                                                                          -	margin: 1em 15.7em 0em 1em; /* use the freed up space */
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu br {
                                                                                                                                                                                                                                          -	display: none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -	color:[[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu {
                                                                                                                                                                                                                                          -	padding:2px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
                                                                                                                                                                                                                                          -	margin-left: 0.5em;
                                                                                                                                                                                                                                          -	margin-right: 0.5em;
                                                                                                                                                                                                                                          -	padding-left: 3px;
                                                                                                                                                                                                                                          -	padding-right: 3px;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -	font-size: 115%;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu .button:hover, #topMenu .tiddlyLink:hover {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::PrimaryDark]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make it print a little cleaner */
                                                                                                                                                                                                                                          -@media print {
                                                                                                                                                                                                                                          -	#topMenu {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	/* not sure if we need all the importants */
                                                                                                                                                                                                                                          -	.tiddler {
                                                                                                                                                                                                                                          -		border-style: none ! important;
                                                                                                                                                                                                                                          -		margin:0px ! important;
                                                                                                                                                                                                                                          -		padding:0px ! important;
                                                                                                                                                                                                                                          -		padding-bottom:2em ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.tagglyTagging .button, .tagglyTagging .hidebutton {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.headerShadow {
                                                                                                                                                                                                                                          -		visibility: hidden ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.tagglyTagged .quickopentag, .tagged .quickopentag {
                                                                                                                                                                                                                                          -		border-style: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.quickopentag a.button, .miniTag {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <<timeline better:true maxDays:14 maxEntries:20>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|TaskMacroPlugin|
                                                                                                                                                                                                                                          -|Author|<<extension TaskMacroPlugin author>>|
                                                                                                                                                                                                                                          -|Location|<<extension TaskMacroPlugin source>>|
                                                                                                                                                                                                                                          -|License|<<extension TaskMacroPlugin license>>|
                                                                                                                                                                                                                                          -|Version|<<extension TaskMacroPlugin versionAndDate>>|
                                                                                                                                                                                                                                          -!Description
                                                                                                                                                                                                                                          -A set of macros to help you keep track of time estimates for tasks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Macros defined:
                                                                                                                                                                                                                                          -* {{{task}}}: Displays a task description and makes it easy to estimate and track the time spent on the task.
                                                                                                                                                                                                                                          -* {{{taskadder}}}: Displays text entry field to simplify the adding of tasks.
                                                                                                                                                                                                                                          -* {{{tasksum}}}: Displays a summary of tasks sandwiched between two calls to this macro.
                                                                                                                                                                                                                                          -* {{{extension}}}: A simple little macro that displays information about a TiddlyWiki plugin, and that will hopefully someday migrate to the TW core in some form.
                                                                                                                                                                                                                                          -Core overrides:
                                                                                                                                                                                                                                          -* {{{wikify}}}: when wikifying a tiddler's complete text, adds refresh information so the tiddler will be refreshed when it changes
                                                                                                                                                                                                                                          -* {{{config.refreshers}}}: have the built-in refreshers return true; also, add a new refresher ("fullContent") that redisplays a full tiddler whenever it or any nested tiddlers it shows are changed
                                                                                                                                                                                                                                          -* {{{refreshElements}}}: now checks the return value from the refresher and only short-circuits the recursion if the refresher returns true
                                                                                                                                                                                                                                          -!Plugin Information
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.TaskMacroPlugin = {
                                                                                                                                                                                                                                          -	major: 1, minor: 1, revision: 0,
                                                                                                                                                                                                                                          -	date: new Date(2006,5-1,13),
                                                                                                                                                                                                                                          -	author: "LukeBlanshard",
                                                                                                                                                                                                                                          -	source: "http://labwiki.sourceforge.net/#TaskMacroPlugin",
                                                                                                                                                                                                                                          -	license: "http://labwiki.sourceforge.net/#CopyrightAndLicense"
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -A little macro for pulling out extension info.  Use like {{{<<extension PluginName datum>>}}}, where {{{PluginName}}} is the name you used for {{{version.extensions}}} and {{{datum}}} is either {{{versionAndDate}}} or a property of the extension description object, such as {{{source}}}.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.extension = {
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler ) {
                                                                                                                                                                                                                                          -		var info  = version.extensions[params[0]]
                                                                                                                                                                                                                                          -		var datum = params[1]
                                                                                                                                                                                                                                          -		switch (params[1]) {
                                                                                                                                                                                                                                          -		case 'versionAndDate':
                                                                                                                                                                                                                                          -			createTiddlyElement( place, "span", null, null,
                                                                                                                                                                                                                                          -				info.major+'.'+info.minor+'.'+info.revision+', '+info.date.formatString('DD MMM YYYY') )
                                                                                                                                                                                                                                          -			break;
                                                                                                                                                                                                                                          -		default:
                                                                                                                                                                                                                                          -			wikify( info[datum], place )
                                                                                                                                                                                                                                          -			break;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Core Overrides
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -window.wikify_orig_TaskMacroPlugin = window.wikify
                                                                                                                                                                                                                                          -window.wikify = function(source,output,highlightRegExp,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	if ( tiddler && tiddler.text === source )
                                                                                                                                                                                                                                          -		addDisplayDependency( output, tiddler.title )
                                                                                                                                                                                                                                          -	wikify_orig_TaskMacroPlugin.apply( this, arguments )
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -config.refreshers_orig_TaskMacroPlugin = config.refreshers
                                                                                                                                                                                                                                          -config.refreshers = {
                                                                                                                                                                                                                                          -	link: function() {
                                                                                                                                                                                                                                          -		config.refreshers_orig_TaskMacroPlugin.link.apply( this, arguments )
                                                                                                                                                                                                                                          -		return true
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	content: function() {
                                                                                                                                                                                                                                          -		config.refreshers_orig_TaskMacroPlugin.content.apply( this, arguments )
                                                                                                                                                                                                                                          -		return true
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	fullContent: function( e, changeList ) {
                                                                                                                                                                                                                                          -		var tiddlers = e.refreshTiddlers
                                                                                                                                                                                                                                          -		if ( changeList == null || tiddlers == null )
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		for ( var i=0; i < tiddlers.length; ++i )
                                                                                                                                                                                                                                          -			if ( changeList.find(tiddlers[i]) != null ) {
                                                                                                                                                                                                                                          -				var title = tiddlers[0]
                                                                                                                                                                                                                                          -				story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -				return true
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		return false
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -function refreshElements(root,changeList)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var nodes = root.childNodes;
                                                                                                                                                                                                                                          -	for(var c=0; c<nodes.length; c++)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var e = nodes[c],type;
                                                                                                                                                                                                                                          -		if(e.getAttribute)
                                                                                                                                                                                                                                          -			type = e.getAttribute("refresh");
                                                                                                                                                                                                                                          -		else
                                                                                                                                                                                                                                          -			type = null;
                                                                                                                                                                                                                                          -		var refresher = config.refreshers[type];
                                                                                                                                                                                                                                          -		if ( ! refresher || ! refresher(e, changeList) )
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			if(e.hasChildNodes())
                                                                                                                                                                                                                                          -				refreshElements(e,changeList);
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Global Functions
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -// Add the tiddler whose title is given to the list of tiddlers whose
                                                                                                                                                                                                                                          -// changing will cause a refresh of the tiddler containing the given element.
                                                                                                                                                                                                                                          -function addDisplayDependency( element, title ) {
                                                                                                                                                                                                                                          -	while ( element && element.getAttribute ) {
                                                                                                                                                                                                                                          -		var idAttr = element.getAttribute("id"), tiddlerAttr = element.getAttribute("tiddler")
                                                                                                                                                                                                                                          -		if ( idAttr && tiddlerAttr && idAttr == story.idPrefix+tiddlerAttr ) {
                                                                                                                                                                                                                                          -			var list = element.refreshTiddlers
                                                                                                                                                                                                                                          -			if ( list == null ) {
                                                                                                                                                                                                                                          -				list = [tiddlerAttr]
                                                                                                                                                                                                                                          -				element.refreshTiddlers = list
                                                                                                                                                                                                                                          -				element.setAttribute( "refresh", "fullContent" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			list.pushUnique( title )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		element = element.parentNode
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Lifted from Story.prototype.focusTiddler: just return the field instead of focusing it.
                                                                                                                                                                                                                                          -Story.prototype.findEditField = function( title, field )
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var tiddler = document.getElementById(this.idPrefix + title);
                                                                                                                                                                                                                                          -	if(tiddler != null)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var children = tiddler.getElementsByTagName("*")
                                                                                                                                                                                                                                          -		var e = null;
                                                                                                                                                                                                                                          -		for (var t=0; t<children.length; t++)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			var c = children[t];
                                                                                                                                                                                                                                          -			if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")
                                                                                                                                                                                                                                          -				{
                                                                                                                                                                                                                                          -				if(!e)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				if(c.getAttribute("edit") == field)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		return e
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Wraps the given event function in another function that handles the
                                                                                                                                                                                                                                          -// event in a standard way.
                                                                                                                                                                                                                                          -function wrapEventHandler( otherHandler ) {
                                                                                                                                                                                                                                          -	return function(e) {
                                                                                                                                                                                                                                          -		if (!e) var e = window.event
                                                                                                                                                                                                                                          -		e.cancelBubble = true
                                                                                                                                                                                                                                          -		if (e.stopPropagation) e.stopPropagation()
                                                                                                                                                                                                                                          -		return otherHandler( e )
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Task Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<task orig cur spent>>description}}}
                                                                                                                                                                                                                                          -All of orig, cur, and spent are optional numbers of hours.  The description goes through the end of the line, and is wikified.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.task = {
                                                                                                                                                                                                                                          -	NASCENT:	0, // Task not yet estimated
                                                                                                                                                                                                                                          -	LIVE:		1, // Estimated but with time remaining
                                                                                                                                                                                                                                          -	DONE:		2, // Completed: no time remaining
                                                                                                                                                                                                                                          -	bullets:	["\u25cb", // nascent (open circle)
                                                                                                                                                                                                                                          -			 "\u25ba", // live (right arrow)
                                                                                                                                                                                                                                          -			 "\u25a0"],// done (black square)
                                                                                                                                                                                                                                          -	styles:		["nascent", "live", "done"],
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		spentTooBig:	"Spent time %0 can't exceed current estimate %1",
                                                                                                                                                                                                                                          -		noNegative:	"Times may not be negative numbers",
                                                                                                                                                                                                                                          -		statusTips:	["Not yet estimated", "To do", "Done"], // Array indexed by state (NASCENT/LIVE/DONE)
                                                                                                                                                                                                                                          -		descClickTip:	" -- Double-click to edit task description",
                                                                                                                                                                                                                                          -		statusClickTip:	" -- Double-click to mark task complete",
                                                                                                                                                                                                                                          -		statusDoneTip:	" -- Double-click to adjust the time spent, to revive the task",
                                                                                                                                                                                                                                          -		origTip:	"Original estimate in hours",
                                                                                                                                                                                                                                          -		curTip:		"Current estimate in hours",
                                                                                                                                                                                                                                          -		curTip2:	"Estimate in hours", // For when orig == cur
                                                                                                                                                                                                                                          -		clickTip:	" -- Click to adjust",
                                                                                                                                                                                                                                          -		spentTip:	"Hours spent on this task",
                                                                                                                                                                                                                                          -		remTip:		"Hours remaining",
                                                                                                                                                                                                                                          -		curPrompt:	"Estimate this task in hours, or adjust the current estimate by starting with + or -.\n\nYou may optionally also set or adjust the time spent by putting a second number after the first.",
                                                                                                                                                                                                                                          -		spentPrompt:	"Enter the number of hours you've spent on this task, or adjust the current number by starting with + or -.\n\nYou may optionally also set or adjust the time remaining by putting a second number after the first.",
                                                                                                                                                                                                                                          -		remPrompt:	"Enter the number of hours it will take to finish this task, or adjust the current estimate by starting with + or -.\n\nYou may optionally also set or adjust the time spent by putting a second number after the first.",
                                                                                                                                                                                                                                          -		numbersOnly:	"Enter numbers only, please",
                                                                                                                                                                                                                                          -		notCurrent:	"The tiddler has been modified since it was displayed, please redisplay it before doing this."
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var start = wikifier.matchStart, end = wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var origStr	= params.length > 0? params.shift() : "?"
                                                                                                                                                                                                                                          -		var orig	= +origStr // as a number
                                                                                                                                                                                                                                          -		var cur		= params.length > 1? +params.shift() : orig
                                                                                                                                                                                                                                          -		var spent	= params.length > 0? +params.shift() : 0
                                                                                                                                                                                                                                          -		if ( spent > cur )
                                                                                                                                                                                                                                          -			throw Error( this.lingo.spentTooBig.format([spent, cur]) )
                                                                                                                                                                                                                                          -		if ( orig < 0 || cur < 0 || spent < 0 )
                                                                                                                                                                                                                                          -			throw Error( this.lingo.noNegative )
                                                                                                                                                                                                                                          -		var rem		= cur - spent
                                                                                                                                                                                                                                          -		var state	= isNaN(orig+rem)? this.NASCENT : rem > 0? this.LIVE : this.DONE
                                                                                                                                                                                                                                          -		var table	= createTiddlyElement( place, "table", null, "task "+this.styles[state] )
                                                                                                                                                                                                                                          -		var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -		var row		= createTiddlyElement( tbody, "tr" )
                                                                                                                                                                                                                                          -		var statusCell	= createTiddlyElement( row,   "td", null, "status", this.bullets[state] )
                                                                                                                                                                                                                                          -		var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var origCell	= state==this.NASCENT || orig==cur? null
                                                                                                                                                                                                                                          -				: createTiddlyElement( row, "td", null, "numeric original" )
                                                                                                                                                                                                                                          -		var curCell	= createTiddlyElement( row, "td", null, "numeric current" )
                                                                                                                                                                                                                                          -		var spentCell	= createTiddlyElement( row, "td", null, "numeric spent" )
                                                                                                                                                                                                                                          -		var remCell	= createTiddlyElement( row, "td", null, "numeric remaining" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var sums = config.macros.tasksum.tasksums
                                                                                                                                                                                                                                          -		if ( sums && sums.length ) {
                                                                                                                                                                                                                                          -			var summary = [(state == this.NASCENT? NaN : orig), cur, spent]
                                                                                                                                                                                                                                          -			summary.owner = tiddler
                                                                                                                                                                                                                                          -			sums[0].push( summary )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// The description goes to the end of the line
                                                                                                                                                                                                                                          -		wikifier.subWikify( descCell, "$\\n?" )
                                                                                                                                                                                                                                          -		var descEnd = wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		statusCell.setAttribute( "title", this.lingo.statusTips[state] )
                                                                                                                                                                                                                                          -		descCell.setAttribute(   "title", this.lingo.statusTips[state]+this.lingo.descClickTip )
                                                                                                                                                                                                                                          -		if (origCell) {
                                                                                                                                                                                                                                          -			createTiddlyElement( origCell, "div", null, null, orig )
                                                                                                                                                                                                                                          -			origCell.setAttribute( "title", this.lingo.origTip )
                                                                                                                                                                                                                                          -			curCell.setAttribute( "title", this.lingo.curTip )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			curCell.setAttribute( "title", this.lingo.curTip2 )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		var curDivContents = (state==this.NASCENT)? "?" : cur
                                                                                                                                                                                                                                          -		var curDiv = createTiddlyElement( curCell, "div", null, null, curDivContents )
                                                                                                                                                                                                                                          -		spentCell.setAttribute( "title", this.lingo.spentTip )
                                                                                                                                                                                                                                          -		var spentDiv = createTiddlyElement( spentCell, "div", null, null, spent )
                                                                                                                                                                                                                                          -		remCell.setAttribute( "title", this.lingo.remTip )
                                                                                                                                                                                                                                          -		var remDiv = createTiddlyElement( remCell, "div", null, null, rem )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// Handle double-click on the description by going
                                                                                                                                                                                                                                          -		// into edit mode and selecting the description
                                                                                                                                                                                                                                          -		descCell.ondblclick = this.editDescription( tiddler, end, descEnd )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		function appTitle( el, suffix ) {
                                                                                                                                                                                                                                          -			el.setAttribute( "title", el.getAttribute("title")+suffix )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// For incomplete tasks, handle double-click on the bullet by marking the task complete
                                                                                                                                                                                                                                          -		if ( state != this.DONE ) {
                                                                                                                                                                                                                                          -			appTitle( statusCell, this.lingo.statusClickTip )
                                                                                                                                                                                                                                          -			statusCell.ondblclick = this.markTaskComplete( tiddler, start, end, macroName, orig, cur, state )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		// For complete ones, handle double-click on the bullet by letting you adjust the time spent
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			appTitle( statusCell, this.lingo.statusDoneTip )
                                                                                                                                                                                                                                          -			statusCell.ondblclick = this.adjustTimeSpent( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// Add click handlers for the numeric cells.
                                                                                                                                                                                                                                          -		if ( state != this.DONE ) {
                                                                                                                                                                                                                                          -			appTitle( curCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -			curDiv.className = "adjustable"
                                                                                                                                                                                                                                          -			curDiv.onclick = this.adjustCurrentEstimate( tiddler, start, end, macroName,
                                                                                                                                                                                                                                          -				orig, cur, spent, curDivContents )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		appTitle( spentCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -		spentDiv.className = "adjustable"
                                                                                                                                                                                                                                          -		spentDiv.onclick = this.adjustTimeSpent( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		if ( state == this.LIVE ) {
                                                                                                                                                                                                                                          -			appTitle( remCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -			remDiv.className = "adjustable"
                                                                                                                                                                                                                                          -			remDiv.onclick = this.adjustTimeRemaining( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Puts the tiddler into edit mode, and selects the range of characters
                                                                                                                                                                                                                                          -	// defined by start and end.  Separated for leak prevention in IE.
                                                                                                                                                                                                                                          -	editDescription: function( tiddler, start, end ) {
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			story.displayTiddler( null, tiddler.title, DEFAULT_EDIT_TEMPLATE )
                                                                                                                                                                                                                                          -			var tiddlerElement = document.getElementById( story.idPrefix + tiddler.title )
                                                                                                                                                                                                                                          -			window.scrollTo( 0, ensureVisible(tiddlerElement) )
                                                                                                                                                                                                                                          -			var element = story.findEditField( tiddler.title, "text" )
                                                                                                                                                                                                                                          -			if ( element && element.tagName.toLowerCase() == "textarea" ) {
                                                                                                                                                                                                                                          -				// Back up one char if the last char's a newline
                                                                                                                                                                                                                                          -				if ( tiddler.text[end-1] == '\n' )
                                                                                                                                                                                                                                          -					--end
                                                                                                                                                                                                                                          -				element.focus()
                                                                                                                                                                                                                                          -				if ( element.setSelectionRange != undefined ) { // Mozilla
                                                                                                                                                                                                                                          -					element.setSelectionRange( start, end )
                                                                                                                                                                                                                                          -					// Damn mozilla doesn't scroll to visible.  Approximate.
                                                                                                                                                                                                                                          -					var max = 0.0 + element.scrollHeight
                                                                                                                                                                                                                                          -					var len = element.textLength
                                                                                                                                                                                                                                          -					var top = max*start/len, bot = max*end/len
                                                                                                                                                                                                                                          -					element.scrollTop = Math.min( top, (bot+top-element.clientHeight)/2 )
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else if ( element.createTextRange != undefined ) { // IE
                                                                                                                                                                                                                                          -					var range = element.createTextRange()
                                                                                                                                                                                                                                          -					range.collapse()
                                                                                                                                                                                                                                          -					range.moveEnd("character", end)
                                                                                                                                                                                                                                          -					range.moveStart("character", start)
                                                                                                                                                                                                                                          -					range.select()
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else // Other? Too bad, just select the whole thing.
                                                                                                                                                                                                                                          -					element.select()
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else
                                                                                                                                                                                                                                          -				return true
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Modifies a task macro call such that the task appears complete.
                                                                                                                                                                                                                                          -	markTaskComplete: function( tiddler, start, end, macroName, orig, cur, state ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( state == macro.NASCENT )
                                                                                                                                                                                                                                          -				orig = cur = 0
                                                                                                                                                                                                                                          -			// The second "cur" in the call below bumps up the time spent
                                                                                                                                                                                                                                          -			// to match the current estimate.
                                                                                                                                                                                                                                          -			macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, cur )
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the current estimate, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustCurrentEstimate: function( tiddler, start, end, macroName, orig, cur, spent, curDivContents ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.curPrompt, curDivContents )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				cur = macro.offset( cur, a[0] )
                                                                                                                                                                                                                                          -				if ( a.length > 1 )
                                                                                                                                                                                                                                          -					spent = macro.offset( spent, a[1] )
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the time spent, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustTimeSpent: function( tiddler, start, end, macroName, orig, cur, spent ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.spentPrompt, spent )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				spent = macro.offset( spent, a[0] )
                                                                                                                                                                                                                                          -				var rem = cur - spent
                                                                                                                                                                                                                                          -				if ( a.length > 1 ) {
                                                                                                                                                                                                                                          -					rem = macro.offset( rem, a[1] )
                                                                                                                                                                                                                                          -					cur = spent + rem
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the time remaining, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustTimeRemaining: function( tiddler, start, end, macroName, orig, cur, spent ) {
                                                                                                                                                                                                                                          -		var macro = this
                                                                                                                                                                                                                                          -		var text  = tiddler.text
                                                                                                                                                                                                                                          -		var rem   = cur - spent
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.remPrompt, rem )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				var newRem = macro.offset( rem, a[0] )
                                                                                                                                                                                                                                          -				if ( newRem > rem || a.length > 1 )
                                                                                                                                                                                                                                          -					cur += (newRem - rem)
                                                                                                                                                                                                                                          -				else
                                                                                                                                                                                                                                          -					spent += (rem - newRem)
                                                                                                                                                                                                                                          -				if ( a.length > 1 )
                                                                                                                                                                                                                                          -					spent = macro.offset( spent, a[1] )
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Breaks input at spaces & commas, returns array
                                                                                                                                                                                                                                          -	breakInput: function( txt ) {
                                                                                                                                                                                                                                          -		var a = txt.trim().split( /[\s,]+/ )
                                                                                                                                                                                                                                          -		if ( a.length == 0 )
                                                                                                                                                                                                                                          -			a = [NaN]
                                                                                                                                                                                                                                          -		return a
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Adds to, subtracts from, or replaces a numeric value
                                                                                                                                                                                                                                          -	offset: function( num, txt ) {
                                                                                                                                                                                                                                          -		if ( txt == "" || typeof(txt) != "string" )
                                                                                                                                                                                                                                          -			return NaN
                                                                                                                                                                                                                                          -		if ( txt.match(/^[+-]/) )
                                                                                                                                                                                                                                          -			return num + (+txt)
                                                                                                                                                                                                                                          -		return +txt
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Does some error checking, then replaces the indicated macro
                                                                                                                                                                                                                                          -	// call within the text of the given tiddler.
                                                                                                                                                                                                                                          -	replaceMacroCall: function( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		if ( isNaN(cur+spent) ) {
                                                                                                                                                                                                                                          -			alert( this.lingo.numbersOnly )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if ( spent < 0 || cur < 0 ) {
                                                                                                                                                                                                                                          -			alert( this.lingo.noNegative )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if ( isNaN(orig) )
                                                                                                                                                                                                                                          -			orig = cur
                                                                                                                                                                                                                                          -		if ( spent > cur )
                                                                                                                                                                                                                                          -			cur = spent
                                                                                                                                                                                                                                          -		var text = tiddler.text.substring(0,start) + "<<" + macroName + " " +
                                                                                                                                                                                                                                          -			orig + " " + cur + " " + spent + ">>" + tiddler.text.substring(end)
                                                                                                                                                                                                                                          -		var title = tiddler.title
                                                                                                                                                                                                                                          -		store.saveTiddler( title, title, text, config.options.txtUserName, new Date(), undefined )
                                                                                                                                                                                                                                          -		//story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -		if ( config.options.chkAutoSave )
                                                                                                                                                                                                                                          -			saveChanges()
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Tasksum Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<tasksum "start" ["here" [intro]]>>}}}
                                                                                                                                                                                                                                          -or:
                                                                                                                                                                                                                                          -> {{{<<tasksum "end" [intro]>>}}}
                                                                                                                                                                                                                                          -Put one of the {{{<<tasksum start>>}}} lines before the tasks you want to summarize, and an {{{end}}} line after them.  By default, the summary goes at the end; if you include {{{here}}} in the start line, the summary will go at the top.  The intro argument, if supplied, replaces the default text introducing the summary.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.tasksum = {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		unrecVerb:	"<<%0>> requires 'start' or 'end' as its first argument",
                                                                                                                                                                                                                                          -		mustMatch:	"<<%0 end>> must match a preceding <<%0 start>>",
                                                                                                                                                                                                                                          -		defIntro:	"Task summary:",
                                                                                                                                                                                                                                          -		nascentSum:	"''%0 not estimated''",
                                                                                                                                                                                                                                          -		doneSum:	"%0 complete (in %1 hours)",
                                                                                                                                                                                                                                          -		liveSum:	"%0 ongoing (%1 hours so far, ''%2 hours remaining'')",
                                                                                                                                                                                                                                          -		overSum:	"Total overestimate: %0%.",
                                                                                                                                                                                                                                          -		underSum:	"Total underestimate: %0%.",
                                                                                                                                                                                                                                          -		descPattern:	"%0 %1. %2",
                                                                                                                                                                                                                                          -                origTip:	"Total original estimates in hours",
                                                                                                                                                                                                                                          -		curTip:		"Total current estimates in hours",
                                                                                                                                                                                                                                          -		spentTip:	"Total hours spent on tasks",
                                                                                                                                                                                                                                          -		remTip:		"Total hours remaining"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var sums = this.tasksums
                                                                                                                                                                                                                                          -		if ( params[0] == "start" ) {
                                                                                                                                                                                                                                          -			sums.unshift([])
                                                                                                                                                                                                                                          -			if ( params[1] == "here" ) {
                                                                                                                                                                                                                                          -				sums[0].intro = params[2] || this.lingo.defIntro
                                                                                                                                                                                                                                          -				sums[0].place = place
                                                                                                                                                                                                                                          -				sums[0].placement = place.childNodes.length
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else if ( params[0] == "end" ) {
                                                                                                                                                                                                                                          -			if ( ! sums.length )
                                                                                                                                                                                                                                          -				throw Error( this.lingo.mustMatch.format([macroName]) )
                                                                                                                                                                                                                                          -			var list = sums.shift()
                                                                                                                                                                                                                                          -			var intro = list.intro || params[1] || this.lingo.defIntro
                                                                                                                                                                                                                                          -			var nNascent=0, nLive=0, nDone=0, nMine=0
                                                                                                                                                                                                                                          -			var totLiveSpent=0, totDoneSpent=0
                                                                                                                                                                                                                                          -			var totOrig=0, totCur=0, totSpent=0
                                                                                                                                                                                                                                          -			for ( var i=0; i < list.length; ++i ) {
                                                                                                                                                                                                                                          -				var a = list[i]
                                                                                                                                                                                                                                          -				if ( a.length > 3 ) {
                                                                                                                                                                                                                                          -					nNascent 	+= a[0]
                                                                                                                                                                                                                                          -					nLive 		+= a[1]
                                                                                                                                                                                                                                          -					nDone 		+= a[2]
                                                                                                                                                                                                                                          -					totLiveSpent 	+= a[3]
                                                                                                                                                                                                                                          -					totDoneSpent 	+= a[4]
                                                                                                                                                                                                                                          -					totOrig 	+= a[5]
                                                                                                                                                                                                                                          -					totCur 		+= a[6]
                                                                                                                                                                                                                                          -					totSpent 	+= a[7]
                                                                                                                                                                                                                                          -					if ( a.owner == tiddler )
                                                                                                                                                                                                                                          -						nMine	+= a[8]
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else {
                                                                                                                                                                                                                                          -					if ( a.owner == tiddler )
                                                                                                                                                                                                                                          -						++nMine
                                                                                                                                                                                                                                          -					if ( isNaN(a[0]) ) {
                                                                                                                                                                                                                                          -						++nNascent
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -					else {
                                                                                                                                                                                                                                          -						if ( a[1] > a[2] ) {
                                                                                                                                                                                                                                          -							++nLive
                                                                                                                                                                                                                                          -							totLiveSpent += a[2]
                                                                                                                                                                                                                                          -						}
                                                                                                                                                                                                                                          -						else {
                                                                                                                                                                                                                                          -							++nDone
                                                                                                                                                                                                                                          -							totDoneSpent += a[2]
                                                                                                                                                                                                                                          -						}
                                                                                                                                                                                                                                          -						totOrig  += a[0]
                                                                                                                                                                                                                                          -						totCur   += a[1]
                                                                                                                                                                                                                                          -						totSpent += a[2]
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// If we're nested, push a summary outward
                                                                                                                                                                                                                                          -                        if ( sums.length ) {
                                                                                                                                                                                                                                          -				var summary = [nNascent, nLive, nDone, totLiveSpent, totDoneSpent,
                                                                                                                                                                                                                                          -						totOrig, totCur, totSpent, nMine]
                                                                                                                                                                                                                                          -				summary.owner = tiddler
                                                                                                                                                                                                                                          -				sums[0].push( summary )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var descs = [], styles = []
                                                                                                                                                                                                                                          -			if ( nNascent > 0 ) {
                                                                                                                                                                                                                                          -				descs.push( this.lingo.nascentSum.format([nNascent]) )
                                                                                                                                                                                                                                          -				styles.push( "nascent" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( nDone > 0 )
                                                                                                                                                                                                                                          -				descs.push( this.lingo.doneSum.format([nDone, totDoneSpent]) )
                                                                                                                                                                                                                                          -			if ( nLive > 0 ) {
                                                                                                                                                                                                                                          -				descs.push( this.lingo.liveSum.format([nLive, totLiveSpent, totCur-totSpent]) )
                                                                                                                                                                                                                                          -				styles.push( "live" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else
                                                                                                                                                                                                                                          -				styles.push( "done" )
                                                                                                                                                                                                                                          -			var off = ""
                                                                                                                                                                                                                                          -			if ( totOrig > totCur )
                                                                                                                                                                                                                                          -				off = this.lingo.overSum.format( [Math.round(100.0*(totOrig-totCur)/totCur)] )
                                                                                                                                                                                                                                          -			else if ( totCur > totOrig )
                                                                                                                                                                                                                                          -				off = this.lingo.underSum.format( [Math.round(100.0*(totCur-totOrig)/totOrig)] )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var top		= (list.intro != undefined)
                                                                                                                                                                                                                                          -			var table	= createTiddlyElement( null, "table", null, "tasksum "+(top?"top":"bottom") )
                                                                                                                                                                                                                                          -			var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -			var row		= createTiddlyElement( tbody, "tr", null, styles.join(" ") )
                                                                                                                                                                                                                                          -			var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var description = this.lingo.descPattern.format( [intro, descs.join(", "), off] )
                                                                                                                                                                                                                                          -			wikify( description, descCell, null, tiddler )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var origCell	= totOrig == totCur? null
                                                                                                                                                                                                                                          -					: createTiddlyElement( row, "td", null, "numeric original", totOrig )
                                                                                                                                                                                                                                          -			var curCell	= createTiddlyElement( row, "td", null, "numeric current", totCur )
                                                                                                                                                                                                                                          -			var spentCell	= createTiddlyElement( row, "td", null, "numeric spent", totSpent )
                                                                                                                                                                                                                                          -			var remCell	= createTiddlyElement( row, "td", null, "numeric remaining", totCur-totSpent )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			if ( origCell )
                                                                                                                                                                                                                                          -				origCell.setAttribute( "title", this.lingo.origTip )
                                                                                                                                                                                                                                          -			curCell  .setAttribute( "title", this.lingo.curTip )
                                                                                                                                                                                                                                          -			spentCell.setAttribute( "title", this.lingo.spentTip )
                                                                                                                                                                                                                                          -			remCell  .setAttribute( "title", this.lingo.remTip )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// Discard the table if there are no tasks
                                                                                                                                                                                                                                          -			if ( list.length > 0 ) {
                                                                                                                                                                                                                                          -				var place = top? list.place : place
                                                                                                                                                                                                                                          -				var placement = top? list.placement : place.childNodes.length
                                                                                                                                                                                                                                          -				if ( placement >= place.childNodes.length )
                                                                                                                                                                                                                                          -					place.appendChild( table )
                                                                                                                                                                                                                                          -				else
                                                                                                                                                                                                                                          -					place.insertBefore( table, place.childNodes[placement] )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else
                                                                                                                                                                                                                                          -			throw Error( this.lingo.unrecVerb.format([macroName]) )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// If we're wikifying, and are followed by end-of-line, swallow the newline.
                                                                                                                                                                                                                                          -		if ( wikifier && wikifier.source.charAt(wikifier.nextMatch) == "\n" )
                                                                                                                                                                                                                                          -			++wikifier.nextMatch
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// This is the stack of pending summaries
                                                                                                                                                                                                                                          -	tasksums: []
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Taskadder Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<taskadder ["above"|"below"|"focus"|"nofocus"]...>>}}}
                                                                                                                                                                                                                                          -Creates a line with text entry fields for a description and an estimate.  By default, puts focus in the description field and adds tasks above the entry fields.  Use {{{nofocus}}} to not put focus in the description field.  Use {{{below}}} to add tasks below the entry fields.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.taskadder = {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		unrecParam:	"<<%0>> doesn't recognize '%1' as a parameter",
                                                                                                                                                                                                                                          -		descTip:	"Describe a new task",
                                                                                                                                                                                                                                          -		curTip:		"Estimate how long in hours the task will take",
                                                                                                                                                                                                                                          -		buttonText:	"add task",
                                                                                                                                                                                                                                          -		buttonTip:	"Add a new task with the description and estimate as entered",
                                                                                                                                                                                                                                          -		notCurrent:	"The tiddler has been modified since it was displayed, please redisplay it before adding a task this way.",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		eol:		"eol"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var above = true
                                                                                                                                                                                                                                          -		var focus = false
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		while ( params.length > 0 ) {
                                                                                                                                                                                                                                          -			var p = params.shift()
                                                                                                                                                                                                                                          -			switch (p) {
                                                                                                                                                                                                                                          -			case "above": 	above = true;  break
                                                                                                                                                                                                                                          -			case "below": 	above = false; break
                                                                                                                                                                                                                                          -			case "focus": 	focus = true;  break
                                                                                                                                                                                                                                          -			case "nofocus":	focus = false; break
                                                                                                                                                                                                                                          -			default:	throw Error( this.lingo.unrecParam.format([macroName, p]) )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// If we're followed by end-of-line, swallow the newline.
                                                                                                                                                                                                                                          -		if ( wikifier.source.charAt(wikifier.nextMatch) == "\n" )
                                                                                                                                                                                                                                          -			++wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var where	= above? wikifier.matchStart : wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var table	= createTiddlyElement( place, "table", null, "task" )
                                                                                                                                                                                                                                          -		var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -		var row		= createTiddlyElement( tbody, "tr" )
                                                                                                                                                                                                                                          -		var statusCell	= createTiddlyElement( row,   "td", null, "status" )
                                                                                                                                                                                                                                          -		var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -		var curCell	= createTiddlyElement( row,   "td", null, "numeric" )
                                                                                                                                                                                                                                          -		var addCell	= createTiddlyElement( row,   "td", null, "addtask" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var descId	= this.generateId()
                                                                                                                                                                                                                                          -		var curId	= this.generateId()
                                                                                                                                                                                                                                          -		var descInput	= createTiddlyElement( descCell, "input", descId )
                                                                                                                                                                                                                                          -		var curInput	= createTiddlyElement( curCell,  "input", curId  )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		descInput.setAttribute( "type", "text" )
                                                                                                                                                                                                                                          -		curInput .setAttribute( "type", "text" )
                                                                                                                                                                                                                                          -		descInput.setAttribute( "size", "40")
                                                                                                                                                                                                                                          -		curInput .setAttribute( "size", "6" )
                                                                                                                                                                                                                                          -		descInput.setAttribute( "autocomplete", "off" );
                                                                                                                                                                                                                                          -		curInput .setAttribute( "autocomplete", "off" );
                                                                                                                                                                                                                                          -		descInput.setAttribute( "title", this.lingo.descTip );
                                                                                                                                                                                                                                          -		curInput .setAttribute( "title", this.lingo.curTip  );
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var addAction	= this.addTask( tiddler, where, descId, curId, above )
                                                                                                                                                                                                                                          -		var addButton	= createTiddlyButton( addCell, this.lingo.buttonText, this.lingo.buttonTip, addAction )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		descInput.onkeypress = this.handleEnter(addAction)
                                                                                                                                                                                                                                          -		curInput .onkeypress = descInput.onkeypress
                                                                                                                                                                                                                                          -		addButton.onkeypress = this.handleSpace(addAction)
                                                                                                                                                                                                                                          -		if ( focus || tiddler.taskadderLocation == where ) {
                                                                                                                                                                                                                                          -			descInput.focus()
                                                                                                                                                                                                                                          -			descInput.select()
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns a function that inserts a new task macro into the tiddler.
                                                                                                                                                                                                                                          -	addTask: function( tiddler, where, descId, curId, above ) {
                                                                                                                                                                                                                                          -		var macro = this, oldText = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( oldText !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var desc	= document.getElementById(descId).value
                                                                                                                                                                                                                                          -			var cur		= document.getElementById(curId) .value
                                                                                                                                                                                                                                          -			var init	= tiddler.text.substring(0,where) + "<<task " + cur + ">> " + desc + "\n"
                                                                                                                                                                                                                                          -			var text	= init + tiddler.text.substring(where)
                                                                                                                                                                                                                                          -			var title	= tiddler.title
                                                                                                                                                                                                                                          -			tiddler.taskadderLocation = (above? init.length : where)
                                                                                                                                                                                                                                          -			try {
                                                                                                                                                                                                                                          -				store.saveTiddler( title, title, text, config.options.txtUserName, new Date(), undefined )
                                                                                                                                                                                                                                          -				//story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			finally {
                                                                                                                                                                                                                                          -				delete tiddler.taskadderLocation
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( config.options.chkAutoSave )
                                                                                                                                                                                                                                          -				saveChanges()
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that delegates to two other functions: "matches" to decide
                                                                                                                                                                                                                                          -	// whether to consume the event, and "addTask" to actually perform the work.
                                                                                                                                                                                                                                          -	handleGeneric: function( addTask, matches ) {
                                                                                                                                                                                                                                          -		return function(e) {
                                                                                                                                                                                                                                          -			if (!e) var e = window.event
                                                                                                                                                                                                                                          -			var consume = false
                                                                                                                                                                                                                                          -			if ( matches(e) ) {
                                                                                                                                                                                                                                          -				consume = true
                                                                                                                                                                                                                                          -				addTask( e )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			e.cancelBubble = consume;
                                                                                                                                                                                                                                          -			if ( consume && e.stopPropagation ) e.stopPropagation();
                                                                                                                                                                                                                                          -			return !consume;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that handles enter keys by calling another event handler
                                                                                                                                                                                                                                          -	handleEnter: function( addTask ) {
                                                                                                                                                                                                                                          -		return this.handleGeneric( addTask, function(e){return e.keyCode == 13 || e.keyCode == 10} ) // Different codes for Enter
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that handles the space key by calling another event handler
                                                                                                                                                                                                                                          -	handleSpace: function( addTask ) {
                                                                                                                                                                                                                                          -		return this.handleGeneric( addTask, function(e){return (e.charCode||e.keyCode) == 32} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	counter: 0,
                                                                                                                                                                                                                                          -	generateId: function() {
                                                                                                                                                                                                                                          -		return "taskadder:" + String(this.counter++)
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Stylesheet
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var stylesheet = '\
                                                                                                                                                                                                                                          -.viewer table.task, table.tasksum {\
                                                                                                                                                                                                                                          -	width: 100%;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -	border-collapse: collapse;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task {\
                                                                                                                                                                                                                                          -	border: none;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum, .viewer table.tasksum {\
                                                                                                                                                                                                                                          -	border: solid 2px #999;\
                                                                                                                                                                                                                                          -	margin: 3px 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td {\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -	border: 1px solid #ddd;\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	vertical-align: middle;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task tr {\
                                                                                                                                                                                                                                          -	border: none;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task td {\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -	vertical-align: baseline;\
                                                                                                                                                                                                                                          -	border: 1px solid #fff;\
                                                                                                                                                                                                                                          -	background-color: inherit;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -td.numeric {\
                                                                                                                                                                                                                                          -	width: 3em;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.numeric div {\
                                                                                                                                                                                                                                          -	border: 1px solid #ddd;\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	margin: 1px 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.original div {\
                                                                                                                                                                                                                                          -	background-color: #fdd;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td.original {\
                                                                                                                                                                                                                                          -	background-color: #fdd;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td.description {\
                                                                                                                                                                                                                                          -	background-color: #e8e8e8;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.status {\
                                                                                                                                                                                                                                          -	width: 1.5em;\
                                                                                                                                                                                                                                          -	cursor: default;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.description, table.tasksum td.description {\
                                                                                                                                                                                                                                          -	width: auto;\
                                                                                                                                                                                                                                          -	text-align: left;\
                                                                                                                                                                                                                                          -	padding: 0 3px;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.status,table.task.done td.description {\
                                                                                                                                                                                                                                          -	color: #ccc;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.current, table.task.done td.remaining {\
                                                                                                                                                                                                                                          -	visibility: hidden;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.spent div, table.tasksum tr.done td.current,\
                                                                                                                                                                                                                                          -table.tasksum tr.done td.spent, table.tasksum tr.done td.remaining {\
                                                                                                                                                                                                                                          -	background-color: #eee;\
                                                                                                                                                                                                                                          -	color: #aaa;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.description {\
                                                                                                                                                                                                                                          -	color: #844;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.current div, table.tasksum tr.nascent td.numeric.current {\
                                                                                                                                                                                                                                          -	font-weight: bold;\
                                                                                                                                                                                                                                          -	color: #c00;\
                                                                                                                                                                                                                                          -	background-color: #def;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.spent, table.task.nascent td.remaining {\
                                                                                                                                                                                                                                          -	visibility: hidden;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -td.remaining {\
                                                                                                                                                                                                                                          -	font-weight: bold;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.adjustable {\
                                                                                                                                                                                                                                          -	cursor: pointer; \
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task input {\
                                                                                                                                                                                                                                          -	display: block;\
                                                                                                                                                                                                                                          -	width: 100%;\
                                                                                                                                                                                                                                          -	font: inherit;\
                                                                                                                                                                                                                                          -	margin: 2px 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -	border: 1px inset #999;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.numeric input {\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.addtask {\
                                                                                                                                                                                                                                          -	width: 6em;\
                                                                                                                                                                                                                                          -	border-left: 2px solid white;\
                                                                                                                                                                                                                                          -	vertical-align: middle;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -'
                                                                                                                                                                                                                                          -setStylesheet( stylesheet, "TaskMacroPluginStylesheet" )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          !!Changes in 1.1.0
                                                                                                                                                                                                                                          -* Made the macros work in nested tiddlers (ie when one tiddler includes another using {{{<<tiddler>>}}} or something similar):
                                                                                                                                                                                                                                          -** Task summaries in the outer tiddler include the tasks from the inner one
                                                                                                                                                                                                                                          -** Using the editing shortcuts on the tasks as displayed in the outer tiddler correctly changes the inner tiddler and also redisplays the outer one
                                                                                                                                                                                                                                          -** Added sanity checks to the editing shortcuts so they will refuse to work if the tiddler has been modified behind their backs
                                                                                                                                                                                                                                          -* Made some small usability fixes:
                                                                                                                                                                                                                                          -** The "add task" button now responds to the Space key (hat tip: Daniel Baird)
                                                                                                                                                                                                                                          -** Double-clicking on a completed task's bullet now does the same thing as clicking on the elapsed time: it lets you adjust the time spent, giving you the option of resurrecting the task (hat tip: ~JackF)
                                                                                                                                                                                                                                          -** Reworked the focus handling of the taskadder macro so it works more intuitively, by refocusing on the same adder you just used
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The task macro provided by the TaskMacroPlugin is for planning, estimating, and tracking detailed tasks such as those required for writing software.  It is inspired by [[Joel Spolsky|http://www.joelonsoftware.com/articles/fog0000000245.html]]'s method for scheduling software development, also popularized by [[Voo2do|http://voo2do.com]] and [[XPlanner|http://xplanner.org]].
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -For changes since the previous version, see the TaskMacroReleaseNotes.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This tutorial leads you through the use of the task macro itself, and supporting macros that summarize lists of tasks and simplify the adding of tasks to a list.  Follow along by clicking the links below.  Or click the little down-arrow next to this tiddler's title, above, and choose "Open all" to have all the tutorial sections displayed at once.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!---
                                                                                                                                                                                                                                          -Includes portions of [[TagglyTaggingViewTemplate|http://simonbaird.com/mptw/#TagglyTaggingViewTemplate]], v1.2 (16-Jan-2006).
                                                                                                                                                                                                                                          -Also adds a pair of tasksum macros around the tiddler, to summarize any contained tasks at the top.  Removes the "-" in front of closeTiddler, which can easily bite you if you have a focusable element in a tiddler, such as a taskadder entry field.
                                                                                                                                                                                                                                          -Portions written by Luke Blanshard are hereby released into the public domain.
                                                                                                                                                                                                                                          ---->
                                                                                                                                                                                                                                          -<!--{{{-->
                                                                                                                                                                                                                                          -<div class="toolbar" macro="toolbar closeTiddler closeOthers +editTiddler permalink references jump newHere"></div>
                                                                                                                                                                                                                                          -<div class="tagglyTagged" macro="tags"></div>
                                                                                                                                                                                                                                          -<div><span class="title" macro="view title"></span><span class="miniTag" macro="miniTag"></span></div>
                                                                                                                                                                                                                                          -<div macro="tasksum start here"></div>
                                                                                                                                                                                                                                          -<div class="viewer" macro="view text wikified"></div>
                                                                                                                                                                                                                                          -<div macro="tasksum end"></div>
                                                                                                                                                                                                                                          -<div class="tagglyTagging" macro="tagglyListWithSort"></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -''TextAreaPlugin for TiddlyWiki version 2.0''
                                                                                                                                                                                                                                          -^^author: Eric Shulman - ELS Design Studios
                                                                                                                                                                                                                                          -source: http://www.elsdesign.com/tiddlywiki/#TextAreaPlugin
                                                                                                                                                                                                                                          -license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This plugin 'hijacks' the TW core function, ''Story.prototype.focusTiddler()'', so it can add special 'keyDown' handlers to adjust several behaviors associated with the textarea control used in the tiddler editor.  Specifically, it:
                                                                                                                                                                                                                                          -* Adds text search INSIDE of edit fields.^^
                                                                                                                                                                                                                                          -Use ~CTRL-F for "Find" (prompts for search text), and ~CTRL-G for "Find Next" (uses previous search text)^^
                                                                                                                                                                                                                                          -* Enables TAB characters to be entered into field content^^
                                                                                                                                                                                                                                          -(instead of moving to next field)^^
                                                                                                                                                                                                                                          -* Option to set cursor at top of edit field instead of auto-selecting contents^^
                                                                                                                                                                                                                                          -(see configuration section for checkbox)^^
                                                                                                                                                                                                                                          -!!!!!Configuration
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content
                                                                                                                                                                                                                                          -<<option chkTextAreaExtensions>> add control-f (find), control-g (find again) and allow TABs as input in textarea
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''TextAreaPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.01.22 [1.0.1]''
                                                                                                                                                                                                                                          -only add extra key processing for TEXTAREA elements (not other edit fields).
                                                                                                                                                                                                                                          -added option to enable/disable textarea keydown extensions (default is "standard keys" only)
                                                                                                                                                                                                                                          -''2006.01.22 [1.0.0]''
                                                                                                                                                                                                                                          -Moved from temporary "System Tweaks" tiddler into 'real' TextAreaPlugin tiddler.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.textAreaPlugin= {major: 1, minor: 0, revision: 1, date: new Date(2006,1,23)};
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -if (!config.options.chkDisableAutoSelect) config.options.chkDisableAutoSelect=false; // default to standard action
                                                                                                                                                                                                                                          -if (!config.options.chkTextAreaExtensions) config.options.chkTextAreaExtensions=false; // default to standard action
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Focus a specified tiddler. Attempts to focus the specified field, otherwise the first edit field it finds
                                                                                                                                                                                                                                          -Story.prototype.focusTiddler = function(title,field)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var tiddler = document.getElementById(this.idPrefix + title);
                                                                                                                                                                                                                                          -	if(tiddler != null)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var children = tiddler.getElementsByTagName("*")
                                                                                                                                                                                                                                          -		var e = null;
                                                                                                                                                                                                                                          -		for (var t=0; t<children.length; t++)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			var c = children[t];
                                                                                                                                                                                                                                          -			if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")
                                                                                                                                                                                                                                          -				{
                                                                                                                                                                                                                                          -				if(!e)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				if(c.getAttribute("edit") == field)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		if(e)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			e.focus();
                                                                                                                                                                                                                                          -			e.select(); // select entire contents
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// TWEAK: add TAB and "find" key handlers
                                                                                                                                                                                                                                          -			if (config.options.chkTextAreaExtensions) // add extra key handlers
                                                                                                                                                                                                                                          -				addKeyDownHandlers(e);
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// TWEAK: option to NOT autoselect contents
                                                                                                                                                                                                                                          -			if (config.options.chkDisableAutoSelect) // set cursor to start of field content
                                                                                                                                                                                                                                          -				if (e.setSelectionRange) e.setSelectionRange(0,0); // for FF
                                                                                                                                                                                                                                          -				else if (e.createTextRange) { var r=e.createTextRange(); r.collapse(true); r.select(); } // for IE
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -function addKeyDownHandlers(e)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	// exit if not textarea or element doesn't allow selections
                                                                                                                                                                                                                                          -	if (e.tagName.toLowerCase()!="textarea" || !e.setSelectionRange) return;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// utility function: exits keydown handler and prevents browser from processing the keystroke
                                                                                                                                                                                                                                          -	var processed=function(ev) { ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false; }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// capture keypress in edit field
                                                                                                                                                                                                                                          -	e.onkeydown = function(ev) { if (!ev) var ev=window.event;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// process TAB
                                                                                                                                                                                                                                          -		if (!ev.shiftKey && ev.keyCode==9) { 
                                                                                                                                                                                                                                          -			// replace current selection with a TAB character
                                                                                                                                                                                                                                          -			var start=e.selectionStart; var end=e.selectionEnd;
                                                                                                                                                                                                                                          -			e.value=e.value.substr(0,start)+String.fromCharCode(9)+e.value.substr(end);
                                                                                                                                                                                                                                          -			// update insertion point, scroll it into view
                                                                                                                                                                                                                                          -			e.setSelectionRange(start+1,start+1);
                                                                                                                                                                                                                                          -			var linecount=e.value.split('\n').length;
                                                                                                                                                                                                                                          -			var thisline=e.value.substr(0,e.selectionStart).split('\n').length-1;
                                                                                                                                                                                                                                          -			e.scrollTop=Math.floor((thisline-e.rows/2)*e.scrollHeight/linecount);
                                                                                                                                                                                                                                          -			return processed(ev);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// process CTRL-F (find matching text) or CTRL-G (find next match)
                                                                                                                                                                                                                                          -		if (ev.ctrlKey && (ev.keyCode==70||ev.keyCode==71)) {
                                                                                                                                                                                                                                          -			// if ctrl-f or no previous search, prompt for search text (default to previous text or current selection)... if no search text, exit
                                                                                                                                                                                                                                          -			if (ev.keyCode==70||!e.find||!e.find.length)
                                                                                                                                                                                                                                          -				{ var f=prompt("find:",e.find?e.find:e.value.substring(e.selectionStart,e.selectionEnd)); e.focus(); e.find=f?f:e.find; }
                                                                                                                                                                                                                                          -			if (!e.find||!e.find.length) return processed(ev);
                                                                                                                                                                                                                                          -			// do case-insensitive match with 'wraparound'...  if not found, alert and exit 
                                                                                                                                                                                                                                          -			var newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase(),e.selectionStart+1);
                                                                                                                                                                                                                                          -			if (newstart==-1) newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase());
                                                                                                                                                                                                                                          -			if (newstart==-1) { alert("'"+e.find+"' not found"); e.focus(); return processed(ev); }
                                                                                                                                                                                                                                          -			// set new selection, scroll it into view, and report line position in status bar
                                                                                                                                                                                                                                          -			e.setSelectionRange(newstart,newstart+e.find.length);
                                                                                                                                                                                                                                          -			var linecount=e.value.split('\n').length;
                                                                                                                                                                                                                                          -			var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
                                                                                                                                                                                                                                          -			e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
                                                                                                                                                                                                                                          -			window.status="line: "+thisline+"/"+linecount;
                                                                                                                                                                                                                                          -			return processed(ev);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - - - - - - - - - - diff --git a/wiki/empty.html b/wiki/empty.html deleted file mode 100644 index f8bae5811..000000000 --- a/wiki/empty.html +++ /dev/null @@ -1,11509 +0,0 @@ - - - - - - - - - - - -
                                                                                                                                                                                                                                          My TiddlyWiki is loading ...

                                                                                                                                                                                                                                          Requires Javascript.
                                                                                                                                                                                                                                          - - My TiddlyWiki - a reusable non-linear personal web notebook - - - - - - - - - - - -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Background: #fff
                                                                                                                                                                                                                                          -Foreground: #000
                                                                                                                                                                                                                                          -PrimaryPale: #8cf
                                                                                                                                                                                                                                          -PrimaryLight: #18f
                                                                                                                                                                                                                                          -PrimaryMid: #04b
                                                                                                                                                                                                                                          -PrimaryDark: #014
                                                                                                                                                                                                                                          -SecondaryPale: #ffc
                                                                                                                                                                                                                                          -SecondaryLight: #fe8
                                                                                                                                                                                                                                          -SecondaryMid: #db4
                                                                                                                                                                                                                                          -SecondaryDark: #841
                                                                                                                                                                                                                                          -TertiaryPale: #eee
                                                                                                                                                                                                                                          -TertiaryLight: #ccc
                                                                                                                                                                                                                                          -TertiaryMid: #999
                                                                                                                                                                                                                                          -TertiaryDark: #666
                                                                                                                                                                                                                                          -Error: #f88
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -a {color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -a img {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
                                                                                                                                                                                                                                          -h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.header {background:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.headerShadow {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.headerForeground {color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tabSelected{color:[[ColorPalette::PrimaryDark]];
                                                                                                                                                                                                                                          -	background:[[ColorPalette::TertiaryPale]];
                                                                                                                                                                                                                                          -	border-left:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -	border-top:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -	border-right:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.tabContents .button {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebar {}
                                                                                                                                                                                                                                          -#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
                                                                                                                                                                                                                                          -.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
                                                                                                                                                                                                                                          -.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
                                                                                                                                                                                                                                          -	border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.wizardStep.wizardStepDone {background::[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
                                                                                                                                                                                                                                          -	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
                                                                                                                                                                                                                                          -	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
                                                                                                                                                                                                                                          -.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler .defaultCommand {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.shadow .title {color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.title {color:[[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -.subtitle {color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.toolbar {color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.toolbar a {color:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
                                                                                                                                                                                                                                          -.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -.tagging .button, .tagged .button {border:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.footer {color:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.selected .footer {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
                                                                                                                                                                                                                                          -.sparktick {background:[[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
                                                                                                                                                                                                                                          -.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.lowlight {background:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.imageLink, #displayArea .imageLink {background:transparent;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer .listTitle {list-style-type:none; margin-left:-2em;}
                                                                                                                                                                                                                                          -.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.viewer code {color:[[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
                                                                                                                                                                                                                                          -.editorFooter {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
                                                                                                                                                                                                                                          -#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -* html .tiddler {height:1%;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
                                                                                                                                                                                                                                          -h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
                                                                                                                                                                                                                                          -h4,h5,h6 {margin-top:1em;}
                                                                                                                                                                                                                                          -h1 {font-size:1.35em;}
                                                                                                                                                                                                                                          -h2 {font-size:1.25em;}
                                                                                                                                                                                                                                          -h3 {font-size:1.1em;}
                                                                                                                                                                                                                                          -h4 {font-size:1em;}
                                                                                                                                                                                                                                          -h5 {font-size:.9em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -hr {height:1px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -a {text-decoration:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dt {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -ol ol {list-style-type:lower-alpha;}
                                                                                                                                                                                                                                          -ol ol ol {list-style-type:lower-roman;}
                                                                                                                                                                                                                                          -ol ol ol ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -ol ol ol ol ol {list-style-type:lower-alpha;}
                                                                                                                                                                                                                                          -ol ol ol ol ol ol {list-style-type:lower-roman;}
                                                                                                                                                                                                                                          -ol ol ol ol ol ol ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.txtOptionInput {width:11em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#contentWrapper .chkOptionInput {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.externalLink {text-decoration:underline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.indent {margin-left:3em;}
                                                                                                                                                                                                                                          -.outdent {margin-left:3em; text-indent:-3em;}
                                                                                                                                                                                                                                          -code.escaped {white-space:nowrap;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddlyLinkExisting {font-weight:bold;}
                                                                                                                                                                                                                                          -.tiddlyLinkNonExisting {font-style:italic;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
                                                                                                                                                                                                                                          -a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#mainMenu .tiddlyLinkExisting,
                                                                                                                                                                                                                                          -	#mainMenu .tiddlyLinkNonExisting,
                                                                                                                                                                                                                                          -	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
                                                                                                                                                                                                                                          -#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.header {position:relative;}
                                                                                                                                                                                                                                          -.header a:hover {background:transparent;}
                                                                                                                                                                                                                                          -.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
                                                                                                                                                                                                                                          -.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.siteTitle {font-size:3em;}
                                                                                                                                                                                                                                          -.siteSubtitle {font-size:1.2em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
                                                                                                                                                                                                                                          -#sidebarOptions {padding-top:0.3em;}
                                                                                                                                                                                                                                          -#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
                                                                                                                                                                                                                                          -#sidebarOptions input {margin:0.4em 0.5em;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
                                                                                                                                                                                                                                          -#sidebarTabs .tabContents {width:15em; overflow:hidden;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.wizard {padding:0.1em 1em 0em 2em;}
                                                                                                                                                                                                                                          -.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
                                                                                                                                                                                                                                          -.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
                                                                                                                                                                                                                                          -.wizardStep {padding:1em 1em 1em 1em;}
                                                                                                                                                                                                                                          -.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
                                                                                                                                                                                                                                          -.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
                                                                                                                                                                                                                                          -.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
                                                                                                                                                                                                                                          -.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
                                                                                                                                                                                                                                          -.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
                                                                                                                                                                                                                                          -#messageArea a {text-decoration:underline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
                                                                                                                                                                                                                                          -.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
                                                                                                                                                                                                                                          -.popup .popupMessage {padding:0.4em;}
                                                                                                                                                                                                                                          -.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
                                                                                                                                                                                                                                          -.popup li.disabled {padding:0.4em;}
                                                                                                                                                                                                                                          -.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
                                                                                                                                                                                                                                          -.listBreak {font-size:1px; line-height:1px;}
                                                                                                                                                                                                                                          -.listBreak div {margin:2px 0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tabset {padding:1em 0em 0em 0.5em;}
                                                                                                                                                                                                                                          -.tab {margin:0em 0em 0em 0.25em; padding:2px;}
                                                                                                                                                                                                                                          -.tabContents {padding:0.5em;}
                                                                                                                                                                                                                                          -.tabContents ul, .tabContents ol {margin:0; padding:0;}
                                                                                                                                                                                                                                          -.txtMainTab .tabContents li {list-style:none;}
                                                                                                                                                                                                                                          -.tabContents li.listLink { margin-left:.75em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#contentWrapper {display:block;}
                                                                                                                                                                                                                                          -#splashScreen {display:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#displayArea {margin:1em 17em 0em 14em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.toolbar {text-align:right; font-size:.9em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler {padding:1em 1em 0em 1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.missing .viewer,.missing .title {font-style:italic;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.title {font-size:1.6em; font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.missing .subtitle {display:none;}
                                                                                                                                                                                                                                          -.subtitle {font-size:1.1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler .button {padding:0.2em 0.4em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
                                                                                                                                                                                                                                          -.isTag .tagging {display:block;}
                                                                                                                                                                                                                                          -.tagged {margin:0.5em; float:right;}
                                                                                                                                                                                                                                          -.tagging, .tagged {font-size:0.9em; padding:0.25em;}
                                                                                                                                                                                                                                          -.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
                                                                                                                                                                                                                                          -.tagClear {clear:both;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.footer {font-size:.9em;}
                                                                                                                                                                                                                                          -.footer li {display:inline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.annotation {padding:0.5em; margin:0.5em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* html .viewer pre {width:99%; padding:0 0 1em 0;}
                                                                                                                                                                                                                                          -.viewer {line-height:1.4em; padding-top:0.5em;}
                                                                                                                                                                                                                                          -.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
                                                                                                                                                                                                                                          -.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
                                                                                                                                                                                                                                          -.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
                                                                                                                                                                                                                                          -.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
                                                                                                                                                                                                                                          -table.listView {font-size:0.85em; margin:0.8em 1.0em;}
                                                                                                                                                                                                                                          -table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
                                                                                                                                                                                                                                          -.viewer code {font-size:1.2em; line-height:1.4em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.editor {font-size:1.1em;}
                                                                                                                                                                                                                                          -.editor input, .editor textarea {display:block; width:100%; font:inherit;}
                                                                                                                                                                                                                                          -.editorFooter {padding:0.25em 0em; font-size:.9em;}
                                                                                                                                                                                                                                          -.editorFooter .button {padding-top:0px; padding-bottom:0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.sparkline {line-height:1em;}
                                                                                                                                                                                                                                          -.sparktick {outline:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
                                                                                                                                                                                                                                          -.zoomer div {padding:1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* html #backstage {width:99%;}
                                                                                                                                                                                                                                          -* html #backstageArea {width:99%;}
                                                                                                                                                                                                                                          -#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
                                                                                                                                                                                                                                          -#backstageToolbar {position:relative;}
                                                                                                                                                                                                                                          -#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
                                                                                                                                                                                                                                          -#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
                                                                                                                                                                                                                                          -#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
                                                                                                                                                                                                                                          -#backstage {position:relative; width:100%; z-index:50;}
                                                                                                                                                                                                                                          -#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
                                                                                                                                                                                                                                          -.backstagePanelFooter {padding-top:0.2em; float:right;}
                                                                                                                                                                                                                                          -.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
                                                                                                                                                                                                                                          -#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.whenBackstage {display:none;}
                                                                                                                                                                                                                                          -.backstageVisible .whenBackstage {display:block;}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -StyleSheet for use when a translation requires any css style changes.
                                                                                                                                                                                                                                          -This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which use a logographic writing system and need larger font sizes.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/*{{{*/
                                                                                                                                                                                                                                          -body {font-size:0.8em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebarOptions {font-size:1.05em;}
                                                                                                                                                                                                                                          -#sidebarOptions a {font-style:normal;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {font-size:0.95em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.subtitle {font-size:0.8em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table.listView {font-size:0.95em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -@media print {
                                                                                                                                                                                                                                          -#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton {display: none ! important;}
                                                                                                                                                                                                                                          -#displayArea {margin: 1em 1em 0em 1em;}
                                                                                                                                                                                                                                          -/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
                                                                                                                                                                                                                                          -noscript {display:none;}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
                                                                                                                                                                                                                                          -<div class='headerShadow'>
                                                                                                                                                                                                                                          -<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div class='headerForeground'>
                                                                                                                                                                                                                                          -<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
                                                                                                                                                                                                                                          -<div id='sidebar'>
                                                                                                                                                                                                                                          -<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
                                                                                                                                                                                                                                          -<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='displayArea'>
                                                                                                                                                                                                                                          -<div id='messageArea'></div>
                                                                                                                                                                                                                                          -<div id='tiddlerDisplay'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
                                                                                                                                                                                                                                          -<div class='title' macro='view title'></div>
                                                                                                                                                                                                                                          -<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
                                                                                                                                                                                                                                          -<div class='tagging' macro='tagging'></div>
                                                                                                                                                                                                                                          -<div class='tagged' macro='tags'></div>
                                                                                                                                                                                                                                          -<div class='viewer' macro='view text wikified'></div>
                                                                                                                                                                                                                                          -<div class='tagClear'></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
                                                                                                                                                                                                                                          -<div class='title' macro='view title'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit title'></div>
                                                                                                                                                                                                                                          -<div macro='annotations'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit text'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
                                                                                                                                                                                                                                          -* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
                                                                                                                                                                                                                                          -* MainMenu: The menu (usually on the left)
                                                                                                                                                                                                                                          -* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
                                                                                                                                                                                                                                          -You'll also need to enter your username for signing your edits: <<option txtUserName>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          These InterfaceOptions for customising TiddlyWiki are saved in your browser
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<<option txtUserName>>
                                                                                                                                                                                                                                          -<<option chkSaveBackups>> SaveBackups
                                                                                                                                                                                                                                          -<<option chkAutoSave>> AutoSave
                                                                                                                                                                                                                                          -<<option chkRegExpSearch>> RegExpSearch
                                                                                                                                                                                                                                          -<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
                                                                                                                                                                                                                                          -<<option chkAnimate>> EnableAnimations
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -Also see AdvancedOptions
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A task has a description, an estimate of how long it will take, and a record of how much time you have spent on it so far.  Here's an example, which shows a task estimated at 3 hours, with 1 hour spent on it, and ''2'' hours remaining:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 3 3 1>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you hover the mouse over any part of the task -- the bullet, the description, or any of the numeric cells -- a tip will appear explaining it.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Try modifying the time spent.  Suppose you've just spent one more hour and want to record it.  Just click on the second yellow cell, and enter "+1" (sans the quote marks, of course) in the popup window.  Watch the time remaining go down to 1 hour.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -In reality, I originally estimated this task at a half-hour, but it ended up taking 3.5 hours.  The macro also tracks your original estimate, if it is different from the current estimate, in a fourth cell like this:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 0.5 2 1>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can adjust the current estimate in the same way as you adjusted the time spent.  Click on the current estimate cell (the first yellow cell), and change it to 2.5 hours by typing "2.5" or "+.5".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You can also adjust the time remaining, which will modify either the estimate (if the time remaining increases) or the time spent (if it decreases).  Click on the time remaining and add an hour by typing "+1".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -When the time remaining goes to zero, the task is considered complete:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 0.5 3.5 3.5>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you haven't already done so, try double-clicking the description.  Yes, it really does open up the editor and select just the text of the description.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A task's description is a single wikified line, so it can contain any formatting that can be specified on one line:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 1>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 0.5>> Put tasksum on the ViewTemplate.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can specify just the description of a task, and leave it unestimated.  Click the question mark to enter the estimate:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -As this task implies, you can enter two values in the popup when you click on any of the time cells.  Separate them with spaces and/or a comma.  Experiment:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 1>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Finally, if you haven't already figured this out, you can double-click on a task's bullet to mark it complete, with the current estimate entered as the time spent.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          If you've been paying attention, you've noticed that I haven't discussed the actual adding of calls to the task macro within your tiddlers -- it's all been about modifying tasks that were already there.  That's because adding tasks via the taskadder macro is much easier and more intuitive than adding them by hand.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -And setting up a taskadder is simplicity itself.  Just add {{{<<taskadder>>}}} to your tiddler.  You will see this:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Just type a task description into the first field, and your initial estimate for how long it will take into the second field.  Click the "add task" button, or just hit Enter in either of the fields, to add the new task into the tiddler.  Notice that you can just start typing a new task as soon as you're done entering the first one.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You can have as many taskadders as you like in any tiddler.  The last one you used will capture the keyboard focus when it is redisplayed, meaning you can type a series of tasks without using the mouse.  Try adding some tasks here and in the above adder:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Notice that the one you just used takes focus when this tiddler is redisplayed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -A taskadder by default adds tasks above itself.  You can make it add them below by adding a {{{below}}} argument to the macro call:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder below>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          In this tutorial, we've been looking mostly at individual tasks.  In real life, though, you'll typically have a series of them, or even several series of them in the same tiddler.  In these cases you want a summary that tells you -- at a minimum -- how much time you still expect to spend on these tasks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To get such a summary, just add {{{<<tasksum start>>}}} before the tasks and {{{<<tasksum end>>}}} after them.  Here's an example:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 0.25 0.25 0.25>> Add tooltips to the various cells
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<task 1 3.5 2.5>> Add a double-click handler to the desc cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to allow entry of two values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to handle leading + or -
                                                                                                                                                                                                                                          -<<task 1 1 0>> Add a double-click handler to the status cell that functions like typing 0 into the rem cell
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you'd rather have the summary at the top, just add {{{here}}} to the start call, ie {{{<<tasksum start here>>}}}.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start here>>
                                                                                                                                                                                                                                          -<<task 0.25 0.25 0.25>> Add tooltips to the various cells
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can nest these things if you like, just be sure to match starts and ends:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start here>>
                                                                                                                                                                                                                                          -* Time cell manipulation:<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to allow entry of two values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to handle leading + or -
                                                                                                                                                                                                                                          -<<tasksum end "Cell manipulation:">>
                                                                                                                                                                                                                                          -<<br>>
                                                                                                                                                                                                                                          -* Double-click handling:<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 1 3.5 2.5>> Add a double-click handler to the desc cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<task 1 1 0>> Add a double-click handler to the status cell that functions like typing 0 into the rem cell
                                                                                                                                                                                                                                          -<<tasksum end "Double-clicks:">>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Finally, the simplest way to use tasksum is to add it to your view template.  See TaskSummaryViewTemplate for an example template.  Note that if no tasks are present between the start and end, nothing is displayed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The TaskMacroPlugin can be installed like any other TiddlyWiki plugin, and used without further effort.  However, there are two issues that may affect you.  (To get started with a brand new wiki that does not have these issues, consider downloading the [[empty LabWiki|empty_labwiki.html]].)
                                                                                                                                                                                                                                          -# The task macros don't play nicely with the default TiddlyWiki display of tags.  In the default view template, a tiddler's list of tags is shown in a little box that floats in the upper right corner of the tiddler.  However, this little box may interfere with the tables used by the task macros.  In Firefox, the tables are drawn right over the top of the tag box, rendering both of them illegible.  In Internet Explorer, the tag box forces the tables to be pushed down below the box, which can waste a lot of space.<<br>><<br>>Thus, I recommend changing your view template to eliminate the little box.  If you use Simon Baird's [[TagglyTagging|http://simonbaird.com/mptw/#TagglyTagging]] (as LabWiki does), then my TaskSummaryViewTemplate might be a good alternative.  Simply import it into your wiki and rename it to ViewTemplate.  This template also demonstrates how to incorporate the tasksum macro into every tiddler so any tiddler with tasks has a summary at the top.<<br>><<br>>
                                                                                                                                                                                                                                          -# Most view templates also add a minus sign ("-") before the "close" command.  TiddlyWiki interprets this to mean that you want the close command to be executed if you hit the Escape key from within the tiddler.<<br>><<br>>However, most tiddlers never have focus, and so never give you the opportunity to try it out.  But if you have a taskadder in your tiddler, then you suddenly enable this feature -- and you probably don't want it.  It means that if you type a nice long task description and then hit Escape, that description will be lost and the tiddler will be closed.  So I recommend that you remove the minus sign from the view template's menu altogether, as I have done in LabWiki's own ViewTemplate.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -This ends the tutorial.  To go back to any previous section, click the down-arrow and choose it: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          PageTemplate
                                                                                                                                                                                                                                          -|>|SiteTitle - SiteSubtitle|
                                                                                                                                                                                                                                          -|>|MainMenu|
                                                                                                                                                                                                                                          -|DefaultTiddlers<<br>><<br>><<br>>ViewTemplate<<br>><<br>>EditTemplate|SideBarOptions|
                                                                                                                                                                                                                                          -|~|OptionsPanel|
                                                                                                                                                                                                                                          -|~|SideBarTabs|
                                                                                                                                                                                                                                          -|~|AdvancedOptions|
                                                                                                                                                                                                                                          -|~|<<tiddler Configuration.SideBarTabs>>|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''StyleSheet:'' StyleSheetColors - StyleSheetLayout - StyleSheetPrint
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -ColorPalette
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -SiteUrl
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|BetterTimelineMacro|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#BetterTimelineMacro|
                                                                                                                                                                                                                                          -|Version|0.5 beta|
                                                                                                                                                                                                                                          -|Requires|~TW2.x|
                                                                                                                                                                                                                                          -!!!Description:
                                                                                                                                                                                                                                          -A replacement for the core timeline macro that offers more features:
                                                                                                                                                                                                                                          -*list tiddlers with only specfic tag
                                                                                                                                                                                                                                          -*exclude tiddlers with a particular tag
                                                                                                                                                                                                                                          -*limit entries to any number of days, for example one week
                                                                                                                                                                                                                                          -*specify a start date for the timeline, only tiddlers after that date will be listed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Installation:
                                                                                                                                                                                                                                          -Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
                                                                                                                                                                                                                                          -Edit the ViewTemplate to add the fullscreen command to the toolbar.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Syntax:
                                                                                                                                                                                                                                          -{{{<<timeline better:true>>}}}
                                                                                                                                                                                                                                          -''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -additonal params:
                                                                                                                                                                                                                                          -(use only the ones you want)
                                                                                                                                                                                                                                          -{{{<<timeline better:true  onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''explanation of syntax:''
                                                                                                                                                                                                                                          -onlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.
                                                                                                                                                                                                                                          -excludeTag: tiddlers with this tag will not be listed.
                                                                                                                                                                                                                                          -sortBy: sort tiddlers by date modified or date created. Possible values are modified or created.
                                                                                                                                                                                                                                          -firstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006
                                                                                                                                                                                                                                          -maxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.
                                                                                                                                                                                                                                          -maxEntries: limit the total number of entries in the timeline.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!History:
                                                                                                                                                                                                                                          -*28-07-06: ver 0.5 beta, first release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -// Return the tiddlers as a sorted array
                                                                                                                                                                                                                                          -TiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          var results = [];
                                                                                                                                                                                                                                          -          this.forEachTiddler(function(title,tiddler)
                                                                                                                                                                                                                                          -          {
                                                                                                                                                                                                                                          -          if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)
                                                                                                                                                                                                                                          -                        if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)
                                                                                                                                                                                                                                          -                                      results.push(tiddler);
                                                                                                                                                                                                                                          -          });
                                                                                                                                                                                                                                          -          if(field)
                                                                                                                                                                                                                                          -                   results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
                                                                                                                                                                                                                                          -          return results;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//this function by Udo
                                                                                                                                                                                                                                          -function getParam(params, name, defaultValue)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          if (!params)
                                                                                                                                                                                                                                          -          return defaultValue;
                                                                                                                                                                                                                                          -          var p = params[0][name];
                                                                                                                                                                                                                                          -          return p ? p[0] : defaultValue;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -window.old_timeline_handler= config.macros.timeline.handler;
                                                                                                                                                                                                                                          -config.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          var args = paramString.parseParams("list",null,true);
                                                                                                                                                                                                                                          -          var betterMode = getParam(args, "better", "false");
                                                                                                                                                                                                                                          -          if (betterMode == 'true')
                                                                                                                                                                                                                                          -          {
                                                                                                                                                                                                                                          -          var sortBy = getParam(args,"sortBy","modified");
                                                                                                                                                                                                                                          -          var excludeTag = getParam(args,"excludeTag",undefined);
                                                                                                                                                                                                                                          -          var includeTag = getParam(args,"onlyTag",undefined);
                                                                                                                                                                                                                                          -          var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);
                                                                                                                                                                                                                                          -          var firstDayParam = getParam(args,"firstDay",undefined);
                                                                                                                                                                                                                                          -          var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";
                                                                                                                                                                                                                                          -          var lastDay = "";
                                                                                                                                                                                                                                          -          var field= sortBy;
                                                                                                                                                                                                                                          -          var maxDaysParam = getParam(args,"maxDays",undefined);
                                                                                                                                                                                                                                          -          var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;
                                                                                                                                                                                                                                          -          var maxEntries = getParam(args,"maxEntries",undefined);
                                                                                                                                                                                                                                          -          var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;
                                                                                                                                                                                                                                          -          for(var t=tiddlers.length-1; t>=last; t--)
                                                                                                                                                                                                                                          -                  {
                                                                                                                                                                                                                                          -                  var tiddler = tiddlers[t];
                                                                                                                                                                                                                                          -                  var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
                                                                                                                                                                                                                                          -                  if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))
                                                                                                                                                                                                                                          -                     {
                                                                                                                                                                                                                                          -                     if(theDay != lastDay)
                                                                                                                                                                                                                                          -                               {
                                                                                                                                                                                                                                          -                               var theDateList = document.createElement("ul");
                                                                                                                                                                                                                                          -                               place.appendChild(theDateList);
                                                                                                                                                                                                                                          -                               createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));
                                                                                                                                                                                                                                          -                               lastDay = theDay;
                                                                                                                                                                                                                                          -                               }
                                                                                                                                                                                                                                          -                  var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);
                                                                                                                                                                                                                                          -                  theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
                                                                                                                                                                                                                                          -                  }
                                                                                                                                                                                                                                          -                  }
                                                                                                                                                                                                                                          -          }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -          else
                                                                                                                                                                                                                                          -              {
                                                                                                                                                                                                                                          -              window.old_timeline_handler.apply(this,arguments);
                                                                                                                                                                                                                                          -              }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|FullScreenPlugin|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#FullScreenPlugin|
                                                                                                                                                                                                                                          -|Version|1.1|
                                                                                                                                                                                                                                          -|Requires|~TW2.x|
                                                                                                                                                                                                                                          -!Description:
                                                                                                                                                                                                                                          -Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Demo:
                                                                                                                                                                                                                                          -Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Installation:
                                                                                                                                                                                                                                          -Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
                                                                                                                                                                                                                                          -Edit the ViewTemplate to add the fullscreen command to the toolbar.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!History:
                                                                                                                                                                                                                                          -*25-07-06: ver 1.1
                                                                                                                                                                                                                                          -*20-07-06: ver 1.0
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var lewcidFullScreen = false;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.fullscreen =
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -            text:" ↕ ",
                                                                                                                                                                                                                                          -            tooltip:"Fullscreen mode"
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.fullscreen.handler = function (event,src,title)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -            if (lewcidFullScreen == false)
                                                                                                                                                                                                                                          -               {
                                                                                                                                                                                                                                          -                lewcidFullScreen = true;
                                                                                                                                                                                                                                          -                setStylesheet('#sidebar, .header, #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");
                                                                                                                                                                                                                                          -               }
                                                                                                                                                                                                                                          -            else
                                                                                                                                                                                                                                          -               {
                                                                                                                                                                                                                                          -                lewcidFullScreen = false;
                                                                                                                                                                                                                                          -                setStylesheet(' ',"lewcidFullScreenStyle");
                                                                                                                                                                                                                                          -               }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.fullscreen={};
                                                                                                                                                                                                                                          -config.macros.fullscreen.handler =  function(place,macroName,params,wikifier,paramString,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -        var label = params[0]||" ↕ ";
                                                                                                                                                                                                                                          -        var tooltip = params[1]||"Fullscreen mode";
                                                                                                                                                                                                                                          -        createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
                                                                                                                                                                                                                                          -Story.prototype.closeTiddler =function(title,animate,slowly)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -           lewcid_fullscreen_closeTiddler.apply(this,arguments);
                                                                                                                                                                                                                                          -           if (story.isEmpty() && lewcidFullScreen == true)
                                                                                                                                                                                                                                          -              config.commands.fullscreen.handler();
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Slider.prototype.lewcidStop = Slider.prototype.stop;
                                                                                                                                                                                                                                          -Slider.prototype.stop = function()
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -           this.lewcidStop();
                                                                                                                                                                                                                                          -           if (story.isEmpty() && lewcidFullScreen == true)
                                                                                                                                                                                                                                          -              config.commands.fullscreen.handler();
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin for ~TiddlyWiki version 1.2.x and 2.0''
                                                                                                                                                                                                                                          -^^author: Eric Shulman - ELS Design Studios
                                                                                                                                                                                                                                          -source: http://www.TiddlyTools.com/#InlineJavascriptPlugin
                                                                                                                                                                                                                                          -license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Insert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
                                                                                                                                                                                                                                          -!!!!!Usage
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Deferred execution from an 'onClick' link''
                                                                                                                                                                                                                                          -By including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''External script source files:''
                                                                                                                                                                                                                                          -You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Defining javascript functions and libraries:''
                                                                                                                                                                                                                                          -Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Creating dynamic tiddler content''
                                                                                                                                                                                                                                          -An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
                                                                                                                                                                                                                                          -* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
                                                                                                                                                                                                                                          -* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
                                                                                                                                                                                                                                          -* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Accessing the ~TiddlyWiki DOM''
                                                                                                                                                                                                                                          -The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Access to this DOM element allows you to create scripts that can:
                                                                                                                                                                                                                                          -* vary their actions based upon the specific location in which they are embedded
                                                                                                                                                                                                                                          -* access 'tiddler-relative' information (use findContainingTiddler(place))
                                                                                                                                                                                                                                          -* perform direct DOM manipulations (when returning wikified text is not enough)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Examples
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -an "alert" message box:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dynamic output:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>return (new Date()).toString();</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>return (new Date()).toString();</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -wikified dynamic output:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dynamic output using 'place' to get size information for current tiddler
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -creating an 'onclick' button/link that runs a script
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script label="click here">
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script label="click here">
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -loading a script from a source url
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script src="demo.js">return "loading demo.js..."</script>
                                                                                                                                                                                                                                          -<script label="click to execute demo() function">demo()</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -where http://www.TiddlyTools.com/demo.js contains:
                                                                                                                                                                                                                                          ->function demo() { alert('this output is from demo(), defined in demo.js') }
                                                                                                                                                                                                                                          ->alert('InlineJavascriptPlugin: demo.js has been loaded');
                                                                                                                                                                                                                                          -<script src="demo.js">return "loading demo.js..."</script>
                                                                                                                                                                                                                                          -<script label="click to execute demo() function">demo()</script>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.01.05 [1.4.0]''
                                                                                                                                                                                                                                          -added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
                                                                                                                                                                                                                                          -''2005.12.13 [1.3.1]''
                                                                                                                                                                                                                                          -when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
                                                                                                                                                                                                                                          -''2005.11.09 [1.3.0]''
                                                                                                                                                                                                                                          -for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content
                                                                                                                                                                                                                                          -Based on a suggestion by BradleyMeck
                                                                                                                                                                                                                                          -''2005.11.08 [1.2.0]''
                                                                                                                                                                                                                                          -handle loading of javascript from an external URL via src="..." syntax
                                                                                                                                                                                                                                          -''2005.11.08 [1.1.0]''
                                                                                                                                                                                                                                          -pass 'place' param into scripts to provide direct DOM access 
                                                                                                                                                                                                                                          -''2005.11.08 [1.0.0]''
                                                                                                                                                                                                                                          -initial release
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Credits
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.inlineJavascript= {major: 1, minor: 4, revision: 0, date: new Date(2006,1,5)};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "inlineJavascript",
                                                                                                                                                                                                                                          - match: "\\<script",
                                                                                                                                                                                                                                          - lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?\\>((?:.|\\n)*?)\\</script\\>",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - var lookaheadRegExp = new RegExp(this.lookahead,"mg");
                                                                                                                                                                                                                                          - lookaheadRegExp.lastIndex = w.matchStart;
                                                                                                                                                                                                                                          - var lookaheadMatch = lookaheadRegExp.exec(w.source)
                                                                                                                                                                                                                                          - if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
                                                                                                                                                                                                                                          - if (lookaheadMatch[1]) { // load a script library
                                                                                                                                                                                                                                          - // make script tag, set src, add to body to execute, then remove for cleanup
                                                                                                                                                                                                                                          - var script = document.createElement("script"); script.src = lookaheadMatch[1];
                                                                                                                                                                                                                                          - document.body.appendChild(script); document.body.removeChild(script);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (lookaheadMatch[2] && lookaheadMatch[3]) { // create a link to an 'onclick' script
                                                                                                                                                                                                                                          - // add a link, define click handler, save code in link (pass 'place'), set link attributes
                                                                                                                                                                                                                                          - var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
                                                                                                                                                                                                                                          - link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
                                                                                                                                                                                                                                          - link.code="function _out(place){"+lookaheadMatch[3]+"};_out(this);"
                                                                                                                                                                                                                                          - link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - else if (lookaheadMatch[3]) { // run inline script code
                                                                                                                                                                                                                                          - var code="function _out(place){"+lookaheadMatch[3]+"};_out(w.output);"
                                                                                                                                                                                                                                          - code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
                                                                                                                                                                                                                                          - try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
                                                                                                                                                                                                                                          - if (out && out.length) wikify(out,w.output);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|''Name:''|InlineJavascriptPlugin|
                                                                                                                                                                                                                                          -|''Source:''|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
                                                                                                                                                                                                                                          -|''Author:''|Eric Shulman - ELS Design Studios|
                                                                                                                                                                                                                                          -|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
                                                                                                                                                                                                                                          -|''~CoreVersion:''|2.0.10|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Insert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
                                                                                                                                                                                                                                          -!!!!!Usage
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Deferred execution from an 'onClick' link''
                                                                                                                                                                                                                                          -By including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''External script source files:''
                                                                                                                                                                                                                                          -You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Display script source in tiddler output''
                                                                                                                                                                                                                                          -By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Defining javascript functions and libraries:''
                                                                                                                                                                                                                                          -Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Creating dynamic tiddler content''
                                                                                                                                                                                                                                          -An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
                                                                                                                                                                                                                                          -* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
                                                                                                                                                                                                                                          -* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
                                                                                                                                                                                                                                          -* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Accessing the ~TiddlyWiki DOM''
                                                                                                                                                                                                                                          -The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Access to this DOM element allows you to create scripts that can:
                                                                                                                                                                                                                                          -* vary their actions based upon the specific location in which they are embedded
                                                                                                                                                                                                                                          -* access 'tiddler-relative' information (use findContainingTiddler(place))
                                                                                                                                                                                                                                          -* perform direct DOM manipulations (when returning wikified text is not enough)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Examples
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -an "alert" message box:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - alert('InlineJavascriptPlugin: this is a demonstration message');
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -dynamic output:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - return (new Date()).toString();
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -wikified dynamic output:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - return "link to current user: [["+config.options.txtUserName+"]]";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -dynamic output using 'place' to get size information for current tiddler:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -creating an 'onclick' button/link that runs a script:
                                                                                                                                                                                                                                          -><script label="click here" show>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -loading a script from a source url:
                                                                                                                                                                                                                                          ->http://www.TiddlyTools.com/demo.js contains:
                                                                                                                                                                                                                                          ->>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
                                                                                                                                                                                                                                          ->>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
                                                                                                                                                                                                                                          -><script src="demo.js" show>
                                                                                                                                                                                                                                          - return "loading demo.js..."
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -><script label="click to execute demo() function" show>
                                                                                                                                                                                                                                          - demo()
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
                                                                                                                                                                                                                                          -''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
                                                                                                                                                                                                                                          -''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
                                                                                                                                                                                                                                          -''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
                                                                                                                                                                                                                                          -''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
                                                                                                                                                                                                                                          -''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
                                                                                                                                                                                                                                          -''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access 
                                                                                                                                                                                                                                          -''2005.11.08 [1.0.0]'' initial release
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Credits
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.inlineJavascript= {major: 1, minor: 5, revision: 1, date: new Date(2006,6,1)};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "inlineJavascript",
                                                                                                                                                                                                                                          - match: "\\<script",
                                                                                                                                                                                                                                          - lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - var lookaheadRegExp = new RegExp(this.lookahead,"mg");
                                                                                                                                                                                                                                          - lookaheadRegExp.lastIndex = w.matchStart;
                                                                                                                                                                                                                                          - var lookaheadMatch = lookaheadRegExp.exec(w.source)
                                                                                                                                                                                                                                          - if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
                                                                                                                                                                                                                                          - if (lookaheadMatch[1]) { // load a script library
                                                                                                                                                                                                                                          - // make script tag, set src, add to body to execute, then remove for cleanup
                                                                                                                                                                                                                                          - var script = document.createElement("script"); script.src = lookaheadMatch[1];
                                                                                                                                                                                                                                          - document.body.appendChild(script); document.body.removeChild(script);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (lookaheadMatch[4]) { // there is script code
                                                                                                                                                                                                                                          - if (lookaheadMatch[3]) // show inline script code in tiddler output
                                                                                                                                                                                                                                          - wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
                                                                                                                                                                                                                                          - if (lookaheadMatch[2]) { // create a link to an 'onclick' script
                                                                                                                                                                                                                                          - // add a link, define click handler, save code in link (pass 'place'), set link attributes
                                                                                                                                                                                                                                          - var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
                                                                                                                                                                                                                                          - link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
                                                                                                                                                                                                                                          - link.code="function _out(place){"+lookaheadMatch[4]+"};_out(this);"
                                                                                                                                                                                                                                          - link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - else { // run inline script code
                                                                                                                                                                                                                                          - var code="function _out(place){"+lookaheadMatch[4]+"};_out(w.output);"
                                                                                                                                                                                                                                          - code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
                                                                                                                                                                                                                                          - try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
                                                                                                                                                                                                                                          - if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>My TiddlyWiki</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
                                                                                                                                                                                                                                          -	<div class='headerShadow'>
                                                                                                                                                                                                                                          -		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -	</div>
                                                                                                                                                                                                                                          -	<div class='headerForeground'>
                                                                                                                                                                                                                                          -		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -	</div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!-- horizontal MainMenu -->
                                                                                                                                                                                                                                          -<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
                                                                                                                                                                                                                                          -<!-- original MainMenu menu -->
                                                                                                                                                                                                                                          -<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->
                                                                                                                                                                                                                                          -<div id='sidebar'>
                                                                                                                                                                                                                                          -	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
                                                                                                                                                                                                                                          -	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='displayArea'>
                                                                                                                                                                                                                                          -	<div id='messageArea'></div>
                                                                                                                                                                                                                                          -	<div id='tiddlerDisplay'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|<html><a name="Top"/></html>''Name:''|PartTiddlerPlugin|
                                                                                                                                                                                                                                          -|''Version:''|1.0.6 (2006-11-07)|
                                                                                                                                                                                                                                          -|''Source:''|http://tiddlywiki.abego-software.de/#PartTiddlerPlugin|
                                                                                                                                                                                                                                          -|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
                                                                                                                                                                                                                                          -|''Licence:''|[[BSD open source license]]|
                                                                                                                                                                                                                                          -|''TiddlyWiki:''|2.0|
                                                                                                                                                                                                                                          -|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
                                                                                                                                                                                                                                          -!Table of Content<html><a name="TOC"/></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Description',null, event)">Description, Syntax</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Applications',null, event)">Applications</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('LongTiddler',null, event)">Refering to Paragraphs of a Longer Tiddler</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Citation',null, event)">Citation Index</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('TableCells',null, event)">Creating "multi-line" Table Cells</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Tabs',null, event)">Creating Tabs</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Sliders',null, event)">Using Sliders</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Revisions',null, event)">Revision History</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Code',null, event)">Code</a></html>
                                                                                                                                                                                                                                          -!Description<html><a name="Description"/></html>
                                                                                                                                                                                                                                          -With the {{{<part aPartName> ... </part>}}} feature you can structure your tiddler text into separate (named) parts. 
                                                                                                                                                                                                                                          -Each part can be referenced as a "normal" tiddler, using the "//tiddlerName//''/''//partName//" syntax (e.g. "About/Features"). E.g. you may create links to the parts, use it in {{{<<tiddler...>>}}} or {{{<<tabs...>>}}} macros etc.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Syntax:'' 
                                                                                                                                                                                                                                          -|>|''<part'' //partName// [''hidden''] ''>'' //any tiddler content// ''</part>''|
                                                                                                                                                                                                                                          -|//partName//|The name of the part. You may reference a part tiddler with the combined tiddler name "//nameOfContainerTidder//''/''//partName//.|
                                                                                                                                                                                                                                          -|''hidden''|When defined the content of the part is not displayed in the container tiddler. But when the part is explicitly referenced (e.g. in a {{{<<tiddler...>>}}} macro or in a link) the part's content is displayed.|
                                                                                                                                                                                                                                          -|<html><i>any&nbsp;tiddler&nbsp;content</i></html>|<html>The content of the part.<br>A part can have any content that a "normal" tiddler may have, e.g. you may use all the formattings and macros defined.</html>|
                                                                                                                                                                                                                                          -|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Applications<html><a name="Applications"/></html>
                                                                                                                                                                                                                                          -!!Refering to Paragraphs of a Longer Tiddler<html><a name="LongTiddler"/></html>
                                                                                                                                                                                                                                          -Assume you have written a long description in a tiddler and now you want to refer to the content of a certain paragraph in that tiddler (e.g. some definition.) Just wrap the text with a ''part'' block, give it a nice name, create a "pretty link" (like {{{[[Discussion Groups|Introduction/DiscussionGroups]]}}}) and you are done.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice this complements the approach to first writing a lot of small tiddlers and combine these tiddlers to one larger tiddler in a second step (e.g. using the {{{<<tiddler...>>}}} macro). Using the ''part'' feature you can first write a "classic" (longer) text that can be read "from top to bottom" and later "reuse" parts of this text for some more "non-linear" reading.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Citation Index<html><a name="Citation"/></html>
                                                                                                                                                                                                                                          -Create a tiddler "Citations" that contains your "citations". 
                                                                                                                                                                                                                                          -Wrap every citation with a part and a proper name. 
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<part BAX98>Baxter, Ira D. et al: //Clone Detection Using Abstract Syntax Trees.// 
                                                                                                                                                                                                                                          -in //Proc. ICSM//, 1998.</part>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part BEL02>Bellon, Stefan: //Vergleich von Techniken zur Erkennung duplizierten Quellcodes.// 
                                                                                                                                                                                                                                          -Thesis, Uni Stuttgart, 2002.</part>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part DUC99>Ducasse, Stéfane et al: //A Language Independent Approach for Detecting Duplicated Code.// 
                                                                                                                                                                                                                                          -in //Proc. ICSM//, 1999.</part>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You may now "cite" them just by using a pretty link like {{{[[Citations/BAX98]]}}} or even more pretty, like this {{{[[BAX98|Citations/BAX98]]}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Creating "multi-line" Table Cells<html><a name="TableCells"/></html>
                                                                                                                                                                                                                                          -You may have noticed that it is hard to create table cells with "multi-line" content. E.g. if you want to create a bullet list inside a table cell you cannot just write the bullet list
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -* Item 1
                                                                                                                                                                                                                                          -* Item 2
                                                                                                                                                                                                                                          -* Item 3
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -into a table cell (i.e. between the | ... | bars) because every bullet item must start in a new line but all cells of a table row must be in one line.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Using the ''part'' feature this problem can be solved. Just create a hidden part that contains the cells content and use a {{{<<tiddler >>}}} macro to include its content in the table's cell.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -|!Subject|!Items|
                                                                                                                                                                                                                                          -|subject1|<<tiddler ./Cell1>>|
                                                                                                                                                                                                                                          -|subject2|<<tiddler ./Cell2>>|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part Cell1 hidden>
                                                                                                                                                                                                                                          -* Item 1
                                                                                                                                                                                                                                          -* Item 2
                                                                                                                                                                                                                                          -* Item 3
                                                                                                                                                                                                                                          -</part>
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that inside the {{{<<tiddler ...>>}}} macro you may refer to the "current tiddler" using the ".".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -BTW: The same approach can be used to create bullet lists with items that contain more than one line.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Creating Tabs<html><a name="Tabs"/></html>
                                                                                                                                                                                                                                          -The build-in {{{<<tabs ...>>}}} macro requires that you defined an additional tiddler for every tab it displays. When you want to have "nested" tabs you need to define a tiddler for the "main tab" and one for every tab it contains. I.e. the definition of a set of tabs that is visually displayed at one place is distributed across multiple tiddlers.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -With the ''part'' feature you can put the complete definition in one tiddler, making it easier to keep an overview and maintain the tab sets.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -The standard tabs at the sidebar are defined by the following eight tiddlers:
                                                                                                                                                                                                                                          -* SideBarTabs
                                                                                                                                                                                                                                          -* TabAll
                                                                                                                                                                                                                                          -* TabMore
                                                                                                                                                                                                                                          -* TabMoreMissing
                                                                                                                                                                                                                                          -* TabMoreOrphans
                                                                                                                                                                                                                                          -* TabMoreShadowed
                                                                                                                                                                                                                                          -* TabTags
                                                                                                                                                                                                                                          -* TabTimeline
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Instead of these eight tiddlers one could define the following SideBarTabs tiddler that uses the ''part'' feature:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<tabs txtMainTab 
                                                                                                                                                                                                                                          - Timeline Timeline SideBarTabs/Timeline 
                                                                                                                                                                                                                                          - All 'All tiddlers' SideBarTabs/All 
                                                                                                                                                                                                                                          - Tags 'All tags' SideBarTabs/Tags 
                                                                                                                                                                                                                                          - More 'More lists' SideBarTabs/More>>
                                                                                                                                                                                                                                          -<part Timeline hidden><<timeline>></part>
                                                                                                                                                                                                                                          -<part All hidden><<list all>></part>
                                                                                                                                                                                                                                          -<part Tags hidden><<allTags>></part>
                                                                                                                                                                                                                                          -<part More hidden><<tabs txtMoreTab 
                                                                                                                                                                                                                                          - Missing 'Missing tiddlers' SideBarTabs/Missing 
                                                                                                                                                                                                                                          - Orphans 'Orphaned tiddlers' SideBarTabs/Orphans 
                                                                                                                                                                                                                                          - Shadowed 'Shadowed tiddlers' SideBarTabs/Shadowed>></part>
                                                                                                                                                                                                                                          -<part Missing hidden><<list missing>></part>
                                                                                                                                                                                                                                          -<part Orphans hidden><<list orphans>></part>
                                                                                                                                                                                                                                          -<part Shadowed hidden><<list shadowed>></part>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that you can easily "overwrite" individual parts in separate tiddlers that have the full name of the part.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -E.g. if you don't like the classic timeline tab but only want to see the 100 most recent tiddlers you could create a tiddler "~SideBarTabs/Timeline" with the following content:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<forEachTiddler 
                                                                                                                                                                                                                                          - sortBy 'tiddler.modified' descending 
                                                                                                                                                                                                                                          - write '(index < 100) ? "* [["+tiddler.title+"]]\n":""'>>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Using Sliders<html><a name="Sliders"/></html>
                                                                                                                                                                                                                                          -Very similar to the build-in {{{<<tabs ...>>}}} macro (see above) the {{{<<slider ...>>}}} macro requires that you defined an additional tiddler that holds the content "to be slid". You can avoid creating this extra tiddler by using the ''part'' feature
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -In a tiddler "About" we may use the slider to show some details that are documented in the tiddler's "Details" part.
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -<<slider chkAboutDetails About/Details details "Click here to see more details">>
                                                                                                                                                                                                                                          -<part Details hidden>
                                                                                                                                                                                                                                          -To give you a better overview ...
                                                                                                                                                                                                                                          -</part>
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that putting the content of the slider into the slider's tiddler also has an extra benefit: When you decide you need to edit the content of the slider you can just doubleclick the content, the tiddler opens for editing and you can directly start editing the content (in the part section). In the "old" approach you would doubleclick the tiddler, see that the slider is using tiddler X, have to look for the tiddler X and can finally open it for editing. So using the ''part'' approach results in a much short workflow.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Revision history<html><a name="Revisions"/></html>
                                                                                                                                                                                                                                          -* v1.0.6 (2006-11-07)
                                                                                                                                                                                                                                          -** Bugfix: cannot edit tiddler when UploadPlugin by Bidix is installed. Thanks to José Luis González Castro for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.5 (2006-03-02)
                                                                                                                                                                                                                                          -** Bugfix: Example with multi-line table cells does not work in IE6. Thanks to Paulo Soares for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.4 (2006-02-28)
                                                                                                                                                                                                                                          -** Bugfix: Shadow tiddlers cannot be edited (in TW 2.0.6). Thanks to Torsten Vanek for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.3 (2006-02-26)
                                                                                                                                                                                                                                          -** Adapt code to newly introduced Tiddler.prototype.isReadOnly() function (in TW 2.0.6). Thanks to Paulo Soares for reporting the problem.
                                                                                                                                                                                                                                          -* v1.0.2 (2006-02-05)
                                                                                                                                                                                                                                          -** Also allow other macros than the "tiddler" macro use the "." in the part reference (to refer to "this" tiddler)
                                                                                                                                                                                                                                          -* v1.0.1 (2006-01-27)
                                                                                                                                                                                                                                          -** Added Table of Content for plugin documentation. Thanks to RichCarrillo for suggesting.
                                                                                                                                                                                                                                          -** Bugfix: newReminder plugin does not work when PartTiddler is installed. Thanks to PauloSoares for reporting.
                                                                                                                                                                                                                                          -* v1.0.0 (2006-01-25)
                                                                                                                                                                                                                                          -** initial version
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code<html><a name="Code"/></html>
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// PartTiddlerPlugin
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Ensure that the PartTiddler Plugin is only installed once.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -if (!version.extensions.PartTiddlerPlugin) {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -version.extensions.PartTiddlerPlugin = {
                                                                                                                                                                                                                                          - major: 1, minor: 0, revision: 6,
                                                                                                                                                                                                                                          - date: new Date(2006, 10, 7), 
                                                                                                                                                                                                                                          - type: 'plugin',
                                                                                                                                                                                                                                          - source: "http://tiddlywiki.abego-software.de/#PartTiddlerPlugin"
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -if (!window.abego) window.abego = {};
                                                                                                                                                                                                                                          -if (version.major < 2) alertAndThrow("PartTiddlerPlugin requires TiddlyWiki 2.0 or newer.");
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Common Helpers
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Looks for the next newline, starting at the index-th char of text. 
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// If there are only whitespaces between index and the newline 
                                                                                                                                                                                                                                          -// the index behind the newline is returned, 
                                                                                                                                                                                                                                          -// otherwise (or when no newline is found) index is returned.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var skipEmptyEndOfLine = function(text, index) {
                                                                                                                                                                                                                                          - var re = /(\n|[^\s])/g;
                                                                                                                                                                                                                                          - re.lastIndex = index;
                                                                                                                                                                                                                                          - var result = re.exec(text);
                                                                                                                                                                                                                                          - return (result && text.charAt(result.index) == '\n') 
                                                                                                                                                                                                                                          - ? result.index+1
                                                                                                                                                                                                                                          - : index;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Constants
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var partEndOrStartTagRE = /(<\/part>)|(<part(?:\s+)((?:[^>])+)>)/mg;
                                                                                                                                                                                                                                          -var partEndTagREString = "<\\/part>";
                                                                                                                                                                                                                                          -var partEndTagString = "</part>";
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Plugin Specific Helpers
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Parse the parameters inside a <part ...> tag and return the result.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return [may be null] {partName: ..., isHidden: ...}
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var parseStartTagParams = function(paramText) {
                                                                                                                                                                                                                                          - var params = paramText.readMacroParams();
                                                                                                                                                                                                                                          - if (params.length == 0 || params[0].length == 0) return null;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - var name = params[0];
                                                                                                                                                                                                                                          - var paramsIndex = 1;
                                                                                                                                                                                                                                          - var hidden = false;
                                                                                                                                                                                                                                          - if (paramsIndex < params.length) {
                                                                                                                                                                                                                                          - hidden = params[paramsIndex] == "hidden";
                                                                                                                                                                                                                                          - paramsIndex++;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return {
                                                                                                                                                                                                                                          - partName: name, 
                                                                                                                                                                                                                                          - isHidden: hidden
                                                                                                                                                                                                                                          - };
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Returns the match to the next (end or start) part tag in the text, 
                                                                                                                                                                                                                                          -// starting the search at startIndex.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -// When no such tag is found null is returned, otherwise a "Match" is returned:
                                                                                                                                                                                                                                          -// [0]: full match
                                                                                                                                                                                                                                          -// [1]: matched "end" tag (or null when no end tag match)
                                                                                                                                                                                                                                          -// [2]: matched "start" tag (or null when no start tag match)
                                                                                                                                                                                                                                          -// [3]: content of start tag (or null if no start tag match)
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var findNextPartEndOrStartTagMatch = function(text, startIndex) {
                                                                                                                                                                                                                                          - var re = new RegExp(partEndOrStartTagRE);
                                                                                                                                                                                                                                          - re.lastIndex = startIndex;
                                                                                                                                                                                                                                          - var match = re.exec(text);
                                                                                                                                                                                                                                          - return match;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Formatter
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Process the <part ...> ... </part> starting at (w.source, w.matchStart) for formatting.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return true if a complete part section (including the end tag) could be processed, false otherwise.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var handlePartSection = function(w) {
                                                                                                                                                                                                                                          - var tagMatch = findNextPartEndOrStartTagMatch(w.source, w.matchStart);
                                                                                                                                                                                                                                          - if (!tagMatch) return false;
                                                                                                                                                                                                                                          - if (tagMatch.index != w.matchStart || !tagMatch[2]) return false;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - // Parse the start tag parameters
                                                                                                                                                                                                                                          - var arguments = parseStartTagParams(tagMatch[3]);
                                                                                                                                                                                                                                          - if (!arguments) return false;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - // Continue processing
                                                                                                                                                                                                                                          - var startTagEndIndex = skipEmptyEndOfLine(w.source, tagMatch.index + tagMatch[0].length);
                                                                                                                                                                                                                                          - var endMatch = findNextPartEndOrStartTagMatch(w.source, startTagEndIndex);
                                                                                                                                                                                                                                          - if (endMatch && endMatch[1]) {
                                                                                                                                                                                                                                          - if (!arguments.isHidden) {
                                                                                                                                                                                                                                          - w.nextMatch = startTagEndIndex;
                                                                                                                                                                                                                                          - w.subWikify(w.output,partEndTagREString);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = skipEmptyEndOfLine(w.source, endMatch.index + endMatch[0].length);
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return true;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - return false;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "part",
                                                                                                                                                                                                                                          - match: "<part\\s+[^>]+>",
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - if (!handlePartSection(w)) {
                                                                                                                                                                                                                                          - w.outputText(w.output,w.matchStart,w.matchStart+w.matchLength);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Extend "fetchTiddler" functionality to also recognize "part"s of tiddlers 
                                                                                                                                                                                                                                          -// as tiddlers.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var currentParent = null; // used for the "." parent (e.g. in the "tiddler" macro)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Return the match to the first <part ...> tag of the text that has the
                                                                                                                                                                                                                                          -// requrest partName.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return [may be null]
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var findPartStartTagByName = function(text, partName) {
                                                                                                                                                                                                                                          - var i = 0;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - while (true) {
                                                                                                                                                                                                                                          - var tagMatch = findNextPartEndOrStartTagMatch(text, i);
                                                                                                                                                                                                                                          - if (!tagMatch) return null;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - if (tagMatch[2]) {
                                                                                                                                                                                                                                          - // Is start tag
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - // Check the name
                                                                                                                                                                                                                                          - var arguments = parseStartTagParams(tagMatch[3]);
                                                                                                                                                                                                                                          - if (arguments && arguments.partName == partName) {
                                                                                                                                                                                                                                          - return tagMatch;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - i += tagMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Return the part "partName" of the given parentTiddler as a "readOnly" Tiddler 
                                                                                                                                                                                                                                          -// object, using fullName as the Tiddler's title. 
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// All remaining properties of the new Tiddler (tags etc.) are inherited from 
                                                                                                                                                                                                                                          -// the parentTiddler.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -// @return [may be null]
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var getPart = function(parentTiddler, partName, fullName) {
                                                                                                                                                                                                                                          - var text = parentTiddler.text;
                                                                                                                                                                                                                                          - var startTag = findPartStartTagByName(text, partName);
                                                                                                                                                                                                                                          - if (!startTag) return null;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - var endIndexOfStartTag = skipEmptyEndOfLine(text, startTag.index+startTag[0].length);
                                                                                                                                                                                                                                          - var indexOfEndTag = text.indexOf(partEndTagString, endIndexOfStartTag);
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - if (indexOfEndTag >= 0) {
                                                                                                                                                                                                                                          - var partTiddlerText = text.substring(endIndexOfStartTag,indexOfEndTag);
                                                                                                                                                                                                                                          - var partTiddler = new Tiddler();
                                                                                                                                                                                                                                          - partTiddler.set(
                                                                                                                                                                                                                                          - fullName,
                                                                                                                                                                                                                                          - partTiddlerText,
                                                                                                                                                                                                                                          - parentTiddler.modifier,
                                                                                                                                                                                                                                          - parentTiddler.modified,
                                                                                                                                                                                                                                          - parentTiddler.tags,
                                                                                                                                                                                                                                          - parentTiddler.created);
                                                                                                                                                                                                                                          - partTiddler.abegoIsPartTiddler = true;
                                                                                                                                                                                                                                          - return partTiddler;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return null;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Hijack the store.fetchTiddler to recognize the "part" addresses.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var oldFetchTiddler = store.fetchTiddler ;
                                                                                                                                                                                                                                          -store.fetchTiddler = function(title) {
                                                                                                                                                                                                                                          - var result = oldFetchTiddler.apply(this, arguments);
                                                                                                                                                                                                                                          - if (!result && title) {
                                                                                                                                                                                                                                          - var i = title.lastIndexOf('/');
                                                                                                                                                                                                                                          - if (i > 0) {
                                                                                                                                                                                                                                          - var parentName = title.substring(0, i);
                                                                                                                                                                                                                                          - var partName = title.substring(i+1);
                                                                                                                                                                                                                                          - var parent = (parentName == ".") 
                                                                                                                                                                                                                                          - ? currentParent 
                                                                                                                                                                                                                                          - : oldFetchTiddler.apply(this, [parentName]);
                                                                                                                                                                                                                                          - if (parent) {
                                                                                                                                                                                                                                          - return getPart(parent, partName, parent.title+"/"+partName);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - return result; 
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// The user must not edit a readOnly/partTiddler
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.editTiddler.oldIsReadOnlyFunction = Tiddler.prototype.isReadOnly;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Tiddler.prototype.isReadOnly = function() {
                                                                                                                                                                                                                                          - // Tiddler.isReadOnly was introduced with TW 2.0.6.
                                                                                                                                                                                                                                          - // For older version we explicitly check the global readOnly flag
                                                                                                                                                                                                                                          - if (config.commands.editTiddler.oldIsReadOnlyFunction) {
                                                                                                                                                                                                                                          - if (config.commands.editTiddler.oldIsReadOnlyFunction.apply(this, arguments)) return true;
                                                                                                                                                                                                                                          - } else {
                                                                                                                                                                                                                                          - if (readOnly) return true;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - return this.abegoIsPartTiddler;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.editTiddler.handler = function(event,src,title)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          - var t = store.getTiddler(title);
                                                                                                                                                                                                                                          - // Edit the tiddler if it either is not a tiddler (but a shadowTiddler)
                                                                                                                                                                                                                                          - // or the tiddler is not readOnly
                                                                                                                                                                                                                                          - if(!t || !t.abegoIsPartTiddler)
                                                                                                                                                                                                                                          - {
                                                                                                                                                                                                                                          - clearMessage();
                                                                                                                                                                                                                                          - story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE);
                                                                                                                                                                                                                                          - story.focusTiddler(title,"text");
                                                                                                                                                                                                                                          - return false;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// To allow the "./partName" syntax in macros we need to hijack 
                                                                                                                                                                                                                                          -// the invokeMacro to define the "currentParent" while it is running.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -var oldInvokeMacro = window.invokeMacro;
                                                                                                                                                                                                                                          -function myInvokeMacro(place,macro,params,wikifier,tiddler) {
                                                                                                                                                                                                                                          - var oldCurrentParent = currentParent;
                                                                                                                                                                                                                                          - if (tiddler) currentParent = tiddler;
                                                                                                                                                                                                                                          - try {
                                                                                                                                                                                                                                          - oldInvokeMacro.apply(this, arguments);
                                                                                                                                                                                                                                          - } finally {
                                                                                                                                                                                                                                          - currentParent = oldCurrentParent;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -window.invokeMacro = myInvokeMacro;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Scroll the anchor anchorName in the viewer of the given tiddler visible.
                                                                                                                                                                                                                                          -// When no tiddler is defined use the tiddler of the target given event is used.
                                                                                                                                                                                                                                          -window.scrollAnchorVisible = function(anchorName, tiddler, evt) {
                                                                                                                                                                                                                                          - var tiddlerElem = null;
                                                                                                                                                                                                                                          - if (tiddler) {
                                                                                                                                                                                                                                          - tiddlerElem = document.getElementById(story.idPrefix + tiddler);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (!tiddlerElem && evt) {
                                                                                                                                                                                                                                          - var target = resolveTarget(evt);
                                                                                                                                                                                                                                          - tiddlerElem = story.findContainingTiddler(target);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (!tiddlerElem) return;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - var children = tiddlerElem.getElementsByTagName("a");
                                                                                                                                                                                                                                          - for (var i = 0; i < children.length; i++) {
                                                                                                                                                                                                                                          - var child = children[i];
                                                                                                                                                                                                                                          - var name = child.getAttribute("name");
                                                                                                                                                                                                                                          - if (name == anchorName) {
                                                                                                                                                                                                                                          - var y = findPosY(child);
                                                                                                                                                                                                                                          - window.scrollTo(0,y);
                                                                                                                                                                                                                                          - return;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -} // of "install only once"
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Licence and Copyright
                                                                                                                                                                                                                                          -Copyright (c) abego Software ~GmbH, 2006 ([[www.abego-software.de|http://www.abego-software.de]])
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistribution and use in source and binary forms, with or without modification,
                                                                                                                                                                                                                                          -are permitted provided that the following conditions are met:
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistributions of source code must retain the above copyright notice, this
                                                                                                                                                                                                                                          -list of conditions and the following disclaimer.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistributions in binary form must reproduce the above copyright notice, this
                                                                                                                                                                                                                                          -list of conditions and the following disclaimer in the documentation and/or other
                                                                                                                                                                                                                                          -materials provided with the distribution.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Neither the name of abego Software nor the names of its contributors may be
                                                                                                                                                                                                                                          -used to endorse or promote products derived from this software without specific
                                                                                                                                                                                                                                          -prior written permission.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
                                                                                                                                                                                                                                          -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                                                                                                                                                                                                                                          -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
                                                                                                                                                                                                                                          -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
                                                                                                                                                                                                                                          -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
                                                                                                                                                                                                                                          -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
                                                                                                                                                                                                                                          -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                                                                                                                                                                                                                                          -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
                                                                                                                                                                                                                                          -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
                                                                                                                                                                                                                                          -DAMAGE.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|''Name:''|RSSReaderPlugin|
                                                                                                                                                                                                                                          -|''Description:''|This plugin provides a RSSReader for TiddlyWiki|
                                                                                                                                                                                                                                          -|''Version:''|1.1.1|
                                                                                                                                                                                                                                          -|''Date:''|Apr 21, 2007|
                                                                                                                                                                                                                                          -|''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin|
                                                                                                                                                                                                                                          -|''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc|
                                                                                                                                                                                                                                          -|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
                                                                                                                                                                                                                                          -|''Credit:''|BramChen for RssNewsMacro|
                                                                                                                                                                                                                                          -|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
                                                                                                                                                                                                                                          -|''~CoreVersion:''|2.2.0|
                                                                                                                                                                                                                                          -|''OptionalRequires:''|http://www.tiddlytools.com/#NestedSlidersPlugin|
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.RSSReaderPlugin = {
                                                                                                                                                                                                                                          -	major: 1, minor: 1, revision: 1,
                                                                                                                                                                                                                                          -	date: new Date("Apr 21, 2007"),
                                                                                                                                                                                                                                          -	source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin",
                                                                                                                                                                                                                                          -	author: "BidiX",
                                                                                                                                                                                                                                          -	coreVersion: '2.2.0'
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.rssReader = {
                                                                                                                                                                                                                                          -	dateFormat: "DDD, DD MMM YYYY",
                                                                                                                                                                                                                                          -	itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed  '@@'+itemStyle+itemText+'@@'
                                                                                                                                                                                                                                          -	msg:{
                                                                                                                                                                                                                                          -		permissionDenied: "Permission to read preferences was denied.",
                                                                                                                                                                                                                                          -		noRSSFeed: "No RSS Feed at this address %0",
                                                                                                                                                                                                                                          -		urlNotAccessible: " Access to %0 is not allowed"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	cache: [], 	// url => XMLHttpRequest.responseXML
                                                                                                                                                                                                                                          -	desc: "noDesc",
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
                                                                                                                                                                                                                                          -		var desc = params[0];
                                                                                                                                                                                                                                          -		var feedURL = params[1];
                                                                                                                                                                                                                                          -		var toFilter = (params[2] ? true : false);
                                                                                                                                                                                                                                          -		var filterString = (toFilter?(params[2].substr(0,1) == ' '? tiddler.title:params[2]):'');
                                                                                                                                                                                                                                          -		var place = createTiddlyElement(place, "div", "RSSReader");
                                                                                                                                                                                                                                          -		wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\n",place);
                                                                                                                                                                                                                                          -		if (this.cache[feedURL]) {
                                                                                                                                                                                                                                          -			this.displayRssFeed(this.cache[feedURL], feedURL, place, desc, toFilter, filterString);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			var r = loadRemoteFile(feedURL,config.macros.rssReader.processResponse, [place, desc, toFilter, filterString]);
                                                                                                                                                                                                                                          -			if (typeof r == "string")
                                                                                                                                                                                                                                          -				displayMessage(r);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// callback for loadRemoteFile 
                                                                                                                                                                                                                                          -	// params : [place, desc, toFilter, filterString]
                                                                                                                                                                                                                                          -	processResponse: function(status, params, responseText, url, xhr) { // feedURL, place, desc, toFilter, filterString) {	
                                                                                                                                                                                                                                          -		if (window.netscape){
                                                                                                                                                                                                                                          -			try {
                                                                                                                                                                                                                                          -				if (document.location.protocol.indexOf("http") == -1) {
                                                                                                                                                                                                                                          -					netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			catch (e) { displayMessage(e.description?e.description:e.toString()); }
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (xhr.status == httpStatus.NotFound)
                                                                                                                                                                                                                                          -		 {
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -			return;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (!status)
                                                                                                                                                                                                                                          -		 {
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -			return;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (xhr.responseXML) {
                                                                                                                                                                                                                                          -			// response is interpreted as XML
                                                                                                                                                                                                                                          -			config.macros.rssReader.cache[url] = xhr.responseXML;
                                                                                                                                                                                                                                          -			config.macros.rssReader.displayRssFeed(xhr.responseXML, params[0], url, params[1], params[2], params[3]);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			if (responseText.substr(0,5) == "<?xml") {
                                                                                                                                                                                                                                          -				// response exists but not return as XML -> try to parse it 
                                                                                                                                                                                                                                          -				var dom = (new DOMParser()).parseFromString(responseText, "text/xml"); 
                                                                                                                                                                                                                                          -				if (dom) {
                                                                                                                                                                                                                                          -					// parsing successful so use it
                                                                                                                                                                                                                                          -					config.macros.rssReader.cache[url] = dom;
                                                                                                                                                                                                                                          -					config.macros.rssReader.displayRssFeed(dom, params[0], url, params[1], params[2], params[3]);
                                                                                                                                                                                                                                          -					return;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			// no XML display as html 
                                                                                                                                                                                                                                          -			wikify("<html>" + responseText + "</html>", params[0]);
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.msg.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// explore down the DOM tree
                                                                                                                                                                                                                                          -	displayRssFeed: function(xml, place, feedURL, desc, toFilter, filterString){
                                                                                                                                                                                                                                          -		// Channel
                                                                                                                                                                                                                                          -		var chanelNode = xml.getElementsByTagName('channel').item(0);
                                                                                                                                                                                                                                          -		var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null);
                                                                                                                                                                                                                                          -		var chanelTitle = "";
                                                                                                                                                                                                                                          -		if ((chanelTitleElement) && (chanelTitleElement.firstChild)) 
                                                                                                                                                                                                                                          -			chanelTitle = chanelTitleElement.firstChild.nodeValue;
                                                                                                                                                                                                                                          -		var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null);
                                                                                                                                                                                                                                          -		var chanelLink = "";
                                                                                                                                                                                                                                          -		if (chanelLinkElement) 
                                                                                                                                                                                                                                          -			chanelLink = chanelLinkElement.firstChild.nodeValue;
                                                                                                                                                                                                                                          -		var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\n";
                                                                                                                                                                                                                                          -		var title = createTiddlyElement(place,"div",null,"ChanelTitle",null);
                                                                                                                                                                                                                                          -		wikify(titleTxt,title);
                                                                                                                                                                                                                                          -		// ItemList
                                                                                                                                                                                                                                          -		var itemList = xml.getElementsByTagName('item');
                                                                                                                                                                                                                                          -		var article = createTiddlyElement(place,"ul",null,null,null);
                                                                                                                                                                                                                                          -		var lastDate;
                                                                                                                                                                                                                                          -		var re;
                                                                                                                                                                                                                                          -		if (toFilter) 
                                                                                                                                                                                                                                          -			re = new RegExp(filterString.escapeRegExp());
                                                                                                                                                                                                                                          -		for (var i=0; i<itemList.length; i++){
                                                                                                                                                                                                                                          -			var titleElm = itemList[i].getElementsByTagName('title').item(0);
                                                                                                                                                                                                                                          -			var titleText = (titleElm ? titleElm.firstChild.nodeValue : '');
                                                                                                                                                                                                                                          -			if (toFilter && ! titleText.match(re)) {
                                                                                                                                                                                                                                          -				continue;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var descText = '';
                                                                                                                                                                                                                                          -			descElem = itemList[i].getElementsByTagName('description').item(0);
                                                                                                                                                                                                                                          -			if (descElem){
                                                                                                                                                                                                                                          -				try{
                                                                                                                                                                                                                                          -					for (var ii=0; ii<descElem.childNodes.length; ii++) {
                                                                                                                                                                                                                                          -						descText += descElem.childNodes[ii].nodeValue;
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				catch(e){}
                                                                                                                                                                                                                                          -				descText = descText.replace(/<br \/>/g,'\n');
                                                                                                                                                                                                                                          -				if (desc == "asHtml")
                                                                                                                                                                                                                                          -					descText = "<html>"+descText+"</html>";
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var linkElm = itemList[i].getElementsByTagName("link").item(0);
                                                                                                                                                                                                                                          -			var linkURL = linkElm.firstChild.nodeValue;
                                                                                                                                                                                                                                          -			var pubElm = itemList[i].getElementsByTagName('pubDate').item(0);
                                                                                                                                                                                                                                          -			var pubDate;
                                                                                                                                                                                                                                          -			if (!pubElm) {
                                                                                                                                                                                                                                          -				pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us
                                                                                                                                                                                                                                          -				if (pubElm) {
                                                                                                                                                                                                                                          -					pubDate = pubElm.firstChild.nodeValue;
                                                                                                                                                                                                                                          -					pubDate = this.formatDateString(this.dateFormat, pubDate);
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -					else {
                                                                                                                                                                                                                                          -						pubDate = '0';
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			else {
                                                                                                                                                                                                                                          -				pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0);
                                                                                                                                                                                                                                          -				pubDate = this.formatDate(this.dateFormat, pubDate);
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			titleText = titleText.replace(/\[|\]/g,'');
                                                                                                                                                                                                                                          -			var rssText = '*'+'[[' + titleText + '|' + linkURL + ']]' + '' ;
                                                                                                                                                                                                                                          -			if ((desc != "noDesc") && descText){
                                                                                                                                                                                                                                          -				rssText = rssText.replace(/\n/g,' ');
                                                                                                                                                                                                                                          -				descText = '@@'+this.itemStyle+descText + '@@\n';				
                                                                                                                                                                                                                                          -				if (version.extensions.nestedSliders){
                                                                                                                                                                                                                                          -					descText = '+++[...]' + descText + '===';
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				rssText = rssText + descText;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var story;
                                                                                                                                                                                                                                          -			if ((lastDate != pubDate) && ( pubDate != '0')) {
                                                                                                                                                                                                                                          -				story = createTiddlyElement(article,"li",null,"RSSItem",pubDate);
                                                                                                                                                                                                                                          -				lastDate = pubDate;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else {
                                                                                                                                                                                                                                          -				lastDate = pubDate;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			story = createTiddlyElement(article,"div",null,"RSSItem",null);
                                                                                                                                                                                                                                          -			wikify(rssText,story);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	formatDate: function(template, date){
                                                                                                                                                                                                                                          -		var dateString = new Date(date);
                                                                                                                                                                                                                                          -		// template = template.replace(/hh|mm|ss/g,'');
                                                                                                                                                                                                                                          -		return dateString.formatString(template);
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	formatDateString: function(template, date){
                                                                                                                                                                                                                                          -		var dateString = new Date(date.substr(0,4), date.substr(5,2) - 1, date.substr(8,2)
                                                                                                                                                                                                                                          -			);
                                                                                                                                                                                                                                          -		return dateString.formatString(template);
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.rssFeedUpdate = {
                                                                                                                                                                                                                                          -	label: "Update",
                                                                                                                                                                                                                                          -	prompt: "Clear the cache and redisplay this RssFeed",
                                                                                                                                                                                                                                          -	handler: function(place,macroName,params) {
                                                                                                                                                                                                                                          -		var feedURL = params[0];
                                                                                                                                                                                                                                          -		var tiddlerTitle = params[1];
                                                                                                                                                                                                                                          -		createTiddlyButton(place, this.label, this.prompt, 
                                                                                                                                                                                                                                          -			function () {
                                                                                                                                                                                                                                          -				if (config.macros.rssReader.cache[feedURL]) {
                                                                                                                                                                                                                                          -					config.macros.rssReader.cache[feedURL] = null; 
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			story.refreshTiddler(tiddlerTitle,null, true);
                                                                                                                                                                                                                                          -		return false;});
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          //last update: RSSReaderPlugin v 1.1.1//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Description
                                                                                                                                                                                                                                          -This plugin provides a RSSReader for TiddlyWiki
                                                                                                                                                                                                                                          -* It accesses asynchronously an RSSFeed
                                                                                                                                                                                                                                          -*Depending on the chanel item format, each item could be written as :
                                                                                                                                                                                                                                          -**simple text wikified
                                                                                                                                                                                                                                          -**html
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Usage
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<rssReader noDesc|asHtml|asText rssUrl ['filtering string']>>
                                                                                                                                                                                                                                          -	noDesc: only title of item is printed
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	asHtml: if you know that description contain html (links, img ...), 
                                                                                                                                                                                                                                          -		the text is enclosed with <html> </html> tags
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - 	asText: if the description should not be interpreted as html the 
                                                                                                                                                                                                                                          -		description is wikified
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	rssUrl: the rssFeed url that could be accessed. 
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	'filtering string': if present, the rssfeed item title must contained 
                                                                                                                                                                                                                                          -		this string to be displayed. 
                                                                                                                                                                                                                                          -		If 'filering string' contained space characters only, the tiddler 
                                                                                                                                                                                                                                          -		title is used for filtering.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -For security reasons, if the TiddlyWiki is accessed from http, a ProxyService should be used to access an rssFeed from an other site.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!examples
                                                                                                                                                                                                                                          -| !reader | !RSSFeed type | !working from |
                                                                                                                                                                                                                                          -| BidiXTWRSS | Description asHtml | file: or tiddlywiki.bidix.info |
                                                                                                                                                                                                                                          -| [[Le Monde]] | Description asText | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| YahooNewsSport | Description asHtml | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| TiddlyWikiRSS | Description asHtml | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| [[Libération]] | noDesc | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| [[TestComment]] | asText and filters | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -see : <<tag RSSFeed>> for the full list.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Revision history
                                                                                                                                                                                                                                          -* V1.1.0 (2207/04/13)
                                                                                                                                                                                                                                          -**No more import functions
                                                                                                                                                                                                                                          -* V1.0.0 (2006/11/11)
                                                                                                                                                                                                                                          -**refactoring using core loadRemoteFile function
                                                                                                                                                                                                                                          -**import using new tiddlywiki:tiddler element
                                                                                                                                                                                                                                          -**import and presentation preserved without EricShulman's NestedSliderPlugin
                                                                                                                                                                                                                                          -**better display of items 
                                                                                                                                                                                                                                          -* v0.3.0 (24/08/2006)
                                                                                                                                                                                                                                          -** Filter on RSS item title
                                                                                                                                                                                                                                          -** Place to display redefined for asynchronous processing
                                                                                                                                                                                                                                          -* v0.2.2 (22/08/2006)
                                                                                                                                                                                                                                          -**Haloscan feed has no pubDate.
                                                                                                                                                                                                                                          -* v0.2.1 (08/05/2006)
                                                                                                                                                                                                                                          -* v0.2.0 (01/05/2006)
                                                                                                                                                                                                                                          -**Small adapations for del.icio.us feed
                                                                                                                                                                                                                                          -* v0.1.1 (28/04/2006)
                                                                                                                                                                                                                                          -**Bug : Channel without title 
                                                                                                                                                                                                                                          -* v0.1.0 (24/04/2006)
                                                                                                                                                                                                                                          -** initial release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -|Name|SplashScreenPlugin|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#SplashScreenPlugin|
                                                                                                                                                                                                                                          -|Version|0.21 |
                                                                                                                                                                                                                                          -|Requires|~TW2.08+|
                                                                                                                                                                                                                                          -!Description:
                                                                                                                                                                                                                                          -Provides a simple splash screen that is visible while the TW is loading.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Installation
                                                                                                                                                                                                                                          -Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Customizing
                                                                                                                                                                                                                                          -Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!History
                                                                                                                                                                                                                                          -* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
                                                                                                                                                                                                                                          -* 26-06-06 : version 0.2, first release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var old_lewcid_splash_restart=restart;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -restart = function()
                                                                                                                                                                                                                                          -{   if (document.getElementById("SplashScreen"))
                                                                                                                                                                                                                                          -        document.getElementById("SplashScreen").style.display = "none";
                                                                                                                                                                                                                                          -      if (document.getElementById("contentWrapper"))
                                                                                                                                                                                                                                          -        document.getElementById("contentWrapper").style.display = "block";
                                                                                                                                                                                                                                          -    
                                                                                                                                                                                                                                          -    old_lewcid_splash_restart();
                                                                                                                                                                                                                                          -   
                                                                                                                                                                                                                                          -    if (splashScreenInstall)
                                                                                                                                                                                                                                          -       {if(config.options.chkAutoSave)
                                                                                                                                                                                                                                          -			{saveChanges();}
                                                                                                                                                                                                                                          -        displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
                                                                                                                                                                                                                                          -        }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var oldText = store.getTiddlerText("MarkupPreHead");
                                                                                                                                                                                                                                          -if (oldText.indexOf("SplashScreen")==-1)
                                                                                                                                                                                                                                          -   {var siteTitle = store.getTiddlerText("SiteTitle");
                                                                                                                                                                                                                                          -   var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
                                                                                                                                                                                                                                          -   if (! store.tiddlerExists("MarkupPreHead"))
                                                                                                                                                                                                                                          -       {var myTiddler = store.createTiddler("MarkupPreHead");}
                                                                                                                                                                                                                                          -   else
                                                                                                                                                                                                                                          -      {var myTiddler = store.getTiddler("MarkupPreHead");}
                                                                                                                                                                                                                                          -      myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
                                                                                                                                                                                                                                          -      store.setDirty(true);
                                                                                                                                                                                                                                          -      var splashScreenInstall = true;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -/* a contrasting background so I can see where one tiddler ends and the other begins */
                                                                                                                                                                                                                                          -body {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* sexy colours and font for the header */
                                                                                                                                                                                                                                          -.headerForeground {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerShadow, .headerShadow a {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerForeground, .headerShadow {
                                                                                                                                                                                                                                          -	padding: 1em 1em 0;
                                                                                                                                                                                                                                          -	font-family: 'Trebuchet MS' sans-serif;
                                                                                                                                                                                                                                          -	font-weight:bold;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerForeground .siteSubtitle {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerShadow .siteSubtitle {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make shadow go and down right instead of up and left */
                                                                                                                                                                                                                                          -.headerShadow {
                                                                                                                                                                                                                                          -	left: 2px;
                                                                                                                                                                                                                                          -	top: 3px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* prefer monospace for editing */
                                                                                                                                                                                                                                          -.editor textarea {
                                                                                                                                                                                                                                          -	font-family: 'Consolas' monospace;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* sexy tiddler titles */
                                                                                                                                                                                                                                          -.title {
                                                                                                                                                                                                                                          -	font-size: 250%;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -	font-family: 'Trebuchet MS' sans-serif;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* more subtle tiddler subtitle */
                                                                                                                                                                                                                                          -.subtitle {
                                                                                                                                                                                                                                          -	padding:0px;
                                                                                                                                                                                                                                          -	margin:0px;
                                                                                                                                                                                                                                          -	padding-left:0.5em;
                                                                                                                                                                                                                                          -	font-size: 90%;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::TertiaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.subtitle .tiddlyLink {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::TertiaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* a little bit of extra whitespace */
                                                                                                                                                                                                                                          -.viewer {
                                                                                                                                                                                                                                          -	padding-bottom:3px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* don't want any background color for headings */
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::Background]];
                                                                                                                                                                                                                                          -	color: [[ColorPalette::Foreground]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* give tiddlers 3d style border and explicit background */
                                                                                                                                                                                                                                          -.tiddler {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::Background]];
                                                                                                                                                                                                                                          -	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
                                                                                                                                                                                                                                          -	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
                                                                                                                                                                                                                                          -	margin-bottom: 1em;
                                                                                                                                                                                                                                          -	padding-bottom: 2em;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make options slider look nicer */
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {
                                                                                                                                                                                                                                          -	border:solid 1px [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* the borders look wrong with the body background */
                                                                                                                                                                                                                                          -#sidebar .button {
                                                                                                                                                                                                                                          -	border-style: none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* displays the list of a tiddler's tags horizontally. used in ViewTemplate */
                                                                                                                                                                                                                                          -.tagglyTagged li.listTitle {
                                                                                                                                                                                                                                          -	display:none
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tagglyTagged li {
                                                                                                                                                                                                                                          -	display: inline; font-size:90%;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tagglyTagged ul {
                                                                                                                                                                                                                                          -	margin:0px; padding:0px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* this means you can put line breaks in SidebarOptions for readability */
                                                                                                                                                                                                                                          -#sidebarOptions br {
                                                                                                                                                                                                                                          -	display:none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/* undo the above in OptionsPanel */
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel br {
                                                                                                                                                                                                                                          -	display:inline;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* horizontal main menu stuff */
                                                                                                                                                                                                                                          -#displayArea {
                                                                                                                                                                                                                                          -	margin: 1em 15.7em 0em 1em; /* use the freed up space */
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu br {
                                                                                                                                                                                                                                          -	display: none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -	color:[[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu {
                                                                                                                                                                                                                                          -	padding:2px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
                                                                                                                                                                                                                                          -	margin-left: 0.5em;
                                                                                                                                                                                                                                          -	margin-right: 0.5em;
                                                                                                                                                                                                                                          -	padding-left: 3px;
                                                                                                                                                                                                                                          -	padding-right: 3px;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -	font-size: 115%;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu .button:hover, #topMenu .tiddlyLink:hover {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::PrimaryDark]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make it print a little cleaner */
                                                                                                                                                                                                                                          -@media print {
                                                                                                                                                                                                                                          -	#topMenu {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	/* not sure if we need all the importants */
                                                                                                                                                                                                                                          -	.tiddler {
                                                                                                                                                                                                                                          -		border-style: none ! important;
                                                                                                                                                                                                                                          -		margin:0px ! important;
                                                                                                                                                                                                                                          -		padding:0px ! important;
                                                                                                                                                                                                                                          -		padding-bottom:2em ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.tagglyTagging .button, .tagglyTagging .hidebutton {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.headerShadow {
                                                                                                                                                                                                                                          -		visibility: hidden ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.tagglyTagged .quickopentag, .tagged .quickopentag {
                                                                                                                                                                                                                                          -		border-style: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.quickopentag a.button, .miniTag {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <<timeline better:true maxDays:14 maxEntries:20>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|TaskMacroPlugin|
                                                                                                                                                                                                                                          -|Author|<<extension TaskMacroPlugin author>>|
                                                                                                                                                                                                                                          -|Location|<<extension TaskMacroPlugin source>>|
                                                                                                                                                                                                                                          -|License|<<extension TaskMacroPlugin license>>|
                                                                                                                                                                                                                                          -|Version|<<extension TaskMacroPlugin versionAndDate>>|
                                                                                                                                                                                                                                          -!Description
                                                                                                                                                                                                                                          -A set of macros to help you keep track of time estimates for tasks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Macros defined:
                                                                                                                                                                                                                                          -* {{{task}}}: Displays a task description and makes it easy to estimate and track the time spent on the task.
                                                                                                                                                                                                                                          -* {{{taskadder}}}: Displays text entry field to simplify the adding of tasks.
                                                                                                                                                                                                                                          -* {{{tasksum}}}: Displays a summary of tasks sandwiched between two calls to this macro.
                                                                                                                                                                                                                                          -* {{{extension}}}: A simple little macro that displays information about a TiddlyWiki plugin, and that will hopefully someday migrate to the TW core in some form.
                                                                                                                                                                                                                                          -Core overrides:
                                                                                                                                                                                                                                          -* {{{wikify}}}: when wikifying a tiddler's complete text, adds refresh information so the tiddler will be refreshed when it changes
                                                                                                                                                                                                                                          -* {{{config.refreshers}}}: have the built-in refreshers return true; also, add a new refresher ("fullContent") that redisplays a full tiddler whenever it or any nested tiddlers it shows are changed
                                                                                                                                                                                                                                          -* {{{refreshElements}}}: now checks the return value from the refresher and only short-circuits the recursion if the refresher returns true
                                                                                                                                                                                                                                          -!Plugin Information
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.TaskMacroPlugin = {
                                                                                                                                                                                                                                          -	major: 1, minor: 1, revision: 0,
                                                                                                                                                                                                                                          -	date: new Date(2006,5-1,13),
                                                                                                                                                                                                                                          -	author: "LukeBlanshard",
                                                                                                                                                                                                                                          -	source: "http://labwiki.sourceforge.net/#TaskMacroPlugin",
                                                                                                                                                                                                                                          -	license: "http://labwiki.sourceforge.net/#CopyrightAndLicense"
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -A little macro for pulling out extension info.  Use like {{{<<extension PluginName datum>>}}}, where {{{PluginName}}} is the name you used for {{{version.extensions}}} and {{{datum}}} is either {{{versionAndDate}}} or a property of the extension description object, such as {{{source}}}.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.extension = {
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler ) {
                                                                                                                                                                                                                                          -		var info  = version.extensions[params[0]]
                                                                                                                                                                                                                                          -		var datum = params[1]
                                                                                                                                                                                                                                          -		switch (params[1]) {
                                                                                                                                                                                                                                          -		case 'versionAndDate':
                                                                                                                                                                                                                                          -			createTiddlyElement( place, "span", null, null,
                                                                                                                                                                                                                                          -				info.major+'.'+info.minor+'.'+info.revision+', '+info.date.formatString('DD MMM YYYY') )
                                                                                                                                                                                                                                          -			break;
                                                                                                                                                                                                                                          -		default:
                                                                                                                                                                                                                                          -			wikify( info[datum], place )
                                                                                                                                                                                                                                          -			break;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Core Overrides
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -window.wikify_orig_TaskMacroPlugin = window.wikify
                                                                                                                                                                                                                                          -window.wikify = function(source,output,highlightRegExp,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	if ( tiddler && tiddler.text === source )
                                                                                                                                                                                                                                          -		addDisplayDependency( output, tiddler.title )
                                                                                                                                                                                                                                          -	wikify_orig_TaskMacroPlugin.apply( this, arguments )
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -config.refreshers_orig_TaskMacroPlugin = config.refreshers
                                                                                                                                                                                                                                          -config.refreshers = {
                                                                                                                                                                                                                                          -	link: function() {
                                                                                                                                                                                                                                          -		config.refreshers_orig_TaskMacroPlugin.link.apply( this, arguments )
                                                                                                                                                                                                                                          -		return true
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	content: function() {
                                                                                                                                                                                                                                          -		config.refreshers_orig_TaskMacroPlugin.content.apply( this, arguments )
                                                                                                                                                                                                                                          -		return true
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	fullContent: function( e, changeList ) {
                                                                                                                                                                                                                                          -		var tiddlers = e.refreshTiddlers
                                                                                                                                                                                                                                          -		if ( changeList == null || tiddlers == null )
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		for ( var i=0; i < tiddlers.length; ++i )
                                                                                                                                                                                                                                          -			if ( changeList.find(tiddlers[i]) != null ) {
                                                                                                                                                                                                                                          -				var title = tiddlers[0]
                                                                                                                                                                                                                                          -				story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -				return true
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		return false
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -function refreshElements(root,changeList)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var nodes = root.childNodes;
                                                                                                                                                                                                                                          -	for(var c=0; c<nodes.length; c++)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var e = nodes[c],type;
                                                                                                                                                                                                                                          -		if(e.getAttribute)
                                                                                                                                                                                                                                          -			type = e.getAttribute("refresh");
                                                                                                                                                                                                                                          -		else
                                                                                                                                                                                                                                          -			type = null;
                                                                                                                                                                                                                                          -		var refresher = config.refreshers[type];
                                                                                                                                                                                                                                          -		if ( ! refresher || ! refresher(e, changeList) )
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			if(e.hasChildNodes())
                                                                                                                                                                                                                                          -				refreshElements(e,changeList);
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Global Functions
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -// Add the tiddler whose title is given to the list of tiddlers whose
                                                                                                                                                                                                                                          -// changing will cause a refresh of the tiddler containing the given element.
                                                                                                                                                                                                                                          -function addDisplayDependency( element, title ) {
                                                                                                                                                                                                                                          -	while ( element && element.getAttribute ) {
                                                                                                                                                                                                                                          -		var idAttr = element.getAttribute("id"), tiddlerAttr = element.getAttribute("tiddler")
                                                                                                                                                                                                                                          -		if ( idAttr && tiddlerAttr && idAttr == story.idPrefix+tiddlerAttr ) {
                                                                                                                                                                                                                                          -			var list = element.refreshTiddlers
                                                                                                                                                                                                                                          -			if ( list == null ) {
                                                                                                                                                                                                                                          -				list = [tiddlerAttr]
                                                                                                                                                                                                                                          -				element.refreshTiddlers = list
                                                                                                                                                                                                                                          -				element.setAttribute( "refresh", "fullContent" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			list.pushUnique( title )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		element = element.parentNode
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Lifted from Story.prototype.focusTiddler: just return the field instead of focusing it.
                                                                                                                                                                                                                                          -Story.prototype.findEditField = function( title, field )
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var tiddler = document.getElementById(this.idPrefix + title);
                                                                                                                                                                                                                                          -	if(tiddler != null)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var children = tiddler.getElementsByTagName("*")
                                                                                                                                                                                                                                          -		var e = null;
                                                                                                                                                                                                                                          -		for (var t=0; t<children.length; t++)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			var c = children[t];
                                                                                                                                                                                                                                          -			if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")
                                                                                                                                                                                                                                          -				{
                                                                                                                                                                                                                                          -				if(!e)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				if(c.getAttribute("edit") == field)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		return e
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Wraps the given event function in another function that handles the
                                                                                                                                                                                                                                          -// event in a standard way.
                                                                                                                                                                                                                                          -function wrapEventHandler( otherHandler ) {
                                                                                                                                                                                                                                          -	return function(e) {
                                                                                                                                                                                                                                          -		if (!e) var e = window.event
                                                                                                                                                                                                                                          -		e.cancelBubble = true
                                                                                                                                                                                                                                          -		if (e.stopPropagation) e.stopPropagation()
                                                                                                                                                                                                                                          -		return otherHandler( e )
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Task Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<task orig cur spent>>description}}}
                                                                                                                                                                                                                                          -All of orig, cur, and spent are optional numbers of hours.  The description goes through the end of the line, and is wikified.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.task = {
                                                                                                                                                                                                                                          -	NASCENT:	0, // Task not yet estimated
                                                                                                                                                                                                                                          -	LIVE:		1, // Estimated but with time remaining
                                                                                                                                                                                                                                          -	DONE:		2, // Completed: no time remaining
                                                                                                                                                                                                                                          -	bullets:	["\u25cb", // nascent (open circle)
                                                                                                                                                                                                                                          -			 "\u25ba", // live (right arrow)
                                                                                                                                                                                                                                          -			 "\u25a0"],// done (black square)
                                                                                                                                                                                                                                          -	styles:		["nascent", "live", "done"],
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		spentTooBig:	"Spent time %0 can't exceed current estimate %1",
                                                                                                                                                                                                                                          -		noNegative:	"Times may not be negative numbers",
                                                                                                                                                                                                                                          -		statusTips:	["Not yet estimated", "To do", "Done"], // Array indexed by state (NASCENT/LIVE/DONE)
                                                                                                                                                                                                                                          -		descClickTip:	" -- Double-click to edit task description",
                                                                                                                                                                                                                                          -		statusClickTip:	" -- Double-click to mark task complete",
                                                                                                                                                                                                                                          -		statusDoneTip:	" -- Double-click to adjust the time spent, to revive the task",
                                                                                                                                                                                                                                          -		origTip:	"Original estimate in hours",
                                                                                                                                                                                                                                          -		curTip:		"Current estimate in hours",
                                                                                                                                                                                                                                          -		curTip2:	"Estimate in hours", // For when orig == cur
                                                                                                                                                                                                                                          -		clickTip:	" -- Click to adjust",
                                                                                                                                                                                                                                          -		spentTip:	"Hours spent on this task",
                                                                                                                                                                                                                                          -		remTip:		"Hours remaining",
                                                                                                                                                                                                                                          -		curPrompt:	"Estimate this task in hours, or adjust the current estimate by starting with + or -.\n\nYou may optionally also set or adjust the time spent by putting a second number after the first.",
                                                                                                                                                                                                                                          -		spentPrompt:	"Enter the number of hours you've spent on this task, or adjust the current number by starting with + or -.\n\nYou may optionally also set or adjust the time remaining by putting a second number after the first.",
                                                                                                                                                                                                                                          -		remPrompt:	"Enter the number of hours it will take to finish this task, or adjust the current estimate by starting with + or -.\n\nYou may optionally also set or adjust the time spent by putting a second number after the first.",
                                                                                                                                                                                                                                          -		numbersOnly:	"Enter numbers only, please",
                                                                                                                                                                                                                                          -		notCurrent:	"The tiddler has been modified since it was displayed, please redisplay it before doing this."
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var start = wikifier.matchStart, end = wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var origStr	= params.length > 0? params.shift() : "?"
                                                                                                                                                                                                                                          -		var orig	= +origStr // as a number
                                                                                                                                                                                                                                          -		var cur		= params.length > 1? +params.shift() : orig
                                                                                                                                                                                                                                          -		var spent	= params.length > 0? +params.shift() : 0
                                                                                                                                                                                                                                          -		if ( spent > cur )
                                                                                                                                                                                                                                          -			throw Error( this.lingo.spentTooBig.format([spent, cur]) )
                                                                                                                                                                                                                                          -		if ( orig < 0 || cur < 0 || spent < 0 )
                                                                                                                                                                                                                                          -			throw Error( this.lingo.noNegative )
                                                                                                                                                                                                                                          -		var rem		= cur - spent
                                                                                                                                                                                                                                          -		var state	= isNaN(orig+rem)? this.NASCENT : rem > 0? this.LIVE : this.DONE
                                                                                                                                                                                                                                          -		var table	= createTiddlyElement( place, "table", null, "task "+this.styles[state] )
                                                                                                                                                                                                                                          -		var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -		var row		= createTiddlyElement( tbody, "tr" )
                                                                                                                                                                                                                                          -		var statusCell	= createTiddlyElement( row,   "td", null, "status", this.bullets[state] )
                                                                                                                                                                                                                                          -		var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var origCell	= state==this.NASCENT || orig==cur? null
                                                                                                                                                                                                                                          -				: createTiddlyElement( row, "td", null, "numeric original" )
                                                                                                                                                                                                                                          -		var curCell	= createTiddlyElement( row, "td", null, "numeric current" )
                                                                                                                                                                                                                                          -		var spentCell	= createTiddlyElement( row, "td", null, "numeric spent" )
                                                                                                                                                                                                                                          -		var remCell	= createTiddlyElement( row, "td", null, "numeric remaining" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var sums = config.macros.tasksum.tasksums
                                                                                                                                                                                                                                          -		if ( sums && sums.length ) {
                                                                                                                                                                                                                                          -			var summary = [(state == this.NASCENT? NaN : orig), cur, spent]
                                                                                                                                                                                                                                          -			summary.owner = tiddler
                                                                                                                                                                                                                                          -			sums[0].push( summary )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// The description goes to the end of the line
                                                                                                                                                                                                                                          -		wikifier.subWikify( descCell, "$\\n?" )
                                                                                                                                                                                                                                          -		var descEnd = wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		statusCell.setAttribute( "title", this.lingo.statusTips[state] )
                                                                                                                                                                                                                                          -		descCell.setAttribute(   "title", this.lingo.statusTips[state]+this.lingo.descClickTip )
                                                                                                                                                                                                                                          -		if (origCell) {
                                                                                                                                                                                                                                          -			createTiddlyElement( origCell, "div", null, null, orig )
                                                                                                                                                                                                                                          -			origCell.setAttribute( "title", this.lingo.origTip )
                                                                                                                                                                                                                                          -			curCell.setAttribute( "title", this.lingo.curTip )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			curCell.setAttribute( "title", this.lingo.curTip2 )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		var curDivContents = (state==this.NASCENT)? "?" : cur
                                                                                                                                                                                                                                          -		var curDiv = createTiddlyElement( curCell, "div", null, null, curDivContents )
                                                                                                                                                                                                                                          -		spentCell.setAttribute( "title", this.lingo.spentTip )
                                                                                                                                                                                                                                          -		var spentDiv = createTiddlyElement( spentCell, "div", null, null, spent )
                                                                                                                                                                                                                                          -		remCell.setAttribute( "title", this.lingo.remTip )
                                                                                                                                                                                                                                          -		var remDiv = createTiddlyElement( remCell, "div", null, null, rem )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// Handle double-click on the description by going
                                                                                                                                                                                                                                          -		// into edit mode and selecting the description
                                                                                                                                                                                                                                          -		descCell.ondblclick = this.editDescription( tiddler, end, descEnd )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		function appTitle( el, suffix ) {
                                                                                                                                                                                                                                          -			el.setAttribute( "title", el.getAttribute("title")+suffix )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// For incomplete tasks, handle double-click on the bullet by marking the task complete
                                                                                                                                                                                                                                          -		if ( state != this.DONE ) {
                                                                                                                                                                                                                                          -			appTitle( statusCell, this.lingo.statusClickTip )
                                                                                                                                                                                                                                          -			statusCell.ondblclick = this.markTaskComplete( tiddler, start, end, macroName, orig, cur, state )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		// For complete ones, handle double-click on the bullet by letting you adjust the time spent
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			appTitle( statusCell, this.lingo.statusDoneTip )
                                                                                                                                                                                                                                          -			statusCell.ondblclick = this.adjustTimeSpent( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// Add click handlers for the numeric cells.
                                                                                                                                                                                                                                          -		if ( state != this.DONE ) {
                                                                                                                                                                                                                                          -			appTitle( curCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -			curDiv.className = "adjustable"
                                                                                                                                                                                                                                          -			curDiv.onclick = this.adjustCurrentEstimate( tiddler, start, end, macroName,
                                                                                                                                                                                                                                          -				orig, cur, spent, curDivContents )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		appTitle( spentCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -		spentDiv.className = "adjustable"
                                                                                                                                                                                                                                          -		spentDiv.onclick = this.adjustTimeSpent( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		if ( state == this.LIVE ) {
                                                                                                                                                                                                                                          -			appTitle( remCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -			remDiv.className = "adjustable"
                                                                                                                                                                                                                                          -			remDiv.onclick = this.adjustTimeRemaining( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Puts the tiddler into edit mode, and selects the range of characters
                                                                                                                                                                                                                                          -	// defined by start and end.  Separated for leak prevention in IE.
                                                                                                                                                                                                                                          -	editDescription: function( tiddler, start, end ) {
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			story.displayTiddler( null, tiddler.title, DEFAULT_EDIT_TEMPLATE )
                                                                                                                                                                                                                                          -			var tiddlerElement = document.getElementById( story.idPrefix + tiddler.title )
                                                                                                                                                                                                                                          -			window.scrollTo( 0, ensureVisible(tiddlerElement) )
                                                                                                                                                                                                                                          -			var element = story.findEditField( tiddler.title, "text" )
                                                                                                                                                                                                                                          -			if ( element && element.tagName.toLowerCase() == "textarea" ) {
                                                                                                                                                                                                                                          -				// Back up one char if the last char's a newline
                                                                                                                                                                                                                                          -				if ( tiddler.text[end-1] == '\n' )
                                                                                                                                                                                                                                          -					--end
                                                                                                                                                                                                                                          -				element.focus()
                                                                                                                                                                                                                                          -				if ( element.setSelectionRange != undefined ) { // Mozilla
                                                                                                                                                                                                                                          -					element.setSelectionRange( start, end )
                                                                                                                                                                                                                                          -					// Damn mozilla doesn't scroll to visible.  Approximate.
                                                                                                                                                                                                                                          -					var max = 0.0 + element.scrollHeight
                                                                                                                                                                                                                                          -					var len = element.textLength
                                                                                                                                                                                                                                          -					var top = max*start/len, bot = max*end/len
                                                                                                                                                                                                                                          -					element.scrollTop = Math.min( top, (bot+top-element.clientHeight)/2 )
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else if ( element.createTextRange != undefined ) { // IE
                                                                                                                                                                                                                                          -					var range = element.createTextRange()
                                                                                                                                                                                                                                          -					range.collapse()
                                                                                                                                                                                                                                          -					range.moveEnd("character", end)
                                                                                                                                                                                                                                          -					range.moveStart("character", start)
                                                                                                                                                                                                                                          -					range.select()
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else // Other? Too bad, just select the whole thing.
                                                                                                                                                                                                                                          -					element.select()
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else
                                                                                                                                                                                                                                          -				return true
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Modifies a task macro call such that the task appears complete.
                                                                                                                                                                                                                                          -	markTaskComplete: function( tiddler, start, end, macroName, orig, cur, state ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( state == macro.NASCENT )
                                                                                                                                                                                                                                          -				orig = cur = 0
                                                                                                                                                                                                                                          -			// The second "cur" in the call below bumps up the time spent
                                                                                                                                                                                                                                          -			// to match the current estimate.
                                                                                                                                                                                                                                          -			macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, cur )
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the current estimate, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustCurrentEstimate: function( tiddler, start, end, macroName, orig, cur, spent, curDivContents ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.curPrompt, curDivContents )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				cur = macro.offset( cur, a[0] )
                                                                                                                                                                                                                                          -				if ( a.length > 1 )
                                                                                                                                                                                                                                          -					spent = macro.offset( spent, a[1] )
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the time spent, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustTimeSpent: function( tiddler, start, end, macroName, orig, cur, spent ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.spentPrompt, spent )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				spent = macro.offset( spent, a[0] )
                                                                                                                                                                                                                                          -				var rem = cur - spent
                                                                                                                                                                                                                                          -				if ( a.length > 1 ) {
                                                                                                                                                                                                                                          -					rem = macro.offset( rem, a[1] )
                                                                                                                                                                                                                                          -					cur = spent + rem
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the time remaining, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustTimeRemaining: function( tiddler, start, end, macroName, orig, cur, spent ) {
                                                                                                                                                                                                                                          -		var macro = this
                                                                                                                                                                                                                                          -		var text  = tiddler.text
                                                                                                                                                                                                                                          -		var rem   = cur - spent
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.remPrompt, rem )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				var newRem = macro.offset( rem, a[0] )
                                                                                                                                                                                                                                          -				if ( newRem > rem || a.length > 1 )
                                                                                                                                                                                                                                          -					cur += (newRem - rem)
                                                                                                                                                                                                                                          -				else
                                                                                                                                                                                                                                          -					spent += (rem - newRem)
                                                                                                                                                                                                                                          -				if ( a.length > 1 )
                                                                                                                                                                                                                                          -					spent = macro.offset( spent, a[1] )
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Breaks input at spaces & commas, returns array
                                                                                                                                                                                                                                          -	breakInput: function( txt ) {
                                                                                                                                                                                                                                          -		var a = txt.trim().split( /[\s,]+/ )
                                                                                                                                                                                                                                          -		if ( a.length == 0 )
                                                                                                                                                                                                                                          -			a = [NaN]
                                                                                                                                                                                                                                          -		return a
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Adds to, subtracts from, or replaces a numeric value
                                                                                                                                                                                                                                          -	offset: function( num, txt ) {
                                                                                                                                                                                                                                          -		if ( txt == "" || typeof(txt) != "string" )
                                                                                                                                                                                                                                          -			return NaN
                                                                                                                                                                                                                                          -		if ( txt.match(/^[+-]/) )
                                                                                                                                                                                                                                          -			return num + (+txt)
                                                                                                                                                                                                                                          -		return +txt
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Does some error checking, then replaces the indicated macro
                                                                                                                                                                                                                                          -	// call within the text of the given tiddler.
                                                                                                                                                                                                                                          -	replaceMacroCall: function( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		if ( isNaN(cur+spent) ) {
                                                                                                                                                                                                                                          -			alert( this.lingo.numbersOnly )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if ( spent < 0 || cur < 0 ) {
                                                                                                                                                                                                                                          -			alert( this.lingo.noNegative )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if ( isNaN(orig) )
                                                                                                                                                                                                                                          -			orig = cur
                                                                                                                                                                                                                                          -		if ( spent > cur )
                                                                                                                                                                                                                                          -			cur = spent
                                                                                                                                                                                                                                          -		var text = tiddler.text.substring(0,start) + "<<" + macroName + " " +
                                                                                                                                                                                                                                          -			orig + " " + cur + " " + spent + ">>" + tiddler.text.substring(end)
                                                                                                                                                                                                                                          -		var title = tiddler.title
                                                                                                                                                                                                                                          -		store.saveTiddler( title, title, text, config.options.txtUserName, new Date(), undefined )
                                                                                                                                                                                                                                          -		//story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -		if ( config.options.chkAutoSave )
                                                                                                                                                                                                                                          -			saveChanges()
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Tasksum Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<tasksum "start" ["here" [intro]]>>}}}
                                                                                                                                                                                                                                          -or:
                                                                                                                                                                                                                                          -> {{{<<tasksum "end" [intro]>>}}}
                                                                                                                                                                                                                                          -Put one of the {{{<<tasksum start>>}}} lines before the tasks you want to summarize, and an {{{end}}} line after them.  By default, the summary goes at the end; if you include {{{here}}} in the start line, the summary will go at the top.  The intro argument, if supplied, replaces the default text introducing the summary.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.tasksum = {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		unrecVerb:	"<<%0>> requires 'start' or 'end' as its first argument",
                                                                                                                                                                                                                                          -		mustMatch:	"<<%0 end>> must match a preceding <<%0 start>>",
                                                                                                                                                                                                                                          -		defIntro:	"Task summary:",
                                                                                                                                                                                                                                          -		nascentSum:	"''%0 not estimated''",
                                                                                                                                                                                                                                          -		doneSum:	"%0 complete (in %1 hours)",
                                                                                                                                                                                                                                          -		liveSum:	"%0 ongoing (%1 hours so far, ''%2 hours remaining'')",
                                                                                                                                                                                                                                          -		overSum:	"Total overestimate: %0%.",
                                                                                                                                                                                                                                          -		underSum:	"Total underestimate: %0%.",
                                                                                                                                                                                                                                          -		descPattern:	"%0 %1. %2",
                                                                                                                                                                                                                                          -                origTip:	"Total original estimates in hours",
                                                                                                                                                                                                                                          -		curTip:		"Total current estimates in hours",
                                                                                                                                                                                                                                          -		spentTip:	"Total hours spent on tasks",
                                                                                                                                                                                                                                          -		remTip:		"Total hours remaining"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var sums = this.tasksums
                                                                                                                                                                                                                                          -		if ( params[0] == "start" ) {
                                                                                                                                                                                                                                          -			sums.unshift([])
                                                                                                                                                                                                                                          -			if ( params[1] == "here" ) {
                                                                                                                                                                                                                                          -				sums[0].intro = params[2] || this.lingo.defIntro
                                                                                                                                                                                                                                          -				sums[0].place = place
                                                                                                                                                                                                                                          -				sums[0].placement = place.childNodes.length
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else if ( params[0] == "end" ) {
                                                                                                                                                                                                                                          -			if ( ! sums.length )
                                                                                                                                                                                                                                          -				throw Error( this.lingo.mustMatch.format([macroName]) )
                                                                                                                                                                                                                                          -			var list = sums.shift()
                                                                                                                                                                                                                                          -			var intro = list.intro || params[1] || this.lingo.defIntro
                                                                                                                                                                                                                                          -			var nNascent=0, nLive=0, nDone=0, nMine=0
                                                                                                                                                                                                                                          -			var totLiveSpent=0, totDoneSpent=0
                                                                                                                                                                                                                                          -			var totOrig=0, totCur=0, totSpent=0
                                                                                                                                                                                                                                          -			for ( var i=0; i < list.length; ++i ) {
                                                                                                                                                                                                                                          -				var a = list[i]
                                                                                                                                                                                                                                          -				if ( a.length > 3 ) {
                                                                                                                                                                                                                                          -					nNascent 	+= a[0]
                                                                                                                                                                                                                                          -					nLive 		+= a[1]
                                                                                                                                                                                                                                          -					nDone 		+= a[2]
                                                                                                                                                                                                                                          -					totLiveSpent 	+= a[3]
                                                                                                                                                                                                                                          -					totDoneSpent 	+= a[4]
                                                                                                                                                                                                                                          -					totOrig 	+= a[5]
                                                                                                                                                                                                                                          -					totCur 		+= a[6]
                                                                                                                                                                                                                                          -					totSpent 	+= a[7]
                                                                                                                                                                                                                                          -					if ( a.owner == tiddler )
                                                                                                                                                                                                                                          -						nMine	+= a[8]
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else {
                                                                                                                                                                                                                                          -					if ( a.owner == tiddler )
                                                                                                                                                                                                                                          -						++nMine
                                                                                                                                                                                                                                          -					if ( isNaN(a[0]) ) {
                                                                                                                                                                                                                                          -						++nNascent
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -					else {
                                                                                                                                                                                                                                          -						if ( a[1] > a[2] ) {
                                                                                                                                                                                                                                          -							++nLive
                                                                                                                                                                                                                                          -							totLiveSpent += a[2]
                                                                                                                                                                                                                                          -						}
                                                                                                                                                                                                                                          -						else {
                                                                                                                                                                                                                                          -							++nDone
                                                                                                                                                                                                                                          -							totDoneSpent += a[2]
                                                                                                                                                                                                                                          -						}
                                                                                                                                                                                                                                          -						totOrig  += a[0]
                                                                                                                                                                                                                                          -						totCur   += a[1]
                                                                                                                                                                                                                                          -						totSpent += a[2]
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// If we're nested, push a summary outward
                                                                                                                                                                                                                                          -                        if ( sums.length ) {
                                                                                                                                                                                                                                          -				var summary = [nNascent, nLive, nDone, totLiveSpent, totDoneSpent,
                                                                                                                                                                                                                                          -						totOrig, totCur, totSpent, nMine]
                                                                                                                                                                                                                                          -				summary.owner = tiddler
                                                                                                                                                                                                                                          -				sums[0].push( summary )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var descs = [], styles = []
                                                                                                                                                                                                                                          -			if ( nNascent > 0 ) {
                                                                                                                                                                                                                                          -				descs.push( this.lingo.nascentSum.format([nNascent]) )
                                                                                                                                                                                                                                          -				styles.push( "nascent" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( nDone > 0 )
                                                                                                                                                                                                                                          -				descs.push( this.lingo.doneSum.format([nDone, totDoneSpent]) )
                                                                                                                                                                                                                                          -			if ( nLive > 0 ) {
                                                                                                                                                                                                                                          -				descs.push( this.lingo.liveSum.format([nLive, totLiveSpent, totCur-totSpent]) )
                                                                                                                                                                                                                                          -				styles.push( "live" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else
                                                                                                                                                                                                                                          -				styles.push( "done" )
                                                                                                                                                                                                                                          -			var off = ""
                                                                                                                                                                                                                                          -			if ( totOrig > totCur )
                                                                                                                                                                                                                                          -				off = this.lingo.overSum.format( [Math.round(100.0*(totOrig-totCur)/totCur)] )
                                                                                                                                                                                                                                          -			else if ( totCur > totOrig )
                                                                                                                                                                                                                                          -				off = this.lingo.underSum.format( [Math.round(100.0*(totCur-totOrig)/totOrig)] )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var top		= (list.intro != undefined)
                                                                                                                                                                                                                                          -			var table	= createTiddlyElement( null, "table", null, "tasksum "+(top?"top":"bottom") )
                                                                                                                                                                                                                                          -			var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -			var row		= createTiddlyElement( tbody, "tr", null, styles.join(" ") )
                                                                                                                                                                                                                                          -			var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var description = this.lingo.descPattern.format( [intro, descs.join(", "), off] )
                                                                                                                                                                                                                                          -			wikify( description, descCell, null, tiddler )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var origCell	= totOrig == totCur? null
                                                                                                                                                                                                                                          -					: createTiddlyElement( row, "td", null, "numeric original", totOrig )
                                                                                                                                                                                                                                          -			var curCell	= createTiddlyElement( row, "td", null, "numeric current", totCur )
                                                                                                                                                                                                                                          -			var spentCell	= createTiddlyElement( row, "td", null, "numeric spent", totSpent )
                                                                                                                                                                                                                                          -			var remCell	= createTiddlyElement( row, "td", null, "numeric remaining", totCur-totSpent )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			if ( origCell )
                                                                                                                                                                                                                                          -				origCell.setAttribute( "title", this.lingo.origTip )
                                                                                                                                                                                                                                          -			curCell  .setAttribute( "title", this.lingo.curTip )
                                                                                                                                                                                                                                          -			spentCell.setAttribute( "title", this.lingo.spentTip )
                                                                                                                                                                                                                                          -			remCell  .setAttribute( "title", this.lingo.remTip )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// Discard the table if there are no tasks
                                                                                                                                                                                                                                          -			if ( list.length > 0 ) {
                                                                                                                                                                                                                                          -				var place = top? list.place : place
                                                                                                                                                                                                                                          -				var placement = top? list.placement : place.childNodes.length
                                                                                                                                                                                                                                          -				if ( placement >= place.childNodes.length )
                                                                                                                                                                                                                                          -					place.appendChild( table )
                                                                                                                                                                                                                                          -				else
                                                                                                                                                                                                                                          -					place.insertBefore( table, place.childNodes[placement] )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else
                                                                                                                                                                                                                                          -			throw Error( this.lingo.unrecVerb.format([macroName]) )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// If we're wikifying, and are followed by end-of-line, swallow the newline.
                                                                                                                                                                                                                                          -		if ( wikifier && wikifier.source.charAt(wikifier.nextMatch) == "\n" )
                                                                                                                                                                                                                                          -			++wikifier.nextMatch
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// This is the stack of pending summaries
                                                                                                                                                                                                                                          -	tasksums: []
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Taskadder Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<taskadder ["above"|"below"|"focus"|"nofocus"]...>>}}}
                                                                                                                                                                                                                                          -Creates a line with text entry fields for a description and an estimate.  By default, puts focus in the description field and adds tasks above the entry fields.  Use {{{nofocus}}} to not put focus in the description field.  Use {{{below}}} to add tasks below the entry fields.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.taskadder = {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		unrecParam:	"<<%0>> doesn't recognize '%1' as a parameter",
                                                                                                                                                                                                                                          -		descTip:	"Describe a new task",
                                                                                                                                                                                                                                          -		curTip:		"Estimate how long in hours the task will take",
                                                                                                                                                                                                                                          -		buttonText:	"add task",
                                                                                                                                                                                                                                          -		buttonTip:	"Add a new task with the description and estimate as entered",
                                                                                                                                                                                                                                          -		notCurrent:	"The tiddler has been modified since it was displayed, please redisplay it before adding a task this way.",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		eol:		"eol"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var above = true
                                                                                                                                                                                                                                          -		var focus = false
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		while ( params.length > 0 ) {
                                                                                                                                                                                                                                          -			var p = params.shift()
                                                                                                                                                                                                                                          -			switch (p) {
                                                                                                                                                                                                                                          -			case "above": 	above = true;  break
                                                                                                                                                                                                                                          -			case "below": 	above = false; break
                                                                                                                                                                                                                                          -			case "focus": 	focus = true;  break
                                                                                                                                                                                                                                          -			case "nofocus":	focus = false; break
                                                                                                                                                                                                                                          -			default:	throw Error( this.lingo.unrecParam.format([macroName, p]) )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// If we're followed by end-of-line, swallow the newline.
                                                                                                                                                                                                                                          -		if ( wikifier.source.charAt(wikifier.nextMatch) == "\n" )
                                                                                                                                                                                                                                          -			++wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var where	= above? wikifier.matchStart : wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var table	= createTiddlyElement( place, "table", null, "task" )
                                                                                                                                                                                                                                          -		var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -		var row		= createTiddlyElement( tbody, "tr" )
                                                                                                                                                                                                                                          -		var statusCell	= createTiddlyElement( row,   "td", null, "status" )
                                                                                                                                                                                                                                          -		var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -		var curCell	= createTiddlyElement( row,   "td", null, "numeric" )
                                                                                                                                                                                                                                          -		var addCell	= createTiddlyElement( row,   "td", null, "addtask" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var descId	= this.generateId()
                                                                                                                                                                                                                                          -		var curId	= this.generateId()
                                                                                                                                                                                                                                          -		var descInput	= createTiddlyElement( descCell, "input", descId )
                                                                                                                                                                                                                                          -		var curInput	= createTiddlyElement( curCell,  "input", curId  )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		descInput.setAttribute( "type", "text" )
                                                                                                                                                                                                                                          -		curInput .setAttribute( "type", "text" )
                                                                                                                                                                                                                                          -		descInput.setAttribute( "size", "40")
                                                                                                                                                                                                                                          -		curInput .setAttribute( "size", "6" )
                                                                                                                                                                                                                                          -		descInput.setAttribute( "autocomplete", "off" );
                                                                                                                                                                                                                                          -		curInput .setAttribute( "autocomplete", "off" );
                                                                                                                                                                                                                                          -		descInput.setAttribute( "title", this.lingo.descTip );
                                                                                                                                                                                                                                          -		curInput .setAttribute( "title", this.lingo.curTip  );
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var addAction	= this.addTask( tiddler, where, descId, curId, above )
                                                                                                                                                                                                                                          -		var addButton	= createTiddlyButton( addCell, this.lingo.buttonText, this.lingo.buttonTip, addAction )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		descInput.onkeypress = this.handleEnter(addAction)
                                                                                                                                                                                                                                          -		curInput .onkeypress = descInput.onkeypress
                                                                                                                                                                                                                                          -		addButton.onkeypress = this.handleSpace(addAction)
                                                                                                                                                                                                                                          -		if ( focus || tiddler.taskadderLocation == where ) {
                                                                                                                                                                                                                                          -			descInput.focus()
                                                                                                                                                                                                                                          -			descInput.select()
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns a function that inserts a new task macro into the tiddler.
                                                                                                                                                                                                                                          -	addTask: function( tiddler, where, descId, curId, above ) {
                                                                                                                                                                                                                                          -		var macro = this, oldText = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( oldText !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var desc	= document.getElementById(descId).value
                                                                                                                                                                                                                                          -			var cur		= document.getElementById(curId) .value
                                                                                                                                                                                                                                          -			var init	= tiddler.text.substring(0,where) + "<<task " + cur + ">> " + desc + "\n"
                                                                                                                                                                                                                                          -			var text	= init + tiddler.text.substring(where)
                                                                                                                                                                                                                                          -			var title	= tiddler.title
                                                                                                                                                                                                                                          -			tiddler.taskadderLocation = (above? init.length : where)
                                                                                                                                                                                                                                          -			try {
                                                                                                                                                                                                                                          -				store.saveTiddler( title, title, text, config.options.txtUserName, new Date(), undefined )
                                                                                                                                                                                                                                          -				//story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			finally {
                                                                                                                                                                                                                                          -				delete tiddler.taskadderLocation
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( config.options.chkAutoSave )
                                                                                                                                                                                                                                          -				saveChanges()
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that delegates to two other functions: "matches" to decide
                                                                                                                                                                                                                                          -	// whether to consume the event, and "addTask" to actually perform the work.
                                                                                                                                                                                                                                          -	handleGeneric: function( addTask, matches ) {
                                                                                                                                                                                                                                          -		return function(e) {
                                                                                                                                                                                                                                          -			if (!e) var e = window.event
                                                                                                                                                                                                                                          -			var consume = false
                                                                                                                                                                                                                                          -			if ( matches(e) ) {
                                                                                                                                                                                                                                          -				consume = true
                                                                                                                                                                                                                                          -				addTask( e )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			e.cancelBubble = consume;
                                                                                                                                                                                                                                          -			if ( consume && e.stopPropagation ) e.stopPropagation();
                                                                                                                                                                                                                                          -			return !consume;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that handles enter keys by calling another event handler
                                                                                                                                                                                                                                          -	handleEnter: function( addTask ) {
                                                                                                                                                                                                                                          -		return this.handleGeneric( addTask, function(e){return e.keyCode == 13 || e.keyCode == 10} ) // Different codes for Enter
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that handles the space key by calling another event handler
                                                                                                                                                                                                                                          -	handleSpace: function( addTask ) {
                                                                                                                                                                                                                                          -		return this.handleGeneric( addTask, function(e){return (e.charCode||e.keyCode) == 32} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	counter: 0,
                                                                                                                                                                                                                                          -	generateId: function() {
                                                                                                                                                                                                                                          -		return "taskadder:" + String(this.counter++)
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Stylesheet
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var stylesheet = '\
                                                                                                                                                                                                                                          -.viewer table.task, table.tasksum {\
                                                                                                                                                                                                                                          -	width: 100%;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -	border-collapse: collapse;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task {\
                                                                                                                                                                                                                                          -	border: none;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum, .viewer table.tasksum {\
                                                                                                                                                                                                                                          -	border: solid 2px #999;\
                                                                                                                                                                                                                                          -	margin: 3px 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td {\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -	border: 1px solid #ddd;\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	vertical-align: middle;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task tr {\
                                                                                                                                                                                                                                          -	border: none;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task td {\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -	vertical-align: baseline;\
                                                                                                                                                                                                                                          -	border: 1px solid #fff;\
                                                                                                                                                                                                                                          -	background-color: inherit;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -td.numeric {\
                                                                                                                                                                                                                                          -	width: 3em;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.numeric div {\
                                                                                                                                                                                                                                          -	border: 1px solid #ddd;\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	margin: 1px 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.original div {\
                                                                                                                                                                                                                                          -	background-color: #fdd;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td.original {\
                                                                                                                                                                                                                                          -	background-color: #fdd;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td.description {\
                                                                                                                                                                                                                                          -	background-color: #e8e8e8;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.status {\
                                                                                                                                                                                                                                          -	width: 1.5em;\
                                                                                                                                                                                                                                          -	cursor: default;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.description, table.tasksum td.description {\
                                                                                                                                                                                                                                          -	width: auto;\
                                                                                                                                                                                                                                          -	text-align: left;\
                                                                                                                                                                                                                                          -	padding: 0 3px;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.status,table.task.done td.description {\
                                                                                                                                                                                                                                          -	color: #ccc;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.current, table.task.done td.remaining {\
                                                                                                                                                                                                                                          -	visibility: hidden;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.spent div, table.tasksum tr.done td.current,\
                                                                                                                                                                                                                                          -table.tasksum tr.done td.spent, table.tasksum tr.done td.remaining {\
                                                                                                                                                                                                                                          -	background-color: #eee;\
                                                                                                                                                                                                                                          -	color: #aaa;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.description {\
                                                                                                                                                                                                                                          -	color: #844;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.current div, table.tasksum tr.nascent td.numeric.current {\
                                                                                                                                                                                                                                          -	font-weight: bold;\
                                                                                                                                                                                                                                          -	color: #c00;\
                                                                                                                                                                                                                                          -	background-color: #def;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.spent, table.task.nascent td.remaining {\
                                                                                                                                                                                                                                          -	visibility: hidden;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -td.remaining {\
                                                                                                                                                                                                                                          -	font-weight: bold;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.adjustable {\
                                                                                                                                                                                                                                          -	cursor: pointer; \
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task input {\
                                                                                                                                                                                                                                          -	display: block;\
                                                                                                                                                                                                                                          -	width: 100%;\
                                                                                                                                                                                                                                          -	font: inherit;\
                                                                                                                                                                                                                                          -	margin: 2px 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -	border: 1px inset #999;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.numeric input {\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.addtask {\
                                                                                                                                                                                                                                          -	width: 6em;\
                                                                                                                                                                                                                                          -	border-left: 2px solid white;\
                                                                                                                                                                                                                                          -	vertical-align: middle;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -'
                                                                                                                                                                                                                                          -setStylesheet( stylesheet, "TaskMacroPluginStylesheet" )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          !!Changes in 1.1.0
                                                                                                                                                                                                                                          -* Made the macros work in nested tiddlers (ie when one tiddler includes another using {{{<<tiddler>>}}} or something similar):
                                                                                                                                                                                                                                          -** Task summaries in the outer tiddler include the tasks from the inner one
                                                                                                                                                                                                                                          -** Using the editing shortcuts on the tasks as displayed in the outer tiddler correctly changes the inner tiddler and also redisplays the outer one
                                                                                                                                                                                                                                          -** Added sanity checks to the editing shortcuts so they will refuse to work if the tiddler has been modified behind their backs
                                                                                                                                                                                                                                          -* Made some small usability fixes:
                                                                                                                                                                                                                                          -** The "add task" button now responds to the Space key (hat tip: Daniel Baird)
                                                                                                                                                                                                                                          -** Double-clicking on a completed task's bullet now does the same thing as clicking on the elapsed time: it lets you adjust the time spent, giving you the option of resurrecting the task (hat tip: ~JackF)
                                                                                                                                                                                                                                          -** Reworked the focus handling of the taskadder macro so it works more intuitively, by refocusing on the same adder you just used
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The task macro provided by the TaskMacroPlugin is for planning, estimating, and tracking detailed tasks such as those required for writing software.  It is inspired by [[Joel Spolsky|http://www.joelonsoftware.com/articles/fog0000000245.html]]'s method for scheduling software development, also popularized by [[Voo2do|http://voo2do.com]] and [[XPlanner|http://xplanner.org]].
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -For changes since the previous version, see the TaskMacroReleaseNotes.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This tutorial leads you through the use of the task macro itself, and supporting macros that summarize lists of tasks and simplify the adding of tasks to a list.  Follow along by clicking the links below.  Or click the little down-arrow next to this tiddler's title, above, and choose "Open all" to have all the tutorial sections displayed at once.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!---
                                                                                                                                                                                                                                          -Includes portions of [[TagglyTaggingViewTemplate|http://simonbaird.com/mptw/#TagglyTaggingViewTemplate]], v1.2 (16-Jan-2006).
                                                                                                                                                                                                                                          -Also adds a pair of tasksum macros around the tiddler, to summarize any contained tasks at the top.  Removes the "-" in front of closeTiddler, which can easily bite you if you have a focusable element in a tiddler, such as a taskadder entry field.
                                                                                                                                                                                                                                          -Portions written by Luke Blanshard are hereby released into the public domain.
                                                                                                                                                                                                                                          ---->
                                                                                                                                                                                                                                          -<!--{{{-->
                                                                                                                                                                                                                                          -<div class="toolbar" macro="toolbar closeTiddler closeOthers +editTiddler permalink references jump newHere"></div>
                                                                                                                                                                                                                                          -<div class="tagglyTagged" macro="tags"></div>
                                                                                                                                                                                                                                          -<div><span class="title" macro="view title"></span><span class="miniTag" macro="miniTag"></span></div>
                                                                                                                                                                                                                                          -<div macro="tasksum start here"></div>
                                                                                                                                                                                                                                          -<div class="viewer" macro="view text wikified"></div>
                                                                                                                                                                                                                                          -<div macro="tasksum end"></div>
                                                                                                                                                                                                                                          -<div class="tagglyTagging" macro="tagglyListWithSort"></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -''TextAreaPlugin for TiddlyWiki version 2.0''
                                                                                                                                                                                                                                          -^^author: Eric Shulman - ELS Design Studios
                                                                                                                                                                                                                                          -source: http://www.elsdesign.com/tiddlywiki/#TextAreaPlugin
                                                                                                                                                                                                                                          -license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This plugin 'hijacks' the TW core function, ''Story.prototype.focusTiddler()'', so it can add special 'keyDown' handlers to adjust several behaviors associated with the textarea control used in the tiddler editor.  Specifically, it:
                                                                                                                                                                                                                                          -* Adds text search INSIDE of edit fields.^^
                                                                                                                                                                                                                                          -Use ~CTRL-F for "Find" (prompts for search text), and ~CTRL-G for "Find Next" (uses previous search text)^^
                                                                                                                                                                                                                                          -* Enables TAB characters to be entered into field content^^
                                                                                                                                                                                                                                          -(instead of moving to next field)^^
                                                                                                                                                                                                                                          -* Option to set cursor at top of edit field instead of auto-selecting contents^^
                                                                                                                                                                                                                                          -(see configuration section for checkbox)^^
                                                                                                                                                                                                                                          -!!!!!Configuration
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content
                                                                                                                                                                                                                                          -<<option chkTextAreaExtensions>> add control-f (find), control-g (find again) and allow TABs as input in textarea
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''TextAreaPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.01.22 [1.0.1]''
                                                                                                                                                                                                                                          -only add extra key processing for TEXTAREA elements (not other edit fields).
                                                                                                                                                                                                                                          -added option to enable/disable textarea keydown extensions (default is "standard keys" only)
                                                                                                                                                                                                                                          -''2006.01.22 [1.0.0]''
                                                                                                                                                                                                                                          -Moved from temporary "System Tweaks" tiddler into 'real' TextAreaPlugin tiddler.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.textAreaPlugin= {major: 1, minor: 0, revision: 1, date: new Date(2006,1,23)};
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -if (!config.options.chkDisableAutoSelect) config.options.chkDisableAutoSelect=false; // default to standard action
                                                                                                                                                                                                                                          -if (!config.options.chkTextAreaExtensions) config.options.chkTextAreaExtensions=false; // default to standard action
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Focus a specified tiddler. Attempts to focus the specified field, otherwise the first edit field it finds
                                                                                                                                                                                                                                          -Story.prototype.focusTiddler = function(title,field)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var tiddler = document.getElementById(this.idPrefix + title);
                                                                                                                                                                                                                                          -	if(tiddler != null)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var children = tiddler.getElementsByTagName("*")
                                                                                                                                                                                                                                          -		var e = null;
                                                                                                                                                                                                                                          -		for (var t=0; t<children.length; t++)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			var c = children[t];
                                                                                                                                                                                                                                          -			if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")
                                                                                                                                                                                                                                          -				{
                                                                                                                                                                                                                                          -				if(!e)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				if(c.getAttribute("edit") == field)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		if(e)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			e.focus();
                                                                                                                                                                                                                                          -			e.select(); // select entire contents
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// TWEAK: add TAB and "find" key handlers
                                                                                                                                                                                                                                          -			if (config.options.chkTextAreaExtensions) // add extra key handlers
                                                                                                                                                                                                                                          -				addKeyDownHandlers(e);
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// TWEAK: option to NOT autoselect contents
                                                                                                                                                                                                                                          -			if (config.options.chkDisableAutoSelect) // set cursor to start of field content
                                                                                                                                                                                                                                          -				if (e.setSelectionRange) e.setSelectionRange(0,0); // for FF
                                                                                                                                                                                                                                          -				else if (e.createTextRange) { var r=e.createTextRange(); r.collapse(true); r.select(); } // for IE
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -function addKeyDownHandlers(e)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	// exit if not textarea or element doesn't allow selections
                                                                                                                                                                                                                                          -	if (e.tagName.toLowerCase()!="textarea" || !e.setSelectionRange) return;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// utility function: exits keydown handler and prevents browser from processing the keystroke
                                                                                                                                                                                                                                          -	var processed=function(ev) { ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false; }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// capture keypress in edit field
                                                                                                                                                                                                                                          -	e.onkeydown = function(ev) { if (!ev) var ev=window.event;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// process TAB
                                                                                                                                                                                                                                          -		if (!ev.shiftKey && ev.keyCode==9) { 
                                                                                                                                                                                                                                          -			// replace current selection with a TAB character
                                                                                                                                                                                                                                          -			var start=e.selectionStart; var end=e.selectionEnd;
                                                                                                                                                                                                                                          -			e.value=e.value.substr(0,start)+String.fromCharCode(9)+e.value.substr(end);
                                                                                                                                                                                                                                          -			// update insertion point, scroll it into view
                                                                                                                                                                                                                                          -			e.setSelectionRange(start+1,start+1);
                                                                                                                                                                                                                                          -			var linecount=e.value.split('\n').length;
                                                                                                                                                                                                                                          -			var thisline=e.value.substr(0,e.selectionStart).split('\n').length-1;
                                                                                                                                                                                                                                          -			e.scrollTop=Math.floor((thisline-e.rows/2)*e.scrollHeight/linecount);
                                                                                                                                                                                                                                          -			return processed(ev);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// process CTRL-F (find matching text) or CTRL-G (find next match)
                                                                                                                                                                                                                                          -		if (ev.ctrlKey && (ev.keyCode==70||ev.keyCode==71)) {
                                                                                                                                                                                                                                          -			// if ctrl-f or no previous search, prompt for search text (default to previous text or current selection)... if no search text, exit
                                                                                                                                                                                                                                          -			if (ev.keyCode==70||!e.find||!e.find.length)
                                                                                                                                                                                                                                          -				{ var f=prompt("find:",e.find?e.find:e.value.substring(e.selectionStart,e.selectionEnd)); e.focus(); e.find=f?f:e.find; }
                                                                                                                                                                                                                                          -			if (!e.find||!e.find.length) return processed(ev);
                                                                                                                                                                                                                                          -			// do case-insensitive match with 'wraparound'...  if not found, alert and exit 
                                                                                                                                                                                                                                          -			var newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase(),e.selectionStart+1);
                                                                                                                                                                                                                                          -			if (newstart==-1) newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase());
                                                                                                                                                                                                                                          -			if (newstart==-1) { alert("'"+e.find+"' not found"); e.focus(); return processed(ev); }
                                                                                                                                                                                                                                          -			// set new selection, scroll it into view, and report line position in status bar
                                                                                                                                                                                                                                          -			e.setSelectionRange(newstart,newstart+e.find.length);
                                                                                                                                                                                                                                          -			var linecount=e.value.split('\n').length;
                                                                                                                                                                                                                                          -			var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
                                                                                                                                                                                                                                          -			e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
                                                                                                                                                                                                                                          -			window.status="line: "+thisline+"/"+linecount;
                                                                                                                                                                                                                                          -			return processed(ev);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - - - - - - - - - - diff --git a/wiki/index.html b/wiki/index.html deleted file mode 100644 index 572c38221..000000000 --- a/wiki/index.html +++ /dev/null @@ -1,11783 +0,0 @@ - - - - - - - - - - - -
                                                                                                                                                                                                                                          My TiddlyWiki is loading ...

                                                                                                                                                                                                                                          Requires Javascript.
                                                                                                                                                                                                                                          - - Cinelerra3 - Distributed Developer Wiki - - - - - - - - - - - -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Background: #fff
                                                                                                                                                                                                                                          -Foreground: #000
                                                                                                                                                                                                                                          -PrimaryPale: #8cf
                                                                                                                                                                                                                                          -PrimaryLight: #18f
                                                                                                                                                                                                                                          -PrimaryMid: #04b
                                                                                                                                                                                                                                          -PrimaryDark: #014
                                                                                                                                                                                                                                          -SecondaryPale: #ffc
                                                                                                                                                                                                                                          -SecondaryLight: #fe8
                                                                                                                                                                                                                                          -SecondaryMid: #db4
                                                                                                                                                                                                                                          -SecondaryDark: #841
                                                                                                                                                                                                                                          -TertiaryPale: #eee
                                                                                                                                                                                                                                          -TertiaryLight: #ccc
                                                                                                                                                                                                                                          -TertiaryMid: #999
                                                                                                                                                                                                                                          -TertiaryDark: #666
                                                                                                                                                                                                                                          -Error: #f88
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -a {color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -a img {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
                                                                                                                                                                                                                                          -h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.header {background:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.headerShadow {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.headerForeground {color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tabSelected{color:[[ColorPalette::PrimaryDark]];
                                                                                                                                                                                                                                          -	background:[[ColorPalette::TertiaryPale]];
                                                                                                                                                                                                                                          -	border-left:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -	border-top:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -	border-right:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.tabContents .button {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebar {}
                                                                                                                                                                                                                                          -#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
                                                                                                                                                                                                                                          -.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
                                                                                                                                                                                                                                          -.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
                                                                                                                                                                                                                                          -	border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.wizardStep.wizardStepDone {background::[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
                                                                                                                                                                                                                                          -	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
                                                                                                                                                                                                                                          -	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
                                                                                                                                                                                                                                          -.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler .defaultCommand {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.shadow .title {color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.title {color:[[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -.subtitle {color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.toolbar {color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.toolbar a {color:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
                                                                                                                                                                                                                                          -.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -.tagging .button, .tagged .button {border:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.footer {color:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.selected .footer {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
                                                                                                                                                                                                                                          -.sparktick {background:[[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
                                                                                                                                                                                                                                          -.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.lowlight {background:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.imageLink, #displayArea .imageLink {background:transparent;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer .listTitle {list-style-type:none; margin-left:-2em;}
                                                                                                                                                                                                                                          -.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.viewer code {color:[[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
                                                                                                                                                                                                                                          -.editorFooter {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
                                                                                                                                                                                                                                          -#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -* html .tiddler {height:1%;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
                                                                                                                                                                                                                                          -h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
                                                                                                                                                                                                                                          -h4,h5,h6 {margin-top:1em;}
                                                                                                                                                                                                                                          -h1 {font-size:1.35em;}
                                                                                                                                                                                                                                          -h2 {font-size:1.25em;}
                                                                                                                                                                                                                                          -h3 {font-size:1.1em;}
                                                                                                                                                                                                                                          -h4 {font-size:1em;}
                                                                                                                                                                                                                                          -h5 {font-size:.9em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -hr {height:1px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -a {text-decoration:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dt {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -ol ol {list-style-type:lower-alpha;}
                                                                                                                                                                                                                                          -ol ol ol {list-style-type:lower-roman;}
                                                                                                                                                                                                                                          -ol ol ol ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -ol ol ol ol ol {list-style-type:lower-alpha;}
                                                                                                                                                                                                                                          -ol ol ol ol ol ol {list-style-type:lower-roman;}
                                                                                                                                                                                                                                          -ol ol ol ol ol ol ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.txtOptionInput {width:11em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#contentWrapper .chkOptionInput {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.externalLink {text-decoration:underline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.indent {margin-left:3em;}
                                                                                                                                                                                                                                          -.outdent {margin-left:3em; text-indent:-3em;}
                                                                                                                                                                                                                                          -code.escaped {white-space:nowrap;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddlyLinkExisting {font-weight:bold;}
                                                                                                                                                                                                                                          -.tiddlyLinkNonExisting {font-style:italic;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
                                                                                                                                                                                                                                          -a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#mainMenu .tiddlyLinkExisting,
                                                                                                                                                                                                                                          -	#mainMenu .tiddlyLinkNonExisting,
                                                                                                                                                                                                                                          -	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
                                                                                                                                                                                                                                          -#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.header {position:relative;}
                                                                                                                                                                                                                                          -.header a:hover {background:transparent;}
                                                                                                                                                                                                                                          -.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
                                                                                                                                                                                                                                          -.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.siteTitle {font-size:3em;}
                                                                                                                                                                                                                                          -.siteSubtitle {font-size:1.2em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
                                                                                                                                                                                                                                          -#sidebarOptions {padding-top:0.3em;}
                                                                                                                                                                                                                                          -#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
                                                                                                                                                                                                                                          -#sidebarOptions input {margin:0.4em 0.5em;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
                                                                                                                                                                                                                                          -#sidebarTabs .tabContents {width:15em; overflow:hidden;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.wizard {padding:0.1em 1em 0em 2em;}
                                                                                                                                                                                                                                          -.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
                                                                                                                                                                                                                                          -.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
                                                                                                                                                                                                                                          -.wizardStep {padding:1em 1em 1em 1em;}
                                                                                                                                                                                                                                          -.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
                                                                                                                                                                                                                                          -.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
                                                                                                                                                                                                                                          -.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
                                                                                                                                                                                                                                          -.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
                                                                                                                                                                                                                                          -.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
                                                                                                                                                                                                                                          -#messageArea a {text-decoration:underline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
                                                                                                                                                                                                                                          -.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
                                                                                                                                                                                                                                          -.popup .popupMessage {padding:0.4em;}
                                                                                                                                                                                                                                          -.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
                                                                                                                                                                                                                                          -.popup li.disabled {padding:0.4em;}
                                                                                                                                                                                                                                          -.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
                                                                                                                                                                                                                                          -.listBreak {font-size:1px; line-height:1px;}
                                                                                                                                                                                                                                          -.listBreak div {margin:2px 0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tabset {padding:1em 0em 0em 0.5em;}
                                                                                                                                                                                                                                          -.tab {margin:0em 0em 0em 0.25em; padding:2px;}
                                                                                                                                                                                                                                          -.tabContents {padding:0.5em;}
                                                                                                                                                                                                                                          -.tabContents ul, .tabContents ol {margin:0; padding:0;}
                                                                                                                                                                                                                                          -.txtMainTab .tabContents li {list-style:none;}
                                                                                                                                                                                                                                          -.tabContents li.listLink { margin-left:.75em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#contentWrapper {display:block;}
                                                                                                                                                                                                                                          -#splashScreen {display:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#displayArea {margin:1em 17em 0em 14em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.toolbar {text-align:right; font-size:.9em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler {padding:1em 1em 0em 1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.missing .viewer,.missing .title {font-style:italic;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.title {font-size:1.6em; font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.missing .subtitle {display:none;}
                                                                                                                                                                                                                                          -.subtitle {font-size:1.1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler .button {padding:0.2em 0.4em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
                                                                                                                                                                                                                                          -.isTag .tagging {display:block;}
                                                                                                                                                                                                                                          -.tagged {margin:0.5em; float:right;}
                                                                                                                                                                                                                                          -.tagging, .tagged {font-size:0.9em; padding:0.25em;}
                                                                                                                                                                                                                                          -.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
                                                                                                                                                                                                                                          -.tagClear {clear:both;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.footer {font-size:.9em;}
                                                                                                                                                                                                                                          -.footer li {display:inline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.annotation {padding:0.5em; margin:0.5em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* html .viewer pre {width:99%; padding:0 0 1em 0;}
                                                                                                                                                                                                                                          -.viewer {line-height:1.4em; padding-top:0.5em;}
                                                                                                                                                                                                                                          -.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
                                                                                                                                                                                                                                          -.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
                                                                                                                                                                                                                                          -.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
                                                                                                                                                                                                                                          -.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
                                                                                                                                                                                                                                          -table.listView {font-size:0.85em; margin:0.8em 1.0em;}
                                                                                                                                                                                                                                          -table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
                                                                                                                                                                                                                                          -.viewer code {font-size:1.2em; line-height:1.4em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.editor {font-size:1.1em;}
                                                                                                                                                                                                                                          -.editor input, .editor textarea {display:block; width:100%; font:inherit;}
                                                                                                                                                                                                                                          -.editorFooter {padding:0.25em 0em; font-size:.9em;}
                                                                                                                                                                                                                                          -.editorFooter .button {padding-top:0px; padding-bottom:0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.sparkline {line-height:1em;}
                                                                                                                                                                                                                                          -.sparktick {outline:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
                                                                                                                                                                                                                                          -.zoomer div {padding:1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* html #backstage {width:99%;}
                                                                                                                                                                                                                                          -* html #backstageArea {width:99%;}
                                                                                                                                                                                                                                          -#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
                                                                                                                                                                                                                                          -#backstageToolbar {position:relative;}
                                                                                                                                                                                                                                          -#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
                                                                                                                                                                                                                                          -#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
                                                                                                                                                                                                                                          -#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
                                                                                                                                                                                                                                          -#backstage {position:relative; width:100%; z-index:50;}
                                                                                                                                                                                                                                          -#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
                                                                                                                                                                                                                                          -.backstagePanelFooter {padding-top:0.2em; float:right;}
                                                                                                                                                                                                                                          -.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
                                                                                                                                                                                                                                          -#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.whenBackstage {display:none;}
                                                                                                                                                                                                                                          -.backstageVisible .whenBackstage {display:block;}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -StyleSheet for use when a translation requires any css style changes.
                                                                                                                                                                                                                                          -This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which use a logographic writing system and need larger font sizes.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/*{{{*/
                                                                                                                                                                                                                                          -body {font-size:0.8em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebarOptions {font-size:1.05em;}
                                                                                                                                                                                                                                          -#sidebarOptions a {font-style:normal;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {font-size:0.95em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.subtitle {font-size:0.8em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table.listView {font-size:0.95em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -@media print {
                                                                                                                                                                                                                                          -#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton {display: none ! important;}
                                                                                                                                                                                                                                          -#displayArea {margin: 1em 1em 0em 1em;}
                                                                                                                                                                                                                                          -/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
                                                                                                                                                                                                                                          -noscript {display:none;}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
                                                                                                                                                                                                                                          -<div class='headerShadow'>
                                                                                                                                                                                                                                          -<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div class='headerForeground'>
                                                                                                                                                                                                                                          -<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
                                                                                                                                                                                                                                          -<div id='sidebar'>
                                                                                                                                                                                                                                          -<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
                                                                                                                                                                                                                                          -<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='displayArea'>
                                                                                                                                                                                                                                          -<div id='messageArea'></div>
                                                                                                                                                                                                                                          -<div id='tiddlerDisplay'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
                                                                                                                                                                                                                                          -<div class='title' macro='view title'></div>
                                                                                                                                                                                                                                          -<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
                                                                                                                                                                                                                                          -<div class='tagging' macro='tagging'></div>
                                                                                                                                                                                                                                          -<div class='tagged' macro='tags'></div>
                                                                                                                                                                                                                                          -<div class='viewer' macro='view text wikified'></div>
                                                                                                                                                                                                                                          -<div class='tagClear'></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
                                                                                                                                                                                                                                          -<div class='title' macro='view title'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit title'></div>
                                                                                                                                                                                                                                          -<div macro='annotations'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit text'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
                                                                                                                                                                                                                                          -* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
                                                                                                                                                                                                                                          -* MainMenu: The menu (usually on the left)
                                                                                                                                                                                                                                          -* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
                                                                                                                                                                                                                                          -You'll also need to enter your username for signing your edits: <<option txtUserName>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          These InterfaceOptions for customising TiddlyWiki are saved in your browser
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<<option txtUserName>>
                                                                                                                                                                                                                                          -<<option chkSaveBackups>> SaveBackups
                                                                                                                                                                                                                                          -<<option chkAutoSave>> AutoSave
                                                                                                                                                                                                                                          -<<option chkRegExpSearch>> RegExpSearch
                                                                                                                                                                                                                                          -<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
                                                                                                                                                                                                                                          -<<option chkAnimate>> EnableAnimations
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -Also see AdvancedOptions
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A task has a description, an estimate of how long it will take, and a record of how much time you have spent on it so far.  Here's an example, which shows a task estimated at 3 hours, with 1 hour spent on it, and ''2'' hours remaining:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 3 3 1>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you hover the mouse over any part of the task -- the bullet, the description, or any of the numeric cells -- a tip will appear explaining it.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Try modifying the time spent.  Suppose you've just spent one more hour and want to record it.  Just click on the second yellow cell, and enter "+1" (sans the quote marks, of course) in the popup window.  Watch the time remaining go down to 1 hour.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -In reality, I originally estimated this task at a half-hour, but it ended up taking 3.5 hours.  The macro also tracks your original estimate, if it is different from the current estimate, in a fourth cell like this:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 0.5 2 1>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can adjust the current estimate in the same way as you adjusted the time spent.  Click on the current estimate cell (the first yellow cell), and change it to 2.5 hours by typing "2.5" or "+.5".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You can also adjust the time remaining, which will modify either the estimate (if the time remaining increases) or the time spent (if it decreases).  Click on the time remaining and add an hour by typing "+1".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -When the time remaining goes to zero, the task is considered complete:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 0.5 3.5 3.5>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you haven't already done so, try double-clicking the description.  Yes, it really does open up the editor and select just the text of the description.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A task's description is a single wikified line, so it can contain any formatting that can be specified on one line:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 1>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 0.5>> Put tasksum on the ViewTemplate.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can specify just the description of a task, and leave it unestimated.  Click the question mark to enter the estimate:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -As this task implies, you can enter two values in the popup when you click on any of the time cells.  Separate them with spaces and/or a comma.  Experiment:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 1>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Finally, if you haven't already figured this out, you can double-click on a task's bullet to mark it complete, with the current estimate entered as the time spent.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          If you've been paying attention, you've noticed that I haven't discussed the actual adding of calls to the task macro within your tiddlers -- it's all been about modifying tasks that were already there.  That's because adding tasks via the taskadder macro is much easier and more intuitive than adding them by hand.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -And setting up a taskadder is simplicity itself.  Just add {{{<<taskadder>>}}} to your tiddler.  You will see this:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Just type a task description into the first field, and your initial estimate for how long it will take into the second field.  Click the "add task" button, or just hit Enter in either of the fields, to add the new task into the tiddler.  Notice that you can just start typing a new task as soon as you're done entering the first one.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You can have as many taskadders as you like in any tiddler.  The last one you used will capture the keyboard focus when it is redisplayed, meaning you can type a series of tasks without using the mouse.  Try adding some tasks here and in the above adder:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Notice that the one you just used takes focus when this tiddler is redisplayed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -A taskadder by default adds tasks above itself.  You can make it add them below by adding a {{{below}}} argument to the macro call:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder below>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          In this tutorial, we've been looking mostly at individual tasks.  In real life, though, you'll typically have a series of them, or even several series of them in the same tiddler.  In these cases you want a summary that tells you -- at a minimum -- how much time you still expect to spend on these tasks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To get such a summary, just add {{{<<tasksum start>>}}} before the tasks and {{{<<tasksum end>>}}} after them.  Here's an example:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 0.25 0.25 0.25>> Add tooltips to the various cells
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<task 1 3.5 2.5>> Add a double-click handler to the desc cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to allow entry of two values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to handle leading + or -
                                                                                                                                                                                                                                          -<<task 1 1 0>> Add a double-click handler to the status cell that functions like typing 0 into the rem cell
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you'd rather have the summary at the top, just add {{{here}}} to the start call, ie {{{<<tasksum start here>>}}}.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start here>>
                                                                                                                                                                                                                                          -<<task 0.25 0.25 0.25>> Add tooltips to the various cells
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can nest these things if you like, just be sure to match starts and ends:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start here>>
                                                                                                                                                                                                                                          -* Time cell manipulation:<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to allow entry of two values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to handle leading + or -
                                                                                                                                                                                                                                          -<<tasksum end "Cell manipulation:">>
                                                                                                                                                                                                                                          -<<br>>
                                                                                                                                                                                                                                          -* Double-click handling:<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 1 3.5 2.5>> Add a double-click handler to the desc cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<task 1 1 0>> Add a double-click handler to the status cell that functions like typing 0 into the rem cell
                                                                                                                                                                                                                                          -<<tasksum end "Double-clicks:">>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Finally, the simplest way to use tasksum is to add it to your view template.  See TaskSummaryViewTemplate for an example template.  Note that if no tasks are present between the start and end, nothing is displayed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The TaskMacroPlugin can be installed like any other TiddlyWiki plugin, and used without further effort.  However, there are two issues that may affect you.  (To get started with a brand new wiki that does not have these issues, consider downloading the [[empty LabWiki|empty_labwiki.html]].)
                                                                                                                                                                                                                                          -# The task macros don't play nicely with the default TiddlyWiki display of tags.  In the default view template, a tiddler's list of tags is shown in a little box that floats in the upper right corner of the tiddler.  However, this little box may interfere with the tables used by the task macros.  In Firefox, the tables are drawn right over the top of the tag box, rendering both of them illegible.  In Internet Explorer, the tag box forces the tables to be pushed down below the box, which can waste a lot of space.<<br>><<br>>Thus, I recommend changing your view template to eliminate the little box.  If you use Simon Baird's [[TagglyTagging|http://simonbaird.com/mptw/#TagglyTagging]] (as LabWiki does), then my TaskSummaryViewTemplate might be a good alternative.  Simply import it into your wiki and rename it to ViewTemplate.  This template also demonstrates how to incorporate the tasksum macro into every tiddler so any tiddler with tasks has a summary at the top.<<br>><<br>>
                                                                                                                                                                                                                                          -# Most view templates also add a minus sign ("-") before the "close" command.  TiddlyWiki interprets this to mean that you want the close command to be executed if you hit the Escape key from within the tiddler.<<br>><<br>>However, most tiddlers never have focus, and so never give you the opportunity to try it out.  But if you have a taskadder in your tiddler, then you suddenly enable this feature -- and you probably don't want it.  It means that if you type a nice long task description and then hit Escape, that description will be lost and the tiddler will be closed.  So I recommend that you remove the minus sign from the view template's menu altogether, as I have done in LabWiki's own ViewTemplate.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -This ends the tutorial.  To go back to any previous section, click the down-arrow and choose it: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          PageTemplate
                                                                                                                                                                                                                                          -|>|SiteTitle - SiteSubtitle|
                                                                                                                                                                                                                                          -|>|MainMenu|
                                                                                                                                                                                                                                          -|DefaultTiddlers<<br>><<br>><<br>>ViewTemplate<<br>><<br>>EditTemplate|SideBarOptions|
                                                                                                                                                                                                                                          -|~|OptionsPanel|
                                                                                                                                                                                                                                          -|~|SideBarTabs|
                                                                                                                                                                                                                                          -|~|AdvancedOptions|
                                                                                                                                                                                                                                          -|~|<<tiddler Configuration.SideBarTabs>>|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''StyleSheet:'' StyleSheetColors - StyleSheetLayout - StyleSheetPrint
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -ColorPalette
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -SiteUrl
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|BetterTimelineMacro|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#BetterTimelineMacro|
                                                                                                                                                                                                                                          -|Version|0.5 beta|
                                                                                                                                                                                                                                          -|Requires|~TW2.x|
                                                                                                                                                                                                                                          -!!!Description:
                                                                                                                                                                                                                                          -A replacement for the core timeline macro that offers more features:
                                                                                                                                                                                                                                          -*list tiddlers with only specfic tag
                                                                                                                                                                                                                                          -*exclude tiddlers with a particular tag
                                                                                                                                                                                                                                          -*limit entries to any number of days, for example one week
                                                                                                                                                                                                                                          -*specify a start date for the timeline, only tiddlers after that date will be listed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Installation:
                                                                                                                                                                                                                                          -Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
                                                                                                                                                                                                                                          -Edit the ViewTemplate to add the fullscreen command to the toolbar.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Syntax:
                                                                                                                                                                                                                                          -{{{<<timeline better:true>>}}}
                                                                                                                                                                                                                                          -''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -additonal params:
                                                                                                                                                                                                                                          -(use only the ones you want)
                                                                                                                                                                                                                                          -{{{<<timeline better:true  onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''explanation of syntax:''
                                                                                                                                                                                                                                          -onlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.
                                                                                                                                                                                                                                          -excludeTag: tiddlers with this tag will not be listed.
                                                                                                                                                                                                                                          -sortBy: sort tiddlers by date modified or date created. Possible values are modified or created.
                                                                                                                                                                                                                                          -firstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006
                                                                                                                                                                                                                                          -maxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.
                                                                                                                                                                                                                                          -maxEntries: limit the total number of entries in the timeline.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!History:
                                                                                                                                                                                                                                          -*28-07-06: ver 0.5 beta, first release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -// Return the tiddlers as a sorted array
                                                                                                                                                                                                                                          -TiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          var results = [];
                                                                                                                                                                                                                                          -          this.forEachTiddler(function(title,tiddler)
                                                                                                                                                                                                                                          -          {
                                                                                                                                                                                                                                          -          if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)
                                                                                                                                                                                                                                          -                        if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)
                                                                                                                                                                                                                                          -                                      results.push(tiddler);
                                                                                                                                                                                                                                          -          });
                                                                                                                                                                                                                                          -          if(field)
                                                                                                                                                                                                                                          -                   results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
                                                                                                                                                                                                                                          -          return results;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//this function by Udo
                                                                                                                                                                                                                                          -function getParam(params, name, defaultValue)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          if (!params)
                                                                                                                                                                                                                                          -          return defaultValue;
                                                                                                                                                                                                                                          -          var p = params[0][name];
                                                                                                                                                                                                                                          -          return p ? p[0] : defaultValue;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -window.old_timeline_handler= config.macros.timeline.handler;
                                                                                                                                                                                                                                          -config.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          var args = paramString.parseParams("list",null,true);
                                                                                                                                                                                                                                          -          var betterMode = getParam(args, "better", "false");
                                                                                                                                                                                                                                          -          if (betterMode == 'true')
                                                                                                                                                                                                                                          -          {
                                                                                                                                                                                                                                          -          var sortBy = getParam(args,"sortBy","modified");
                                                                                                                                                                                                                                          -          var excludeTag = getParam(args,"excludeTag",undefined);
                                                                                                                                                                                                                                          -          var includeTag = getParam(args,"onlyTag",undefined);
                                                                                                                                                                                                                                          -          var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);
                                                                                                                                                                                                                                          -          var firstDayParam = getParam(args,"firstDay",undefined);
                                                                                                                                                                                                                                          -          var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";
                                                                                                                                                                                                                                          -          var lastDay = "";
                                                                                                                                                                                                                                          -          var field= sortBy;
                                                                                                                                                                                                                                          -          var maxDaysParam = getParam(args,"maxDays",undefined);
                                                                                                                                                                                                                                          -          var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;
                                                                                                                                                                                                                                          -          var maxEntries = getParam(args,"maxEntries",undefined);
                                                                                                                                                                                                                                          -          var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;
                                                                                                                                                                                                                                          -          for(var t=tiddlers.length-1; t>=last; t--)
                                                                                                                                                                                                                                          -                  {
                                                                                                                                                                                                                                          -                  var tiddler = tiddlers[t];
                                                                                                                                                                                                                                          -                  var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
                                                                                                                                                                                                                                          -                  if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))
                                                                                                                                                                                                                                          -                     {
                                                                                                                                                                                                                                          -                     if(theDay != lastDay)
                                                                                                                                                                                                                                          -                               {
                                                                                                                                                                                                                                          -                               var theDateList = document.createElement("ul");
                                                                                                                                                                                                                                          -                               place.appendChild(theDateList);
                                                                                                                                                                                                                                          -                               createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));
                                                                                                                                                                                                                                          -                               lastDay = theDay;
                                                                                                                                                                                                                                          -                               }
                                                                                                                                                                                                                                          -                  var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);
                                                                                                                                                                                                                                          -                  theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
                                                                                                                                                                                                                                          -                  }
                                                                                                                                                                                                                                          -                  }
                                                                                                                                                                                                                                          -          }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -          else
                                                                                                                                                                                                                                          -              {
                                                                                                                                                                                                                                          -              window.old_timeline_handler.apply(this,arguments);
                                                                                                                                                                                                                                          -              }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          ! Cinelerra3 design process
                                                                                                                                                                                                                                          -A lightweight formalized process how people can add proposals for the Cinelerra3 development.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!! Description
                                                                                                                                                                                                                                          -Use the Wiki at http://www.pipapo.org/pipawiki/Cinelerra3/DesignProcess to make it easy to add proposals in a well defined manner.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -I'd like to introduce a slightly formalized process for the ongoing Cinelerra3 planning:
                                                                                                                                                                                                                                          -* Every proposal is instantiated as 'Idea', the author gives other people the opportunity to review and comment on it with extreme prejudice, while still working out details.
                                                                                                                                                                                                                                          -* When the the 'Idea' in a proper form and worked out in most details it becomes a 'Draft'. This 'Draft' need to be carefully reviewed, commented, perhaps corrected and rated by the other Developers.
                                                                                                                                                                                                                                          -* At some point we may decide that a 'Draft' becomes a 'Final' (I leave it open how this decision shall be done for now). 'Final' Documents will be imported into the repository (this wiki, you are reading such a Document right now!).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* Sometimes proposals will become dropped for some reason, this is indicated by changing their state to 'Dropped', they still stay in the system for further reference.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!! Pros
                                                                                                                                                                                                                                          -* simple
                                                                                                                                                                                                                                          -* flexible
                                                                                                                                                                                                                                          -* no much rules
                                                                                                                                                                                                                                          -* persistent and at Final stage well documented process
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!! Cons
                                                                                                                                                                                                                                          -* could be abused/vandalized (but wiki can use ACL's)
                                                                                                                                                                                                                                          -* depends on my server, this might be unfavorable or unreliable, ymmv.
                                                                                                                                                                                                                                          -* will only work if all or almost all involved people agree on this process
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!! Alternatives
                                                                                                                                                                                                                                          -We could use some forum, Trac, Mailinglist or whatever instead.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Just for Design documentation I would give [[Bouml|http://bouml.free.fr/]] a try. For myself, I am not very fond of UML Design tools, while Bouml looks quite promising and we could maintain the UML model in git repositories which would be more favorable than this centralized wiki. The backside is that this needs even more agreement between the developers, everyone has to install and use Bouml (and learn its usage) and design is constrained by a external tool.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This distributed wiki might be used instead the pipapo.org wiki, investigate that for future.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!! Rationale
                                                                                                                                                                                                                                          -Wiki works. It is simple to use and just flexible enough to handle the task. I don't go to install any other software for such tasks on my server. While the design progresses I'd propose to move our work into git repositories and eventually phase this wiki pages out anyways. I'd rather like to start out distributed/git right away .. but git gives us only a fine storage layer, for a design process we need some good presentation layer (later when using git and starting the implementation everyones favorite editor serves for that) I have no better ideas yet to solve the presentation problem other than using this wiki (or maybe Bouml).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          This 'index.html' becomes the entry point of some tiddlywikis managed under git. There is a 'empty.html' in the same folder serving as template for generating new wikis. Please refrain from editing it.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* I started a GitNotes where we will collect some information about git, howto and special setups
                                                                                                                                                                                                                                          -* we maintain (semi-) final design docs in DesignDocumentation
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Please end your tiddlers in a newline, this makes merging in git easier since the /pre tag used in tiddlywiki will become on a single line.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -!Design Draft
                                                                                                                                                                                                                                          -to get started, we create design drafts emphasizing different aspects and regions of Cinelerra-3
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* Ichthyo focuses mainly on the Render Engine and its interconnection to the EDL, [[see this separate page|renderengine.html]]
                                                                                                                                                                                                                                          -* cehteh works on the data backend draft, see [[this page|backend.html]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Coding Structures
                                                                                                                                                                                                                                          -next we should //start thinking// on how to organize several aspects of the practical coding...
                                                                                                                                                                                                                                          -* what to do in BOUML?                          &rarr; [[more|whatInBOUML]]
                                                                                                                                                                                                                                          -* how to organize packages, files, includes?    &rarr; [[more|SrcTreeStructure]]
                                                                                                                                                                                                                                          -* how to organize the executable to be built?
                                                                                                                                                                                                                                          -* what coding conventions to prefer?
                                                                                                                                                                                                                                          -* what build system to use?
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Ichthyo thinks we should do some informal brainstorming, test/prototypes to see how things work out and discuss them; then we should make them into formal project proposals on pipapo.org
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          ShortCuts
                                                                                                                                                                                                                                          -Cinelerra3Wiki
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          * There is a [[Manifest]] explaining the vision of the Cinelerra3 project
                                                                                                                                                                                                                                          -* The foundation how we work together is defined in Cinelerra3DesignProcess
                                                                                                                                                                                                                                          -* There is a description how the git repository is set up in RepositorySetup
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|FullScreenPlugin|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#FullScreenPlugin|
                                                                                                                                                                                                                                          -|Version|1.1|
                                                                                                                                                                                                                                          -|Requires|~TW2.x|
                                                                                                                                                                                                                                          -!Description:
                                                                                                                                                                                                                                          -Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Demo:
                                                                                                                                                                                                                                          -Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Installation:
                                                                                                                                                                                                                                          -Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
                                                                                                                                                                                                                                          -Edit the ViewTemplate to add the fullscreen command to the toolbar.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!History:
                                                                                                                                                                                                                                          -*25-07-06: ver 1.1
                                                                                                                                                                                                                                          -*20-07-06: ver 1.0
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var lewcidFullScreen = false;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.fullscreen =
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -            text:" ↕ ",
                                                                                                                                                                                                                                          -            tooltip:"Fullscreen mode"
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.fullscreen.handler = function (event,src,title)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -            if (lewcidFullScreen == false)
                                                                                                                                                                                                                                          -               {
                                                                                                                                                                                                                                          -                lewcidFullScreen = true;
                                                                                                                                                                                                                                          -                setStylesheet('#sidebar, .header, #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");
                                                                                                                                                                                                                                          -               }
                                                                                                                                                                                                                                          -            else
                                                                                                                                                                                                                                          -               {
                                                                                                                                                                                                                                          -                lewcidFullScreen = false;
                                                                                                                                                                                                                                          -                setStylesheet(' ',"lewcidFullScreenStyle");
                                                                                                                                                                                                                                          -               }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.fullscreen={};
                                                                                                                                                                                                                                          -config.macros.fullscreen.handler =  function(place,macroName,params,wikifier,paramString,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -        var label = params[0]||" ↕ ";
                                                                                                                                                                                                                                          -        var tooltip = params[1]||"Fullscreen mode";
                                                                                                                                                                                                                                          -        createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
                                                                                                                                                                                                                                          -Story.prototype.closeTiddler =function(title,animate,slowly)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -           lewcid_fullscreen_closeTiddler.apply(this,arguments);
                                                                                                                                                                                                                                          -           if (story.isEmpty() && lewcidFullScreen == true)
                                                                                                                                                                                                                                          -              config.commands.fullscreen.handler();
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Slider.prototype.lewcidStop = Slider.prototype.stop;
                                                                                                                                                                                                                                          -Slider.prototype.stop = function()
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -           this.lewcidStop();
                                                                                                                                                                                                                                          -           if (story.isEmpty() && lewcidFullScreen == true)
                                                                                                                                                                                                                                          -              config.commands.fullscreen.handler();
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          to make the admin/git_hooks/post-commit working add following to your .gitconfig:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -[alias]
                                                                                                                                                                                                                                          -        sign = tag -s -f -m 'automatic generated on last commit'
                                                                                                                                                                                                                                          -        publish = push --all public
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -these two commands are used by 'admin/git-hooks/post-commit'
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -'git sign' creates a gpg-signed tag after each commit, named '$~BRANCH_signature' overriding an older tag of the same name. Thus the head revision is always gpg signed (it is not perfect, in some cases like some merges and other things the signature can become unsynced and needs to be fixed manually).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -'git publish' just sends the commit to some repository which has to be registered with 'git remote add public ...', in case you are working offline this will stuck and timeout, you may break it with ctrl-c, someone may fix it.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          some ''interesting Branches''
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -|![[pipapo.org|PipapoOrg]]                |!''mirrored''              |!|!description                          |
                                                                                                                                                                                                                                          -| ct#master                               | ichthyo#master            | |Cinelerra3 main development line      |
                                                                                                                                                                                                                                          -| ichthyo#prototype                       |                           | |first coding attempts ;-)              |
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          I use some GitAliases to make signing and publishing easier.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -the '.git' dir itself is not versioned/distributed since it usually contains site-specific things. Despite this we might want to distribute some maintenance scripts and hooks so I put the default hooks into admin/git_hooks/ and users can symlink from .git/hooks them when needed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -For now I hope this approach suffices, maybe we need admin/git_hooks/$HOOKNAME.$USER at some point when it turns out that people want personal hooks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -&rarr; see [[Interesting Branches|GitBranches]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin for ~TiddlyWiki version 1.2.x and 2.0''
                                                                                                                                                                                                                                          -^^author: Eric Shulman - ELS Design Studios
                                                                                                                                                                                                                                          -source: http://www.TiddlyTools.com/#InlineJavascriptPlugin
                                                                                                                                                                                                                                          -license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Insert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
                                                                                                                                                                                                                                          -!!!!!Usage
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Deferred execution from an 'onClick' link''
                                                                                                                                                                                                                                          -By including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''External script source files:''
                                                                                                                                                                                                                                          -You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Defining javascript functions and libraries:''
                                                                                                                                                                                                                                          -Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Creating dynamic tiddler content''
                                                                                                                                                                                                                                          -An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
                                                                                                                                                                                                                                          -* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
                                                                                                                                                                                                                                          -* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
                                                                                                                                                                                                                                          -* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Accessing the ~TiddlyWiki DOM''
                                                                                                                                                                                                                                          -The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Access to this DOM element allows you to create scripts that can:
                                                                                                                                                                                                                                          -* vary their actions based upon the specific location in which they are embedded
                                                                                                                                                                                                                                          -* access 'tiddler-relative' information (use findContainingTiddler(place))
                                                                                                                                                                                                                                          -* perform direct DOM manipulations (when returning wikified text is not enough)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Examples
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -an "alert" message box:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dynamic output:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>return (new Date()).toString();</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>return (new Date()).toString();</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -wikified dynamic output:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dynamic output using 'place' to get size information for current tiddler
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -creating an 'onclick' button/link that runs a script
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script label="click here">
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script label="click here">
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -loading a script from a source url
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script src="demo.js">return "loading demo.js..."</script>
                                                                                                                                                                                                                                          -<script label="click to execute demo() function">demo()</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -where http://www.TiddlyTools.com/demo.js contains:
                                                                                                                                                                                                                                          ->function demo() { alert('this output is from demo(), defined in demo.js') }
                                                                                                                                                                                                                                          ->alert('InlineJavascriptPlugin: demo.js has been loaded');
                                                                                                                                                                                                                                          -<script src="demo.js">return "loading demo.js..."</script>
                                                                                                                                                                                                                                          -<script label="click to execute demo() function">demo()</script>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.01.05 [1.4.0]''
                                                                                                                                                                                                                                          -added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
                                                                                                                                                                                                                                          -''2005.12.13 [1.3.1]''
                                                                                                                                                                                                                                          -when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
                                                                                                                                                                                                                                          -''2005.11.09 [1.3.0]''
                                                                                                                                                                                                                                          -for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content
                                                                                                                                                                                                                                          -Based on a suggestion by BradleyMeck
                                                                                                                                                                                                                                          -''2005.11.08 [1.2.0]''
                                                                                                                                                                                                                                          -handle loading of javascript from an external URL via src="..." syntax
                                                                                                                                                                                                                                          -''2005.11.08 [1.1.0]''
                                                                                                                                                                                                                                          -pass 'place' param into scripts to provide direct DOM access 
                                                                                                                                                                                                                                          -''2005.11.08 [1.0.0]''
                                                                                                                                                                                                                                          -initial release
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Credits
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.inlineJavascript= {major: 1, minor: 4, revision: 0, date: new Date(2006,1,5)};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "inlineJavascript",
                                                                                                                                                                                                                                          - match: "\\<script",
                                                                                                                                                                                                                                          - lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?\\>((?:.|\\n)*?)\\</script\\>",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - var lookaheadRegExp = new RegExp(this.lookahead,"mg");
                                                                                                                                                                                                                                          - lookaheadRegExp.lastIndex = w.matchStart;
                                                                                                                                                                                                                                          - var lookaheadMatch = lookaheadRegExp.exec(w.source)
                                                                                                                                                                                                                                          - if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
                                                                                                                                                                                                                                          - if (lookaheadMatch[1]) { // load a script library
                                                                                                                                                                                                                                          - // make script tag, set src, add to body to execute, then remove for cleanup
                                                                                                                                                                                                                                          - var script = document.createElement("script"); script.src = lookaheadMatch[1];
                                                                                                                                                                                                                                          - document.body.appendChild(script); document.body.removeChild(script);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (lookaheadMatch[2] && lookaheadMatch[3]) { // create a link to an 'onclick' script
                                                                                                                                                                                                                                          - // add a link, define click handler, save code in link (pass 'place'), set link attributes
                                                                                                                                                                                                                                          - var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
                                                                                                                                                                                                                                          - link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
                                                                                                                                                                                                                                          - link.code="function _out(place){"+lookaheadMatch[3]+"};_out(this);"
                                                                                                                                                                                                                                          - link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - else if (lookaheadMatch[3]) { // run inline script code
                                                                                                                                                                                                                                          - var code="function _out(place){"+lookaheadMatch[3]+"};_out(w.output);"
                                                                                                                                                                                                                                          - code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
                                                                                                                                                                                                                                          - try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
                                                                                                                                                                                                                                          - if (out && out.length) wikify(out,w.output);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|''Name:''|InlineJavascriptPlugin|
                                                                                                                                                                                                                                          -|''Source:''|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
                                                                                                                                                                                                                                          -|''Author:''|Eric Shulman - ELS Design Studios|
                                                                                                                                                                                                                                          -|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
                                                                                                                                                                                                                                          -|''~CoreVersion:''|2.0.10|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Insert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
                                                                                                                                                                                                                                          -!!!!!Usage
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Deferred execution from an 'onClick' link''
                                                                                                                                                                                                                                          -By including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''External script source files:''
                                                                                                                                                                                                                                          -You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Display script source in tiddler output''
                                                                                                                                                                                                                                          -By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Defining javascript functions and libraries:''
                                                                                                                                                                                                                                          -Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Creating dynamic tiddler content''
                                                                                                                                                                                                                                          -An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
                                                                                                                                                                                                                                          -* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
                                                                                                                                                                                                                                          -* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
                                                                                                                                                                                                                                          -* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Accessing the ~TiddlyWiki DOM''
                                                                                                                                                                                                                                          -The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Access to this DOM element allows you to create scripts that can:
                                                                                                                                                                                                                                          -* vary their actions based upon the specific location in which they are embedded
                                                                                                                                                                                                                                          -* access 'tiddler-relative' information (use findContainingTiddler(place))
                                                                                                                                                                                                                                          -* perform direct DOM manipulations (when returning wikified text is not enough)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Examples
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -an "alert" message box:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - alert('InlineJavascriptPlugin: this is a demonstration message');
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -dynamic output:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - return (new Date()).toString();
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -wikified dynamic output:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - return "link to current user: [["+config.options.txtUserName+"]]";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -dynamic output using 'place' to get size information for current tiddler:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -creating an 'onclick' button/link that runs a script:
                                                                                                                                                                                                                                          -><script label="click here" show>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -loading a script from a source url:
                                                                                                                                                                                                                                          ->http://www.TiddlyTools.com/demo.js contains:
                                                                                                                                                                                                                                          ->>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
                                                                                                                                                                                                                                          ->>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
                                                                                                                                                                                                                                          -><script src="demo.js" show>
                                                                                                                                                                                                                                          - return "loading demo.js..."
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -><script label="click to execute demo() function" show>
                                                                                                                                                                                                                                          - demo()
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
                                                                                                                                                                                                                                          -''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
                                                                                                                                                                                                                                          -''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
                                                                                                                                                                                                                                          -''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
                                                                                                                                                                                                                                          -''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
                                                                                                                                                                                                                                          -''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
                                                                                                                                                                                                                                          -''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access 
                                                                                                                                                                                                                                          -''2005.11.08 [1.0.0]'' initial release
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Credits
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.inlineJavascript= {major: 1, minor: 5, revision: 1, date: new Date(2006,6,1)};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "inlineJavascript",
                                                                                                                                                                                                                                          - match: "\\<script",
                                                                                                                                                                                                                                          - lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - var lookaheadRegExp = new RegExp(this.lookahead,"mg");
                                                                                                                                                                                                                                          - lookaheadRegExp.lastIndex = w.matchStart;
                                                                                                                                                                                                                                          - var lookaheadMatch = lookaheadRegExp.exec(w.source)
                                                                                                                                                                                                                                          - if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
                                                                                                                                                                                                                                          - if (lookaheadMatch[1]) { // load a script library
                                                                                                                                                                                                                                          - // make script tag, set src, add to body to execute, then remove for cleanup
                                                                                                                                                                                                                                          - var script = document.createElement("script"); script.src = lookaheadMatch[1];
                                                                                                                                                                                                                                          - document.body.appendChild(script); document.body.removeChild(script);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (lookaheadMatch[4]) { // there is script code
                                                                                                                                                                                                                                          - if (lookaheadMatch[3]) // show inline script code in tiddler output
                                                                                                                                                                                                                                          - wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
                                                                                                                                                                                                                                          - if (lookaheadMatch[2]) { // create a link to an 'onclick' script
                                                                                                                                                                                                                                          - // add a link, define click handler, save code in link (pass 'place'), set link attributes
                                                                                                                                                                                                                                          - var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
                                                                                                                                                                                                                                          - link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
                                                                                                                                                                                                                                          - link.code="function _out(place){"+lookaheadMatch[4]+"};_out(this);"
                                                                                                                                                                                                                                          - link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - else { // run inline script code
                                                                                                                                                                                                                                          - var code="function _out(place){"+lookaheadMatch[4]+"};_out(w.output);"
                                                                                                                                                                                                                                          - code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
                                                                                                                                                                                                                                          - try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
                                                                                                                                                                                                                                          - if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          GettingStarted
                                                                                                                                                                                                                                          -[[Cinelerra3Wiki]]
                                                                                                                                                                                                                                          -[[Admin]]
                                                                                                                                                                                                                                          -<<fullscreen>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          ! Manifest
                                                                                                                                                                                                                                          -This Proposal describe the general ideas how the community will work together to create Cinelerra3.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!! Description
                                                                                                                                                                                                                                          -I started with my personal opinions, so far people expressed their commitment with this text.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!! Background
                                                                                                                                                                                                                                          -Cinelerra is quite an old project, there is an original version from heroinewarrior.com and a community fork at cinelerra.org. The original author claims that there was no-one producing usable input despite their proposes while cinelerra was in development, and indeed the cinelerra.org community only feeds back the source released by the original author into their SVN repository and maintains few fixes. There is not much development going on. Some people have created new functionality/features from time to time which have rarely been merged into the main repository and maintained by themselves.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -The Cinelerra community is a quite loose group of individuals, there is some fluctuation on the developer base and almost all developers have day jobs which restricts their involvement time on the cinelerra project.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Some of these things work quite well, there is an overall friendly relation between the involved people. People who know C++ and have the time to edit the source have satisfactory added their own features. The Mailing-list and the IRC channel is also quite helpful and even new users who ask stupid questions are welcome.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -But there are some bad things too. Notably there is not much progress on the community development. Users don't benefit from new improvements which other people have made. There is a endlessly growing list of bugs and feature requests, when someone sends a patch to the ML he has to invest quite some time to maintain it until it might be merged. Finally we don't know what heroine virtual is working on, until we see his next tarball.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!! Solution for Cinelerra3
                                                                                                                                                                                                                                          -Cinelerra is heroine's product, this time we should work together with him to make it pleasant and progressing for anyone.
                                                                                                                                                                                                                                          -We are in need of a new development model which is acceptable by all involved people and benefits from the way Cinelerra development worked the years before, without maintaining the bad sides again: 
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -# ''Make it easy to contribute''<<br>>Even if it is favorable when we have people which are continuously working on Cinelerra, it's a fact that people show up, send a few patches and then disappear. The development model should be prepared for this by:
                                                                                                                                                                                                                                          -## Good documentation
                                                                                                                                                                                                                                          -## Well defined design and interfaces  
                                                                                                                                                                                                                                          -## Establish some coding guidelines to make it easy for others maintain code written by others
                                                                                                                                                                                                                                          -## Prefer known and simple approaches/coding over bleeding edge and highly complex techniques 
                                                                                                                                                                                                                                          -# ''Simple access''<<br>>We will use a fully distributed development model using git. I'll open a anonymous pushable repository which anyone can use to publish his changes.
                                                                                                                                                                                                                                          -# ''Freedom to do, or not to do''<<br>>The model allows everyone to do as much as he wants. In a free project there is no way to put demands on people. This is good since it's easy to join and is open for anyone. The community might expect some responsibility for people maintaining their patches, but at worst, things which don't match our expected quality and when there is no one who keeps them up, will be removed. Since we are working in a distributed way with each developer maintaining his own repository and merging from other people, there is no easy way that bad code will leap into the project.
                                                                                                                                                                                                                                          -# ''No Rule is better than a Rule which is not engaged''<<br>>We have to agree on some rules to make teamwork possible. These rules should be kept to a minimum required and accepted by all involved people. It is vital that we can trust each other on simple things, like properly formatted code or that patches one proposes to merge don't break the system etc..
                                                                                                                                                                                                                                          -# ''Legal status must be clear''<<br>>Cinelerra is developed under the GPL, every contributor must acknowledge this. Even when we provide anonymous commits, every non trivial patch should be traceable to the person who made it, GPG signatures would be proper here - details need to be worked out.
                                                                                                                                                                                                                                          -# ''All for Cinelerra''<<br>>The goal is to make the best Linux video editor to date, nothing less. Everyone puts in their best abilities. This project is not the place to blame people for things where they are not profound, help each other, make things right instead of blaming someone. Everyone should rate himself at what he can do best on the project.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>My TiddlyWiki</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
                                                                                                                                                                                                                                          -	<div class='headerShadow'>
                                                                                                                                                                                                                                          -		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -	</div>
                                                                                                                                                                                                                                          -	<div class='headerForeground'>
                                                                                                                                                                                                                                          -		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -	</div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!-- horizontal MainMenu -->
                                                                                                                                                                                                                                          -<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
                                                                                                                                                                                                                                          -<!-- original MainMenu menu -->
                                                                                                                                                                                                                                          -<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->
                                                                                                                                                                                                                                          -<div id='sidebar'>
                                                                                                                                                                                                                                          -	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
                                                                                                                                                                                                                                          -	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='displayArea'>
                                                                                                                                                                                                                                          -	<div id='messageArea'></div>
                                                                                                                                                                                                                                          -	<div id='tiddlerDisplay'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|<html><a name="Top"/></html>''Name:''|PartTiddlerPlugin|
                                                                                                                                                                                                                                          -|''Version:''|1.0.6 (2006-11-07)|
                                                                                                                                                                                                                                          -|''Source:''|http://tiddlywiki.abego-software.de/#PartTiddlerPlugin|
                                                                                                                                                                                                                                          -|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
                                                                                                                                                                                                                                          -|''Licence:''|[[BSD open source license]]|
                                                                                                                                                                                                                                          -|''TiddlyWiki:''|2.0|
                                                                                                                                                                                                                                          -|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
                                                                                                                                                                                                                                          -!Table of Content<html><a name="TOC"/></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Description',null, event)">Description, Syntax</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Applications',null, event)">Applications</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('LongTiddler',null, event)">Refering to Paragraphs of a Longer Tiddler</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Citation',null, event)">Citation Index</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('TableCells',null, event)">Creating "multi-line" Table Cells</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Tabs',null, event)">Creating Tabs</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Sliders',null, event)">Using Sliders</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Revisions',null, event)">Revision History</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Code',null, event)">Code</a></html>
                                                                                                                                                                                                                                          -!Description<html><a name="Description"/></html>
                                                                                                                                                                                                                                          -With the {{{<part aPartName> ... </part>}}} feature you can structure your tiddler text into separate (named) parts. 
                                                                                                                                                                                                                                          -Each part can be referenced as a "normal" tiddler, using the "//tiddlerName//''/''//partName//" syntax (e.g. "About/Features"). E.g. you may create links to the parts, use it in {{{<<tiddler...>>}}} or {{{<<tabs...>>}}} macros etc.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Syntax:'' 
                                                                                                                                                                                                                                          -|>|''<part'' //partName// [''hidden''] ''>'' //any tiddler content// ''</part>''|
                                                                                                                                                                                                                                          -|//partName//|The name of the part. You may reference a part tiddler with the combined tiddler name "//nameOfContainerTidder//''/''//partName//.|
                                                                                                                                                                                                                                          -|''hidden''|When defined the content of the part is not displayed in the container tiddler. But when the part is explicitly referenced (e.g. in a {{{<<tiddler...>>}}} macro or in a link) the part's content is displayed.|
                                                                                                                                                                                                                                          -|<html><i>any&nbsp;tiddler&nbsp;content</i></html>|<html>The content of the part.<br>A part can have any content that a "normal" tiddler may have, e.g. you may use all the formattings and macros defined.</html>|
                                                                                                                                                                                                                                          -|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Applications<html><a name="Applications"/></html>
                                                                                                                                                                                                                                          -!!Refering to Paragraphs of a Longer Tiddler<html><a name="LongTiddler"/></html>
                                                                                                                                                                                                                                          -Assume you have written a long description in a tiddler and now you want to refer to the content of a certain paragraph in that tiddler (e.g. some definition.) Just wrap the text with a ''part'' block, give it a nice name, create a "pretty link" (like {{{[[Discussion Groups|Introduction/DiscussionGroups]]}}}) and you are done.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice this complements the approach to first writing a lot of small tiddlers and combine these tiddlers to one larger tiddler in a second step (e.g. using the {{{<<tiddler...>>}}} macro). Using the ''part'' feature you can first write a "classic" (longer) text that can be read "from top to bottom" and later "reuse" parts of this text for some more "non-linear" reading.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Citation Index<html><a name="Citation"/></html>
                                                                                                                                                                                                                                          -Create a tiddler "Citations" that contains your "citations". 
                                                                                                                                                                                                                                          -Wrap every citation with a part and a proper name. 
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<part BAX98>Baxter, Ira D. et al: //Clone Detection Using Abstract Syntax Trees.// 
                                                                                                                                                                                                                                          -in //Proc. ICSM//, 1998.</part>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part BEL02>Bellon, Stefan: //Vergleich von Techniken zur Erkennung duplizierten Quellcodes.// 
                                                                                                                                                                                                                                          -Thesis, Uni Stuttgart, 2002.</part>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part DUC99>Ducasse, Stéfane et al: //A Language Independent Approach for Detecting Duplicated Code.// 
                                                                                                                                                                                                                                          -in //Proc. ICSM//, 1999.</part>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You may now "cite" them just by using a pretty link like {{{[[Citations/BAX98]]}}} or even more pretty, like this {{{[[BAX98|Citations/BAX98]]}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Creating "multi-line" Table Cells<html><a name="TableCells"/></html>
                                                                                                                                                                                                                                          -You may have noticed that it is hard to create table cells with "multi-line" content. E.g. if you want to create a bullet list inside a table cell you cannot just write the bullet list
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -* Item 1
                                                                                                                                                                                                                                          -* Item 2
                                                                                                                                                                                                                                          -* Item 3
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -into a table cell (i.e. between the | ... | bars) because every bullet item must start in a new line but all cells of a table row must be in one line.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Using the ''part'' feature this problem can be solved. Just create a hidden part that contains the cells content and use a {{{<<tiddler >>}}} macro to include its content in the table's cell.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -|!Subject|!Items|
                                                                                                                                                                                                                                          -|subject1|<<tiddler ./Cell1>>|
                                                                                                                                                                                                                                          -|subject2|<<tiddler ./Cell2>>|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part Cell1 hidden>
                                                                                                                                                                                                                                          -* Item 1
                                                                                                                                                                                                                                          -* Item 2
                                                                                                                                                                                                                                          -* Item 3
                                                                                                                                                                                                                                          -</part>
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that inside the {{{<<tiddler ...>>}}} macro you may refer to the "current tiddler" using the ".".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -BTW: The same approach can be used to create bullet lists with items that contain more than one line.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Creating Tabs<html><a name="Tabs"/></html>
                                                                                                                                                                                                                                          -The build-in {{{<<tabs ...>>}}} macro requires that you defined an additional tiddler for every tab it displays. When you want to have "nested" tabs you need to define a tiddler for the "main tab" and one for every tab it contains. I.e. the definition of a set of tabs that is visually displayed at one place is distributed across multiple tiddlers.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -With the ''part'' feature you can put the complete definition in one tiddler, making it easier to keep an overview and maintain the tab sets.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -The standard tabs at the sidebar are defined by the following eight tiddlers:
                                                                                                                                                                                                                                          -* SideBarTabs
                                                                                                                                                                                                                                          -* TabAll
                                                                                                                                                                                                                                          -* TabMore
                                                                                                                                                                                                                                          -* TabMoreMissing
                                                                                                                                                                                                                                          -* TabMoreOrphans
                                                                                                                                                                                                                                          -* TabMoreShadowed
                                                                                                                                                                                                                                          -* TabTags
                                                                                                                                                                                                                                          -* TabTimeline
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Instead of these eight tiddlers one could define the following SideBarTabs tiddler that uses the ''part'' feature:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<tabs txtMainTab 
                                                                                                                                                                                                                                          - Timeline Timeline SideBarTabs/Timeline 
                                                                                                                                                                                                                                          - All 'All tiddlers' SideBarTabs/All 
                                                                                                                                                                                                                                          - Tags 'All tags' SideBarTabs/Tags 
                                                                                                                                                                                                                                          - More 'More lists' SideBarTabs/More>>
                                                                                                                                                                                                                                          -<part Timeline hidden><<timeline>></part>
                                                                                                                                                                                                                                          -<part All hidden><<list all>></part>
                                                                                                                                                                                                                                          -<part Tags hidden><<allTags>></part>
                                                                                                                                                                                                                                          -<part More hidden><<tabs txtMoreTab 
                                                                                                                                                                                                                                          - Missing 'Missing tiddlers' SideBarTabs/Missing 
                                                                                                                                                                                                                                          - Orphans 'Orphaned tiddlers' SideBarTabs/Orphans 
                                                                                                                                                                                                                                          - Shadowed 'Shadowed tiddlers' SideBarTabs/Shadowed>></part>
                                                                                                                                                                                                                                          -<part Missing hidden><<list missing>></part>
                                                                                                                                                                                                                                          -<part Orphans hidden><<list orphans>></part>
                                                                                                                                                                                                                                          -<part Shadowed hidden><<list shadowed>></part>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that you can easily "overwrite" individual parts in separate tiddlers that have the full name of the part.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -E.g. if you don't like the classic timeline tab but only want to see the 100 most recent tiddlers you could create a tiddler "~SideBarTabs/Timeline" with the following content:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<forEachTiddler 
                                                                                                                                                                                                                                          - sortBy 'tiddler.modified' descending 
                                                                                                                                                                                                                                          - write '(index < 100) ? "* [["+tiddler.title+"]]\n":""'>>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Using Sliders<html><a name="Sliders"/></html>
                                                                                                                                                                                                                                          -Very similar to the build-in {{{<<tabs ...>>}}} macro (see above) the {{{<<slider ...>>}}} macro requires that you defined an additional tiddler that holds the content "to be slid". You can avoid creating this extra tiddler by using the ''part'' feature
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -In a tiddler "About" we may use the slider to show some details that are documented in the tiddler's "Details" part.
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -<<slider chkAboutDetails About/Details details "Click here to see more details">>
                                                                                                                                                                                                                                          -<part Details hidden>
                                                                                                                                                                                                                                          -To give you a better overview ...
                                                                                                                                                                                                                                          -</part>
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that putting the content of the slider into the slider's tiddler also has an extra benefit: When you decide you need to edit the content of the slider you can just doubleclick the content, the tiddler opens for editing and you can directly start editing the content (in the part section). In the "old" approach you would doubleclick the tiddler, see that the slider is using tiddler X, have to look for the tiddler X and can finally open it for editing. So using the ''part'' approach results in a much short workflow.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Revision history<html><a name="Revisions"/></html>
                                                                                                                                                                                                                                          -* v1.0.6 (2006-11-07)
                                                                                                                                                                                                                                          -** Bugfix: cannot edit tiddler when UploadPlugin by Bidix is installed. Thanks to José Luis González Castro for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.5 (2006-03-02)
                                                                                                                                                                                                                                          -** Bugfix: Example with multi-line table cells does not work in IE6. Thanks to Paulo Soares for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.4 (2006-02-28)
                                                                                                                                                                                                                                          -** Bugfix: Shadow tiddlers cannot be edited (in TW 2.0.6). Thanks to Torsten Vanek for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.3 (2006-02-26)
                                                                                                                                                                                                                                          -** Adapt code to newly introduced Tiddler.prototype.isReadOnly() function (in TW 2.0.6). Thanks to Paulo Soares for reporting the problem.
                                                                                                                                                                                                                                          -* v1.0.2 (2006-02-05)
                                                                                                                                                                                                                                          -** Also allow other macros than the "tiddler" macro use the "." in the part reference (to refer to "this" tiddler)
                                                                                                                                                                                                                                          -* v1.0.1 (2006-01-27)
                                                                                                                                                                                                                                          -** Added Table of Content for plugin documentation. Thanks to RichCarrillo for suggesting.
                                                                                                                                                                                                                                          -** Bugfix: newReminder plugin does not work when PartTiddler is installed. Thanks to PauloSoares for reporting.
                                                                                                                                                                                                                                          -* v1.0.0 (2006-01-25)
                                                                                                                                                                                                                                          -** initial version
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code<html><a name="Code"/></html>
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// PartTiddlerPlugin
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Ensure that the PartTiddler Plugin is only installed once.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -if (!version.extensions.PartTiddlerPlugin) {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -version.extensions.PartTiddlerPlugin = {
                                                                                                                                                                                                                                          - major: 1, minor: 0, revision: 6,
                                                                                                                                                                                                                                          - date: new Date(2006, 10, 7), 
                                                                                                                                                                                                                                          - type: 'plugin',
                                                                                                                                                                                                                                          - source: "http://tiddlywiki.abego-software.de/#PartTiddlerPlugin"
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -if (!window.abego) window.abego = {};
                                                                                                                                                                                                                                          -if (version.major < 2) alertAndThrow("PartTiddlerPlugin requires TiddlyWiki 2.0 or newer.");
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Common Helpers
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Looks for the next newline, starting at the index-th char of text. 
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// If there are only whitespaces between index and the newline 
                                                                                                                                                                                                                                          -// the index behind the newline is returned, 
                                                                                                                                                                                                                                          -// otherwise (or when no newline is found) index is returned.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var skipEmptyEndOfLine = function(text, index) {
                                                                                                                                                                                                                                          - var re = /(\n|[^\s])/g;
                                                                                                                                                                                                                                          - re.lastIndex = index;
                                                                                                                                                                                                                                          - var result = re.exec(text);
                                                                                                                                                                                                                                          - return (result && text.charAt(result.index) == '\n') 
                                                                                                                                                                                                                                          - ? result.index+1
                                                                                                                                                                                                                                          - : index;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Constants
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var partEndOrStartTagRE = /(<\/part>)|(<part(?:\s+)((?:[^>])+)>)/mg;
                                                                                                                                                                                                                                          -var partEndTagREString = "<\\/part>";
                                                                                                                                                                                                                                          -var partEndTagString = "</part>";
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Plugin Specific Helpers
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Parse the parameters inside a <part ...> tag and return the result.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return [may be null] {partName: ..., isHidden: ...}
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var parseStartTagParams = function(paramText) {
                                                                                                                                                                                                                                          - var params = paramText.readMacroParams();
                                                                                                                                                                                                                                          - if (params.length == 0 || params[0].length == 0) return null;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - var name = params[0];
                                                                                                                                                                                                                                          - var paramsIndex = 1;
                                                                                                                                                                                                                                          - var hidden = false;
                                                                                                                                                                                                                                          - if (paramsIndex < params.length) {
                                                                                                                                                                                                                                          - hidden = params[paramsIndex] == "hidden";
                                                                                                                                                                                                                                          - paramsIndex++;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return {
                                                                                                                                                                                                                                          - partName: name, 
                                                                                                                                                                                                                                          - isHidden: hidden
                                                                                                                                                                                                                                          - };
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Returns the match to the next (end or start) part tag in the text, 
                                                                                                                                                                                                                                          -// starting the search at startIndex.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -// When no such tag is found null is returned, otherwise a "Match" is returned:
                                                                                                                                                                                                                                          -// [0]: full match
                                                                                                                                                                                                                                          -// [1]: matched "end" tag (or null when no end tag match)
                                                                                                                                                                                                                                          -// [2]: matched "start" tag (or null when no start tag match)
                                                                                                                                                                                                                                          -// [3]: content of start tag (or null if no start tag match)
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var findNextPartEndOrStartTagMatch = function(text, startIndex) {
                                                                                                                                                                                                                                          - var re = new RegExp(partEndOrStartTagRE);
                                                                                                                                                                                                                                          - re.lastIndex = startIndex;
                                                                                                                                                                                                                                          - var match = re.exec(text);
                                                                                                                                                                                                                                          - return match;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Formatter
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Process the <part ...> ... </part> starting at (w.source, w.matchStart) for formatting.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return true if a complete part section (including the end tag) could be processed, false otherwise.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var handlePartSection = function(w) {
                                                                                                                                                                                                                                          - var tagMatch = findNextPartEndOrStartTagMatch(w.source, w.matchStart);
                                                                                                                                                                                                                                          - if (!tagMatch) return false;
                                                                                                                                                                                                                                          - if (tagMatch.index != w.matchStart || !tagMatch[2]) return false;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - // Parse the start tag parameters
                                                                                                                                                                                                                                          - var arguments = parseStartTagParams(tagMatch[3]);
                                                                                                                                                                                                                                          - if (!arguments) return false;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - // Continue processing
                                                                                                                                                                                                                                          - var startTagEndIndex = skipEmptyEndOfLine(w.source, tagMatch.index + tagMatch[0].length);
                                                                                                                                                                                                                                          - var endMatch = findNextPartEndOrStartTagMatch(w.source, startTagEndIndex);
                                                                                                                                                                                                                                          - if (endMatch && endMatch[1]) {
                                                                                                                                                                                                                                          - if (!arguments.isHidden) {
                                                                                                                                                                                                                                          - w.nextMatch = startTagEndIndex;
                                                                                                                                                                                                                                          - w.subWikify(w.output,partEndTagREString);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = skipEmptyEndOfLine(w.source, endMatch.index + endMatch[0].length);
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return true;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - return false;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "part",
                                                                                                                                                                                                                                          - match: "<part\\s+[^>]+>",
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - if (!handlePartSection(w)) {
                                                                                                                                                                                                                                          - w.outputText(w.output,w.matchStart,w.matchStart+w.matchLength);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Extend "fetchTiddler" functionality to also recognize "part"s of tiddlers 
                                                                                                                                                                                                                                          -// as tiddlers.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var currentParent = null; // used for the "." parent (e.g. in the "tiddler" macro)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Return the match to the first <part ...> tag of the text that has the
                                                                                                                                                                                                                                          -// requrest partName.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return [may be null]
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var findPartStartTagByName = function(text, partName) {
                                                                                                                                                                                                                                          - var i = 0;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - while (true) {
                                                                                                                                                                                                                                          - var tagMatch = findNextPartEndOrStartTagMatch(text, i);
                                                                                                                                                                                                                                          - if (!tagMatch) return null;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - if (tagMatch[2]) {
                                                                                                                                                                                                                                          - // Is start tag
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - // Check the name
                                                                                                                                                                                                                                          - var arguments = parseStartTagParams(tagMatch[3]);
                                                                                                                                                                                                                                          - if (arguments && arguments.partName == partName) {
                                                                                                                                                                                                                                          - return tagMatch;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - i += tagMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Return the part "partName" of the given parentTiddler as a "readOnly" Tiddler 
                                                                                                                                                                                                                                          -// object, using fullName as the Tiddler's title. 
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// All remaining properties of the new Tiddler (tags etc.) are inherited from 
                                                                                                                                                                                                                                          -// the parentTiddler.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -// @return [may be null]
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var getPart = function(parentTiddler, partName, fullName) {
                                                                                                                                                                                                                                          - var text = parentTiddler.text;
                                                                                                                                                                                                                                          - var startTag = findPartStartTagByName(text, partName);
                                                                                                                                                                                                                                          - if (!startTag) return null;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - var endIndexOfStartTag = skipEmptyEndOfLine(text, startTag.index+startTag[0].length);
                                                                                                                                                                                                                                          - var indexOfEndTag = text.indexOf(partEndTagString, endIndexOfStartTag);
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - if (indexOfEndTag >= 0) {
                                                                                                                                                                                                                                          - var partTiddlerText = text.substring(endIndexOfStartTag,indexOfEndTag);
                                                                                                                                                                                                                                          - var partTiddler = new Tiddler();
                                                                                                                                                                                                                                          - partTiddler.set(
                                                                                                                                                                                                                                          - fullName,
                                                                                                                                                                                                                                          - partTiddlerText,
                                                                                                                                                                                                                                          - parentTiddler.modifier,
                                                                                                                                                                                                                                          - parentTiddler.modified,
                                                                                                                                                                                                                                          - parentTiddler.tags,
                                                                                                                                                                                                                                          - parentTiddler.created);
                                                                                                                                                                                                                                          - partTiddler.abegoIsPartTiddler = true;
                                                                                                                                                                                                                                          - return partTiddler;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return null;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Hijack the store.fetchTiddler to recognize the "part" addresses.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var oldFetchTiddler = store.fetchTiddler ;
                                                                                                                                                                                                                                          -store.fetchTiddler = function(title) {
                                                                                                                                                                                                                                          - var result = oldFetchTiddler.apply(this, arguments);
                                                                                                                                                                                                                                          - if (!result && title) {
                                                                                                                                                                                                                                          - var i = title.lastIndexOf('/');
                                                                                                                                                                                                                                          - if (i > 0) {
                                                                                                                                                                                                                                          - var parentName = title.substring(0, i);
                                                                                                                                                                                                                                          - var partName = title.substring(i+1);
                                                                                                                                                                                                                                          - var parent = (parentName == ".") 
                                                                                                                                                                                                                                          - ? currentParent 
                                                                                                                                                                                                                                          - : oldFetchTiddler.apply(this, [parentName]);
                                                                                                                                                                                                                                          - if (parent) {
                                                                                                                                                                                                                                          - return getPart(parent, partName, parent.title+"/"+partName);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - return result; 
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// The user must not edit a readOnly/partTiddler
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.editTiddler.oldIsReadOnlyFunction = Tiddler.prototype.isReadOnly;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Tiddler.prototype.isReadOnly = function() {
                                                                                                                                                                                                                                          - // Tiddler.isReadOnly was introduced with TW 2.0.6.
                                                                                                                                                                                                                                          - // For older version we explicitly check the global readOnly flag
                                                                                                                                                                                                                                          - if (config.commands.editTiddler.oldIsReadOnlyFunction) {
                                                                                                                                                                                                                                          - if (config.commands.editTiddler.oldIsReadOnlyFunction.apply(this, arguments)) return true;
                                                                                                                                                                                                                                          - } else {
                                                                                                                                                                                                                                          - if (readOnly) return true;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - return this.abegoIsPartTiddler;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.editTiddler.handler = function(event,src,title)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          - var t = store.getTiddler(title);
                                                                                                                                                                                                                                          - // Edit the tiddler if it either is not a tiddler (but a shadowTiddler)
                                                                                                                                                                                                                                          - // or the tiddler is not readOnly
                                                                                                                                                                                                                                          - if(!t || !t.abegoIsPartTiddler)
                                                                                                                                                                                                                                          - {
                                                                                                                                                                                                                                          - clearMessage();
                                                                                                                                                                                                                                          - story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE);
                                                                                                                                                                                                                                          - story.focusTiddler(title,"text");
                                                                                                                                                                                                                                          - return false;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// To allow the "./partName" syntax in macros we need to hijack 
                                                                                                                                                                                                                                          -// the invokeMacro to define the "currentParent" while it is running.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -var oldInvokeMacro = window.invokeMacro;
                                                                                                                                                                                                                                          -function myInvokeMacro(place,macro,params,wikifier,tiddler) {
                                                                                                                                                                                                                                          - var oldCurrentParent = currentParent;
                                                                                                                                                                                                                                          - if (tiddler) currentParent = tiddler;
                                                                                                                                                                                                                                          - try {
                                                                                                                                                                                                                                          - oldInvokeMacro.apply(this, arguments);
                                                                                                                                                                                                                                          - } finally {
                                                                                                                                                                                                                                          - currentParent = oldCurrentParent;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -window.invokeMacro = myInvokeMacro;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Scroll the anchor anchorName in the viewer of the given tiddler visible.
                                                                                                                                                                                                                                          -// When no tiddler is defined use the tiddler of the target given event is used.
                                                                                                                                                                                                                                          -window.scrollAnchorVisible = function(anchorName, tiddler, evt) {
                                                                                                                                                                                                                                          - var tiddlerElem = null;
                                                                                                                                                                                                                                          - if (tiddler) {
                                                                                                                                                                                                                                          - tiddlerElem = document.getElementById(story.idPrefix + tiddler);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (!tiddlerElem && evt) {
                                                                                                                                                                                                                                          - var target = resolveTarget(evt);
                                                                                                                                                                                                                                          - tiddlerElem = story.findContainingTiddler(target);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (!tiddlerElem) return;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - var children = tiddlerElem.getElementsByTagName("a");
                                                                                                                                                                                                                                          - for (var i = 0; i < children.length; i++) {
                                                                                                                                                                                                                                          - var child = children[i];
                                                                                                                                                                                                                                          - var name = child.getAttribute("name");
                                                                                                                                                                                                                                          - if (name == anchorName) {
                                                                                                                                                                                                                                          - var y = findPosY(child);
                                                                                                                                                                                                                                          - window.scrollTo(0,y);
                                                                                                                                                                                                                                          - return;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -} // of "install only once"
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Licence and Copyright
                                                                                                                                                                                                                                          -Copyright (c) abego Software ~GmbH, 2006 ([[www.abego-software.de|http://www.abego-software.de]])
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistribution and use in source and binary forms, with or without modification,
                                                                                                                                                                                                                                          -are permitted provided that the following conditions are met:
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistributions of source code must retain the above copyright notice, this
                                                                                                                                                                                                                                          -list of conditions and the following disclaimer.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistributions in binary form must reproduce the above copyright notice, this
                                                                                                                                                                                                                                          -list of conditions and the following disclaimer in the documentation and/or other
                                                                                                                                                                                                                                          -materials provided with the distribution.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Neither the name of abego Software nor the names of its contributors may be
                                                                                                                                                                                                                                          -used to endorse or promote products derived from this software without specific
                                                                                                                                                                                                                                          -prior written permission.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
                                                                                                                                                                                                                                          -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                                                                                                                                                                                                                                          -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
                                                                                                                                                                                                                                          -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
                                                                                                                                                                                                                                          -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
                                                                                                                                                                                                                                          -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
                                                                                                                                                                                                                                          -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                                                                                                                                                                                                                                          -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
                                                                                                                                                                                                                                          -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
                                                                                                                                                                                                                                          -DAMAGE.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|''Name:''|RSSReaderPlugin|
                                                                                                                                                                                                                                          -|''Description:''|This plugin provides a RSSReader for TiddlyWiki|
                                                                                                                                                                                                                                          -|''Version:''|1.1.1|
                                                                                                                                                                                                                                          -|''Date:''|Apr 21, 2007|
                                                                                                                                                                                                                                          -|''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin|
                                                                                                                                                                                                                                          -|''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc|
                                                                                                                                                                                                                                          -|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
                                                                                                                                                                                                                                          -|''Credit:''|BramChen for RssNewsMacro|
                                                                                                                                                                                                                                          -|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
                                                                                                                                                                                                                                          -|''~CoreVersion:''|2.2.0|
                                                                                                                                                                                                                                          -|''OptionalRequires:''|http://www.tiddlytools.com/#NestedSlidersPlugin|
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.RSSReaderPlugin = {
                                                                                                                                                                                                                                          -	major: 1, minor: 1, revision: 1,
                                                                                                                                                                                                                                          -	date: new Date("Apr 21, 2007"),
                                                                                                                                                                                                                                          -	source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin",
                                                                                                                                                                                                                                          -	author: "BidiX",
                                                                                                                                                                                                                                          -	coreVersion: '2.2.0'
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.rssReader = {
                                                                                                                                                                                                                                          -	dateFormat: "DDD, DD MMM YYYY",
                                                                                                                                                                                                                                          -	itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed  '@@'+itemStyle+itemText+'@@'
                                                                                                                                                                                                                                          -	msg:{
                                                                                                                                                                                                                                          -		permissionDenied: "Permission to read preferences was denied.",
                                                                                                                                                                                                                                          -		noRSSFeed: "No RSS Feed at this address %0",
                                                                                                                                                                                                                                          -		urlNotAccessible: " Access to %0 is not allowed"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	cache: [], 	// url => XMLHttpRequest.responseXML
                                                                                                                                                                                                                                          -	desc: "noDesc",
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
                                                                                                                                                                                                                                          -		var desc = params[0];
                                                                                                                                                                                                                                          -		var feedURL = params[1];
                                                                                                                                                                                                                                          -		var toFilter = (params[2] ? true : false);
                                                                                                                                                                                                                                          -		var filterString = (toFilter?(params[2].substr(0,1) == ' '? tiddler.title:params[2]):'');
                                                                                                                                                                                                                                          -		var place = createTiddlyElement(place, "div", "RSSReader");
                                                                                                                                                                                                                                          -		wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\n",place);
                                                                                                                                                                                                                                          -		if (this.cache[feedURL]) {
                                                                                                                                                                                                                                          -			this.displayRssFeed(this.cache[feedURL], feedURL, place, desc, toFilter, filterString);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			var r = loadRemoteFile(feedURL,config.macros.rssReader.processResponse, [place, desc, toFilter, filterString]);
                                                                                                                                                                                                                                          -			if (typeof r == "string")
                                                                                                                                                                                                                                          -				displayMessage(r);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// callback for loadRemoteFile 
                                                                                                                                                                                                                                          -	// params : [place, desc, toFilter, filterString]
                                                                                                                                                                                                                                          -	processResponse: function(status, params, responseText, url, xhr) { // feedURL, place, desc, toFilter, filterString) {	
                                                                                                                                                                                                                                          -		if (window.netscape){
                                                                                                                                                                                                                                          -			try {
                                                                                                                                                                                                                                          -				if (document.location.protocol.indexOf("http") == -1) {
                                                                                                                                                                                                                                          -					netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			catch (e) { displayMessage(e.description?e.description:e.toString()); }
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (xhr.status == httpStatus.NotFound)
                                                                                                                                                                                                                                          -		 {
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -			return;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (!status)
                                                                                                                                                                                                                                          -		 {
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -			return;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (xhr.responseXML) {
                                                                                                                                                                                                                                          -			// response is interpreted as XML
                                                                                                                                                                                                                                          -			config.macros.rssReader.cache[url] = xhr.responseXML;
                                                                                                                                                                                                                                          -			config.macros.rssReader.displayRssFeed(xhr.responseXML, params[0], url, params[1], params[2], params[3]);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			if (responseText.substr(0,5) == "<?xml") {
                                                                                                                                                                                                                                          -				// response exists but not return as XML -> try to parse it 
                                                                                                                                                                                                                                          -				var dom = (new DOMParser()).parseFromString(responseText, "text/xml"); 
                                                                                                                                                                                                                                          -				if (dom) {
                                                                                                                                                                                                                                          -					// parsing successful so use it
                                                                                                                                                                                                                                          -					config.macros.rssReader.cache[url] = dom;
                                                                                                                                                                                                                                          -					config.macros.rssReader.displayRssFeed(dom, params[0], url, params[1], params[2], params[3]);
                                                                                                                                                                                                                                          -					return;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			// no XML display as html 
                                                                                                                                                                                                                                          -			wikify("<html>" + responseText + "</html>", params[0]);
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.msg.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// explore down the DOM tree
                                                                                                                                                                                                                                          -	displayRssFeed: function(xml, place, feedURL, desc, toFilter, filterString){
                                                                                                                                                                                                                                          -		// Channel
                                                                                                                                                                                                                                          -		var chanelNode = xml.getElementsByTagName('channel').item(0);
                                                                                                                                                                                                                                          -		var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null);
                                                                                                                                                                                                                                          -		var chanelTitle = "";
                                                                                                                                                                                                                                          -		if ((chanelTitleElement) && (chanelTitleElement.firstChild)) 
                                                                                                                                                                                                                                          -			chanelTitle = chanelTitleElement.firstChild.nodeValue;
                                                                                                                                                                                                                                          -		var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null);
                                                                                                                                                                                                                                          -		var chanelLink = "";
                                                                                                                                                                                                                                          -		if (chanelLinkElement) 
                                                                                                                                                                                                                                          -			chanelLink = chanelLinkElement.firstChild.nodeValue;
                                                                                                                                                                                                                                          -		var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\n";
                                                                                                                                                                                                                                          -		var title = createTiddlyElement(place,"div",null,"ChanelTitle",null);
                                                                                                                                                                                                                                          -		wikify(titleTxt,title);
                                                                                                                                                                                                                                          -		// ItemList
                                                                                                                                                                                                                                          -		var itemList = xml.getElementsByTagName('item');
                                                                                                                                                                                                                                          -		var article = createTiddlyElement(place,"ul",null,null,null);
                                                                                                                                                                                                                                          -		var lastDate;
                                                                                                                                                                                                                                          -		var re;
                                                                                                                                                                                                                                          -		if (toFilter) 
                                                                                                                                                                                                                                          -			re = new RegExp(filterString.escapeRegExp());
                                                                                                                                                                                                                                          -		for (var i=0; i<itemList.length; i++){
                                                                                                                                                                                                                                          -			var titleElm = itemList[i].getElementsByTagName('title').item(0);
                                                                                                                                                                                                                                          -			var titleText = (titleElm ? titleElm.firstChild.nodeValue : '');
                                                                                                                                                                                                                                          -			if (toFilter && ! titleText.match(re)) {
                                                                                                                                                                                                                                          -				continue;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var descText = '';
                                                                                                                                                                                                                                          -			descElem = itemList[i].getElementsByTagName('description').item(0);
                                                                                                                                                                                                                                          -			if (descElem){
                                                                                                                                                                                                                                          -				try{
                                                                                                                                                                                                                                          -					for (var ii=0; ii<descElem.childNodes.length; ii++) {
                                                                                                                                                                                                                                          -						descText += descElem.childNodes[ii].nodeValue;
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				catch(e){}
                                                                                                                                                                                                                                          -				descText = descText.replace(/<br \/>/g,'\n');
                                                                                                                                                                                                                                          -				if (desc == "asHtml")
                                                                                                                                                                                                                                          -					descText = "<html>"+descText+"</html>";
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var linkElm = itemList[i].getElementsByTagName("link").item(0);
                                                                                                                                                                                                                                          -			var linkURL = linkElm.firstChild.nodeValue;
                                                                                                                                                                                                                                          -			var pubElm = itemList[i].getElementsByTagName('pubDate').item(0);
                                                                                                                                                                                                                                          -			var pubDate;
                                                                                                                                                                                                                                          -			if (!pubElm) {
                                                                                                                                                                                                                                          -				pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us
                                                                                                                                                                                                                                          -				if (pubElm) {
                                                                                                                                                                                                                                          -					pubDate = pubElm.firstChild.nodeValue;
                                                                                                                                                                                                                                          -					pubDate = this.formatDateString(this.dateFormat, pubDate);
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -					else {
                                                                                                                                                                                                                                          -						pubDate = '0';
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			else {
                                                                                                                                                                                                                                          -				pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0);
                                                                                                                                                                                                                                          -				pubDate = this.formatDate(this.dateFormat, pubDate);
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			titleText = titleText.replace(/\[|\]/g,'');
                                                                                                                                                                                                                                          -			var rssText = '*'+'[[' + titleText + '|' + linkURL + ']]' + '' ;
                                                                                                                                                                                                                                          -			if ((desc != "noDesc") && descText){
                                                                                                                                                                                                                                          -				rssText = rssText.replace(/\n/g,' ');
                                                                                                                                                                                                                                          -				descText = '@@'+this.itemStyle+descText + '@@\n';				
                                                                                                                                                                                                                                          -				if (version.extensions.nestedSliders){
                                                                                                                                                                                                                                          -					descText = '+++[...]' + descText + '===';
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				rssText = rssText + descText;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var story;
                                                                                                                                                                                                                                          -			if ((lastDate != pubDate) && ( pubDate != '0')) {
                                                                                                                                                                                                                                          -				story = createTiddlyElement(article,"li",null,"RSSItem",pubDate);
                                                                                                                                                                                                                                          -				lastDate = pubDate;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else {
                                                                                                                                                                                                                                          -				lastDate = pubDate;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			story = createTiddlyElement(article,"div",null,"RSSItem",null);
                                                                                                                                                                                                                                          -			wikify(rssText,story);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	formatDate: function(template, date){
                                                                                                                                                                                                                                          -		var dateString = new Date(date);
                                                                                                                                                                                                                                          -		// template = template.replace(/hh|mm|ss/g,'');
                                                                                                                                                                                                                                          -		return dateString.formatString(template);
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	formatDateString: function(template, date){
                                                                                                                                                                                                                                          -		var dateString = new Date(date.substr(0,4), date.substr(5,2) - 1, date.substr(8,2)
                                                                                                                                                                                                                                          -			);
                                                                                                                                                                                                                                          -		return dateString.formatString(template);
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.rssFeedUpdate = {
                                                                                                                                                                                                                                          -	label: "Update",
                                                                                                                                                                                                                                          -	prompt: "Clear the cache and redisplay this RssFeed",
                                                                                                                                                                                                                                          -	handler: function(place,macroName,params) {
                                                                                                                                                                                                                                          -		var feedURL = params[0];
                                                                                                                                                                                                                                          -		var tiddlerTitle = params[1];
                                                                                                                                                                                                                                          -		createTiddlyButton(place, this.label, this.prompt, 
                                                                                                                                                                                                                                          -			function () {
                                                                                                                                                                                                                                          -				if (config.macros.rssReader.cache[feedURL]) {
                                                                                                                                                                                                                                          -					config.macros.rssReader.cache[feedURL] = null; 
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			story.refreshTiddler(tiddlerTitle,null, true);
                                                                                                                                                                                                                                          -		return false;});
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          //last update: RSSReaderPlugin v 1.1.1//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Description
                                                                                                                                                                                                                                          -This plugin provides a RSSReader for TiddlyWiki
                                                                                                                                                                                                                                          -* It accesses asynchronously an RSSFeed
                                                                                                                                                                                                                                          -*Depending on the chanel item format, each item could be written as :
                                                                                                                                                                                                                                          -**simple text wikified
                                                                                                                                                                                                                                          -**html
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Usage
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<rssReader noDesc|asHtml|asText rssUrl ['filtering string']>>
                                                                                                                                                                                                                                          -	noDesc: only title of item is printed
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	asHtml: if you know that description contain html (links, img ...), 
                                                                                                                                                                                                                                          -		the text is enclosed with <html> </html> tags
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - 	asText: if the description should not be interpreted as html the 
                                                                                                                                                                                                                                          -		description is wikified
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	rssUrl: the rssFeed url that could be accessed. 
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	'filtering string': if present, the rssfeed item title must contained 
                                                                                                                                                                                                                                          -		this string to be displayed. 
                                                                                                                                                                                                                                          -		If 'filering string' contained space characters only, the tiddler 
                                                                                                                                                                                                                                          -		title is used for filtering.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -For security reasons, if the TiddlyWiki is accessed from http, a ProxyService should be used to access an rssFeed from an other site.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!examples
                                                                                                                                                                                                                                          -| !reader | !RSSFeed type | !working from |
                                                                                                                                                                                                                                          -| BidiXTWRSS | Description asHtml | file: or tiddlywiki.bidix.info |
                                                                                                                                                                                                                                          -| [[Le Monde]] | Description asText | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| YahooNewsSport | Description asHtml | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| TiddlyWikiRSS | Description asHtml | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| [[Libération]] | noDesc | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -| [[TestComment]] | asText and filters | file: or tiddlywiki.bidix.info using proxy |
                                                                                                                                                                                                                                          -see : <<tag RSSFeed>> for the full list.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Revision history
                                                                                                                                                                                                                                          -* V1.1.0 (2207/04/13)
                                                                                                                                                                                                                                          -**No more import functions
                                                                                                                                                                                                                                          -* V1.0.0 (2006/11/11)
                                                                                                                                                                                                                                          -**refactoring using core loadRemoteFile function
                                                                                                                                                                                                                                          -**import using new tiddlywiki:tiddler element
                                                                                                                                                                                                                                          -**import and presentation preserved without EricShulman's NestedSliderPlugin
                                                                                                                                                                                                                                          -**better display of items 
                                                                                                                                                                                                                                          -* v0.3.0 (24/08/2006)
                                                                                                                                                                                                                                          -** Filter on RSS item title
                                                                                                                                                                                                                                          -** Place to display redefined for asynchronous processing
                                                                                                                                                                                                                                          -* v0.2.2 (22/08/2006)
                                                                                                                                                                                                                                          -**Haloscan feed has no pubDate.
                                                                                                                                                                                                                                          -* v0.2.1 (08/05/2006)
                                                                                                                                                                                                                                          -* v0.2.0 (01/05/2006)
                                                                                                                                                                                                                                          -**Small adapations for del.icio.us feed
                                                                                                                                                                                                                                          -* v0.1.1 (28/04/2006)
                                                                                                                                                                                                                                          -**Bug : Channel without title 
                                                                                                                                                                                                                                          -* v0.1.0 (24/04/2006)
                                                                                                                                                                                                                                          -** initial release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          ||'''State'''||''Final''||
                                                                                                                                                                                                                                          -||'''Date'''||[[Date(2007-06-09T00:48:02Z)]]||
                                                                                                                                                                                                                                          -||'''Proposed by'''||["ct"]||
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -! Repository Setup
                                                                                                                                                                                                                                          -Here we describe the Directory hierarchy and how the git repository are set up.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!! Description
                                                                                                                                                                                                                                          -Use "./admin/treeinfo.sh" to produce a annotated directory tree like this:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -.                                       : The root dir for the cinelerra3 project
                                                                                                                                                                                                                                          -./admin                                 : administrative scripts
                                                                                                                                                                                                                                          -./admin/git_hooks                       : git hook scripts
                                                                                                                                                                                                                                          -./build                                 : build dir
                                                                                                                                                                                                                                          -./doc                                   : documentation
                                                                                                                                                                                                                                          -./doc/devel                             : developer documentation, extra sources, doxygen
                                                                                                                                                                                                                                          -./doc/devel/uml                         : Bouml generated HTML doc
                                                                                                                                                                                                                                          -./doc/user                              : user documentation in texinfo
                                                                                                                                                                                                                                          -./oldsrc                                : cinelerra2 sources, added per case when needed
                                                                                                                                                                                                                                          -./src                                   : every components source in a own subdir here
                                                                                                                                                                                                                                          -./tests                                 : test suite
                                                                                                                                                                                                                                          -./tests/bugs                            : tests against reported bugs
                                                                                                                                                                                                                                          -./uml                                   : uml models, created with bouml
                                                                                                                                                                                                                                          -./uml/cinelerra3                        : cinelerra3 UML model
                                                                                                                                                                                                                                          -./wiki                                  : tiddlywiki for semi-persistent documentation
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!! New Directories:
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -When you need to add a new mariginally important directory please provides a file named DIR_INFO within this directory. It's first line should note the purpose of the directory in a few words (less than 40 characters). The following lines are free form description about the details. 
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!! Submodules:
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -We want to use the new GIT feature of "Superprojects and Submodules" when it is ready for general use.
                                                                                                                                                                                                                                          -Then we will transform several subtrees into separate GIT repos which will be linked to from the main
                                                                                                                                                                                                                                          -Project (then called the "Superproject") as submodules.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!! Pros
                                                                                                                                                                                                                                          -* because its a text-like structure, it is partially self-documenting
                                                                                                                                                                                                                                          -* GIT is flexible and with the planned submodules it can be separated in chunks of manageable size if necessary
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!! Cons
                                                                                                                                                                                                                                          -* can get large and confusing
                                                                                                                                                                                                                                          -* has no real "portal" or entrance point for people wanting to join
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Rationale
                                                                                                                                                                                                                                          -Every important document, draft, text and code (including) prototypes should be checked into
                                                                                                                                                                                                                                          -one SCM (or a set of related SCMs). This repo should be "almost everything" you need for the
                                                                                                                                                                                                                                          -project. Because we try to use a distributed development model, every dev can/should have 
                                                                                                                                                                                                                                          -his own copy and fed his changes back.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This ''Repository approach'' avoids the problems of a central infrastructure and helps cut down
                                                                                                                                                                                                                                          -project management time. Basically, every dev is responsible himself for getting every important
                                                                                                                                                                                                                                          -piece of information added into "the general view of matters" in a consistent way.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -! Conclusion
                                                                                                                                                                                                                                          -## When approbate (this proposal becomes a Final) write some conclusions about its process:
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -! Comments
                                                                                                                                                                                                                                          -Basically the structure is just fine.
                                                                                                                                                                                                                                          -* maybe add a "pastebin" somewhere in the dev-documentation area?
                                                                                                                                                                                                                                          -* i would add the source tree roots at level 2, so we can have several submodules here:
                                                                                                                                                                                                                                          -** oldsrc
                                                                                                                                                                                                                                          -** cin3
                                                                                                                                                                                                                                          -** prototype
                                                                                                                                                                                                                                          - -- ["Ichthyostega"] [[DateTime(2007-06-16T23:10:01Z)]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Draft now.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Yes I left source dirs out but this sounds fine, note that with git, there is no problem to reorganize the repo (in contrast to CVS) later. We can fix things afterward when we find better ways.
                                                                                                                                                                                                                                          - -- ["ct"] [[DateTime(2007-06-17T17:36:46Z)]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Whats prototype for? won't that be better a branch?
                                                                                                                                                                                                                                          - -- ["ct"] [[DateTime(2007-06-17T22:04:39Z)]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -I just wanted to show there could be additional things beside the main tree (later to be separate submodules). The example was meant as a classical
                                                                                                                                                                                                                                          -throwaway prototype. But I agree, in our case we just start hacking at the new tree and make feature/tryout/prototype branches...
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -The point I wanted to make is: every directory 2 levels deep in the source tree, e.g. /src/cinelerra3 or /src/oldsrource should be a completely 
                                                                                                                                                                                                                                          -self-contained tree which can be built without needing anything of the rest of the repo. Thats an prerequisite for moving to Submodules IMHO.
                                                                                                                                                                                                                                          -But you seem rather to put the sourcetree-roots 1 level deep. As we have just two trees at the moment (and can easily reorganize), I have no
                                                                                                                                                                                                                                          -objections against this. The only point I really care is to try to keep the source tree self-contained without any dependencies to the rest
                                                                                                                                                                                                                                          -of the "design GIT" (because of this Superprojects-Submodules thing...)
                                                                                                                                                                                                                                          - -- ["Ichthyostega"] [[DateTime(2007-06-17T23:45:06Z)]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -we could make the trees deeper than one level, I didn't intended 1-level depth. but also be careful with that not to make it too complex. While I am not sure if we want a complete oldsrc, that just adds weight and confusion for now (lets see). Neither I am fully decided about the hierarchy in /src (want /libs /plugins or /src/libs /src/plugins or /src/render/plugins? name it rather 'effects' than 'plugins'?). While I am quite sure that I want to separate /oldssrc and /src quite much (in /src should only be new stuff or stuff which is carefully reviewed, with know license and author).
                                                                                                                                                                                                                                          - -- ["ct"] [[DateTime(2007-06-18T08:38:43Z)]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -I made this proposal 'final' now further details are likely better worked out in the git repository (and we already started to define things there) see ./admin/treeinfo.sh 
                                                                                                                                                                                                                                          - -- ["ct"] [[DateTime(2007-06-27T16:01:52Z)]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          ~~This small Tiddler contains usefull Shortcuts, Info, Links~~
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -*[[Wiki-Markup|http://tiddlywiki.com/#MainFeatures]]
                                                                                                                                                                                                                                          -*
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <<search>><<closeAll>><<permaview>><<newTiddler>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Distributed Developer Wiki
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Cinelerra3
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -|Name|SplashScreenPlugin|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#SplashScreenPlugin|
                                                                                                                                                                                                                                          -|Version|0.21 |
                                                                                                                                                                                                                                          -|Requires|~TW2.08+|
                                                                                                                                                                                                                                          -!Description:
                                                                                                                                                                                                                                          -Provides a simple splash screen that is visible while the TW is loading.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Installation
                                                                                                                                                                                                                                          -Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Customizing
                                                                                                                                                                                                                                          -Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!History
                                                                                                                                                                                                                                          -* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
                                                                                                                                                                                                                                          -* 26-06-06 : version 0.2, first release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var old_lewcid_splash_restart=restart;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -restart = function()
                                                                                                                                                                                                                                          -{   if (document.getElementById("SplashScreen"))
                                                                                                                                                                                                                                          -        document.getElementById("SplashScreen").style.display = "none";
                                                                                                                                                                                                                                          -      if (document.getElementById("contentWrapper"))
                                                                                                                                                                                                                                          -        document.getElementById("contentWrapper").style.display = "block";
                                                                                                                                                                                                                                          -    
                                                                                                                                                                                                                                          -    old_lewcid_splash_restart();
                                                                                                                                                                                                                                          -   
                                                                                                                                                                                                                                          -    if (splashScreenInstall)
                                                                                                                                                                                                                                          -       {if(config.options.chkAutoSave)
                                                                                                                                                                                                                                          -			{saveChanges();}
                                                                                                                                                                                                                                          -        displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
                                                                                                                                                                                                                                          -        }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var oldText = store.getTiddlerText("MarkupPreHead");
                                                                                                                                                                                                                                          -if (oldText.indexOf("SplashScreen")==-1)
                                                                                                                                                                                                                                          -   {var siteTitle = store.getTiddlerText("SiteTitle");
                                                                                                                                                                                                                                          -   var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
                                                                                                                                                                                                                                          -   if (! store.tiddlerExists("MarkupPreHead"))
                                                                                                                                                                                                                                          -       {var myTiddler = store.createTiddler("MarkupPreHead");}
                                                                                                                                                                                                                                          -   else
                                                                                                                                                                                                                                          -      {var myTiddler = store.getTiddler("MarkupPreHead");}
                                                                                                                                                                                                                                          -      myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
                                                                                                                                                                                                                                          -      store.setDirty(true);
                                                                                                                                                                                                                                          -      var splashScreenInstall = true;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          * add a 'DIR_INFO' file to each marginally important directory. The first line should give a short abstract about this dir (40 characters, not more), following lines can give more precise information. There is a 'admin/treeinfo.sh' script which generates a texual overview of the directory tree.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -/* a contrasting background so I can see where one tiddler ends and the other begins */
                                                                                                                                                                                                                                          -body {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* sexy colours and font for the header */
                                                                                                                                                                                                                                          -.headerForeground {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerShadow, .headerShadow a {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerForeground, .headerShadow {
                                                                                                                                                                                                                                          -	padding: 1em 1em 0;
                                                                                                                                                                                                                                          -	font-family: 'Trebuchet MS' sans-serif;
                                                                                                                                                                                                                                          -	font-weight:bold;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerForeground .siteSubtitle {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerShadow .siteSubtitle {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make shadow go and down right instead of up and left */
                                                                                                                                                                                                                                          -.headerShadow {
                                                                                                                                                                                                                                          -	left: 2px;
                                                                                                                                                                                                                                          -	top: 3px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* prefer monospace for editing */
                                                                                                                                                                                                                                          -.editor textarea {
                                                                                                                                                                                                                                          -	font-family: 'Consolas' monospace;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* sexy tiddler titles */
                                                                                                                                                                                                                                          -.title {
                                                                                                                                                                                                                                          -	font-size: 250%;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -	font-family: 'Trebuchet MS' sans-serif;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* more subtle tiddler subtitle */
                                                                                                                                                                                                                                          -.subtitle {
                                                                                                                                                                                                                                          -	padding:0px;
                                                                                                                                                                                                                                          -	margin:0px;
                                                                                                                                                                                                                                          -	padding-left:0.5em;
                                                                                                                                                                                                                                          -	font-size: 90%;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::TertiaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.subtitle .tiddlyLink {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::TertiaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* a little bit of extra whitespace */
                                                                                                                                                                                                                                          -.viewer {
                                                                                                                                                                                                                                          -	padding-bottom:3px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* don't want any background color for headings */
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::Background]];
                                                                                                                                                                                                                                          -	color: [[ColorPalette::Foreground]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* give tiddlers 3d style border and explicit background */
                                                                                                                                                                                                                                          -.tiddler {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::Background]];
                                                                                                                                                                                                                                          -	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
                                                                                                                                                                                                                                          -	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
                                                                                                                                                                                                                                          -	margin-bottom: 1em;
                                                                                                                                                                                                                                          -	padding-bottom: 2em;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make options slider look nicer */
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {
                                                                                                                                                                                                                                          -	border:solid 1px [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* the borders look wrong with the body background */
                                                                                                                                                                                                                                          -#sidebar .button {
                                                                                                                                                                                                                                          -	border-style: none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* displays the list of a tiddler's tags horizontally. used in ViewTemplate */
                                                                                                                                                                                                                                          -.tagglyTagged li.listTitle {
                                                                                                                                                                                                                                          -	display:none
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tagglyTagged li {
                                                                                                                                                                                                                                          -	display: inline; font-size:90%;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tagglyTagged ul {
                                                                                                                                                                                                                                          -	margin:0px; padding:0px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* this means you can put line breaks in SidebarOptions for readability */
                                                                                                                                                                                                                                          -#sidebarOptions br {
                                                                                                                                                                                                                                          -	display:none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/* undo the above in OptionsPanel */
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel br {
                                                                                                                                                                                                                                          -	display:inline;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* horizontal main menu stuff */
                                                                                                                                                                                                                                          -#displayArea {
                                                                                                                                                                                                                                          -	margin: 1em 15.7em 0em 1em; /* use the freed up space */
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu br {
                                                                                                                                                                                                                                          -	display: none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -	color:[[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu {
                                                                                                                                                                                                                                          -	padding:2px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
                                                                                                                                                                                                                                          -	margin-left: 0.5em;
                                                                                                                                                                                                                                          -	margin-right: 0.5em;
                                                                                                                                                                                                                                          -	padding-left: 3px;
                                                                                                                                                                                                                                          -	padding-right: 3px;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -	font-size: 115%;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu .button:hover, #topMenu .tiddlyLink:hover {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::PrimaryDark]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make it print a little cleaner */
                                                                                                                                                                                                                                          -@media print {
                                                                                                                                                                                                                                          -	#topMenu {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	/* not sure if we need all the importants */
                                                                                                                                                                                                                                          -	.tiddler {
                                                                                                                                                                                                                                          -		border-style: none ! important;
                                                                                                                                                                                                                                          -		margin:0px ! important;
                                                                                                                                                                                                                                          -		padding:0px ! important;
                                                                                                                                                                                                                                          -		padding-bottom:2em ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.tagglyTagging .button, .tagglyTagging .hidebutton {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.headerShadow {
                                                                                                                                                                                                                                          -		visibility: hidden ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.tagglyTagged .quickopentag, .tagged .quickopentag {
                                                                                                                                                                                                                                          -		border-style: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.quickopentag a.button, .miniTag {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <<timeline better:true maxDays:14 maxEntries:20>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|TaskMacroPlugin|
                                                                                                                                                                                                                                          -|Author|<<extension TaskMacroPlugin author>>|
                                                                                                                                                                                                                                          -|Location|<<extension TaskMacroPlugin source>>|
                                                                                                                                                                                                                                          -|License|<<extension TaskMacroPlugin license>>|
                                                                                                                                                                                                                                          -|Version|<<extension TaskMacroPlugin versionAndDate>>|
                                                                                                                                                                                                                                          -!Description
                                                                                                                                                                                                                                          -A set of macros to help you keep track of time estimates for tasks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Macros defined:
                                                                                                                                                                                                                                          -* {{{task}}}: Displays a task description and makes it easy to estimate and track the time spent on the task.
                                                                                                                                                                                                                                          -* {{{taskadder}}}: Displays text entry field to simplify the adding of tasks.
                                                                                                                                                                                                                                          -* {{{tasksum}}}: Displays a summary of tasks sandwiched between two calls to this macro.
                                                                                                                                                                                                                                          -* {{{extension}}}: A simple little macro that displays information about a TiddlyWiki plugin, and that will hopefully someday migrate to the TW core in some form.
                                                                                                                                                                                                                                          -Core overrides:
                                                                                                                                                                                                                                          -* {{{wikify}}}: when wikifying a tiddler's complete text, adds refresh information so the tiddler will be refreshed when it changes
                                                                                                                                                                                                                                          -* {{{config.refreshers}}}: have the built-in refreshers return true; also, add a new refresher ("fullContent") that redisplays a full tiddler whenever it or any nested tiddlers it shows are changed
                                                                                                                                                                                                                                          -* {{{refreshElements}}}: now checks the return value from the refresher and only short-circuits the recursion if the refresher returns true
                                                                                                                                                                                                                                          -!Plugin Information
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.TaskMacroPlugin = {
                                                                                                                                                                                                                                          -	major: 1, minor: 1, revision: 0,
                                                                                                                                                                                                                                          -	date: new Date(2006,5-1,13),
                                                                                                                                                                                                                                          -	author: "LukeBlanshard",
                                                                                                                                                                                                                                          -	source: "http://labwiki.sourceforge.net/#TaskMacroPlugin",
                                                                                                                                                                                                                                          -	license: "http://labwiki.sourceforge.net/#CopyrightAndLicense"
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -A little macro for pulling out extension info.  Use like {{{<<extension PluginName datum>>}}}, where {{{PluginName}}} is the name you used for {{{version.extensions}}} and {{{datum}}} is either {{{versionAndDate}}} or a property of the extension description object, such as {{{source}}}.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.extension = {
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler ) {
                                                                                                                                                                                                                                          -		var info  = version.extensions[params[0]]
                                                                                                                                                                                                                                          -		var datum = params[1]
                                                                                                                                                                                                                                          -		switch (params[1]) {
                                                                                                                                                                                                                                          -		case 'versionAndDate':
                                                                                                                                                                                                                                          -			createTiddlyElement( place, "span", null, null,
                                                                                                                                                                                                                                          -				info.major+'.'+info.minor+'.'+info.revision+', '+info.date.formatString('DD MMM YYYY') )
                                                                                                                                                                                                                                          -			break;
                                                                                                                                                                                                                                          -		default:
                                                                                                                                                                                                                                          -			wikify( info[datum], place )
                                                                                                                                                                                                                                          -			break;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Core Overrides
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -window.wikify_orig_TaskMacroPlugin = window.wikify
                                                                                                                                                                                                                                          -window.wikify = function(source,output,highlightRegExp,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	if ( tiddler && tiddler.text === source )
                                                                                                                                                                                                                                          -		addDisplayDependency( output, tiddler.title )
                                                                                                                                                                                                                                          -	wikify_orig_TaskMacroPlugin.apply( this, arguments )
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -config.refreshers_orig_TaskMacroPlugin = config.refreshers
                                                                                                                                                                                                                                          -config.refreshers = {
                                                                                                                                                                                                                                          -	link: function() {
                                                                                                                                                                                                                                          -		config.refreshers_orig_TaskMacroPlugin.link.apply( this, arguments )
                                                                                                                                                                                                                                          -		return true
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	content: function() {
                                                                                                                                                                                                                                          -		config.refreshers_orig_TaskMacroPlugin.content.apply( this, arguments )
                                                                                                                                                                                                                                          -		return true
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	fullContent: function( e, changeList ) {
                                                                                                                                                                                                                                          -		var tiddlers = e.refreshTiddlers
                                                                                                                                                                                                                                          -		if ( changeList == null || tiddlers == null )
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		for ( var i=0; i < tiddlers.length; ++i )
                                                                                                                                                                                                                                          -			if ( changeList.find(tiddlers[i]) != null ) {
                                                                                                                                                                                                                                          -				var title = tiddlers[0]
                                                                                                                                                                                                                                          -				story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -				return true
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		return false
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -function refreshElements(root,changeList)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var nodes = root.childNodes;
                                                                                                                                                                                                                                          -	for(var c=0; c<nodes.length; c++)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var e = nodes[c],type;
                                                                                                                                                                                                                                          -		if(e.getAttribute)
                                                                                                                                                                                                                                          -			type = e.getAttribute("refresh");
                                                                                                                                                                                                                                          -		else
                                                                                                                                                                                                                                          -			type = null;
                                                                                                                                                                                                                                          -		var refresher = config.refreshers[type];
                                                                                                                                                                                                                                          -		if ( ! refresher || ! refresher(e, changeList) )
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			if(e.hasChildNodes())
                                                                                                                                                                                                                                          -				refreshElements(e,changeList);
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Global Functions
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -// Add the tiddler whose title is given to the list of tiddlers whose
                                                                                                                                                                                                                                          -// changing will cause a refresh of the tiddler containing the given element.
                                                                                                                                                                                                                                          -function addDisplayDependency( element, title ) {
                                                                                                                                                                                                                                          -	while ( element && element.getAttribute ) {
                                                                                                                                                                                                                                          -		var idAttr = element.getAttribute("id"), tiddlerAttr = element.getAttribute("tiddler")
                                                                                                                                                                                                                                          -		if ( idAttr && tiddlerAttr && idAttr == story.idPrefix+tiddlerAttr ) {
                                                                                                                                                                                                                                          -			var list = element.refreshTiddlers
                                                                                                                                                                                                                                          -			if ( list == null ) {
                                                                                                                                                                                                                                          -				list = [tiddlerAttr]
                                                                                                                                                                                                                                          -				element.refreshTiddlers = list
                                                                                                                                                                                                                                          -				element.setAttribute( "refresh", "fullContent" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			list.pushUnique( title )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		element = element.parentNode
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Lifted from Story.prototype.focusTiddler: just return the field instead of focusing it.
                                                                                                                                                                                                                                          -Story.prototype.findEditField = function( title, field )
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var tiddler = document.getElementById(this.idPrefix + title);
                                                                                                                                                                                                                                          -	if(tiddler != null)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var children = tiddler.getElementsByTagName("*")
                                                                                                                                                                                                                                          -		var e = null;
                                                                                                                                                                                                                                          -		for (var t=0; t<children.length; t++)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			var c = children[t];
                                                                                                                                                                                                                                          -			if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")
                                                                                                                                                                                                                                          -				{
                                                                                                                                                                                                                                          -				if(!e)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				if(c.getAttribute("edit") == field)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		return e
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Wraps the given event function in another function that handles the
                                                                                                                                                                                                                                          -// event in a standard way.
                                                                                                                                                                                                                                          -function wrapEventHandler( otherHandler ) {
                                                                                                                                                                                                                                          -	return function(e) {
                                                                                                                                                                                                                                          -		if (!e) var e = window.event
                                                                                                                                                                                                                                          -		e.cancelBubble = true
                                                                                                                                                                                                                                          -		if (e.stopPropagation) e.stopPropagation()
                                                                                                                                                                                                                                          -		return otherHandler( e )
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Task Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<task orig cur spent>>description}}}
                                                                                                                                                                                                                                          -All of orig, cur, and spent are optional numbers of hours.  The description goes through the end of the line, and is wikified.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.task = {
                                                                                                                                                                                                                                          -	NASCENT:	0, // Task not yet estimated
                                                                                                                                                                                                                                          -	LIVE:		1, // Estimated but with time remaining
                                                                                                                                                                                                                                          -	DONE:		2, // Completed: no time remaining
                                                                                                                                                                                                                                          -	bullets:	["\u25cb", // nascent (open circle)
                                                                                                                                                                                                                                          -			 "\u25ba", // live (right arrow)
                                                                                                                                                                                                                                          -			 "\u25a0"],// done (black square)
                                                                                                                                                                                                                                          -	styles:		["nascent", "live", "done"],
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		spentTooBig:	"Spent time %0 can't exceed current estimate %1",
                                                                                                                                                                                                                                          -		noNegative:	"Times may not be negative numbers",
                                                                                                                                                                                                                                          -		statusTips:	["Not yet estimated", "To do", "Done"], // Array indexed by state (NASCENT/LIVE/DONE)
                                                                                                                                                                                                                                          -		descClickTip:	" -- Double-click to edit task description",
                                                                                                                                                                                                                                          -		statusClickTip:	" -- Double-click to mark task complete",
                                                                                                                                                                                                                                          -		statusDoneTip:	" -- Double-click to adjust the time spent, to revive the task",
                                                                                                                                                                                                                                          -		origTip:	"Original estimate in hours",
                                                                                                                                                                                                                                          -		curTip:		"Current estimate in hours",
                                                                                                                                                                                                                                          -		curTip2:	"Estimate in hours", // For when orig == cur
                                                                                                                                                                                                                                          -		clickTip:	" -- Click to adjust",
                                                                                                                                                                                                                                          -		spentTip:	"Hours spent on this task",
                                                                                                                                                                                                                                          -		remTip:		"Hours remaining",
                                                                                                                                                                                                                                          -		curPrompt:	"Estimate this task in hours, or adjust the current estimate by starting with + or -.\n\nYou may optionally also set or adjust the time spent by putting a second number after the first.",
                                                                                                                                                                                                                                          -		spentPrompt:	"Enter the number of hours you've spent on this task, or adjust the current number by starting with + or -.\n\nYou may optionally also set or adjust the time remaining by putting a second number after the first.",
                                                                                                                                                                                                                                          -		remPrompt:	"Enter the number of hours it will take to finish this task, or adjust the current estimate by starting with + or -.\n\nYou may optionally also set or adjust the time spent by putting a second number after the first.",
                                                                                                                                                                                                                                          -		numbersOnly:	"Enter numbers only, please",
                                                                                                                                                                                                                                          -		notCurrent:	"The tiddler has been modified since it was displayed, please redisplay it before doing this."
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var start = wikifier.matchStart, end = wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var origStr	= params.length > 0? params.shift() : "?"
                                                                                                                                                                                                                                          -		var orig	= +origStr // as a number
                                                                                                                                                                                                                                          -		var cur		= params.length > 1? +params.shift() : orig
                                                                                                                                                                                                                                          -		var spent	= params.length > 0? +params.shift() : 0
                                                                                                                                                                                                                                          -		if ( spent > cur )
                                                                                                                                                                                                                                          -			throw Error( this.lingo.spentTooBig.format([spent, cur]) )
                                                                                                                                                                                                                                          -		if ( orig < 0 || cur < 0 || spent < 0 )
                                                                                                                                                                                                                                          -			throw Error( this.lingo.noNegative )
                                                                                                                                                                                                                                          -		var rem		= cur - spent
                                                                                                                                                                                                                                          -		var state	= isNaN(orig+rem)? this.NASCENT : rem > 0? this.LIVE : this.DONE
                                                                                                                                                                                                                                          -		var table	= createTiddlyElement( place, "table", null, "task "+this.styles[state] )
                                                                                                                                                                                                                                          -		var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -		var row		= createTiddlyElement( tbody, "tr" )
                                                                                                                                                                                                                                          -		var statusCell	= createTiddlyElement( row,   "td", null, "status", this.bullets[state] )
                                                                                                                                                                                                                                          -		var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var origCell	= state==this.NASCENT || orig==cur? null
                                                                                                                                                                                                                                          -				: createTiddlyElement( row, "td", null, "numeric original" )
                                                                                                                                                                                                                                          -		var curCell	= createTiddlyElement( row, "td", null, "numeric current" )
                                                                                                                                                                                                                                          -		var spentCell	= createTiddlyElement( row, "td", null, "numeric spent" )
                                                                                                                                                                                                                                          -		var remCell	= createTiddlyElement( row, "td", null, "numeric remaining" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var sums = config.macros.tasksum.tasksums
                                                                                                                                                                                                                                          -		if ( sums && sums.length ) {
                                                                                                                                                                                                                                          -			var summary = [(state == this.NASCENT? NaN : orig), cur, spent]
                                                                                                                                                                                                                                          -			summary.owner = tiddler
                                                                                                                                                                                                                                          -			sums[0].push( summary )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// The description goes to the end of the line
                                                                                                                                                                                                                                          -		wikifier.subWikify( descCell, "$\\n?" )
                                                                                                                                                                                                                                          -		var descEnd = wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		statusCell.setAttribute( "title", this.lingo.statusTips[state] )
                                                                                                                                                                                                                                          -		descCell.setAttribute(   "title", this.lingo.statusTips[state]+this.lingo.descClickTip )
                                                                                                                                                                                                                                          -		if (origCell) {
                                                                                                                                                                                                                                          -			createTiddlyElement( origCell, "div", null, null, orig )
                                                                                                                                                                                                                                          -			origCell.setAttribute( "title", this.lingo.origTip )
                                                                                                                                                                                                                                          -			curCell.setAttribute( "title", this.lingo.curTip )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			curCell.setAttribute( "title", this.lingo.curTip2 )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		var curDivContents = (state==this.NASCENT)? "?" : cur
                                                                                                                                                                                                                                          -		var curDiv = createTiddlyElement( curCell, "div", null, null, curDivContents )
                                                                                                                                                                                                                                          -		spentCell.setAttribute( "title", this.lingo.spentTip )
                                                                                                                                                                                                                                          -		var spentDiv = createTiddlyElement( spentCell, "div", null, null, spent )
                                                                                                                                                                                                                                          -		remCell.setAttribute( "title", this.lingo.remTip )
                                                                                                                                                                                                                                          -		var remDiv = createTiddlyElement( remCell, "div", null, null, rem )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// Handle double-click on the description by going
                                                                                                                                                                                                                                          -		// into edit mode and selecting the description
                                                                                                                                                                                                                                          -		descCell.ondblclick = this.editDescription( tiddler, end, descEnd )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		function appTitle( el, suffix ) {
                                                                                                                                                                                                                                          -			el.setAttribute( "title", el.getAttribute("title")+suffix )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// For incomplete tasks, handle double-click on the bullet by marking the task complete
                                                                                                                                                                                                                                          -		if ( state != this.DONE ) {
                                                                                                                                                                                                                                          -			appTitle( statusCell, this.lingo.statusClickTip )
                                                                                                                                                                                                                                          -			statusCell.ondblclick = this.markTaskComplete( tiddler, start, end, macroName, orig, cur, state )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		// For complete ones, handle double-click on the bullet by letting you adjust the time spent
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			appTitle( statusCell, this.lingo.statusDoneTip )
                                                                                                                                                                                                                                          -			statusCell.ondblclick = this.adjustTimeSpent( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// Add click handlers for the numeric cells.
                                                                                                                                                                                                                                          -		if ( state != this.DONE ) {
                                                                                                                                                                                                                                          -			appTitle( curCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -			curDiv.className = "adjustable"
                                                                                                                                                                                                                                          -			curDiv.onclick = this.adjustCurrentEstimate( tiddler, start, end, macroName,
                                                                                                                                                                                                                                          -				orig, cur, spent, curDivContents )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		appTitle( spentCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -		spentDiv.className = "adjustable"
                                                                                                                                                                                                                                          -		spentDiv.onclick = this.adjustTimeSpent( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		if ( state == this.LIVE ) {
                                                                                                                                                                                                                                          -			appTitle( remCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -			remDiv.className = "adjustable"
                                                                                                                                                                                                                                          -			remDiv.onclick = this.adjustTimeRemaining( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Puts the tiddler into edit mode, and selects the range of characters
                                                                                                                                                                                                                                          -	// defined by start and end.  Separated for leak prevention in IE.
                                                                                                                                                                                                                                          -	editDescription: function( tiddler, start, end ) {
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			story.displayTiddler( null, tiddler.title, DEFAULT_EDIT_TEMPLATE )
                                                                                                                                                                                                                                          -			var tiddlerElement = document.getElementById( story.idPrefix + tiddler.title )
                                                                                                                                                                                                                                          -			window.scrollTo( 0, ensureVisible(tiddlerElement) )
                                                                                                                                                                                                                                          -			var element = story.findEditField( tiddler.title, "text" )
                                                                                                                                                                                                                                          -			if ( element && element.tagName.toLowerCase() == "textarea" ) {
                                                                                                                                                                                                                                          -				// Back up one char if the last char's a newline
                                                                                                                                                                                                                                          -				if ( tiddler.text[end-1] == '\n' )
                                                                                                                                                                                                                                          -					--end
                                                                                                                                                                                                                                          -				element.focus()
                                                                                                                                                                                                                                          -				if ( element.setSelectionRange != undefined ) { // Mozilla
                                                                                                                                                                                                                                          -					element.setSelectionRange( start, end )
                                                                                                                                                                                                                                          -					// Damn mozilla doesn't scroll to visible.  Approximate.
                                                                                                                                                                                                                                          -					var max = 0.0 + element.scrollHeight
                                                                                                                                                                                                                                          -					var len = element.textLength
                                                                                                                                                                                                                                          -					var top = max*start/len, bot = max*end/len
                                                                                                                                                                                                                                          -					element.scrollTop = Math.min( top, (bot+top-element.clientHeight)/2 )
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else if ( element.createTextRange != undefined ) { // IE
                                                                                                                                                                                                                                          -					var range = element.createTextRange()
                                                                                                                                                                                                                                          -					range.collapse()
                                                                                                                                                                                                                                          -					range.moveEnd("character", end)
                                                                                                                                                                                                                                          -					range.moveStart("character", start)
                                                                                                                                                                                                                                          -					range.select()
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else // Other? Too bad, just select the whole thing.
                                                                                                                                                                                                                                          -					element.select()
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else
                                                                                                                                                                                                                                          -				return true
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Modifies a task macro call such that the task appears complete.
                                                                                                                                                                                                                                          -	markTaskComplete: function( tiddler, start, end, macroName, orig, cur, state ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( state == macro.NASCENT )
                                                                                                                                                                                                                                          -				orig = cur = 0
                                                                                                                                                                                                                                          -			// The second "cur" in the call below bumps up the time spent
                                                                                                                                                                                                                                          -			// to match the current estimate.
                                                                                                                                                                                                                                          -			macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, cur )
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the current estimate, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustCurrentEstimate: function( tiddler, start, end, macroName, orig, cur, spent, curDivContents ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.curPrompt, curDivContents )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				cur = macro.offset( cur, a[0] )
                                                                                                                                                                                                                                          -				if ( a.length > 1 )
                                                                                                                                                                                                                                          -					spent = macro.offset( spent, a[1] )
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the time spent, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustTimeSpent: function( tiddler, start, end, macroName, orig, cur, spent ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.spentPrompt, spent )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				spent = macro.offset( spent, a[0] )
                                                                                                                                                                                                                                          -				var rem = cur - spent
                                                                                                                                                                                                                                          -				if ( a.length > 1 ) {
                                                                                                                                                                                                                                          -					rem = macro.offset( rem, a[1] )
                                                                                                                                                                                                                                          -					cur = spent + rem
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the time remaining, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustTimeRemaining: function( tiddler, start, end, macroName, orig, cur, spent ) {
                                                                                                                                                                                                                                          -		var macro = this
                                                                                                                                                                                                                                          -		var text  = tiddler.text
                                                                                                                                                                                                                                          -		var rem   = cur - spent
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.remPrompt, rem )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				var newRem = macro.offset( rem, a[0] )
                                                                                                                                                                                                                                          -				if ( newRem > rem || a.length > 1 )
                                                                                                                                                                                                                                          -					cur += (newRem - rem)
                                                                                                                                                                                                                                          -				else
                                                                                                                                                                                                                                          -					spent += (rem - newRem)
                                                                                                                                                                                                                                          -				if ( a.length > 1 )
                                                                                                                                                                                                                                          -					spent = macro.offset( spent, a[1] )
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Breaks input at spaces & commas, returns array
                                                                                                                                                                                                                                          -	breakInput: function( txt ) {
                                                                                                                                                                                                                                          -		var a = txt.trim().split( /[\s,]+/ )
                                                                                                                                                                                                                                          -		if ( a.length == 0 )
                                                                                                                                                                                                                                          -			a = [NaN]
                                                                                                                                                                                                                                          -		return a
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Adds to, subtracts from, or replaces a numeric value
                                                                                                                                                                                                                                          -	offset: function( num, txt ) {
                                                                                                                                                                                                                                          -		if ( txt == "" || typeof(txt) != "string" )
                                                                                                                                                                                                                                          -			return NaN
                                                                                                                                                                                                                                          -		if ( txt.match(/^[+-]/) )
                                                                                                                                                                                                                                          -			return num + (+txt)
                                                                                                                                                                                                                                          -		return +txt
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Does some error checking, then replaces the indicated macro
                                                                                                                                                                                                                                          -	// call within the text of the given tiddler.
                                                                                                                                                                                                                                          -	replaceMacroCall: function( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		if ( isNaN(cur+spent) ) {
                                                                                                                                                                                                                                          -			alert( this.lingo.numbersOnly )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if ( spent < 0 || cur < 0 ) {
                                                                                                                                                                                                                                          -			alert( this.lingo.noNegative )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if ( isNaN(orig) )
                                                                                                                                                                                                                                          -			orig = cur
                                                                                                                                                                                                                                          -		if ( spent > cur )
                                                                                                                                                                                                                                          -			cur = spent
                                                                                                                                                                                                                                          -		var text = tiddler.text.substring(0,start) + "<<" + macroName + " " +
                                                                                                                                                                                                                                          -			orig + " " + cur + " " + spent + ">>" + tiddler.text.substring(end)
                                                                                                                                                                                                                                          -		var title = tiddler.title
                                                                                                                                                                                                                                          -		store.saveTiddler( title, title, text, config.options.txtUserName, new Date(), undefined )
                                                                                                                                                                                                                                          -		//story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -		if ( config.options.chkAutoSave )
                                                                                                                                                                                                                                          -			saveChanges()
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Tasksum Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<tasksum "start" ["here" [intro]]>>}}}
                                                                                                                                                                                                                                          -or:
                                                                                                                                                                                                                                          -> {{{<<tasksum "end" [intro]>>}}}
                                                                                                                                                                                                                                          -Put one of the {{{<<tasksum start>>}}} lines before the tasks you want to summarize, and an {{{end}}} line after them.  By default, the summary goes at the end; if you include {{{here}}} in the start line, the summary will go at the top.  The intro argument, if supplied, replaces the default text introducing the summary.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.tasksum = {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		unrecVerb:	"<<%0>> requires 'start' or 'end' as its first argument",
                                                                                                                                                                                                                                          -		mustMatch:	"<<%0 end>> must match a preceding <<%0 start>>",
                                                                                                                                                                                                                                          -		defIntro:	"Task summary:",
                                                                                                                                                                                                                                          -		nascentSum:	"''%0 not estimated''",
                                                                                                                                                                                                                                          -		doneSum:	"%0 complete (in %1 hours)",
                                                                                                                                                                                                                                          -		liveSum:	"%0 ongoing (%1 hours so far, ''%2 hours remaining'')",
                                                                                                                                                                                                                                          -		overSum:	"Total overestimate: %0%.",
                                                                                                                                                                                                                                          -		underSum:	"Total underestimate: %0%.",
                                                                                                                                                                                                                                          -		descPattern:	"%0 %1. %2",
                                                                                                                                                                                                                                          -                origTip:	"Total original estimates in hours",
                                                                                                                                                                                                                                          -		curTip:		"Total current estimates in hours",
                                                                                                                                                                                                                                          -		spentTip:	"Total hours spent on tasks",
                                                                                                                                                                                                                                          -		remTip:		"Total hours remaining"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var sums = this.tasksums
                                                                                                                                                                                                                                          -		if ( params[0] == "start" ) {
                                                                                                                                                                                                                                          -			sums.unshift([])
                                                                                                                                                                                                                                          -			if ( params[1] == "here" ) {
                                                                                                                                                                                                                                          -				sums[0].intro = params[2] || this.lingo.defIntro
                                                                                                                                                                                                                                          -				sums[0].place = place
                                                                                                                                                                                                                                          -				sums[0].placement = place.childNodes.length
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else if ( params[0] == "end" ) {
                                                                                                                                                                                                                                          -			if ( ! sums.length )
                                                                                                                                                                                                                                          -				throw Error( this.lingo.mustMatch.format([macroName]) )
                                                                                                                                                                                                                                          -			var list = sums.shift()
                                                                                                                                                                                                                                          -			var intro = list.intro || params[1] || this.lingo.defIntro
                                                                                                                                                                                                                                          -			var nNascent=0, nLive=0, nDone=0, nMine=0
                                                                                                                                                                                                                                          -			var totLiveSpent=0, totDoneSpent=0
                                                                                                                                                                                                                                          -			var totOrig=0, totCur=0, totSpent=0
                                                                                                                                                                                                                                          -			for ( var i=0; i < list.length; ++i ) {
                                                                                                                                                                                                                                          -				var a = list[i]
                                                                                                                                                                                                                                          -				if ( a.length > 3 ) {
                                                                                                                                                                                                                                          -					nNascent 	+= a[0]
                                                                                                                                                                                                                                          -					nLive 		+= a[1]
                                                                                                                                                                                                                                          -					nDone 		+= a[2]
                                                                                                                                                                                                                                          -					totLiveSpent 	+= a[3]
                                                                                                                                                                                                                                          -					totDoneSpent 	+= a[4]
                                                                                                                                                                                                                                          -					totOrig 	+= a[5]
                                                                                                                                                                                                                                          -					totCur 		+= a[6]
                                                                                                                                                                                                                                          -					totSpent 	+= a[7]
                                                                                                                                                                                                                                          -					if ( a.owner == tiddler )
                                                                                                                                                                                                                                          -						nMine	+= a[8]
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else {
                                                                                                                                                                                                                                          -					if ( a.owner == tiddler )
                                                                                                                                                                                                                                          -						++nMine
                                                                                                                                                                                                                                          -					if ( isNaN(a[0]) ) {
                                                                                                                                                                                                                                          -						++nNascent
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -					else {
                                                                                                                                                                                                                                          -						if ( a[1] > a[2] ) {
                                                                                                                                                                                                                                          -							++nLive
                                                                                                                                                                                                                                          -							totLiveSpent += a[2]
                                                                                                                                                                                                                                          -						}
                                                                                                                                                                                                                                          -						else {
                                                                                                                                                                                                                                          -							++nDone
                                                                                                                                                                                                                                          -							totDoneSpent += a[2]
                                                                                                                                                                                                                                          -						}
                                                                                                                                                                                                                                          -						totOrig  += a[0]
                                                                                                                                                                                                                                          -						totCur   += a[1]
                                                                                                                                                                                                                                          -						totSpent += a[2]
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// If we're nested, push a summary outward
                                                                                                                                                                                                                                          -                        if ( sums.length ) {
                                                                                                                                                                                                                                          -				var summary = [nNascent, nLive, nDone, totLiveSpent, totDoneSpent,
                                                                                                                                                                                                                                          -						totOrig, totCur, totSpent, nMine]
                                                                                                                                                                                                                                          -				summary.owner = tiddler
                                                                                                                                                                                                                                          -				sums[0].push( summary )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var descs = [], styles = []
                                                                                                                                                                                                                                          -			if ( nNascent > 0 ) {
                                                                                                                                                                                                                                          -				descs.push( this.lingo.nascentSum.format([nNascent]) )
                                                                                                                                                                                                                                          -				styles.push( "nascent" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( nDone > 0 )
                                                                                                                                                                                                                                          -				descs.push( this.lingo.doneSum.format([nDone, totDoneSpent]) )
                                                                                                                                                                                                                                          -			if ( nLive > 0 ) {
                                                                                                                                                                                                                                          -				descs.push( this.lingo.liveSum.format([nLive, totLiveSpent, totCur-totSpent]) )
                                                                                                                                                                                                                                          -				styles.push( "live" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else
                                                                                                                                                                                                                                          -				styles.push( "done" )
                                                                                                                                                                                                                                          -			var off = ""
                                                                                                                                                                                                                                          -			if ( totOrig > totCur )
                                                                                                                                                                                                                                          -				off = this.lingo.overSum.format( [Math.round(100.0*(totOrig-totCur)/totCur)] )
                                                                                                                                                                                                                                          -			else if ( totCur > totOrig )
                                                                                                                                                                                                                                          -				off = this.lingo.underSum.format( [Math.round(100.0*(totCur-totOrig)/totOrig)] )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var top		= (list.intro != undefined)
                                                                                                                                                                                                                                          -			var table	= createTiddlyElement( null, "table", null, "tasksum "+(top?"top":"bottom") )
                                                                                                                                                                                                                                          -			var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -			var row		= createTiddlyElement( tbody, "tr", null, styles.join(" ") )
                                                                                                                                                                                                                                          -			var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var description = this.lingo.descPattern.format( [intro, descs.join(", "), off] )
                                                                                                                                                                                                                                          -			wikify( description, descCell, null, tiddler )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var origCell	= totOrig == totCur? null
                                                                                                                                                                                                                                          -					: createTiddlyElement( row, "td", null, "numeric original", totOrig )
                                                                                                                                                                                                                                          -			var curCell	= createTiddlyElement( row, "td", null, "numeric current", totCur )
                                                                                                                                                                                                                                          -			var spentCell	= createTiddlyElement( row, "td", null, "numeric spent", totSpent )
                                                                                                                                                                                                                                          -			var remCell	= createTiddlyElement( row, "td", null, "numeric remaining", totCur-totSpent )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			if ( origCell )
                                                                                                                                                                                                                                          -				origCell.setAttribute( "title", this.lingo.origTip )
                                                                                                                                                                                                                                          -			curCell  .setAttribute( "title", this.lingo.curTip )
                                                                                                                                                                                                                                          -			spentCell.setAttribute( "title", this.lingo.spentTip )
                                                                                                                                                                                                                                          -			remCell  .setAttribute( "title", this.lingo.remTip )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// Discard the table if there are no tasks
                                                                                                                                                                                                                                          -			if ( list.length > 0 ) {
                                                                                                                                                                                                                                          -				var place = top? list.place : place
                                                                                                                                                                                                                                          -				var placement = top? list.placement : place.childNodes.length
                                                                                                                                                                                                                                          -				if ( placement >= place.childNodes.length )
                                                                                                                                                                                                                                          -					place.appendChild( table )
                                                                                                                                                                                                                                          -				else
                                                                                                                                                                                                                                          -					place.insertBefore( table, place.childNodes[placement] )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else
                                                                                                                                                                                                                                          -			throw Error( this.lingo.unrecVerb.format([macroName]) )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// If we're wikifying, and are followed by end-of-line, swallow the newline.
                                                                                                                                                                                                                                          -		if ( wikifier && wikifier.source.charAt(wikifier.nextMatch) == "\n" )
                                                                                                                                                                                                                                          -			++wikifier.nextMatch
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// This is the stack of pending summaries
                                                                                                                                                                                                                                          -	tasksums: []
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Taskadder Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<taskadder ["above"|"below"|"focus"|"nofocus"]...>>}}}
                                                                                                                                                                                                                                          -Creates a line with text entry fields for a description and an estimate.  By default, puts focus in the description field and adds tasks above the entry fields.  Use {{{nofocus}}} to not put focus in the description field.  Use {{{below}}} to add tasks below the entry fields.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.taskadder = {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		unrecParam:	"<<%0>> doesn't recognize '%1' as a parameter",
                                                                                                                                                                                                                                          -		descTip:	"Describe a new task",
                                                                                                                                                                                                                                          -		curTip:		"Estimate how long in hours the task will take",
                                                                                                                                                                                                                                          -		buttonText:	"add task",
                                                                                                                                                                                                                                          -		buttonTip:	"Add a new task with the description and estimate as entered",
                                                                                                                                                                                                                                          -		notCurrent:	"The tiddler has been modified since it was displayed, please redisplay it before adding a task this way.",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		eol:		"eol"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var above = true
                                                                                                                                                                                                                                          -		var focus = false
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		while ( params.length > 0 ) {
                                                                                                                                                                                                                                          -			var p = params.shift()
                                                                                                                                                                                                                                          -			switch (p) {
                                                                                                                                                                                                                                          -			case "above": 	above = true;  break
                                                                                                                                                                                                                                          -			case "below": 	above = false; break
                                                                                                                                                                                                                                          -			case "focus": 	focus = true;  break
                                                                                                                                                                                                                                          -			case "nofocus":	focus = false; break
                                                                                                                                                                                                                                          -			default:	throw Error( this.lingo.unrecParam.format([macroName, p]) )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// If we're followed by end-of-line, swallow the newline.
                                                                                                                                                                                                                                          -		if ( wikifier.source.charAt(wikifier.nextMatch) == "\n" )
                                                                                                                                                                                                                                          -			++wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var where	= above? wikifier.matchStart : wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var table	= createTiddlyElement( place, "table", null, "task" )
                                                                                                                                                                                                                                          -		var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -		var row		= createTiddlyElement( tbody, "tr" )
                                                                                                                                                                                                                                          -		var statusCell	= createTiddlyElement( row,   "td", null, "status" )
                                                                                                                                                                                                                                          -		var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -		var curCell	= createTiddlyElement( row,   "td", null, "numeric" )
                                                                                                                                                                                                                                          -		var addCell	= createTiddlyElement( row,   "td", null, "addtask" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var descId	= this.generateId()
                                                                                                                                                                                                                                          -		var curId	= this.generateId()
                                                                                                                                                                                                                                          -		var descInput	= createTiddlyElement( descCell, "input", descId )
                                                                                                                                                                                                                                          -		var curInput	= createTiddlyElement( curCell,  "input", curId  )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		descInput.setAttribute( "type", "text" )
                                                                                                                                                                                                                                          -		curInput .setAttribute( "type", "text" )
                                                                                                                                                                                                                                          -		descInput.setAttribute( "size", "40")
                                                                                                                                                                                                                                          -		curInput .setAttribute( "size", "6" )
                                                                                                                                                                                                                                          -		descInput.setAttribute( "autocomplete", "off" );
                                                                                                                                                                                                                                          -		curInput .setAttribute( "autocomplete", "off" );
                                                                                                                                                                                                                                          -		descInput.setAttribute( "title", this.lingo.descTip );
                                                                                                                                                                                                                                          -		curInput .setAttribute( "title", this.lingo.curTip  );
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var addAction	= this.addTask( tiddler, where, descId, curId, above )
                                                                                                                                                                                                                                          -		var addButton	= createTiddlyButton( addCell, this.lingo.buttonText, this.lingo.buttonTip, addAction )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		descInput.onkeypress = this.handleEnter(addAction)
                                                                                                                                                                                                                                          -		curInput .onkeypress = descInput.onkeypress
                                                                                                                                                                                                                                          -		addButton.onkeypress = this.handleSpace(addAction)
                                                                                                                                                                                                                                          -		if ( focus || tiddler.taskadderLocation == where ) {
                                                                                                                                                                                                                                          -			descInput.focus()
                                                                                                                                                                                                                                          -			descInput.select()
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns a function that inserts a new task macro into the tiddler.
                                                                                                                                                                                                                                          -	addTask: function( tiddler, where, descId, curId, above ) {
                                                                                                                                                                                                                                          -		var macro = this, oldText = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( oldText !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var desc	= document.getElementById(descId).value
                                                                                                                                                                                                                                          -			var cur		= document.getElementById(curId) .value
                                                                                                                                                                                                                                          -			var init	= tiddler.text.substring(0,where) + "<<task " + cur + ">> " + desc + "\n"
                                                                                                                                                                                                                                          -			var text	= init + tiddler.text.substring(where)
                                                                                                                                                                                                                                          -			var title	= tiddler.title
                                                                                                                                                                                                                                          -			tiddler.taskadderLocation = (above? init.length : where)
                                                                                                                                                                                                                                          -			try {
                                                                                                                                                                                                                                          -				store.saveTiddler( title, title, text, config.options.txtUserName, new Date(), undefined )
                                                                                                                                                                                                                                          -				//story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			finally {
                                                                                                                                                                                                                                          -				delete tiddler.taskadderLocation
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( config.options.chkAutoSave )
                                                                                                                                                                                                                                          -				saveChanges()
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that delegates to two other functions: "matches" to decide
                                                                                                                                                                                                                                          -	// whether to consume the event, and "addTask" to actually perform the work.
                                                                                                                                                                                                                                          -	handleGeneric: function( addTask, matches ) {
                                                                                                                                                                                                                                          -		return function(e) {
                                                                                                                                                                                                                                          -			if (!e) var e = window.event
                                                                                                                                                                                                                                          -			var consume = false
                                                                                                                                                                                                                                          -			if ( matches(e) ) {
                                                                                                                                                                                                                                          -				consume = true
                                                                                                                                                                                                                                          -				addTask( e )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			e.cancelBubble = consume;
                                                                                                                                                                                                                                          -			if ( consume && e.stopPropagation ) e.stopPropagation();
                                                                                                                                                                                                                                          -			return !consume;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that handles enter keys by calling another event handler
                                                                                                                                                                                                                                          -	handleEnter: function( addTask ) {
                                                                                                                                                                                                                                          -		return this.handleGeneric( addTask, function(e){return e.keyCode == 13 || e.keyCode == 10} ) // Different codes for Enter
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that handles the space key by calling another event handler
                                                                                                                                                                                                                                          -	handleSpace: function( addTask ) {
                                                                                                                                                                                                                                          -		return this.handleGeneric( addTask, function(e){return (e.charCode||e.keyCode) == 32} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	counter: 0,
                                                                                                                                                                                                                                          -	generateId: function() {
                                                                                                                                                                                                                                          -		return "taskadder:" + String(this.counter++)
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Stylesheet
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var stylesheet = '\
                                                                                                                                                                                                                                          -.viewer table.task, table.tasksum {\
                                                                                                                                                                                                                                          -	width: 100%;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -	border-collapse: collapse;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task {\
                                                                                                                                                                                                                                          -	border: none;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum, .viewer table.tasksum {\
                                                                                                                                                                                                                                          -	border: solid 2px #999;\
                                                                                                                                                                                                                                          -	margin: 3px 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td {\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -	border: 1px solid #ddd;\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	vertical-align: middle;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task tr {\
                                                                                                                                                                                                                                          -	border: none;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task td {\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -	vertical-align: baseline;\
                                                                                                                                                                                                                                          -	border: 1px solid #fff;\
                                                                                                                                                                                                                                          -	background-color: inherit;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -td.numeric {\
                                                                                                                                                                                                                                          -	width: 3em;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.numeric div {\
                                                                                                                                                                                                                                          -	border: 1px solid #ddd;\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	margin: 1px 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.original div {\
                                                                                                                                                                                                                                          -	background-color: #fdd;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td.original {\
                                                                                                                                                                                                                                          -	background-color: #fdd;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td.description {\
                                                                                                                                                                                                                                          -	background-color: #e8e8e8;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.status {\
                                                                                                                                                                                                                                          -	width: 1.5em;\
                                                                                                                                                                                                                                          -	cursor: default;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.description, table.tasksum td.description {\
                                                                                                                                                                                                                                          -	width: auto;\
                                                                                                                                                                                                                                          -	text-align: left;\
                                                                                                                                                                                                                                          -	padding: 0 3px;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.status,table.task.done td.description {\
                                                                                                                                                                                                                                          -	color: #ccc;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.current, table.task.done td.remaining {\
                                                                                                                                                                                                                                          -	visibility: hidden;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.spent div, table.tasksum tr.done td.current,\
                                                                                                                                                                                                                                          -table.tasksum tr.done td.spent, table.tasksum tr.done td.remaining {\
                                                                                                                                                                                                                                          -	background-color: #eee;\
                                                                                                                                                                                                                                          -	color: #aaa;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.description {\
                                                                                                                                                                                                                                          -	color: #844;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.current div, table.tasksum tr.nascent td.numeric.current {\
                                                                                                                                                                                                                                          -	font-weight: bold;\
                                                                                                                                                                                                                                          -	color: #c00;\
                                                                                                                                                                                                                                          -	background-color: #def;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.spent, table.task.nascent td.remaining {\
                                                                                                                                                                                                                                          -	visibility: hidden;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -td.remaining {\
                                                                                                                                                                                                                                          -	font-weight: bold;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.adjustable {\
                                                                                                                                                                                                                                          -	cursor: pointer; \
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task input {\
                                                                                                                                                                                                                                          -	display: block;\
                                                                                                                                                                                                                                          -	width: 100%;\
                                                                                                                                                                                                                                          -	font: inherit;\
                                                                                                                                                                                                                                          -	margin: 2px 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -	border: 1px inset #999;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.numeric input {\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.addtask {\
                                                                                                                                                                                                                                          -	width: 6em;\
                                                                                                                                                                                                                                          -	border-left: 2px solid white;\
                                                                                                                                                                                                                                          -	vertical-align: middle;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -'
                                                                                                                                                                                                                                          -setStylesheet( stylesheet, "TaskMacroPluginStylesheet" )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          !!Changes in 1.1.0
                                                                                                                                                                                                                                          -* Made the macros work in nested tiddlers (ie when one tiddler includes another using {{{<<tiddler>>}}} or something similar):
                                                                                                                                                                                                                                          -** Task summaries in the outer tiddler include the tasks from the inner one
                                                                                                                                                                                                                                          -** Using the editing shortcuts on the tasks as displayed in the outer tiddler correctly changes the inner tiddler and also redisplays the outer one
                                                                                                                                                                                                                                          -** Added sanity checks to the editing shortcuts so they will refuse to work if the tiddler has been modified behind their backs
                                                                                                                                                                                                                                          -* Made some small usability fixes:
                                                                                                                                                                                                                                          -** The "add task" button now responds to the Space key (hat tip: Daniel Baird)
                                                                                                                                                                                                                                          -** Double-clicking on a completed task's bullet now does the same thing as clicking on the elapsed time: it lets you adjust the time spent, giving you the option of resurrecting the task (hat tip: ~JackF)
                                                                                                                                                                                                                                          -** Reworked the focus handling of the taskadder macro so it works more intuitively, by refocusing on the same adder you just used
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The task macro provided by the TaskMacroPlugin is for planning, estimating, and tracking detailed tasks such as those required for writing software.  It is inspired by [[Joel Spolsky|http://www.joelonsoftware.com/articles/fog0000000245.html]]'s method for scheduling software development, also popularized by [[Voo2do|http://voo2do.com]] and [[XPlanner|http://xplanner.org]].
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -For changes since the previous version, see the TaskMacroReleaseNotes.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This tutorial leads you through the use of the task macro itself, and supporting macros that summarize lists of tasks and simplify the adding of tasks to a list.  Follow along by clicking the links below.  Or click the little down-arrow next to this tiddler's title, above, and choose "Open all" to have all the tutorial sections displayed at once.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!---
                                                                                                                                                                                                                                          -Includes portions of [[TagglyTaggingViewTemplate|http://simonbaird.com/mptw/#TagglyTaggingViewTemplate]], v1.2 (16-Jan-2006).
                                                                                                                                                                                                                                          -Also adds a pair of tasksum macros around the tiddler, to summarize any contained tasks at the top.  Removes the "-" in front of closeTiddler, which can easily bite you if you have a focusable element in a tiddler, such as a taskadder entry field.
                                                                                                                                                                                                                                          -Portions written by Luke Blanshard are hereby released into the public domain.
                                                                                                                                                                                                                                          ---->
                                                                                                                                                                                                                                          -<!--{{{-->
                                                                                                                                                                                                                                          -<div class="toolbar" macro="toolbar closeTiddler closeOthers +editTiddler permalink references jump newHere"></div>
                                                                                                                                                                                                                                          -<div class="tagglyTagged" macro="tags"></div>
                                                                                                                                                                                                                                          -<div><span class="title" macro="view title"></span><span class="miniTag" macro="miniTag"></span></div>
                                                                                                                                                                                                                                          -<div macro="tasksum start here"></div>
                                                                                                                                                                                                                                          -<div class="viewer" macro="view text wikified"></div>
                                                                                                                                                                                                                                          -<div macro="tasksum end"></div>
                                                                                                                                                                                                                                          -<div class="tagglyTagging" macro="tagglyListWithSort"></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -''TextAreaPlugin for TiddlyWiki version 2.0''
                                                                                                                                                                                                                                          -^^author: Eric Shulman - ELS Design Studios
                                                                                                                                                                                                                                          -source: http://www.elsdesign.com/tiddlywiki/#TextAreaPlugin
                                                                                                                                                                                                                                          -license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This plugin 'hijacks' the TW core function, ''Story.prototype.focusTiddler()'', so it can add special 'keyDown' handlers to adjust several behaviors associated with the textarea control used in the tiddler editor.  Specifically, it:
                                                                                                                                                                                                                                          -* Adds text search INSIDE of edit fields.^^
                                                                                                                                                                                                                                          -Use ~CTRL-F for "Find" (prompts for search text), and ~CTRL-G for "Find Next" (uses previous search text)^^
                                                                                                                                                                                                                                          -* Enables TAB characters to be entered into field content^^
                                                                                                                                                                                                                                          -(instead of moving to next field)^^
                                                                                                                                                                                                                                          -* Option to set cursor at top of edit field instead of auto-selecting contents^^
                                                                                                                                                                                                                                          -(see configuration section for checkbox)^^
                                                                                                                                                                                                                                          -!!!!!Configuration
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content
                                                                                                                                                                                                                                          -<<option chkTextAreaExtensions>> add control-f (find), control-g (find again) and allow TABs as input in textarea
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''TextAreaPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.01.22 [1.0.1]''
                                                                                                                                                                                                                                          -only add extra key processing for TEXTAREA elements (not other edit fields).
                                                                                                                                                                                                                                          -added option to enable/disable textarea keydown extensions (default is "standard keys" only)
                                                                                                                                                                                                                                          -''2006.01.22 [1.0.0]''
                                                                                                                                                                                                                                          -Moved from temporary "System Tweaks" tiddler into 'real' TextAreaPlugin tiddler.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.textAreaPlugin= {major: 1, minor: 0, revision: 1, date: new Date(2006,1,23)};
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -if (!config.options.chkDisableAutoSelect) config.options.chkDisableAutoSelect=false; // default to standard action
                                                                                                                                                                                                                                          -if (!config.options.chkTextAreaExtensions) config.options.chkTextAreaExtensions=false; // default to standard action
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Focus a specified tiddler. Attempts to focus the specified field, otherwise the first edit field it finds
                                                                                                                                                                                                                                          -Story.prototype.focusTiddler = function(title,field)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var tiddler = document.getElementById(this.idPrefix + title);
                                                                                                                                                                                                                                          -	if(tiddler != null)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var children = tiddler.getElementsByTagName("*")
                                                                                                                                                                                                                                          -		var e = null;
                                                                                                                                                                                                                                          -		for (var t=0; t<children.length; t++)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			var c = children[t];
                                                                                                                                                                                                                                          -			if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")
                                                                                                                                                                                                                                          -				{
                                                                                                                                                                                                                                          -				if(!e)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				if(c.getAttribute("edit") == field)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		if(e)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			e.focus();
                                                                                                                                                                                                                                          -			e.select(); // select entire contents
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// TWEAK: add TAB and "find" key handlers
                                                                                                                                                                                                                                          -			if (config.options.chkTextAreaExtensions) // add extra key handlers
                                                                                                                                                                                                                                          -				addKeyDownHandlers(e);
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// TWEAK: option to NOT autoselect contents
                                                                                                                                                                                                                                          -			if (config.options.chkDisableAutoSelect) // set cursor to start of field content
                                                                                                                                                                                                                                          -				if (e.setSelectionRange) e.setSelectionRange(0,0); // for FF
                                                                                                                                                                                                                                          -				else if (e.createTextRange) { var r=e.createTextRange(); r.collapse(true); r.select(); } // for IE
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -function addKeyDownHandlers(e)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	// exit if not textarea or element doesn't allow selections
                                                                                                                                                                                                                                          -	if (e.tagName.toLowerCase()!="textarea" || !e.setSelectionRange) return;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// utility function: exits keydown handler and prevents browser from processing the keystroke
                                                                                                                                                                                                                                          -	var processed=function(ev) { ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false; }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// capture keypress in edit field
                                                                                                                                                                                                                                          -	e.onkeydown = function(ev) { if (!ev) var ev=window.event;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// process TAB
                                                                                                                                                                                                                                          -		if (!ev.shiftKey && ev.keyCode==9) { 
                                                                                                                                                                                                                                          -			// replace current selection with a TAB character
                                                                                                                                                                                                                                          -			var start=e.selectionStart; var end=e.selectionEnd;
                                                                                                                                                                                                                                          -			e.value=e.value.substr(0,start)+String.fromCharCode(9)+e.value.substr(end);
                                                                                                                                                                                                                                          -			// update insertion point, scroll it into view
                                                                                                                                                                                                                                          -			e.setSelectionRange(start+1,start+1);
                                                                                                                                                                                                                                          -			var linecount=e.value.split('\n').length;
                                                                                                                                                                                                                                          -			var thisline=e.value.substr(0,e.selectionStart).split('\n').length-1;
                                                                                                                                                                                                                                          -			e.scrollTop=Math.floor((thisline-e.rows/2)*e.scrollHeight/linecount);
                                                                                                                                                                                                                                          -			return processed(ev);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// process CTRL-F (find matching text) or CTRL-G (find next match)
                                                                                                                                                                                                                                          -		if (ev.ctrlKey && (ev.keyCode==70||ev.keyCode==71)) {
                                                                                                                                                                                                                                          -			// if ctrl-f or no previous search, prompt for search text (default to previous text or current selection)... if no search text, exit
                                                                                                                                                                                                                                          -			if (ev.keyCode==70||!e.find||!e.find.length)
                                                                                                                                                                                                                                          -				{ var f=prompt("find:",e.find?e.find:e.value.substring(e.selectionStart,e.selectionEnd)); e.focus(); e.find=f?f:e.find; }
                                                                                                                                                                                                                                          -			if (!e.find||!e.find.length) return processed(ev);
                                                                                                                                                                                                                                          -			// do case-insensitive match with 'wraparound'...  if not found, alert and exit 
                                                                                                                                                                                                                                          -			var newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase(),e.selectionStart+1);
                                                                                                                                                                                                                                          -			if (newstart==-1) newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase());
                                                                                                                                                                                                                                          -			if (newstart==-1) { alert("'"+e.find+"' not found"); e.focus(); return processed(ev); }
                                                                                                                                                                                                                                          -			// set new selection, scroll it into view, and report line position in status bar
                                                                                                                                                                                                                                          -			e.setSelectionRange(newstart,newstart+e.find.length);
                                                                                                                                                                                                                                          -			var linecount=e.value.split('\n').length;
                                                                                                                                                                                                                                          -			var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
                                                                                                                                                                                                                                          -			e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
                                                                                                                                                                                                                                          -			window.status="line: "+thisline+"/"+linecount;
                                                                                                                                                                                                                                          -			return processed(ev);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The Name of the Software driving this Wiki. Is is written completely in ~JavaScript and contained in one single HTML page.
                                                                                                                                                                                                                                          - * see GettingStarted
                                                                                                                                                                                                                                          - * see [[Homepage|http://tiddlywiki.com]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The question to find out about is: how much of the coding to do with the help of BOUML. Basically, BOUML is capable to permanently support the coding; you can define all entities, fields and methods in the UML model an just develope the method bodies //conventionally// with a text editor. 
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -__Ichthyo__ tends to be seceptical about this aproach. While it probably will work, it is questionable if it will result in &raquo;good code&laquo; the fear is, that this rigid hierarchical structure distracts from the more complex semantical concerns.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Another aproach could be to use BOUML just to create the basic structures and from this point on rather utilizing it for technical documentation.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - - - - - - - - - - diff --git a/wiki/renderengine.html b/wiki/renderengine.html deleted file mode 100644 index 1fcc3a0d0..000000000 --- a/wiki/renderengine.html +++ /dev/null @@ -1,11846 +0,0 @@ - - - - - - - - - - - -
                                                                                                                                                                                                                                          My TiddlyWiki is loading ...

                                                                                                                                                                                                                                          Requires Javascript.
                                                                                                                                                                                                                                          - - Draft - some aspects of Cinelerra-3 design - - - - - - - - - - - -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Background: #fff
                                                                                                                                                                                                                                          -Foreground: #000
                                                                                                                                                                                                                                          -PrimaryPale: #8cf
                                                                                                                                                                                                                                          -PrimaryLight: #18f
                                                                                                                                                                                                                                          -PrimaryMid: #04b
                                                                                                                                                                                                                                          -PrimaryDark: #014
                                                                                                                                                                                                                                          -SecondaryPale: #ffc
                                                                                                                                                                                                                                          -SecondaryLight: #fe8
                                                                                                                                                                                                                                          -SecondaryMid: #db4
                                                                                                                                                                                                                                          -SecondaryDark: #841
                                                                                                                                                                                                                                          -TertiaryPale: #eee
                                                                                                                                                                                                                                          -TertiaryLight: #ccc
                                                                                                                                                                                                                                          -TertiaryMid: #999
                                                                                                                                                                                                                                          -TertiaryDark: #666
                                                                                                                                                                                                                                          -Error: #f88
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -a {color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -a img {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
                                                                                                                                                                                                                                          -h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.header {background:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.headerShadow {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.headerForeground {color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tabSelected{color:[[ColorPalette::PrimaryDark]];
                                                                                                                                                                                                                                          -	background:[[ColorPalette::TertiaryPale]];
                                                                                                                                                                                                                                          -	border-left:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -	border-top:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -	border-right:1px solid [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.tabContents .button {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebar {}
                                                                                                                                                                                                                                          -#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
                                                                                                                                                                                                                                          -.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
                                                                                                                                                                                                                                          -.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
                                                                                                                                                                                                                                          -	border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.wizardStep.wizardStepDone {background::[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
                                                                                                                                                                                                                                          -.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
                                                                                                                                                                                                                                          -	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
                                                                                                                                                                                                                                          -	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
                                                                                                                                                                                                                                          -.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
                                                                                                                                                                                                                                          -.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler .defaultCommand {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.shadow .title {color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.title {color:[[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -.subtitle {color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.toolbar {color:[[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.toolbar a {color:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
                                                                                                                                                                                                                                          -.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -.tagging .button, .tagged .button {border:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.footer {color:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -.selected .footer {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
                                                                                                                                                                                                                                          -.sparktick {background:[[ColorPalette::PrimaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
                                                                                                                                                                                                                                          -.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.lowlight {background:[[ColorPalette::TertiaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.imageLink, #displayArea .imageLink {background:transparent;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer .listTitle {list-style-type:none; margin-left:-2em;}
                                                                                                                                                                                                                                          -.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
                                                                                                                                                                                                                                          -.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
                                                                                                                                                                                                                                          -.viewer code {color:[[ColorPalette::SecondaryDark]];}
                                                                                                                                                                                                                                          -.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
                                                                                                                                                                                                                                          -.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
                                                                                                                                                                                                                                          -.editorFooter {color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
                                                                                                                                                                                                                                          -#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
                                                                                                                                                                                                                                          -#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
                                                                                                                                                                                                                                          -#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
                                                                                                                                                                                                                                          -.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
                                                                                                                                                                                                                                          -.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
                                                                                                                                                                                                                                          -#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -* html .tiddler {height:1%;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
                                                                                                                                                                                                                                          -h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
                                                                                                                                                                                                                                          -h4,h5,h6 {margin-top:1em;}
                                                                                                                                                                                                                                          -h1 {font-size:1.35em;}
                                                                                                                                                                                                                                          -h2 {font-size:1.25em;}
                                                                                                                                                                                                                                          -h3 {font-size:1.1em;}
                                                                                                                                                                                                                                          -h4 {font-size:1em;}
                                                                                                                                                                                                                                          -h5 {font-size:.9em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -hr {height:1px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -a {text-decoration:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dt {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -ol ol {list-style-type:lower-alpha;}
                                                                                                                                                                                                                                          -ol ol ol {list-style-type:lower-roman;}
                                                                                                                                                                                                                                          -ol ol ol ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -ol ol ol ol ol {list-style-type:lower-alpha;}
                                                                                                                                                                                                                                          -ol ol ol ol ol ol {list-style-type:lower-roman;}
                                                                                                                                                                                                                                          -ol ol ol ol ol ol ol {list-style-type:decimal;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.txtOptionInput {width:11em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#contentWrapper .chkOptionInput {border:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.externalLink {text-decoration:underline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.indent {margin-left:3em;}
                                                                                                                                                                                                                                          -.outdent {margin-left:3em; text-indent:-3em;}
                                                                                                                                                                                                                                          -code.escaped {white-space:nowrap;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddlyLinkExisting {font-weight:bold;}
                                                                                                                                                                                                                                          -.tiddlyLinkNonExisting {font-style:italic;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
                                                                                                                                                                                                                                          -a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#mainMenu .tiddlyLinkExisting,
                                                                                                                                                                                                                                          -	#mainMenu .tiddlyLinkNonExisting,
                                                                                                                                                                                                                                          -	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
                                                                                                                                                                                                                                          -#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.header {position:relative;}
                                                                                                                                                                                                                                          -.header a:hover {background:transparent;}
                                                                                                                                                                                                                                          -.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
                                                                                                                                                                                                                                          -.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.siteTitle {font-size:3em;}
                                                                                                                                                                                                                                          -.siteSubtitle {font-size:1.2em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
                                                                                                                                                                                                                                          -#sidebarOptions {padding-top:0.3em;}
                                                                                                                                                                                                                                          -#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
                                                                                                                                                                                                                                          -#sidebarOptions input {margin:0.4em 0.5em;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
                                                                                                                                                                                                                                          -#sidebarTabs .tabContents {width:15em; overflow:hidden;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.wizard {padding:0.1em 1em 0em 2em;}
                                                                                                                                                                                                                                          -.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
                                                                                                                                                                                                                                          -.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
                                                                                                                                                                                                                                          -.wizardStep {padding:1em 1em 1em 1em;}
                                                                                                                                                                                                                                          -.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
                                                                                                                                                                                                                                          -.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
                                                                                                                                                                                                                                          -.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
                                                                                                                                                                                                                                          -.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
                                                                                                                                                                                                                                          -.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
                                                                                                                                                                                                                                          -#messageArea a {text-decoration:underline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
                                                                                                                                                                                                                                          -.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
                                                                                                                                                                                                                                          -.popup .popupMessage {padding:0.4em;}
                                                                                                                                                                                                                                          -.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
                                                                                                                                                                                                                                          -.popup li.disabled {padding:0.4em;}
                                                                                                                                                                                                                                          -.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
                                                                                                                                                                                                                                          -.listBreak {font-size:1px; line-height:1px;}
                                                                                                                                                                                                                                          -.listBreak div {margin:2px 0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tabset {padding:1em 0em 0em 0.5em;}
                                                                                                                                                                                                                                          -.tab {margin:0em 0em 0em 0.25em; padding:2px;}
                                                                                                                                                                                                                                          -.tabContents {padding:0.5em;}
                                                                                                                                                                                                                                          -.tabContents ul, .tabContents ol {margin:0; padding:0;}
                                                                                                                                                                                                                                          -.txtMainTab .tabContents li {list-style:none;}
                                                                                                                                                                                                                                          -.tabContents li.listLink { margin-left:.75em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#contentWrapper {display:block;}
                                                                                                                                                                                                                                          -#splashScreen {display:none;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#displayArea {margin:1em 17em 0em 14em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.toolbar {text-align:right; font-size:.9em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler {padding:1em 1em 0em 1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.missing .viewer,.missing .title {font-style:italic;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.title {font-size:1.6em; font-weight:bold;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.missing .subtitle {display:none;}
                                                                                                                                                                                                                                          -.subtitle {font-size:1.1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tiddler .button {padding:0.2em 0.4em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
                                                                                                                                                                                                                                          -.isTag .tagging {display:block;}
                                                                                                                                                                                                                                          -.tagged {margin:0.5em; float:right;}
                                                                                                                                                                                                                                          -.tagging, .tagged {font-size:0.9em; padding:0.25em;}
                                                                                                                                                                                                                                          -.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
                                                                                                                                                                                                                                          -.tagClear {clear:both;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.footer {font-size:.9em;}
                                                                                                                                                                                                                                          -.footer li {display:inline;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.annotation {padding:0.5em; margin:0.5em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* html .viewer pre {width:99%; padding:0 0 1em 0;}
                                                                                                                                                                                                                                          -.viewer {line-height:1.4em; padding-top:0.5em;}
                                                                                                                                                                                                                                          -.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
                                                                                                                                                                                                                                          -.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
                                                                                                                                                                                                                                          -.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
                                                                                                                                                                                                                                          -.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
                                                                                                                                                                                                                                          -table.listView {font-size:0.85em; margin:0.8em 1.0em;}
                                                                                                                                                                                                                                          -table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
                                                                                                                                                                                                                                          -.viewer code {font-size:1.2em; line-height:1.4em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.editor {font-size:1.1em;}
                                                                                                                                                                                                                                          -.editor input, .editor textarea {display:block; width:100%; font:inherit;}
                                                                                                                                                                                                                                          -.editorFooter {padding:0.25em 0em; font-size:.9em;}
                                                                                                                                                                                                                                          -.editorFooter .button {padding-top:0px; padding-bottom:0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.sparkline {line-height:1em;}
                                                                                                                                                                                                                                          -.sparktick {outline:0;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
                                                                                                                                                                                                                                          -.zoomer div {padding:1em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -* html #backstage {width:99%;}
                                                                                                                                                                                                                                          -* html #backstageArea {width:99%;}
                                                                                                                                                                                                                                          -#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
                                                                                                                                                                                                                                          -#backstageToolbar {position:relative;}
                                                                                                                                                                                                                                          -#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
                                                                                                                                                                                                                                          -#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
                                                                                                                                                                                                                                          -#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
                                                                                                                                                                                                                                          -#backstage {position:relative; width:100%; z-index:50;}
                                                                                                                                                                                                                                          -#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
                                                                                                                                                                                                                                          -.backstagePanelFooter {padding-top:0.2em; float:right;}
                                                                                                                                                                                                                                          -.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
                                                                                                                                                                                                                                          -#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.whenBackstage {display:none;}
                                                                                                                                                                                                                                          -.backstageVisible .whenBackstage {display:block;}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -StyleSheet for use when a translation requires any css style changes.
                                                                                                                                                                                                                                          -This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which use a logographic writing system and need larger font sizes.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/*{{{*/
                                                                                                                                                                                                                                          -body {font-size:0.8em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -#sidebarOptions {font-size:1.05em;}
                                                                                                                                                                                                                                          -#sidebarOptions a {font-style:normal;}
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {font-size:0.95em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.subtitle {font-size:0.8em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.viewer table.listView {font-size:0.95em;}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -@media print {
                                                                                                                                                                                                                                          -#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton {display: none ! important;}
                                                                                                                                                                                                                                          -#displayArea {margin: 1em 1em 0em 1em;}
                                                                                                                                                                                                                                          -/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
                                                                                                                                                                                                                                          -noscript {display:none;}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
                                                                                                                                                                                                                                          -<div class='headerShadow'>
                                                                                                                                                                                                                                          -<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div class='headerForeground'>
                                                                                                                                                                                                                                          -<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
                                                                                                                                                                                                                                          -<div id='sidebar'>
                                                                                                                                                                                                                                          -<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
                                                                                                                                                                                                                                          -<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='displayArea'>
                                                                                                                                                                                                                                          -<div id='messageArea'></div>
                                                                                                                                                                                                                                          -<div id='tiddlerDisplay'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
                                                                                                                                                                                                                                          -<div class='title' macro='view title'></div>
                                                                                                                                                                                                                                          -<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
                                                                                                                                                                                                                                          -<div class='tagging' macro='tagging'></div>
                                                                                                                                                                                                                                          -<div class='tagged' macro='tags'></div>
                                                                                                                                                                                                                                          -<div class='viewer' macro='view text wikified'></div>
                                                                                                                                                                                                                                          -<div class='tagClear'></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
                                                                                                                                                                                                                                          -<div class='title' macro='view title'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit title'></div>
                                                                                                                                                                                                                                          -<div macro='annotations'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit text'></div>
                                                                                                                                                                                                                                          -<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
                                                                                                                                                                                                                                          -* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
                                                                                                                                                                                                                                          -* MainMenu: The menu (usually on the left)
                                                                                                                                                                                                                                          -* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
                                                                                                                                                                                                                                          -You'll also need to enter your username for signing your edits: <<option txtUserName>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          These InterfaceOptions for customising TiddlyWiki are saved in your browser
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<<option txtUserName>>
                                                                                                                                                                                                                                          -<<option chkSaveBackups>> SaveBackups
                                                                                                                                                                                                                                          -<<option chkAutoSave>> AutoSave
                                                                                                                                                                                                                                          -<<option chkRegExpSearch>> RegExpSearch
                                                                                                                                                                                                                                          -<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
                                                                                                                                                                                                                                          -<<option chkAnimate>> EnableAnimations
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -Also see AdvancedOptions
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A task has a description, an estimate of how long it will take, and a record of how much time you have spent on it so far.  Here's an example, which shows a task estimated at 3 hours, with 1 hour spent on it, and ''2'' hours remaining:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 3 3 1>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you hover the mouse over any part of the task -- the bullet, the description, or any of the numeric cells -- a tip will appear explaining it.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Try modifying the time spent.  Suppose you've just spent one more hour and want to record it.  Just click on the second yellow cell, and enter "+1" (sans the quote marks, of course) in the popup window.  Watch the time remaining go down to 1 hour.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -In reality, I originally estimated this task at a half-hour, but it ended up taking 3.5 hours.  The macro also tracks your original estimate, if it is different from the current estimate, in a fourth cell like this:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 0.5 2 1>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can adjust the current estimate in the same way as you adjusted the time spent.  Click on the current estimate cell (the first yellow cell), and change it to 2.5 hours by typing "2.5" or "+.5".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You can also adjust the time remaining, which will modify either the estimate (if the time remaining increases) or the time spent (if it decreases).  Click on the time remaining and add an hour by typing "+1".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -When the time remaining goes to zero, the task is considered complete:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 0.5 3.5 3.5>> Add a double-click handler to the description cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you haven't already done so, try double-clicking the description.  Yes, it really does open up the editor and select just the text of the description.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A task's description is a single wikified line, so it can contain any formatting that can be specified on one line:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 1>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 0.5>> Put tasksum on the ViewTemplate.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can specify just the description of a task, and leave it unestimated.  Click the question mark to enter the estimate:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -As this task implies, you can enter two values in the popup when you click on any of the time cells.  Separate them with spaces and/or a comma.  Experiment:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<task 1>> Beef up the time click handlers to allow entry of ''two'' values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Finally, if you haven't already figured this out, you can double-click on a task's bullet to mark it complete, with the current estimate entered as the time spent.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          If you've been paying attention, you've noticed that I haven't discussed the actual adding of calls to the task macro within your tiddlers -- it's all been about modifying tasks that were already there.  That's because adding tasks via the taskadder macro is much easier and more intuitive than adding them by hand.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -And setting up a taskadder is simplicity itself.  Just add {{{<<taskadder>>}}} to your tiddler.  You will see this:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Just type a task description into the first field, and your initial estimate for how long it will take into the second field.  Click the "add task" button, or just hit Enter in either of the fields, to add the new task into the tiddler.  Notice that you can just start typing a new task as soon as you're done entering the first one.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You can have as many taskadders as you like in any tiddler.  The last one you used will capture the keyboard focus when it is redisplayed, meaning you can type a series of tasks without using the mouse.  Try adding some tasks here and in the above adder:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Notice that the one you just used takes focus when this tiddler is redisplayed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -A taskadder by default adds tasks above itself.  You can make it add them below by adding a {{{below}}} argument to the macro call:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<taskadder below>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          In this tutorial, we've been looking mostly at individual tasks.  In real life, though, you'll typically have a series of them, or even several series of them in the same tiddler.  In these cases you want a summary that tells you -- at a minimum -- how much time you still expect to spend on these tasks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To get such a summary, just add {{{<<tasksum start>>}}} before the tasks and {{{<<tasksum end>>}}} after them.  Here's an example:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 0.25 0.25 0.25>> Add tooltips to the various cells
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<task 1 3.5 2.5>> Add a double-click handler to the desc cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to allow entry of two values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to handle leading + or -
                                                                                                                                                                                                                                          -<<task 1 1 0>> Add a double-click handler to the status cell that functions like typing 0 into the rem cell
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -If you'd rather have the summary at the top, just add {{{here}}} to the start call, ie {{{<<tasksum start here>>}}}.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start here>>
                                                                                                                                                                                                                                          -<<task 0.25 0.25 0.25>> Add tooltips to the various cells
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -You can nest these things if you like, just be sure to match starts and ends:
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<tasksum start here>>
                                                                                                                                                                                                                                          -* Time cell manipulation:<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 1 0.75 0.75>> Figure out how to add auto-updating click handlers to the time cells
                                                                                                                                                                                                                                          -<<task 2 2 0>> Add simple click handlers to cur, spent, rem: just allow direct setting of values
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to allow entry of two values each: cur&spent, spent&rem. Add click handler to done tasks' spent cells too, to reopen them (like with +0, 1).
                                                                                                                                                                                                                                          -<<task 1 1 0>> Beef up the time click handlers to handle leading + or -
                                                                                                                                                                                                                                          -<<tasksum end "Cell manipulation:">>
                                                                                                                                                                                                                                          -<<br>>
                                                                                                                                                                                                                                          -* Double-click handling:<<tasksum start>>
                                                                                                                                                                                                                                          -<<task 1 3.5 2.5>> Add a double-click handler to the desc cell that opens the editor and selects the text
                                                                                                                                                                                                                                          -<<task 1 1 0>> Add a double-click handler to the status cell that functions like typing 0 into the rem cell
                                                                                                                                                                                                                                          -<<tasksum end "Double-clicks:">>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<<tasksum end>>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Finally, the simplest way to use tasksum is to add it to your view template.  See TaskSummaryViewTemplate for an example template.  Note that if no tasks are present between the start and end, nothing is displayed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -To continue, click the down-arrow and choose another section: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The TaskMacroPlugin can be installed like any other TiddlyWiki plugin, and used without further effort.  However, there are two issues that may affect you.  (To get started with a brand new wiki that does not have these issues, consider downloading the [[empty LabWiki|empty_labwiki.html]].)
                                                                                                                                                                                                                                          -# The task macros don't play nicely with the default TiddlyWiki display of tags.  In the default view template, a tiddler's list of tags is shown in a little box that floats in the upper right corner of the tiddler.  However, this little box may interfere with the tables used by the task macros.  In Firefox, the tables are drawn right over the top of the tag box, rendering both of them illegible.  In Internet Explorer, the tag box forces the tables to be pushed down below the box, which can waste a lot of space.<<br>><<br>>Thus, I recommend changing your view template to eliminate the little box.  If you use Simon Baird's [[TagglyTagging|http://simonbaird.com/mptw/#TagglyTagging]] (as LabWiki does), then my TaskSummaryViewTemplate might be a good alternative.  Simply import it into your wiki and rename it to ViewTemplate.  This template also demonstrates how to incorporate the tasksum macro into every tiddler so any tiddler with tasks has a summary at the top.<<br>><<br>>
                                                                                                                                                                                                                                          -# Most view templates also add a minus sign ("-") before the "close" command.  TiddlyWiki interprets this to mean that you want the close command to be executed if you hit the Escape key from within the tiddler.<<br>><<br>>However, most tiddlers never have focus, and so never give you the opportunity to try it out.  But if you have a taskadder in your tiddler, then you suddenly enable this feature -- and you probably don't want it.  It means that if you type a nice long task description and then hit Escape, that description will be lost and the tiddler will be closed.  So I recommend that you remove the minus sign from the view template's menu altogether, as I have done in LabWiki's own ViewTemplate.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -This ends the tutorial.  To go back to any previous section, click the down-arrow and choose it: <<tag TaskMacroTutorial>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          PageTemplate
                                                                                                                                                                                                                                          -|>|SiteTitle - SiteSubtitle|
                                                                                                                                                                                                                                          -|>|MainMenu|
                                                                                                                                                                                                                                          -|DefaultTiddlers<<br>><<br>><<br>>ViewTemplate<<br>><<br>>EditTemplate|SideBarOptions|
                                                                                                                                                                                                                                          -|~|OptionsPanel|
                                                                                                                                                                                                                                          -|~|SideBarTabs|
                                                                                                                                                                                                                                          -|~|AdvancedOptions|
                                                                                                                                                                                                                                          -|~|<<tiddler Configuration.SideBarTabs>>|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''StyleSheet:'' StyleSheetColors - StyleSheetLayout - StyleSheetPrint
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -ColorPalette
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -SiteUrl
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Automation is treated as a function over time. It is always tied to a specific Parameter (which can thus be variable over the course of the timeline). All details //how// this function is defined are completely abstracted away. The Parameter uses a ParamProvider to get the value for a given Time (point). Typically, this will use linear or bezier interpolation over a set of keyframes internally. Parameters can be configured to have different value ranges and distribution types (on-off, stepped, continuous, bounded)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -[img[how to implement Automation|uml/fig129669.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|BetterTimelineMacro|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#BetterTimelineMacro|
                                                                                                                                                                                                                                          -|Version|0.5 beta|
                                                                                                                                                                                                                                          -|Requires|~TW2.x|
                                                                                                                                                                                                                                          -!!!Description:
                                                                                                                                                                                                                                          -A replacement for the core timeline macro that offers more features:
                                                                                                                                                                                                                                          -*list tiddlers with only specfic tag
                                                                                                                                                                                                                                          -*exclude tiddlers with a particular tag
                                                                                                                                                                                                                                          -*limit entries to any number of days, for example one week
                                                                                                                                                                                                                                          -*specify a start date for the timeline, only tiddlers after that date will be listed.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Installation:
                                                                                                                                                                                                                                          -Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
                                                                                                                                                                                                                                          -Edit the ViewTemplate to add the fullscreen command to the toolbar.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Syntax:
                                                                                                                                                                                                                                          -{{{<<timeline better:true>>}}}
                                                                                                                                                                                                                                          -''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -additonal params:
                                                                                                                                                                                                                                          -(use only the ones you want)
                                                                                                                                                                                                                                          -{{{<<timeline better:true  onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''explanation of syntax:''
                                                                                                                                                                                                                                          -onlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.
                                                                                                                                                                                                                                          -excludeTag: tiddlers with this tag will not be listed.
                                                                                                                                                                                                                                          -sortBy: sort tiddlers by date modified or date created. Possible values are modified or created.
                                                                                                                                                                                                                                          -firstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006
                                                                                                                                                                                                                                          -maxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.
                                                                                                                                                                                                                                          -maxEntries: limit the total number of entries in the timeline.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!History:
                                                                                                                                                                                                                                          -*28-07-06: ver 0.5 beta, first release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -// Return the tiddlers as a sorted array
                                                                                                                                                                                                                                          -TiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          var results = [];
                                                                                                                                                                                                                                          -          this.forEachTiddler(function(title,tiddler)
                                                                                                                                                                                                                                          -          {
                                                                                                                                                                                                                                          -          if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)
                                                                                                                                                                                                                                          -                        if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)
                                                                                                                                                                                                                                          -                                      results.push(tiddler);
                                                                                                                                                                                                                                          -          });
                                                                                                                                                                                                                                          -          if(field)
                                                                                                                                                                                                                                          -                   results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
                                                                                                                                                                                                                                          -          return results;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//this function by Udo
                                                                                                                                                                                                                                          -function getParam(params, name, defaultValue)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          if (!params)
                                                                                                                                                                                                                                          -          return defaultValue;
                                                                                                                                                                                                                                          -          var p = params[0][name];
                                                                                                                                                                                                                                          -          return p ? p[0] : defaultValue;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -window.old_timeline_handler= config.macros.timeline.handler;
                                                                                                                                                                                                                                          -config.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -          var args = paramString.parseParams("list",null,true);
                                                                                                                                                                                                                                          -          var betterMode = getParam(args, "better", "false");
                                                                                                                                                                                                                                          -          if (betterMode == 'true')
                                                                                                                                                                                                                                          -          {
                                                                                                                                                                                                                                          -          var sortBy = getParam(args,"sortBy","modified");
                                                                                                                                                                                                                                          -          var excludeTag = getParam(args,"excludeTag",undefined);
                                                                                                                                                                                                                                          -          var includeTag = getParam(args,"onlyTag",undefined);
                                                                                                                                                                                                                                          -          var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);
                                                                                                                                                                                                                                          -          var firstDayParam = getParam(args,"firstDay",undefined);
                                                                                                                                                                                                                                          -          var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";
                                                                                                                                                                                                                                          -          var lastDay = "";
                                                                                                                                                                                                                                          -          var field= sortBy;
                                                                                                                                                                                                                                          -          var maxDaysParam = getParam(args,"maxDays",undefined);
                                                                                                                                                                                                                                          -          var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;
                                                                                                                                                                                                                                          -          var maxEntries = getParam(args,"maxEntries",undefined);
                                                                                                                                                                                                                                          -          var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;
                                                                                                                                                                                                                                          -          for(var t=tiddlers.length-1; t>=last; t--)
                                                                                                                                                                                                                                          -                  {
                                                                                                                                                                                                                                          -                  var tiddler = tiddlers[t];
                                                                                                                                                                                                                                          -                  var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
                                                                                                                                                                                                                                          -                  if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))
                                                                                                                                                                                                                                          -                     {
                                                                                                                                                                                                                                          -                     if(theDay != lastDay)
                                                                                                                                                                                                                                          -                               {
                                                                                                                                                                                                                                          -                               var theDateList = document.createElement("ul");
                                                                                                                                                                                                                                          -                               place.appendChild(theDateList);
                                                                                                                                                                                                                                          -                               createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));
                                                                                                                                                                                                                                          -                               lastDay = theDay;
                                                                                                                                                                                                                                          -                               }
                                                                                                                                                                                                                                          -                  var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);
                                                                                                                                                                                                                                          -                  theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
                                                                                                                                                                                                                                          -                  }
                                                                                                                                                                                                                                          -                  }
                                                                                                                                                                                                                                          -          }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -          else
                                                                                                                                                                                                                                          -              {
                                                                                                                                                                                                                                          -              window.old_timeline_handler.apply(this,arguments);
                                                                                                                                                                                                                                          -              }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          All decisions on //how // the RenderProcess has to be carried out are concentrated in this rather complicated Builder Subsystem. The benefit of this approach is, besides decoupling of subsystems, to keep the actual performance-intensive video processing code as simple and transparent as possible. The price, in terms of increased complexity &mdash; to pay in the Builder &mdash; can be handled by making the Build Process generic to a large degree. Using a Design By Contract approach we can decompose the various decisions into small decision modules without having to trace the actual workings of the Build Process as a whole.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -[>img[Outline of the Build Process|uml/fig129413.png]]
                                                                                                                                                                                                                                          -The building itself will be broken down into several small tool application steps. Each of these steps has to be mapped to the MObjects found on the [[Timeline]]. Remember: the idea is that the so called "[[Fixture]]" contains only [[ExplicitPlacement]]s which in turn link to MObjects like Clips, Effects and Automation. So it is sufficient to traverse this list and map the build tools to the elements. Each of these build tools has its own state, which serves to build up the resulting Render Engine. So far I see two steps to be necessary:
                                                                                                                                                                                                                                          -* find the "Segments", i.e. the locations where the overall configuration changes
                                                                                                                                                                                                                                          -* for each segment: generate a ProcNode for each found MObject and wire them accordingly
                                                                                                                                                                                                                                          -Note, //we still have to work out how exactly building, rendering and playback work// together with the backend-design. The build process as such doesn't overly depend on these decisions. It is easy to reconfigure this process. For example, it would be possible as well to build for each frame separately (as Cinelerra2 does), or to build one segment covering the whole timeline (and handle everything via [[Automation]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -&rarr;see also: BuilderStructures
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -[img[Colaborations in the Build Process|uml/fig128517.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The Builder takes some MObject/[[Placement]] information (called Timeline) and generates out of this a Render Engine configuration able to render this Objects. It does all decisions and retrieves the current configuration of all objects and plugins, so the Render Engine can just process them stright forward.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -The Builder is part of the [[Builder Pattern|http://en.wikipedia.org/wiki/Builder_pattern]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          * the MObjects implement //Buildable//
                                                                                                                                                                                                                                          -* each Buildable can "recieve" a Tool object and aply it
                                                                                                                                                                                                                                          -* the different Tool objects are iterated/mapped onto the list of MObjects in the [[Timeline]]
                                                                                                                                                                                                                                          -* __Rationale__
                                                                                                                                                                                                                                          -  * the MObject class hierarchy is rather fixed (it is unlikely the we will be adding much new MObject subclasses)
                                                                                                                                                                                                                                          -  * so this design makes it easy to add new Tool subclasses, and within each Tool subclass, all operations on the different MObject classes are grouped together, so it is easy to see what is going on.
                                                                                                                                                                                                                                          -  * a given Tool instance can carry state while beeing iterated, so we don't need any global (or object-global) variables to hold the result of the build process
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This programming technique is often refered to as //double dispatch// or //visitor//
                                                                                                                                                                                                                                          -{{red{TODO:flesh out the actual Operations needed}}}
                                                                                                                                                                                                                                          -    
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -[img[Entities cooperating in the Builder|uml/fig129285.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Background: #fefefd
                                                                                                                                                                                                                                          -Foreground: #000
                                                                                                                                                                                                                                          -PrimaryPale: #8fb
                                                                                                                                                                                                                                          -PrimaryLight: #50d2ae
                                                                                                                                                                                                                                          -PrimaryMid: #1b9989
                                                                                                                                                                                                                                          -PrimaryDark: #0f3f56
                                                                                                                                                                                                                                          -SecondaryPale: #ffc
                                                                                                                                                                                                                                          -SecondaryLight: #fe8
                                                                                                                                                                                                                                          -SecondaryMid: #db4
                                                                                                                                                                                                                                          -SecondaryDark: #841
                                                                                                                                                                                                                                          -TertiaryPale: #eef
                                                                                                                                                                                                                                          -TertiaryLight: #ccd
                                                                                                                                                                                                                                          -TertiaryMid: #99a
                                                                                                                                                                                                                                          -TertiaryDark: #667
                                                                                                                                                                                                                                          -Error: #f88
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Here, in the context of the Render Engine, the Controller component is responsible for managing the global playback state, for triggering the build process and for activating the backend and the Render Engine configuration created by the Builder to carry out the actual rendering. So you can expect the Controller to encompass a State Machine.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          RenderEngine
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          As always, the main goal is //to cut down complexity// by the usual approach to separate into small manageable chunks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To achieve this, here we try to separate ''Configuration'' from ''Processing''. Further, in Configuration we try to separate the ''high level view'' (users view when editing) from the ''low level view'' (the actual configuration effective for the calculations). Finally, we try to factor out and encapsulate ''State'' in order to make State explicit.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -The main tool used to implement this separation is the [[Builder Pattern|http://en.wikipedia.org/wiki/Builder_pattern]]. Here especially we move all decisions and parametrization into the BuildProcess. The Nodes in this Pipeline should process Video/Audio and do nothing else. No more decisions, tests and conditional operations when running the Pipeline. Move all of this out into the configuration of the pipeline, which is done by the Builder. Make the actual processing nodes Template classes, parametrized by the color model and number of components. Make all Nodes of equal footing with each other, able to be connected freely within the limitations of the necessary input and output. Make the OpenGL rendering into alternate implementation of some operations together with an alternate signal flow (usable only if the whole Pipeline can be built up to support this changed signal flow), thus factoring out all the complexities of managing the data flow between core and hardware accelerated rendering out of the implementation of the actual processing. Introduce separate control data connections for the automation data, separating the case of true multi-channel-effects from the case where one node just gets remote controlled by another node (or two nodes using the same automation data).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Another pertinent theme is to make the basic building blocks simpler, while on the other hand gaining much more flexibility for combining these building blocks. For example we try to unfold any "internal-multi" effects into separate instances (e.g. the possibility of having an arbitrary number of single masks at any point of the pipeline instead of having one special masking facility encompassing multiple sub-masks. Similarly, we treat the Objects in the EDL in a more uniform manner and gain the possibility to [[place|Placement]] them in various ways.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          ''EDL'' is a short-hand for __E__dit __D__ecision __L__ist. The use of this term can be confusing; for the usual meaning see the definition in [[Wikipedia|http://en.wikipedia.org/wiki/Edit_decision_list]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Cinelerra uses this term in a related manner but with a somewhat shifted focus (and we just stick to this usage here): In Cinelerra the EDL is comprised of the whole set of clips and other media objects parametrized and placed onto the tracks by the user. It is the result of the user's //editing efforts.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -In this usage, the EDL is almost synonymous to the ''Session'', just the latter emphasizes more the state aspect, as it can be thought as a current state of the EDL contained in a file or data structure together with additional Option values and settings for the GUI. The Session is what you save and load, while the EDL rather denotes a structure of Objects placed in time.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The &raquo;Timeline&laquo; is a sequence of ~MObjects -- here clips -- together with an ExplicitPlacement, locating each clip at a given time and track. (Note: I simplified the time format and wrote frame numbers to make it more clear)
                                                                                                                                                                                                                                          -[img[Example1: Objects in the EDL/Fixture|uml/fig128773.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -After beeing processed by the Builder, we get the following Render Engine configuration
                                                                                                                                                                                                                                          -[img[Example1: generated Render Engine|uml/fig129029.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          This Example showes the //high level// EDL as well. This needs to be transformed into a Fixture by some facility still to be designed. Basically, each [[Placement]] needs to be queried for this to get the corresponding ExplicitPlacement. The difficult part is to handle possible Placement constraints, e.g. one clip can't be placed at a timespan covered by another clip on the same track. In the current Cinelerra2, all of this is done directly by the GUI actions.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -The &raquo;Timeline&laquo; is a sequence of ~MObjects -- note: using the same Object instances -- but now with the calculated ExplicitPlacement, locating the clip at a given time and track. The effect is located absolutely in time as well, but because it is the same Instance, it has the pointer to the ~RelativePlacement, wich basically attaches the effect to the clip. This structure may look complicated, but is easy to process if we go "backward" and just rely on the information contained in the ExplicitPlacement.
                                                                                                                                                                                                                                          -[img[Example2: Clip with Effect and generated Fixture for this EDL|uml/fig128901.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -----
                                                                                                                                                                                                                                          -After beeing processed by the Builder, we get a Render Engine configuration.<br>
                                                                                                                                                                                                                                          -It has to be segmented at least at every point with changes in the configuration, but some variations are possible, e.g. we could create a Render Engine for every Frame (as Cinelerra2 does) or we could optimize out some configurations (for example the effect extended beyond the end of the clip)
                                                                                                                                                                                                                                          -[img[Example2: generated Render Engine|uml/fig129157.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          !MObject assembly
                                                                                                                                                                                                                                          -To make the intended use of the classes more clear, consider the following two example Object graphs:
                                                                                                                                                                                                                                          -* a video clip and a audio clip placed (explicitly) on two tracks &rarr;[[Example1]]
                                                                                                                                                                                                                                          -* a video clip placed relatively, with an attached HUE effect &rarr;[[Example2]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          a special ProcNode which is used to pull the finished output of one Render Pipeline (Tree or Graph). This term is already used in the Cinelerra2 codebase. I am unsure at the moment if it is a distinct subclass or rahter a specially configured ProcNode (a general design rule tells us to err in favour of the latter if in doubt).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A special kind (subclass) of [[Placement]]. As such it is always linked to a //Subject//, i.e. a MObject. In addition to the properties of a (unspecific) Placement, the ExplicitPlacement specifies a absolute time and track position for locating the Subject
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          a specially configured EDL
                                                                                                                                                                                                                                          - * all MObjects have their position, length and configuration set up ready for rendering.
                                                                                                                                                                                                                                          - * all MObjects are associated with a ExplicitPlacement
                                                                                                                                                                                                                                          - * this ~ExplicitPlacements are contained in a ordered List called the Timeline
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//My intention is to create this Fixture out of the editing operations done by the user//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          This term has //two meanings, //so care has to be taken for not confusing them.
                                                                                                                                                                                                                                          -# in general use, a Frame means one full image of a video clip, i.e an array of rows of pixels. For interlaced footage, one Frame contains two halfimages, commonly called Fields. (Cinelerra2 confuses this terms)
                                                                                                                                                                                                                                          -# here in this design, we use Frame as an abstraction for a buffer of raw media data to be processed. If in doubt, we should label this "Dataframe".
                                                                                                                                                                                                                                          -#* one video Dataframe contains a single video frame
                                                                                                                                                                                                                                          -#* one audio Dataframe contains a block of raw audio samples
                                                                                                                                                                                                                                          -#* one OpenGL Dataframe could contain raw texture data (but I am lacking expertise for this topic)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|FullScreenPlugin|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#FullScreenPlugin|
                                                                                                                                                                                                                                          -|Version|1.1|
                                                                                                                                                                                                                                          -|Requires|~TW2.x|
                                                                                                                                                                                                                                          -!Description:
                                                                                                                                                                                                                                          -Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Demo:
                                                                                                                                                                                                                                          -Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Installation:
                                                                                                                                                                                                                                          -Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
                                                                                                                                                                                                                                          -Edit the ViewTemplate to add the fullscreen command to the toolbar.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!History:
                                                                                                                                                                                                                                          -*25-07-06: ver 1.1
                                                                                                                                                                                                                                          -*20-07-06: ver 1.0
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var lewcidFullScreen = false;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.fullscreen =
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -            text:" ↕ ",
                                                                                                                                                                                                                                          -            tooltip:"Fullscreen mode"
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.fullscreen.handler = function (event,src,title)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -            if (lewcidFullScreen == false)
                                                                                                                                                                                                                                          -               {
                                                                                                                                                                                                                                          -                lewcidFullScreen = true;
                                                                                                                                                                                                                                          -                setStylesheet('#sidebar, .header, #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");
                                                                                                                                                                                                                                          -               }
                                                                                                                                                                                                                                          -            else
                                                                                                                                                                                                                                          -               {
                                                                                                                                                                                                                                          -                lewcidFullScreen = false;
                                                                                                                                                                                                                                          -                setStylesheet(' ',"lewcidFullScreenStyle");
                                                                                                                                                                                                                                          -               }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.fullscreen={};
                                                                                                                                                                                                                                          -config.macros.fullscreen.handler =  function(place,macroName,params,wikifier,paramString,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -        var label = params[0]||" ↕ ";
                                                                                                                                                                                                                                          -        var tooltip = params[1]||"Fullscreen mode";
                                                                                                                                                                                                                                          -        createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
                                                                                                                                                                                                                                          -Story.prototype.closeTiddler =function(title,animate,slowly)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -           lewcid_fullscreen_closeTiddler.apply(this,arguments);
                                                                                                                                                                                                                                          -           if (story.isEmpty() && lewcidFullScreen == true)
                                                                                                                                                                                                                                          -              config.commands.fullscreen.handler();
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Slider.prototype.lewcidStop = Slider.prototype.stop;
                                                                                                                                                                                                                                          -Slider.prototype.stop = function()
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -           this.lewcidStop();
                                                                                                                                                                                                                                          -           if (story.isEmpty() && lewcidFullScreen == true)
                                                                                                                                                                                                                                          -              config.commands.fullscreen.handler();
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          __G__roup __of__ __P__ictures: several compressed video formats don't encode single frames. Normally, such formats are considered mere //delivery formates// but it was one of the key strenghts of Cinelrra from start to be able to do real non linear editing on such formats (like the ~MPEG2-ts unsed in HDV video). The problem of course is that the data backend needs to decode the whole GOP to be serve  single raw video frames.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -For this Cinelerra3 design, we could consider making GOP just another raw media data frame type and integrate this decoding into the render pipeline, similar to an effect based on several source frames for every calculated output frame.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -&rarr;see in [[Wikipedia|http://en.wikipedia.org/wiki/Group_of_pictures]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin for ~TiddlyWiki version 1.2.x and 2.0''
                                                                                                                                                                                                                                          -^^author: Eric Shulman - ELS Design Studios
                                                                                                                                                                                                                                          -source: http://www.TiddlyTools.com/#InlineJavascriptPlugin
                                                                                                                                                                                                                                          -license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Insert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
                                                                                                                                                                                                                                          -!!!!!Usage
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Deferred execution from an 'onClick' link''
                                                                                                                                                                                                                                          -By including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''External script source files:''
                                                                                                                                                                                                                                          -You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Defining javascript functions and libraries:''
                                                                                                                                                                                                                                          -Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Creating dynamic tiddler content''
                                                                                                                                                                                                                                          -An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
                                                                                                                                                                                                                                          -* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
                                                                                                                                                                                                                                          -* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
                                                                                                                                                                                                                                          -* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Accessing the ~TiddlyWiki DOM''
                                                                                                                                                                                                                                          -The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Access to this DOM element allows you to create scripts that can:
                                                                                                                                                                                                                                          -* vary their actions based upon the specific location in which they are embedded
                                                                                                                                                                                                                                          -* access 'tiddler-relative' information (use findContainingTiddler(place))
                                                                                                                                                                                                                                          -* perform direct DOM manipulations (when returning wikified text is not enough)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Examples
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -an "alert" message box:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dynamic output:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>return (new Date()).toString();</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>return (new Date()).toString();</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -wikified dynamic output:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -dynamic output using 'place' to get size information for current tiddler
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -creating an 'onclick' button/link that runs a script
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script label="click here">
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<script label="click here">
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -loading a script from a source url
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<script src="demo.js">return "loading demo.js..."</script>
                                                                                                                                                                                                                                          -<script label="click to execute demo() function">demo()</script>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -where http://www.TiddlyTools.com/demo.js contains:
                                                                                                                                                                                                                                          ->function demo() { alert('this output is from demo(), defined in demo.js') }
                                                                                                                                                                                                                                          ->alert('InlineJavascriptPlugin: demo.js has been loaded');
                                                                                                                                                                                                                                          -<script src="demo.js">return "loading demo.js..."</script>
                                                                                                                                                                                                                                          -<script label="click to execute demo() function">demo()</script>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.01.05 [1.4.0]''
                                                                                                                                                                                                                                          -added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
                                                                                                                                                                                                                                          -''2005.12.13 [1.3.1]''
                                                                                                                                                                                                                                          -when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
                                                                                                                                                                                                                                          -''2005.11.09 [1.3.0]''
                                                                                                                                                                                                                                          -for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content
                                                                                                                                                                                                                                          -Based on a suggestion by BradleyMeck
                                                                                                                                                                                                                                          -''2005.11.08 [1.2.0]''
                                                                                                                                                                                                                                          -handle loading of javascript from an external URL via src="..." syntax
                                                                                                                                                                                                                                          -''2005.11.08 [1.1.0]''
                                                                                                                                                                                                                                          -pass 'place' param into scripts to provide direct DOM access 
                                                                                                                                                                                                                                          -''2005.11.08 [1.0.0]''
                                                                                                                                                                                                                                          -initial release
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Credits
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.inlineJavascript= {major: 1, minor: 4, revision: 0, date: new Date(2006,1,5)};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "inlineJavascript",
                                                                                                                                                                                                                                          - match: "\\<script",
                                                                                                                                                                                                                                          - lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?\\>((?:.|\\n)*?)\\</script\\>",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - var lookaheadRegExp = new RegExp(this.lookahead,"mg");
                                                                                                                                                                                                                                          - lookaheadRegExp.lastIndex = w.matchStart;
                                                                                                                                                                                                                                          - var lookaheadMatch = lookaheadRegExp.exec(w.source)
                                                                                                                                                                                                                                          - if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
                                                                                                                                                                                                                                          - if (lookaheadMatch[1]) { // load a script library
                                                                                                                                                                                                                                          - // make script tag, set src, add to body to execute, then remove for cleanup
                                                                                                                                                                                                                                          - var script = document.createElement("script"); script.src = lookaheadMatch[1];
                                                                                                                                                                                                                                          - document.body.appendChild(script); document.body.removeChild(script);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (lookaheadMatch[2] && lookaheadMatch[3]) { // create a link to an 'onclick' script
                                                                                                                                                                                                                                          - // add a link, define click handler, save code in link (pass 'place'), set link attributes
                                                                                                                                                                                                                                          - var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
                                                                                                                                                                                                                                          - link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
                                                                                                                                                                                                                                          - link.code="function _out(place){"+lookaheadMatch[3]+"};_out(this);"
                                                                                                                                                                                                                                          - link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - else if (lookaheadMatch[3]) { // run inline script code
                                                                                                                                                                                                                                          - var code="function _out(place){"+lookaheadMatch[3]+"};_out(w.output);"
                                                                                                                                                                                                                                          - code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
                                                                                                                                                                                                                                          - try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
                                                                                                                                                                                                                                          - if (out && out.length) wikify(out,w.output);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|''Name:''|InlineJavascriptPlugin|
                                                                                                                                                                                                                                          -|''Source:''|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
                                                                                                                                                                                                                                          -|''Author:''|Eric Shulman - ELS Design Studios|
                                                                                                                                                                                                                                          -|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
                                                                                                                                                                                                                                          -|''~CoreVersion:''|2.0.10|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Insert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
                                                                                                                                                                                                                                          -!!!!!Usage
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Deferred execution from an 'onClick' link''
                                                                                                                                                                                                                                          -By including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''External script source files:''
                                                                                                                                                                                                                                          -You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Display script source in tiddler output''
                                                                                                                                                                                                                                          -By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Defining javascript functions and libraries:''
                                                                                                                                                                                                                                          -Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Creating dynamic tiddler content''
                                                                                                                                                                                                                                          -An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
                                                                                                                                                                                                                                          -* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
                                                                                                                                                                                                                                          -* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
                                                                                                                                                                                                                                          -* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Accessing the ~TiddlyWiki DOM''
                                                                                                                                                                                                                                          -The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Access to this DOM element allows you to create scripts that can:
                                                                                                                                                                                                                                          -* vary their actions based upon the specific location in which they are embedded
                                                                                                                                                                                                                                          -* access 'tiddler-relative' information (use findContainingTiddler(place))
                                                                                                                                                                                                                                          -* perform direct DOM manipulations (when returning wikified text is not enough)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Examples
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -an "alert" message box:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - alert('InlineJavascriptPlugin: this is a demonstration message');
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -dynamic output:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - return (new Date()).toString();
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -wikified dynamic output:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - return "link to current user: [["+config.options.txtUserName+"]]";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -dynamic output using 'place' to get size information for current tiddler:
                                                                                                                                                                                                                                          -><script show>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - var title=story.findContainingTiddler(place).id.substr(7);
                                                                                                                                                                                                                                          - return title+" is using "+store.getTiddlerText(title).length+" bytes";
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -creating an 'onclick' button/link that runs a script:
                                                                                                                                                                                                                                          -><script label="click here" show>
                                                                                                                                                                                                                                          - if (!window.story) window.story=window;
                                                                                                                                                                                                                                          - alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -loading a script from a source url:
                                                                                                                                                                                                                                          ->http://www.TiddlyTools.com/demo.js contains:
                                                                                                                                                                                                                                          ->>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
                                                                                                                                                                                                                                          ->>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
                                                                                                                                                                                                                                          -><script src="demo.js" show>
                                                                                                                                                                                                                                          - return "loading demo.js..."
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -><script label="click to execute demo() function" show>
                                                                                                                                                                                                                                          - demo()
                                                                                                                                                                                                                                          -</script>
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
                                                                                                                                                                                                                                          -''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
                                                                                                                                                                                                                                          -''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
                                                                                                                                                                                                                                          -''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
                                                                                                                                                                                                                                          -''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
                                                                                                                                                                                                                                          -''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
                                                                                                                                                                                                                                          -''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access 
                                                                                                                                                                                                                                          -''2005.11.08 [1.0.0]'' initial release
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Credits
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.inlineJavascript= {major: 1, minor: 5, revision: 1, date: new Date(2006,6,1)};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "inlineJavascript",
                                                                                                                                                                                                                                          - match: "\\<script",
                                                                                                                                                                                                                                          - lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - var lookaheadRegExp = new RegExp(this.lookahead,"mg");
                                                                                                                                                                                                                                          - lookaheadRegExp.lastIndex = w.matchStart;
                                                                                                                                                                                                                                          - var lookaheadMatch = lookaheadRegExp.exec(w.source)
                                                                                                                                                                                                                                          - if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
                                                                                                                                                                                                                                          - if (lookaheadMatch[1]) { // load a script library
                                                                                                                                                                                                                                          - // make script tag, set src, add to body to execute, then remove for cleanup
                                                                                                                                                                                                                                          - var script = document.createElement("script"); script.src = lookaheadMatch[1];
                                                                                                                                                                                                                                          - document.body.appendChild(script); document.body.removeChild(script);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (lookaheadMatch[4]) { // there is script code
                                                                                                                                                                                                                                          - if (lookaheadMatch[3]) // show inline script code in tiddler output
                                                                                                                                                                                                                                          - wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
                                                                                                                                                                                                                                          - if (lookaheadMatch[2]) { // create a link to an 'onclick' script
                                                                                                                                                                                                                                          - // add a link, define click handler, save code in link (pass 'place'), set link attributes
                                                                                                                                                                                                                                          - var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
                                                                                                                                                                                                                                          - link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
                                                                                                                                                                                                                                          - link.code="function _out(place){"+lookaheadMatch[4]+"};_out(this);"
                                                                                                                                                                                                                                          - link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - else { // run inline script code
                                                                                                                                                                                                                                          - var code="function _out(place){"+lookaheadMatch[4]+"};_out(w.output);"
                                                                                                                                                                                                                                          - code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
                                                                                                                                                                                                                                          - try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
                                                                                                                                                                                                                                          - if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          All sorts of "things" to be placed and manipulated by the user in the EDL. This interface abstracts the details and just provides
                                                                                                                                                                                                                                          -* a duration
                                                                                                                                                                                                                                          -* a [[Placement]]
                                                                                                                                                                                                                                          -* {{red{and what else?}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The MObjects Subsystem contains everything related to the [[EDL]] and the various Media Objects placed within it. Examples for [[MObjects|MObject]] being:
                                                                                                                                                                                                                                          -* audio/video clips
                                                                                                                                                                                                                                          -* effects and plugins
                                                                                                                                                                                                                                          -* special facilities like mask and projector
                                                                                                                                                                                                                                          -* [[Automation]] sets
                                                                                                                                                                                                                                          -* labels and other (maybe functional) markup
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This Design strives to achieve a StrongSeparation between the low-level Structures used to carry out the actual rendering and the high level Entities living in the EDL and being manipulated by the user. In this high level view, the Objects are grouped and located by [[Placements|Placement]], providing a flexible and open way to express different groupings, locations and ordering constraints between the Media Objects.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -[img[Classess related to the EDL|uml/fig128133.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          ''[[Cinelerra3|index.html]]''
                                                                                                                                                                                                                                          -[[RenderEngine]]
                                                                                                                                                                                                                                          -[[MObjects]]
                                                                                                                                                                                                                                          -[[Admin]]
                                                                                                                                                                                                                                          -<<fullscreen>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>My TiddlyWiki</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Cinelerra2 introduced OpenGL support for rendering previews. I must admit, I am very unhappy with this, because
                                                                                                                                                                                                                                          -* it just supports some hardware
                                                                                                                                                                                                                                          -* it makes building difficult
                                                                                                                                                                                                                                          -* it can't handle all color models Cinelerra is capable of
                                                                                                                                                                                                                                          -* it introduces a separate codepath including some complicated copying of video data into the textures (and back?)
                                                                                                                                                                                                                                          -* it can't be used for rendering
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -So my judgement would be: in contrary to a realtime/gaming application, for quality video editing it is not worth the effort implementing OpenGL support in all details and with all its complexity. I would accept ~OpenGL as an option, if it could be pushed down into a Library, so it can be handled and maintained transparently and doesnt bind our limited developer manpower.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -But because I know the opinions on this topc are varying (users tend to be delighted if they hear "~OpenGL", because it carries notion of "fast" and "power" todays) &mdash; I try to integrate ~OpenGL as apossibility into this design of the Render Engine. Obviousely, I have the hard requirement that it //must not jeopardize the code structure.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -My proposed aproach is to treat OpenGL as a separate video raw data type, requiring separete and specialized [[Processing Nodes|ProcNode]] for all calculations. Thus the Builder could connect OpenGL nodes if it is possible to cover the whole render path for preview and fall back to the normal ~ProcNodes for all relevant renders
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          [img[Block Diagram|uml/fig128005.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Render Engine, [[Builder]] and [[Controller]] are closely related Subsystems. Actually, the [[Builder]] //creates// a newly configured Render Engine //for every// RenderProcess. Before doing so, it queries from the Session (or, to be more precise, from the [[Fixture]] within the current Session) all necessary Media Object Placement information. The [[Builder]] then derives from this information the actual assembly of [[Processing Nodes|ProcNode]] comprising the Render Engine. Thus:
                                                                                                                                                                                                                                          - * the source of the build process is a sequence of absolute (explicit) [[Placements|Placement]] called the [[Playlist]]
                                                                                                                                                                                                                                          - * the [[build process|BuildProcess]] is driven, configured and controlled by the [[Controller]] subsystem component. It encompasses the actual playback configuration and State of the System.
                                                                                                                                                                                                                                          - * the resulting Render Engine is a list of [[Processors]], each configured to calculate a segment of the timeline with uniform properties. Each of these Processors in turn is a graph of interconnected ProcNode.s.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -see also: RenderEntities
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -[img[Overview: Components of the Renderengine|uml/fig128261.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!--{{{-->
                                                                                                                                                                                                                                          -<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
                                                                                                                                                                                                                                          -	<div class='headerShadow'>
                                                                                                                                                                                                                                          -		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -	</div>
                                                                                                                                                                                                                                          -	<div class='headerForeground'>
                                                                                                                                                                                                                                          -		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
                                                                                                                                                                                                                                          -		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
                                                                                                                                                                                                                                          -	</div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!-- horizontal MainMenu -->
                                                                                                                                                                                                                                          -<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
                                                                                                                                                                                                                                          -<!-- original MainMenu menu -->
                                                                                                                                                                                                                                          -<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->
                                                                                                                                                                                                                                          -<div id='sidebar'>
                                                                                                                                                                                                                                          -	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
                                                                                                                                                                                                                                          -	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<div id='displayArea'>
                                                                                                                                                                                                                                          -	<div id='messageArea'></div>
                                                                                                                                                                                                                                          -	<div id='tiddlerDisplay'></div>
                                                                                                                                                                                                                                          -</div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A ParamProvider is the counterpart for (one or many) Parameter instances. It implements the value access function made available by the Parameter object to its clients.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -To give a concrete example: 
                                                                                                                                                                                                                                          -* a Fade Plugin needs the actual fade value for Frame t=xxx
                                                                                                                                                                                                                                          -* the Plugin has a Parameter Object (from which we could query the information of this parameter being a continuous float function)
                                                                                                                                                                                                                                          -* this Parameter Object provides a getValue() function, which is internally linked (i.e. by configuration) to a //Parameter Provider//
                                                                                                                                                                                                                                          -* the actual object implementing the ParamProvider Interface could be a Automation MObject located somewhere in the EDL and would do bezier interpolation on a given keyframe set.
                                                                                                                                                                                                                                          -* while building the Render Engine configuration actually at work, the Builder would have to setup this link between the Plugin Parameter Object and the ParamProvider; he can do so, because he sees the link between the Automation MObject and the corresponding Effect MObject
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -&rarr; see the class diagram for [[Automation]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Parameters are all probably variable control values used within the Render Engine. Contrast this with configuration values, which are considered to be fixed and need an internal reset of the application state to take effect.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -A ''Parameter Object'' provides a descriptor of the kind of parameter, together with a function used to pull the //actual value// of this parameter. Here, //actual// has a two-fold meaning:
                                                                                                                                                                                                                                          -* if called without a time specification, it is either a global (but variable) system or session parameter or a default value for automated Parameters. (the intention is to treat this cases uniformly)
                                                                                                                                                                                                                                          -* if called with a time specification, it is the query for an &mdash; probably interpolated &mdash; [[Automation]] value at this absolute time. The corresponding ParamProvider should fall back transparently to a default or session value if no time varying data is available
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -{{red{TODO: define how Automation works}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|<html><a name="Top"/></html>''Name:''|PartTiddlerPlugin|
                                                                                                                                                                                                                                          -|''Version:''|1.0.6 (2006-11-07)|
                                                                                                                                                                                                                                          -|''Source:''|http://tiddlywiki.abego-software.de/#PartTiddlerPlugin|
                                                                                                                                                                                                                                          -|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
                                                                                                                                                                                                                                          -|''Licence:''|[[BSD open source license]]|
                                                                                                                                                                                                                                          -|''TiddlyWiki:''|2.0|
                                                                                                                                                                                                                                          -|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
                                                                                                                                                                                                                                          -!Table of Content<html><a name="TOC"/></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Description',null, event)">Description, Syntax</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Applications',null, event)">Applications</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('LongTiddler',null, event)">Refering to Paragraphs of a Longer Tiddler</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Citation',null, event)">Citation Index</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('TableCells',null, event)">Creating "multi-line" Table Cells</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Tabs',null, event)">Creating Tabs</a></html>
                                                                                                                                                                                                                                          -** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Sliders',null, event)">Using Sliders</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Revisions',null, event)">Revision History</a></html>
                                                                                                                                                                                                                                          -* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Code',null, event)">Code</a></html>
                                                                                                                                                                                                                                          -!Description<html><a name="Description"/></html>
                                                                                                                                                                                                                                          -With the {{{<part aPartName> ... </part>}}} feature you can structure your tiddler text into separate (named) parts. 
                                                                                                                                                                                                                                          -Each part can be referenced as a "normal" tiddler, using the "//tiddlerName//''/''//partName//" syntax (e.g. "About/Features"). E.g. you may create links to the parts, use it in {{{<<tiddler...>>}}} or {{{<<tabs...>>}}} macros etc.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Syntax:'' 
                                                                                                                                                                                                                                          -|>|''<part'' //partName// [''hidden''] ''>'' //any tiddler content// ''</part>''|
                                                                                                                                                                                                                                          -|//partName//|The name of the part. You may reference a part tiddler with the combined tiddler name "//nameOfContainerTidder//''/''//partName//.|
                                                                                                                                                                                                                                          -|''hidden''|When defined the content of the part is not displayed in the container tiddler. But when the part is explicitly referenced (e.g. in a {{{<<tiddler...>>}}} macro or in a link) the part's content is displayed.|
                                                                                                                                                                                                                                          -|<html><i>any&nbsp;tiddler&nbsp;content</i></html>|<html>The content of the part.<br>A part can have any content that a "normal" tiddler may have, e.g. you may use all the formattings and macros defined.</html>|
                                                                                                                                                                                                                                          -|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Applications<html><a name="Applications"/></html>
                                                                                                                                                                                                                                          -!!Refering to Paragraphs of a Longer Tiddler<html><a name="LongTiddler"/></html>
                                                                                                                                                                                                                                          -Assume you have written a long description in a tiddler and now you want to refer to the content of a certain paragraph in that tiddler (e.g. some definition.) Just wrap the text with a ''part'' block, give it a nice name, create a "pretty link" (like {{{[[Discussion Groups|Introduction/DiscussionGroups]]}}}) and you are done.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice this complements the approach to first writing a lot of small tiddlers and combine these tiddlers to one larger tiddler in a second step (e.g. using the {{{<<tiddler...>>}}} macro). Using the ''part'' feature you can first write a "classic" (longer) text that can be read "from top to bottom" and later "reuse" parts of this text for some more "non-linear" reading.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Citation Index<html><a name="Citation"/></html>
                                                                                                                                                                                                                                          -Create a tiddler "Citations" that contains your "citations". 
                                                                                                                                                                                                                                          -Wrap every citation with a part and a proper name. 
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<part BAX98>Baxter, Ira D. et al: //Clone Detection Using Abstract Syntax Trees.// 
                                                                                                                                                                                                                                          -in //Proc. ICSM//, 1998.</part>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part BEL02>Bellon, Stefan: //Vergleich von Techniken zur Erkennung duplizierten Quellcodes.// 
                                                                                                                                                                                                                                          -Thesis, Uni Stuttgart, 2002.</part>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part DUC99>Ducasse, Stéfane et al: //A Language Independent Approach for Detecting Duplicated Code.// 
                                                                                                                                                                                                                                          -in //Proc. ICSM//, 1999.</part>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -You may now "cite" them just by using a pretty link like {{{[[Citations/BAX98]]}}} or even more pretty, like this {{{[[BAX98|Citations/BAX98]]}}}.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Creating "multi-line" Table Cells<html><a name="TableCells"/></html>
                                                                                                                                                                                                                                          -You may have noticed that it is hard to create table cells with "multi-line" content. E.g. if you want to create a bullet list inside a table cell you cannot just write the bullet list
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -* Item 1
                                                                                                                                                                                                                                          -* Item 2
                                                                                                                                                                                                                                          -* Item 3
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -into a table cell (i.e. between the | ... | bars) because every bullet item must start in a new line but all cells of a table row must be in one line.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Using the ''part'' feature this problem can be solved. Just create a hidden part that contains the cells content and use a {{{<<tiddler >>}}} macro to include its content in the table's cell.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -|!Subject|!Items|
                                                                                                                                                                                                                                          -|subject1|<<tiddler ./Cell1>>|
                                                                                                                                                                                                                                          -|subject2|<<tiddler ./Cell2>>|
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<part Cell1 hidden>
                                                                                                                                                                                                                                          -* Item 1
                                                                                                                                                                                                                                          -* Item 2
                                                                                                                                                                                                                                          -* Item 3
                                                                                                                                                                                                                                          -</part>
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that inside the {{{<<tiddler ...>>}}} macro you may refer to the "current tiddler" using the ".".
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -BTW: The same approach can be used to create bullet lists with items that contain more than one line.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Creating Tabs<html><a name="Tabs"/></html>
                                                                                                                                                                                                                                          -The build-in {{{<<tabs ...>>}}} macro requires that you defined an additional tiddler for every tab it displays. When you want to have "nested" tabs you need to define a tiddler for the "main tab" and one for every tab it contains. I.e. the definition of a set of tabs that is visually displayed at one place is distributed across multiple tiddlers.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -With the ''part'' feature you can put the complete definition in one tiddler, making it easier to keep an overview and maintain the tab sets.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -The standard tabs at the sidebar are defined by the following eight tiddlers:
                                                                                                                                                                                                                                          -* SideBarTabs
                                                                                                                                                                                                                                          -* TabAll
                                                                                                                                                                                                                                          -* TabMore
                                                                                                                                                                                                                                          -* TabMoreMissing
                                                                                                                                                                                                                                          -* TabMoreOrphans
                                                                                                                                                                                                                                          -* TabMoreShadowed
                                                                                                                                                                                                                                          -* TabTags
                                                                                                                                                                                                                                          -* TabTimeline
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Instead of these eight tiddlers one could define the following SideBarTabs tiddler that uses the ''part'' feature:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<tabs txtMainTab 
                                                                                                                                                                                                                                          - Timeline Timeline SideBarTabs/Timeline 
                                                                                                                                                                                                                                          - All 'All tiddlers' SideBarTabs/All 
                                                                                                                                                                                                                                          - Tags 'All tags' SideBarTabs/Tags 
                                                                                                                                                                                                                                          - More 'More lists' SideBarTabs/More>>
                                                                                                                                                                                                                                          -<part Timeline hidden><<timeline>></part>
                                                                                                                                                                                                                                          -<part All hidden><<list all>></part>
                                                                                                                                                                                                                                          -<part Tags hidden><<allTags>></part>
                                                                                                                                                                                                                                          -<part More hidden><<tabs txtMoreTab 
                                                                                                                                                                                                                                          - Missing 'Missing tiddlers' SideBarTabs/Missing 
                                                                                                                                                                                                                                          - Orphans 'Orphaned tiddlers' SideBarTabs/Orphans 
                                                                                                                                                                                                                                          - Shadowed 'Shadowed tiddlers' SideBarTabs/Shadowed>></part>
                                                                                                                                                                                                                                          -<part Missing hidden><<list missing>></part>
                                                                                                                                                                                                                                          -<part Orphans hidden><<list orphans>></part>
                                                                                                                                                                                                                                          -<part Shadowed hidden><<list shadowed>></part>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that you can easily "overwrite" individual parts in separate tiddlers that have the full name of the part.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -E.g. if you don't like the classic timeline tab but only want to see the 100 most recent tiddlers you could create a tiddler "~SideBarTabs/Timeline" with the following content:
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -<<forEachTiddler 
                                                                                                                                                                                                                                          - sortBy 'tiddler.modified' descending 
                                                                                                                                                                                                                                          - write '(index < 100) ? "* [["+tiddler.title+"]]\n":""'>>
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!Using Sliders<html><a name="Sliders"/></html>
                                                                                                                                                                                                                                          -Very similar to the build-in {{{<<tabs ...>>}}} macro (see above) the {{{<<slider ...>>}}} macro requires that you defined an additional tiddler that holds the content "to be slid". You can avoid creating this extra tiddler by using the ''part'' feature
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Example''
                                                                                                                                                                                                                                          -In a tiddler "About" we may use the slider to show some details that are documented in the tiddler's "Details" part.
                                                                                                                                                                                                                                          -{{{
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -<<slider chkAboutDetails About/Details details "Click here to see more details">>
                                                                                                                                                                                                                                          -<part Details hidden>
                                                                                                                                                                                                                                          -To give you a better overview ...
                                                                                                                                                                                                                                          -</part>
                                                                                                                                                                                                                                          -...
                                                                                                                                                                                                                                          -}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Notice that putting the content of the slider into the slider's tiddler also has an extra benefit: When you decide you need to edit the content of the slider you can just doubleclick the content, the tiddler opens for editing and you can directly start editing the content (in the part section). In the "old" approach you would doubleclick the tiddler, see that the slider is using tiddler X, have to look for the tiddler X and can finally open it for editing. So using the ''part'' approach results in a much short workflow.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Revision history<html><a name="Revisions"/></html>
                                                                                                                                                                                                                                          -* v1.0.6 (2006-11-07)
                                                                                                                                                                                                                                          -** Bugfix: cannot edit tiddler when UploadPlugin by Bidix is installed. Thanks to José Luis González Castro for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.5 (2006-03-02)
                                                                                                                                                                                                                                          -** Bugfix: Example with multi-line table cells does not work in IE6. Thanks to Paulo Soares for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.4 (2006-02-28)
                                                                                                                                                                                                                                          -** Bugfix: Shadow tiddlers cannot be edited (in TW 2.0.6). Thanks to Torsten Vanek for reporting the bug.
                                                                                                                                                                                                                                          -* v1.0.3 (2006-02-26)
                                                                                                                                                                                                                                          -** Adapt code to newly introduced Tiddler.prototype.isReadOnly() function (in TW 2.0.6). Thanks to Paulo Soares for reporting the problem.
                                                                                                                                                                                                                                          -* v1.0.2 (2006-02-05)
                                                                                                                                                                                                                                          -** Also allow other macros than the "tiddler" macro use the "." in the part reference (to refer to "this" tiddler)
                                                                                                                                                                                                                                          -* v1.0.1 (2006-01-27)
                                                                                                                                                                                                                                          -** Added Table of Content for plugin documentation. Thanks to RichCarrillo for suggesting.
                                                                                                                                                                                                                                          -** Bugfix: newReminder plugin does not work when PartTiddler is installed. Thanks to PauloSoares for reporting.
                                                                                                                                                                                                                                          -* v1.0.0 (2006-01-25)
                                                                                                                                                                                                                                          -** initial version
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code<html><a name="Code"/></html>
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// PartTiddlerPlugin
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Ensure that the PartTiddler Plugin is only installed once.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -if (!version.extensions.PartTiddlerPlugin) {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -version.extensions.PartTiddlerPlugin = {
                                                                                                                                                                                                                                          - major: 1, minor: 0, revision: 6,
                                                                                                                                                                                                                                          - date: new Date(2006, 10, 7), 
                                                                                                                                                                                                                                          - type: 'plugin',
                                                                                                                                                                                                                                          - source: "http://tiddlywiki.abego-software.de/#PartTiddlerPlugin"
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -if (!window.abego) window.abego = {};
                                                                                                                                                                                                                                          -if (version.major < 2) alertAndThrow("PartTiddlerPlugin requires TiddlyWiki 2.0 or newer.");
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Common Helpers
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Looks for the next newline, starting at the index-th char of text. 
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// If there are only whitespaces between index and the newline 
                                                                                                                                                                                                                                          -// the index behind the newline is returned, 
                                                                                                                                                                                                                                          -// otherwise (or when no newline is found) index is returned.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var skipEmptyEndOfLine = function(text, index) {
                                                                                                                                                                                                                                          - var re = /(\n|[^\s])/g;
                                                                                                                                                                                                                                          - re.lastIndex = index;
                                                                                                                                                                                                                                          - var result = re.exec(text);
                                                                                                                                                                                                                                          - return (result && text.charAt(result.index) == '\n') 
                                                                                                                                                                                                                                          - ? result.index+1
                                                                                                                                                                                                                                          - : index;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Constants
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var partEndOrStartTagRE = /(<\/part>)|(<part(?:\s+)((?:[^>])+)>)/mg;
                                                                                                                                                                                                                                          -var partEndTagREString = "<\\/part>";
                                                                                                                                                                                                                                          -var partEndTagString = "</part>";
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Plugin Specific Helpers
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Parse the parameters inside a <part ...> tag and return the result.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return [may be null] {partName: ..., isHidden: ...}
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var parseStartTagParams = function(paramText) {
                                                                                                                                                                                                                                          - var params = paramText.readMacroParams();
                                                                                                                                                                                                                                          - if (params.length == 0 || params[0].length == 0) return null;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - var name = params[0];
                                                                                                                                                                                                                                          - var paramsIndex = 1;
                                                                                                                                                                                                                                          - var hidden = false;
                                                                                                                                                                                                                                          - if (paramsIndex < params.length) {
                                                                                                                                                                                                                                          - hidden = params[paramsIndex] == "hidden";
                                                                                                                                                                                                                                          - paramsIndex++;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return {
                                                                                                                                                                                                                                          - partName: name, 
                                                                                                                                                                                                                                          - isHidden: hidden
                                                                                                                                                                                                                                          - };
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Returns the match to the next (end or start) part tag in the text, 
                                                                                                                                                                                                                                          -// starting the search at startIndex.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -// When no such tag is found null is returned, otherwise a "Match" is returned:
                                                                                                                                                                                                                                          -// [0]: full match
                                                                                                                                                                                                                                          -// [1]: matched "end" tag (or null when no end tag match)
                                                                                                                                                                                                                                          -// [2]: matched "start" tag (or null when no start tag match)
                                                                                                                                                                                                                                          -// [3]: content of start tag (or null if no start tag match)
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var findNextPartEndOrStartTagMatch = function(text, startIndex) {
                                                                                                                                                                                                                                          - var re = new RegExp(partEndOrStartTagRE);
                                                                                                                                                                                                                                          - re.lastIndex = startIndex;
                                                                                                                                                                                                                                          - var match = re.exec(text);
                                                                                                                                                                                                                                          - return match;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Formatter
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Process the <part ...> ... </part> starting at (w.source, w.matchStart) for formatting.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return true if a complete part section (including the end tag) could be processed, false otherwise.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var handlePartSection = function(w) {
                                                                                                                                                                                                                                          - var tagMatch = findNextPartEndOrStartTagMatch(w.source, w.matchStart);
                                                                                                                                                                                                                                          - if (!tagMatch) return false;
                                                                                                                                                                                                                                          - if (tagMatch.index != w.matchStart || !tagMatch[2]) return false;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - // Parse the start tag parameters
                                                                                                                                                                                                                                          - var arguments = parseStartTagParams(tagMatch[3]);
                                                                                                                                                                                                                                          - if (!arguments) return false;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - // Continue processing
                                                                                                                                                                                                                                          - var startTagEndIndex = skipEmptyEndOfLine(w.source, tagMatch.index + tagMatch[0].length);
                                                                                                                                                                                                                                          - var endMatch = findNextPartEndOrStartTagMatch(w.source, startTagEndIndex);
                                                                                                                                                                                                                                          - if (endMatch && endMatch[1]) {
                                                                                                                                                                                                                                          - if (!arguments.isHidden) {
                                                                                                                                                                                                                                          - w.nextMatch = startTagEndIndex;
                                                                                                                                                                                                                                          - w.subWikify(w.output,partEndTagREString);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - w.nextMatch = skipEmptyEndOfLine(w.source, endMatch.index + endMatch[0].length);
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return true;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - return false;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.formatters.push( {
                                                                                                                                                                                                                                          - name: "part",
                                                                                                                                                                                                                                          - match: "<part\\s+[^>]+>",
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - handler: function(w) {
                                                                                                                                                                                                                                          - if (!handlePartSection(w)) {
                                                                                                                                                                                                                                          - w.outputText(w.output,w.matchStart,w.matchStart+w.matchLength);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -} )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//============================================================================
                                                                                                                                                                                                                                          -// Extend "fetchTiddler" functionality to also recognize "part"s of tiddlers 
                                                                                                                                                                                                                                          -// as tiddlers.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var currentParent = null; // used for the "." parent (e.g. in the "tiddler" macro)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Return the match to the first <part ...> tag of the text that has the
                                                                                                                                                                                                                                          -// requrest partName.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// @return [may be null]
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var findPartStartTagByName = function(text, partName) {
                                                                                                                                                                                                                                          - var i = 0;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - while (true) {
                                                                                                                                                                                                                                          - var tagMatch = findNextPartEndOrStartTagMatch(text, i);
                                                                                                                                                                                                                                          - if (!tagMatch) return null;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - if (tagMatch[2]) {
                                                                                                                                                                                                                                          - // Is start tag
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - // Check the name
                                                                                                                                                                                                                                          - var arguments = parseStartTagParams(tagMatch[3]);
                                                                                                                                                                                                                                          - if (arguments && arguments.partName == partName) {
                                                                                                                                                                                                                                          - return tagMatch;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - i += tagMatch[0].length;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Return the part "partName" of the given parentTiddler as a "readOnly" Tiddler 
                                                                                                                                                                                                                                          -// object, using fullName as the Tiddler's title. 
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -// All remaining properties of the new Tiddler (tags etc.) are inherited from 
                                                                                                                                                                                                                                          -// the parentTiddler.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -// @return [may be null]
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -var getPart = function(parentTiddler, partName, fullName) {
                                                                                                                                                                                                                                          - var text = parentTiddler.text;
                                                                                                                                                                                                                                          - var startTag = findPartStartTagByName(text, partName);
                                                                                                                                                                                                                                          - if (!startTag) return null;
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - var endIndexOfStartTag = skipEmptyEndOfLine(text, startTag.index+startTag[0].length);
                                                                                                                                                                                                                                          - var indexOfEndTag = text.indexOf(partEndTagString, endIndexOfStartTag);
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - if (indexOfEndTag >= 0) {
                                                                                                                                                                                                                                          - var partTiddlerText = text.substring(endIndexOfStartTag,indexOfEndTag);
                                                                                                                                                                                                                                          - var partTiddler = new Tiddler();
                                                                                                                                                                                                                                          - partTiddler.set(
                                                                                                                                                                                                                                          - fullName,
                                                                                                                                                                                                                                          - partTiddlerText,
                                                                                                                                                                                                                                          - parentTiddler.modifier,
                                                                                                                                                                                                                                          - parentTiddler.modified,
                                                                                                                                                                                                                                          - parentTiddler.tags,
                                                                                                                                                                                                                                          - parentTiddler.created);
                                                                                                                                                                                                                                          - partTiddler.abegoIsPartTiddler = true;
                                                                                                                                                                                                                                          - return partTiddler;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - 
                                                                                                                                                                                                                                          - return null;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Hijack the store.fetchTiddler to recognize the "part" addresses.
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var oldFetchTiddler = store.fetchTiddler ;
                                                                                                                                                                                                                                          -store.fetchTiddler = function(title) {
                                                                                                                                                                                                                                          - var result = oldFetchTiddler.apply(this, arguments);
                                                                                                                                                                                                                                          - if (!result && title) {
                                                                                                                                                                                                                                          - var i = title.lastIndexOf('/');
                                                                                                                                                                                                                                          - if (i > 0) {
                                                                                                                                                                                                                                          - var parentName = title.substring(0, i);
                                                                                                                                                                                                                                          - var partName = title.substring(i+1);
                                                                                                                                                                                                                                          - var parent = (parentName == ".") 
                                                                                                                                                                                                                                          - ? currentParent 
                                                                                                                                                                                                                                          - : oldFetchTiddler.apply(this, [parentName]);
                                                                                                                                                                                                                                          - if (parent) {
                                                                                                                                                                                                                                          - return getPart(parent, partName, parent.title+"/"+partName);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - return result; 
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// The user must not edit a readOnly/partTiddler
                                                                                                                                                                                                                                          -//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.editTiddler.oldIsReadOnlyFunction = Tiddler.prototype.isReadOnly;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Tiddler.prototype.isReadOnly = function() {
                                                                                                                                                                                                                                          - // Tiddler.isReadOnly was introduced with TW 2.0.6.
                                                                                                                                                                                                                                          - // For older version we explicitly check the global readOnly flag
                                                                                                                                                                                                                                          - if (config.commands.editTiddler.oldIsReadOnlyFunction) {
                                                                                                                                                                                                                                          - if (config.commands.editTiddler.oldIsReadOnlyFunction.apply(this, arguments)) return true;
                                                                                                                                                                                                                                          - } else {
                                                                                                                                                                                                                                          - if (readOnly) return true;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - return this.abegoIsPartTiddler;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.commands.editTiddler.handler = function(event,src,title)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          - var t = store.getTiddler(title);
                                                                                                                                                                                                                                          - // Edit the tiddler if it either is not a tiddler (but a shadowTiddler)
                                                                                                                                                                                                                                          - // or the tiddler is not readOnly
                                                                                                                                                                                                                                          - if(!t || !t.abegoIsPartTiddler)
                                                                                                                                                                                                                                          - {
                                                                                                                                                                                                                                          - clearMessage();
                                                                                                                                                                                                                                          - story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE);
                                                                                                                                                                                                                                          - story.focusTiddler(title,"text");
                                                                                                                                                                                                                                          - return false;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// To allow the "./partName" syntax in macros we need to hijack 
                                                                                                                                                                                                                                          -// the invokeMacro to define the "currentParent" while it is running.
                                                                                                                                                                                                                                          -// 
                                                                                                                                                                                                                                          -var oldInvokeMacro = window.invokeMacro;
                                                                                                                                                                                                                                          -function myInvokeMacro(place,macro,params,wikifier,tiddler) {
                                                                                                                                                                                                                                          - var oldCurrentParent = currentParent;
                                                                                                                                                                                                                                          - if (tiddler) currentParent = tiddler;
                                                                                                                                                                                                                                          - try {
                                                                                                                                                                                                                                          - oldInvokeMacro.apply(this, arguments);
                                                                                                                                                                                                                                          - } finally {
                                                                                                                                                                                                                                          - currentParent = oldCurrentParent;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -window.invokeMacro = myInvokeMacro;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Scroll the anchor anchorName in the viewer of the given tiddler visible.
                                                                                                                                                                                                                                          -// When no tiddler is defined use the tiddler of the target given event is used.
                                                                                                                                                                                                                                          -window.scrollAnchorVisible = function(anchorName, tiddler, evt) {
                                                                                                                                                                                                                                          - var tiddlerElem = null;
                                                                                                                                                                                                                                          - if (tiddler) {
                                                                                                                                                                                                                                          - tiddlerElem = document.getElementById(story.idPrefix + tiddler);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (!tiddlerElem && evt) {
                                                                                                                                                                                                                                          - var target = resolveTarget(evt);
                                                                                                                                                                                                                                          - tiddlerElem = story.findContainingTiddler(target);
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - if (!tiddlerElem) return;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - var children = tiddlerElem.getElementsByTagName("a");
                                                                                                                                                                                                                                          - for (var i = 0; i < children.length; i++) {
                                                                                                                                                                                                                                          - var child = children[i];
                                                                                                                                                                                                                                          - var name = child.getAttribute("name");
                                                                                                                                                                                                                                          - if (name == anchorName) {
                                                                                                                                                                                                                                          - var y = findPosY(child);
                                                                                                                                                                                                                                          - window.scrollTo(0,y);
                                                                                                                                                                                                                                          - return;
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          - }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -} // of "install only once"
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Licence and Copyright
                                                                                                                                                                                                                                          -Copyright (c) abego Software ~GmbH, 2006 ([[www.abego-software.de|http://www.abego-software.de]])
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistribution and use in source and binary forms, with or without modification,
                                                                                                                                                                                                                                          -are permitted provided that the following conditions are met:
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistributions of source code must retain the above copyright notice, this
                                                                                                                                                                                                                                          -list of conditions and the following disclaimer.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Redistributions in binary form must reproduce the above copyright notice, this
                                                                                                                                                                                                                                          -list of conditions and the following disclaimer in the documentation and/or other
                                                                                                                                                                                                                                          -materials provided with the distribution.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Neither the name of abego Software nor the names of its contributors may be
                                                                                                                                                                                                                                          -used to endorse or promote products derived from this software without specific
                                                                                                                                                                                                                                          -prior written permission.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
                                                                                                                                                                                                                                          -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                                                                                                                                                                                                                                          -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
                                                                                                                                                                                                                                          -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
                                                                                                                                                                                                                                          -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
                                                                                                                                                                                                                                          -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
                                                                                                                                                                                                                                          -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                                                                                                                                                                                                                                          -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
                                                                                                                                                                                                                                          -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
                                                                                                                                                                                                                                          -DAMAGE.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A Placement represents a //relation:// it is always linked to a //Subject// (this being a [[Media Object|MObject]]) and has the meaning to //place// this Subject in some manner, either relatively to other Media Objects, or by some Constraint or simply absolute at (time,track). The latter case is especially important and represented by a special [[Sub-Interface|ExplicitPlacement]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Playlist is a sequence of individual Render Engine Processors able to render a segment of the timeline. So, together these Processors are able to render the whole timeline (or part of the timeline if only a part has to be rendered).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//Note, we have yet to specify how exactly the building and rendering will work together with the backend. There are several possibilities how to structure the Playlist//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          A data processing node within the Render Engine. Its key feature is the possibility to pull from it one (freely addressable) [[Frame]] of calculated data. Further, each ~ProcNode has the ability to be wired with other nodes and [[Parameter Providers|ParamProvider]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          a given Render Engine configuration is a list of Processors. Each Processor in turn contains a Graph of ProcNode.s to do the acutal data processing. In order to cary out any calculations, the Processor needs to be called with a StateProxy containing the state information for this RenderProcess
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|''Name:''|RSSReaderPlugin|
                                                                                                                                                                                                                                          -|''Description:''|This plugin provides a RSSReader for TiddlyWiki|
                                                                                                                                                                                                                                          -|''Version:''|1.1.1|
                                                                                                                                                                                                                                          -|''Date:''|Apr 21, 2007|
                                                                                                                                                                                                                                          -|''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin|
                                                                                                                                                                                                                                          -|''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc|
                                                                                                                                                                                                                                          -|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
                                                                                                                                                                                                                                          -|''Credit:''|BramChen for RssNewsMacro|
                                                                                                                                                                                                                                          -|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
                                                                                                                                                                                                                                          -|''~CoreVersion:''|2.2.0|
                                                                                                                                                                                                                                          -|''OptionalRequires:''|http://www.tiddlytools.com/#NestedSlidersPlugin|
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.RSSReaderPlugin = {
                                                                                                                                                                                                                                          -	major: 1, minor: 1, revision: 1,
                                                                                                                                                                                                                                          -	date: new Date("Apr 21, 2007"),
                                                                                                                                                                                                                                          -	source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin",
                                                                                                                                                                                                                                          -	author: "BidiX",
                                                                                                                                                                                                                                          -	coreVersion: '2.2.0'
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.rssReader = {
                                                                                                                                                                                                                                          -	dateFormat: "DDD, DD MMM YYYY",
                                                                                                                                                                                                                                          -	itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed  '@@'+itemStyle+itemText+'@@'
                                                                                                                                                                                                                                          -	msg:{
                                                                                                                                                                                                                                          -		permissionDenied: "Permission to read preferences was denied.",
                                                                                                                                                                                                                                          -		noRSSFeed: "No RSS Feed at this address %0",
                                                                                                                                                                                                                                          -		urlNotAccessible: " Access to %0 is not allowed"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	cache: [], 	// url => XMLHttpRequest.responseXML
                                                                                                                                                                                                                                          -	desc: "noDesc",
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
                                                                                                                                                                                                                                          -		var desc = params[0];
                                                                                                                                                                                                                                          -		var feedURL = params[1];
                                                                                                                                                                                                                                          -		var toFilter = (params[2] ? true : false);
                                                                                                                                                                                                                                          -		var filterString = (toFilter?(params[2].substr(0,1) == ' '? tiddler.title:params[2]):'');
                                                                                                                                                                                                                                          -		var place = createTiddlyElement(place, "div", "RSSReader");
                                                                                                                                                                                                                                          -		wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\n",place);
                                                                                                                                                                                                                                          -		if (this.cache[feedURL]) {
                                                                                                                                                                                                                                          -			this.displayRssFeed(this.cache[feedURL], feedURL, place, desc, toFilter, filterString);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			var r = loadRemoteFile(feedURL,config.macros.rssReader.processResponse, [place, desc, toFilter, filterString]);
                                                                                                                                                                                                                                          -			if (typeof r == "string")
                                                                                                                                                                                                                                          -				displayMessage(r);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// callback for loadRemoteFile 
                                                                                                                                                                                                                                          -	// params : [place, desc, toFilter, filterString]
                                                                                                                                                                                                                                          -	processResponse: function(status, params, responseText, url, xhr) { // feedURL, place, desc, toFilter, filterString) {	
                                                                                                                                                                                                                                          -		if (window.netscape){
                                                                                                                                                                                                                                          -			try {
                                                                                                                                                                                                                                          -				if (document.location.protocol.indexOf("http") == -1) {
                                                                                                                                                                                                                                          -					netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			catch (e) { displayMessage(e.description?e.description:e.toString()); }
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (xhr.status == httpStatus.NotFound)
                                                                                                                                                                                                                                          -		 {
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -			return;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (!status)
                                                                                                                                                                                                                                          -		 {
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -			return;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if (xhr.responseXML) {
                                                                                                                                                                                                                                          -			// response is interpreted as XML
                                                                                                                                                                                                                                          -			config.macros.rssReader.cache[url] = xhr.responseXML;
                                                                                                                                                                                                                                          -			config.macros.rssReader.displayRssFeed(xhr.responseXML, params[0], url, params[1], params[2], params[3]);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			if (responseText.substr(0,5) == "<?xml") {
                                                                                                                                                                                                                                          -				// response exists but not return as XML -> try to parse it 
                                                                                                                                                                                                                                          -				var dom = (new DOMParser()).parseFromString(responseText, "text/xml"); 
                                                                                                                                                                                                                                          -				if (dom) {
                                                                                                                                                                                                                                          -					// parsing successful so use it
                                                                                                                                                                                                                                          -					config.macros.rssReader.cache[url] = dom;
                                                                                                                                                                                                                                          -					config.macros.rssReader.displayRssFeed(dom, params[0], url, params[1], params[2], params[3]);
                                                                                                                                                                                                                                          -					return;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			// no XML display as html 
                                                                                                                                                                                                                                          -			wikify("<html>" + responseText + "</html>", params[0]);
                                                                                                                                                                                                                                          -			displayMessage(config.macros.rssReader.msg.noRSSFeed.format([url]));
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// explore down the DOM tree
                                                                                                                                                                                                                                          -	displayRssFeed: function(xml, place, feedURL, desc, toFilter, filterString){
                                                                                                                                                                                                                                          -		// Channel
                                                                                                                                                                                                                                          -		var chanelNode = xml.getElementsByTagName('channel').item(0);
                                                                                                                                                                                                                                          -		var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null);
                                                                                                                                                                                                                                          -		var chanelTitle = "";
                                                                                                                                                                                                                                          -		if ((chanelTitleElement) && (chanelTitleElement.firstChild)) 
                                                                                                                                                                                                                                          -			chanelTitle = chanelTitleElement.firstChild.nodeValue;
                                                                                                                                                                                                                                          -		var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null);
                                                                                                                                                                                                                                          -		var chanelLink = "";
                                                                                                                                                                                                                                          -		if (chanelLinkElement) 
                                                                                                                                                                                                                                          -			chanelLink = chanelLinkElement.firstChild.nodeValue;
                                                                                                                                                                                                                                          -		var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\n";
                                                                                                                                                                                                                                          -		var title = createTiddlyElement(place,"div",null,"ChanelTitle",null);
                                                                                                                                                                                                                                          -		wikify(titleTxt,title);
                                                                                                                                                                                                                                          -		// ItemList
                                                                                                                                                                                                                                          -		var itemList = xml.getElementsByTagName('item');
                                                                                                                                                                                                                                          -		var article = createTiddlyElement(place,"ul",null,null,null);
                                                                                                                                                                                                                                          -		var lastDate;
                                                                                                                                                                                                                                          -		var re;
                                                                                                                                                                                                                                          -		if (toFilter) 
                                                                                                                                                                                                                                          -			re = new RegExp(filterString.escapeRegExp());
                                                                                                                                                                                                                                          -		for (var i=0; i<itemList.length; i++){
                                                                                                                                                                                                                                          -			var titleElm = itemList[i].getElementsByTagName('title').item(0);
                                                                                                                                                                                                                                          -			var titleText = (titleElm ? titleElm.firstChild.nodeValue : '');
                                                                                                                                                                                                                                          -			if (toFilter && ! titleText.match(re)) {
                                                                                                                                                                                                                                          -				continue;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var descText = '';
                                                                                                                                                                                                                                          -			descElem = itemList[i].getElementsByTagName('description').item(0);
                                                                                                                                                                                                                                          -			if (descElem){
                                                                                                                                                                                                                                          -				try{
                                                                                                                                                                                                                                          -					for (var ii=0; ii<descElem.childNodes.length; ii++) {
                                                                                                                                                                                                                                          -						descText += descElem.childNodes[ii].nodeValue;
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				catch(e){}
                                                                                                                                                                                                                                          -				descText = descText.replace(/<br \/>/g,'\n');
                                                                                                                                                                                                                                          -				if (desc == "asHtml")
                                                                                                                                                                                                                                          -					descText = "<html>"+descText+"</html>";
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var linkElm = itemList[i].getElementsByTagName("link").item(0);
                                                                                                                                                                                                                                          -			var linkURL = linkElm.firstChild.nodeValue;
                                                                                                                                                                                                                                          -			var pubElm = itemList[i].getElementsByTagName('pubDate').item(0);
                                                                                                                                                                                                                                          -			var pubDate;
                                                                                                                                                                                                                                          -			if (!pubElm) {
                                                                                                                                                                                                                                          -				pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us
                                                                                                                                                                                                                                          -				if (pubElm) {
                                                                                                                                                                                                                                          -					pubDate = pubElm.firstChild.nodeValue;
                                                                                                                                                                                                                                          -					pubDate = this.formatDateString(this.dateFormat, pubDate);
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -					else {
                                                                                                                                                                                                                                          -						pubDate = '0';
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			else {
                                                                                                                                                                                                                                          -				pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0);
                                                                                                                                                                                                                                          -				pubDate = this.formatDate(this.dateFormat, pubDate);
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			titleText = titleText.replace(/\[|\]/g,'');
                                                                                                                                                                                                                                          -			var rssText = '*'+'[[' + titleText + '|' + linkURL + ']]' + '' ;
                                                                                                                                                                                                                                          -			if ((desc != "noDesc") && descText){
                                                                                                                                                                                                                                          -				rssText = rssText.replace(/\n/g,' ');
                                                                                                                                                                                                                                          -				descText = '@@'+this.itemStyle+descText + '@@\n';				
                                                                                                                                                                                                                                          -				if (version.extensions.nestedSliders){
                                                                                                                                                                                                                                          -					descText = '+++[...]' + descText + '===';
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				rssText = rssText + descText;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var story;
                                                                                                                                                                                                                                          -			if ((lastDate != pubDate) && ( pubDate != '0')) {
                                                                                                                                                                                                                                          -				story = createTiddlyElement(article,"li",null,"RSSItem",pubDate);
                                                                                                                                                                                                                                          -				lastDate = pubDate;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else {
                                                                                                                                                                                                                                          -				lastDate = pubDate;
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			story = createTiddlyElement(article,"div",null,"RSSItem",null);
                                                                                                                                                                                                                                          -			wikify(rssText,story);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	formatDate: function(template, date){
                                                                                                                                                                                                                                          -		var dateString = new Date(date);
                                                                                                                                                                                                                                          -		// template = template.replace(/hh|mm|ss/g,'');
                                                                                                                                                                                                                                          -		return dateString.formatString(template);
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -	formatDateString: function(template, date){
                                                                                                                                                                                                                                          -		var dateString = new Date(date.substr(0,4), date.substr(5,2) - 1, date.substr(8,2)
                                                                                                                                                                                                                                          -			);
                                                                                                                                                                                                                                          -		return dateString.formatString(template);
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -config.macros.rssFeedUpdate = {
                                                                                                                                                                                                                                          -	label: "Update",
                                                                                                                                                                                                                                          -	prompt: "Clear the cache and redisplay this RssFeed",
                                                                                                                                                                                                                                          -	handler: function(place,macroName,params) {
                                                                                                                                                                                                                                          -		var feedURL = params[0];
                                                                                                                                                                                                                                          -		var tiddlerTitle = params[1];
                                                                                                                                                                                                                                          -		createTiddlyButton(place, this.label, this.prompt, 
                                                                                                                                                                                                                                          -			function () {
                                                                                                                                                                                                                                          -				if (config.macros.rssReader.cache[feedURL]) {
                                                                                                                                                                                                                                          -					config.macros.rssReader.cache[feedURL] = null; 
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			story.refreshTiddler(tiddlerTitle,null, true);
                                                                                                                                                                                                                                          -		return false;});
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -};
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The Render Engine is the part of the application doing the actual video calculations. Its operations are guided by the Objects and Parameters edited by the user in [[the EDL|EDL]] and it retrieves the raw audio and video data from the [[Data backend|backend.html]]. Because the inner workings of the Render Engine are closely related to the structures used in the EDL, this design covers [[this aspect|MObjects]] as well.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -The key idea of Ichthyo's Design-draft is to use the [[Builder Pattern|http://en.wikipedia.org/wiki/Builder_pattern]] for the Render Engine, thus separating completely the //building// of the Render Pipeline from //running,// i.e. doing the actual Render. The Nodes in this Pipeline should process Video/Audio and do nothing else. No more decisions, tests and conditional operations when running the Pipeline. Move all of this out into the configuration of the pipeline, which is done by the Builder.
                                                                                                                                                                                                                                          -([[more on the Design Goals|DesignGoals]])
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Why doesn't the current Design succeed with this?
                                                                                                                                                                                                                                          -The design of Cinelerra 2 basically follows this design, but __fails because of two reasons__
                                                                                                                                                                                                                                          -# too much differentiation is put into the class hierarchy instead of configuring Instances differently.<br>This causes overly heavy use of virtual functions and -- in order to ameliorate this -- falling back to hard wired branching
                                                                                                                                                                                                                                          -# far too much back-coupling to the internals of the [[EDL]], forcing a overly rigid structure on the latter
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Try to learn from this
                                                                                                                                                                                                                                          -* build up an [[Node Abstraction|ProcNode]] powerful enough to express //all necessary Operations// without the need to recure on the actual object type
                                                                                                                                                                                                                                          -* need to redesign the internals of the EDL in a far more open manner. See MObjects
                                                                                                                                                                                                                                          -* strive at a StrongSeparation between EDL and Render Engine
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!see also
                                                                                                                                                                                                                                          -&rarr; [[Overview]] of Subsystems and Components, and DesignGoals
                                                                                                                                                                                                                                          -&rarr; [[An Introduction|WalkThrough]] discussing the key features
                                                                                                                                                                                                                                          -&rarr; [[Overview Render Engine|OverviewRenderEngine]]
                                                                                                                                                                                                                                          -&rarr; BuildProcess
                                                                                                                                                                                                                                          -&rarr; RenderProcess
                                                                                                                                                                                                                                          -&rarr; [[Two Examples|Examples]] (Object diagrams) 
                                                                                                                                                                                                                                          -&rarr; how [[Automation]] works {{red{to be defined in more detail}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The Render Engine only carries out the low-level and performance critical tasks. All configuration and decision concerns are to be handled by [[Builder]] and [[Controller]]. While the actual connection of the Render Nodes can be highly complex, basically each Segment of the Timeline with uniform characteristics is handled by one Processor, which is a graph of [[Processing Nodes|ProcNode]] discharging into a ExitNode. The Render Engine Components as such are //stateless// themselves; for the actual calculations they are combined with a StateProxy object generated by and connected internally to the [[Controller]], while at the same time holding the Data Buffers (Frames) for the actual calculations.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -[img[Entities comprising the Render Engine|uml/fig128389.png]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{TODO: describe the Render Process.}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - * see also the [[Entities involved in Rendering|RenderEntities]]
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <<search>><<closeAll>><<permaview>><<newTiddler>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          some aspects of Cinelerra-3 design
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Draft
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -|Name|SplashScreenPlugin|
                                                                                                                                                                                                                                          -|Created by|SaqImtiaz|
                                                                                                                                                                                                                                          -|Location|http://tw.lewcid.org/#SplashScreenPlugin|
                                                                                                                                                                                                                                          -|Version|0.21 |
                                                                                                                                                                                                                                          -|Requires|~TW2.08+|
                                                                                                                                                                                                                                          -!Description:
                                                                                                                                                                                                                                          -Provides a simple splash screen that is visible while the TW is loading.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Installation
                                                                                                                                                                                                                                          -Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Customizing
                                                                                                                                                                                                                                          -Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!History
                                                                                                                                                                                                                                          -* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
                                                                                                                                                                                                                                          -* 26-06-06 : version 0.2, first release
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var old_lewcid_splash_restart=restart;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -restart = function()
                                                                                                                                                                                                                                          -{   if (document.getElementById("SplashScreen"))
                                                                                                                                                                                                                                          -        document.getElementById("SplashScreen").style.display = "none";
                                                                                                                                                                                                                                          -      if (document.getElementById("contentWrapper"))
                                                                                                                                                                                                                                          -        document.getElementById("contentWrapper").style.display = "block";
                                                                                                                                                                                                                                          -    
                                                                                                                                                                                                                                          -    old_lewcid_splash_restart();
                                                                                                                                                                                                                                          -   
                                                                                                                                                                                                                                          -    if (splashScreenInstall)
                                                                                                                                                                                                                                          -       {if(config.options.chkAutoSave)
                                                                                                                                                                                                                                          -			{saveChanges();}
                                                                                                                                                                                                                                          -        displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
                                                                                                                                                                                                                                          -        }
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -var oldText = store.getTiddlerText("MarkupPreHead");
                                                                                                                                                                                                                                          -if (oldText.indexOf("SplashScreen")==-1)
                                                                                                                                                                                                                                          -   {var siteTitle = store.getTiddlerText("SiteTitle");
                                                                                                                                                                                                                                          -   var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
                                                                                                                                                                                                                                          -   if (! store.tiddlerExists("MarkupPreHead"))
                                                                                                                                                                                                                                          -       {var myTiddler = store.createTiddler("MarkupPreHead");}
                                                                                                                                                                                                                                          -   else
                                                                                                                                                                                                                                          -      {var myTiddler = store.getTiddler("MarkupPreHead");}
                                                                                                                                                                                                                                          -      myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
                                                                                                                                                                                                                                          -      store.setDirty(true);
                                                                                                                                                                                                                                          -      var splashScreenInstall = true;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          An Object representing a //Render Process// and containing associated state information.
                                                                                                                                                                                                                                          -* it is created in the Controller subsystem while initiating the BuildProcess
                                                                                                                                                                                                                                          -* it is passed on to the generated Render Engine, which in turn passes it down to the individual Processors
                                                                                                                                                                                                                                          -* moreover, it contains methods to communicate with other state relevant parts of the system, thereby shielding the rendering code from any complexities of Thread communication if necessary. (thus the name Proxy)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          This design lays great emphasis on separating all those components and subsystems, which are considered not to have a //natural link// of their underlying concepts. This often means putting some additional constraints on the implementation, so basically we need to rely on the actual implementation to live up to this goal. In many cases it may seem to be more natural to "just access the necessary information". But on the long run this coupling of not-directly related components makes the whole codebase monolithic and introduces lots of //accidental complexity.//
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Instead, we should try to just connect the various subsystems via Interfaces and &mdash; instead of just using some information, rather use some service to be located on an Interface to query other components for this information. The best approach of course is always to avoid the dependency altogether.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!Examples
                                                                                                                                                                                                                                          -* There is a separation between the __high level [[EDL]] view__ and the [[Fixture]]: the latter only accesses the MObjects and the Placement Interfaces.
                                                                                                                                                                                                                                          -* same holds true for the Builder: it just uses the same Interfaces. The actual coupling is done rather //by type//, i.e. the Builder relies on several types of MObjects to exist and treats them via overloaded methods. He doesn't rely on a actual object structure layout in the EDL besides the requirement of having a [[Playlist]]
                                                                                                                                                                                                                                          -* the Builder itself is a separation layer. Neither do the Objects in the EDL access directly [[Render Nodes|ProcNode]], nor do the latter call back into the EDL. Both connections seem to be necessary at first sight, but both can be avoided by using the Builder Pattern
                                                                                                                                                                                                                                          -* another separation exists between the Render Engine and the individual Nodes: The Render Engine doesn't need to know the details of the data types processed by the Nodes. It relies on the Builder having done the correct connections and just pulls out the calculated results. If there needs to be additional control information to be passed, then I would prefer to do a direct wiring of separate control connections to specialized components, which in turn could instruct the controller to change the rendering process.
                                                                                                                                                                                                                                          -* to shield the rendering code of all complexities of thread communication and synchronization, we use the StateProxy
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /*{{{*/
                                                                                                                                                                                                                                          -/* a contrasting background so I can see where one tiddler ends and the other begins */
                                                                                                                                                                                                                                          -body {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::TertiaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* sexy colours and font for the header */
                                                                                                                                                                                                                                          -.headerForeground {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerShadow, .headerShadow a {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerForeground, .headerShadow {
                                                                                                                                                                                                                                          -	padding: 1em 1em 0;
                                                                                                                                                                                                                                          -	font-family: 'Trebuchet MS' sans-serif;
                                                                                                                                                                                                                                          -	font-weight:bold;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerForeground .siteSubtitle {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.headerShadow .siteSubtitle {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make shadow go and down right instead of up and left */
                                                                                                                                                                                                                                          -.headerShadow {
                                                                                                                                                                                                                                          -	left: 2px;
                                                                                                                                                                                                                                          -	top: 3px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* prefer monospace for editing */
                                                                                                                                                                                                                                          -.editor textarea {
                                                                                                                                                                                                                                          -	font-family: 'Consolas' monospace;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* sexy tiddler titles */
                                                                                                                                                                                                                                          -.title {
                                                                                                                                                                                                                                          -	font-size: 250%;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -	font-family: 'Trebuchet MS' sans-serif;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* more subtle tiddler subtitle */
                                                                                                                                                                                                                                          -.subtitle {
                                                                                                                                                                                                                                          -	padding:0px;
                                                                                                                                                                                                                                          -	margin:0px;
                                                                                                                                                                                                                                          -	padding-left:0.5em;
                                                                                                                                                                                                                                          -	font-size: 90%;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::TertiaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.subtitle .tiddlyLink {
                                                                                                                                                                                                                                          -	color: [[ColorPalette::TertiaryMid]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* a little bit of extra whitespace */
                                                                                                                                                                                                                                          -.viewer {
                                                                                                                                                                                                                                          -	padding-bottom:3px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* don't want any background color for headings */
                                                                                                                                                                                                                                          -h1,h2,h3,h4,h5,h6 {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::Background]];
                                                                                                                                                                                                                                          -	color: [[ColorPalette::Foreground]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* give tiddlers 3d style border and explicit background */
                                                                                                                                                                                                                                          -.tiddler {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::Background]];
                                                                                                                                                                                                                                          -	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
                                                                                                                                                                                                                                          -	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
                                                                                                                                                                                                                                          -	margin-bottom: 1em;
                                                                                                                                                                                                                                          -	padding-bottom: 2em;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make options slider look nicer */
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel {
                                                                                                                                                                                                                                          -	border:solid 1px [[ColorPalette::PrimaryLight]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* the borders look wrong with the body background */
                                                                                                                                                                                                                                          -#sidebar .button {
                                                                                                                                                                                                                                          -	border-style: none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* displays the list of a tiddler's tags horizontally. used in ViewTemplate */
                                                                                                                                                                                                                                          -.tagglyTagged li.listTitle {
                                                                                                                                                                                                                                          -	display:none
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tagglyTagged li {
                                                                                                                                                                                                                                          -	display: inline; font-size:90%;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -.tagglyTagged ul {
                                                                                                                                                                                                                                          -	margin:0px; padding:0px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* this means you can put line breaks in SidebarOptions for readability */
                                                                                                                                                                                                                                          -#sidebarOptions br {
                                                                                                                                                                                                                                          -	display:none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/* undo the above in OptionsPanel */
                                                                                                                                                                                                                                          -#sidebarOptions .sliderPanel br {
                                                                                                                                                                                                                                          -	display:inline;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* horizontal main menu stuff */
                                                                                                                                                                                                                                          -#displayArea {
                                                                                                                                                                                                                                          -	margin: 1em 15.7em 0em 1em; /* use the freed up space */
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu br {
                                                                                                                                                                                                                                          -	display: none;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::PrimaryMid]];
                                                                                                                                                                                                                                          -	color:[[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu {
                                                                                                                                                                                                                                          -	padding:2px;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
                                                                                                                                                                                                                                          -	margin-left: 0.5em;
                                                                                                                                                                                                                                          -	margin-right: 0.5em;
                                                                                                                                                                                                                                          -	padding-left: 3px;
                                                                                                                                                                                                                                          -	padding-right: 3px;
                                                                                                                                                                                                                                          -	color: [[ColorPalette::PrimaryPale]];
                                                                                                                                                                                                                                          -	font-size: 115%;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -#topMenu .button:hover, #topMenu .tiddlyLink:hover {
                                                                                                                                                                                                                                          -	background: [[ColorPalette::PrimaryDark]];
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* make it print a little cleaner */
                                                                                                                                                                                                                                          -@media print {
                                                                                                                                                                                                                                          -	#topMenu {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	/* not sure if we need all the importants */
                                                                                                                                                                                                                                          -	.tiddler {
                                                                                                                                                                                                                                          -		border-style: none ! important;
                                                                                                                                                                                                                                          -		margin:0px ! important;
                                                                                                                                                                                                                                          -		padding:0px ! important;
                                                                                                                                                                                                                                          -		padding-bottom:2em ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.tagglyTagging .button, .tagglyTagging .hidebutton {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.headerShadow {
                                                                                                                                                                                                                                          -		visibility: hidden ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.tagglyTagged .quickopentag, .tagged .quickopentag {
                                                                                                                                                                                                                                          -		border-style: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -	.quickopentag a.button, .miniTag {
                                                                                                                                                                                                                                          -		display: none ! important;
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -/* *** Additions by Ichthyostega *** */
                                                                                                                                                                                                                                          -.red {
                                                                                                                                                                                                                                          -	background: #ffcc99;
                                                                                                                                                                                                                                          -	color: #ff2210;
                                                                                                                                                                                                                                          -	padding: 0px 0.8ex;
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -/*}}}*/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <<timeline better:true maxDays:14 maxEntries:20>>
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -|Name|TaskMacroPlugin|
                                                                                                                                                                                                                                          -|Author|<<extension TaskMacroPlugin author>>|
                                                                                                                                                                                                                                          -|Location|<<extension TaskMacroPlugin source>>|
                                                                                                                                                                                                                                          -|License|<<extension TaskMacroPlugin license>>|
                                                                                                                                                                                                                                          -|Version|<<extension TaskMacroPlugin versionAndDate>>|
                                                                                                                                                                                                                                          -!Description
                                                                                                                                                                                                                                          -A set of macros to help you keep track of time estimates for tasks.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -Macros defined:
                                                                                                                                                                                                                                          -* {{{task}}}: Displays a task description and makes it easy to estimate and track the time spent on the task.
                                                                                                                                                                                                                                          -* {{{taskadder}}}: Displays text entry field to simplify the adding of tasks.
                                                                                                                                                                                                                                          -* {{{tasksum}}}: Displays a summary of tasks sandwiched between two calls to this macro.
                                                                                                                                                                                                                                          -* {{{extension}}}: A simple little macro that displays information about a TiddlyWiki plugin, and that will hopefully someday migrate to the TW core in some form.
                                                                                                                                                                                                                                          -Core overrides:
                                                                                                                                                                                                                                          -* {{{wikify}}}: when wikifying a tiddler's complete text, adds refresh information so the tiddler will be refreshed when it changes
                                                                                                                                                                                                                                          -* {{{config.refreshers}}}: have the built-in refreshers return true; also, add a new refresher ("fullContent") that redisplays a full tiddler whenever it or any nested tiddlers it shows are changed
                                                                                                                                                                                                                                          -* {{{refreshElements}}}: now checks the return value from the refresher and only short-circuits the recursion if the refresher returns true
                                                                                                                                                                                                                                          -!Plugin Information
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.TaskMacroPlugin = {
                                                                                                                                                                                                                                          -	major: 1, minor: 1, revision: 0,
                                                                                                                                                                                                                                          -	date: new Date(2006,5-1,13),
                                                                                                                                                                                                                                          -	author: "LukeBlanshard",
                                                                                                                                                                                                                                          -	source: "http://labwiki.sourceforge.net/#TaskMacroPlugin",
                                                                                                                                                                                                                                          -	license: "http://labwiki.sourceforge.net/#CopyrightAndLicense"
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -A little macro for pulling out extension info.  Use like {{{<<extension PluginName datum>>}}}, where {{{PluginName}}} is the name you used for {{{version.extensions}}} and {{{datum}}} is either {{{versionAndDate}}} or a property of the extension description object, such as {{{source}}}.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.extension = {
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler ) {
                                                                                                                                                                                                                                          -		var info  = version.extensions[params[0]]
                                                                                                                                                                                                                                          -		var datum = params[1]
                                                                                                                                                                                                                                          -		switch (params[1]) {
                                                                                                                                                                                                                                          -		case 'versionAndDate':
                                                                                                                                                                                                                                          -			createTiddlyElement( place, "span", null, null,
                                                                                                                                                                                                                                          -				info.major+'.'+info.minor+'.'+info.revision+', '+info.date.formatString('DD MMM YYYY') )
                                                                                                                                                                                                                                          -			break;
                                                                                                                                                                                                                                          -		default:
                                                                                                                                                                                                                                          -			wikify( info[datum], place )
                                                                                                                                                                                                                                          -			break;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Core Overrides
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -window.wikify_orig_TaskMacroPlugin = window.wikify
                                                                                                                                                                                                                                          -window.wikify = function(source,output,highlightRegExp,tiddler)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	if ( tiddler && tiddler.text === source )
                                                                                                                                                                                                                                          -		addDisplayDependency( output, tiddler.title )
                                                                                                                                                                                                                                          -	wikify_orig_TaskMacroPlugin.apply( this, arguments )
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -config.refreshers_orig_TaskMacroPlugin = config.refreshers
                                                                                                                                                                                                                                          -config.refreshers = {
                                                                                                                                                                                                                                          -	link: function() {
                                                                                                                                                                                                                                          -		config.refreshers_orig_TaskMacroPlugin.link.apply( this, arguments )
                                                                                                                                                                                                                                          -		return true
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	content: function() {
                                                                                                                                                                                                                                          -		config.refreshers_orig_TaskMacroPlugin.content.apply( this, arguments )
                                                                                                                                                                                                                                          -		return true
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -	fullContent: function( e, changeList ) {
                                                                                                                                                                                                                                          -		var tiddlers = e.refreshTiddlers
                                                                                                                                                                                                                                          -		if ( changeList == null || tiddlers == null )
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		for ( var i=0; i < tiddlers.length; ++i )
                                                                                                                                                                                                                                          -			if ( changeList.find(tiddlers[i]) != null ) {
                                                                                                                                                                                                                                          -				var title = tiddlers[0]
                                                                                                                                                                                                                                          -				story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -				return true
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		return false
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -function refreshElements(root,changeList)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var nodes = root.childNodes;
                                                                                                                                                                                                                                          -	for(var c=0; c<nodes.length; c++)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var e = nodes[c],type;
                                                                                                                                                                                                                                          -		if(e.getAttribute)
                                                                                                                                                                                                                                          -			type = e.getAttribute("refresh");
                                                                                                                                                                                                                                          -		else
                                                                                                                                                                                                                                          -			type = null;
                                                                                                                                                                                                                                          -		var refresher = config.refreshers[type];
                                                                                                                                                                                                                                          -		if ( ! refresher || ! refresher(e, changeList) )
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			if(e.hasChildNodes())
                                                                                                                                                                                                                                          -				refreshElements(e,changeList);
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Global Functions
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -// Add the tiddler whose title is given to the list of tiddlers whose
                                                                                                                                                                                                                                          -// changing will cause a refresh of the tiddler containing the given element.
                                                                                                                                                                                                                                          -function addDisplayDependency( element, title ) {
                                                                                                                                                                                                                                          -	while ( element && element.getAttribute ) {
                                                                                                                                                                                                                                          -		var idAttr = element.getAttribute("id"), tiddlerAttr = element.getAttribute("tiddler")
                                                                                                                                                                                                                                          -		if ( idAttr && tiddlerAttr && idAttr == story.idPrefix+tiddlerAttr ) {
                                                                                                                                                                                                                                          -			var list = element.refreshTiddlers
                                                                                                                                                                                                                                          -			if ( list == null ) {
                                                                                                                                                                                                                                          -				list = [tiddlerAttr]
                                                                                                                                                                                                                                          -				element.refreshTiddlers = list
                                                                                                                                                                                                                                          -				element.setAttribute( "refresh", "fullContent" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			list.pushUnique( title )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		element = element.parentNode
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Lifted from Story.prototype.focusTiddler: just return the field instead of focusing it.
                                                                                                                                                                                                                                          -Story.prototype.findEditField = function( title, field )
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var tiddler = document.getElementById(this.idPrefix + title);
                                                                                                                                                                                                                                          -	if(tiddler != null)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var children = tiddler.getElementsByTagName("*")
                                                                                                                                                                                                                                          -		var e = null;
                                                                                                                                                                                                                                          -		for (var t=0; t<children.length; t++)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			var c = children[t];
                                                                                                                                                                                                                                          -			if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")
                                                                                                                                                                                                                                          -				{
                                                                                                                                                                                                                                          -				if(!e)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				if(c.getAttribute("edit") == field)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		return e
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Wraps the given event function in another function that handles the
                                                                                                                                                                                                                                          -// event in a standard way.
                                                                                                                                                                                                                                          -function wrapEventHandler( otherHandler ) {
                                                                                                                                                                                                                                          -	return function(e) {
                                                                                                                                                                                                                                          -		if (!e) var e = window.event
                                                                                                                                                                                                                                          -		e.cancelBubble = true
                                                                                                                                                                                                                                          -		if (e.stopPropagation) e.stopPropagation()
                                                                                                                                                                                                                                          -		return otherHandler( e )
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Task Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<task orig cur spent>>description}}}
                                                                                                                                                                                                                                          -All of orig, cur, and spent are optional numbers of hours.  The description goes through the end of the line, and is wikified.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.task = {
                                                                                                                                                                                                                                          -	NASCENT:	0, // Task not yet estimated
                                                                                                                                                                                                                                          -	LIVE:		1, // Estimated but with time remaining
                                                                                                                                                                                                                                          -	DONE:		2, // Completed: no time remaining
                                                                                                                                                                                                                                          -	bullets:	["\u25cb", // nascent (open circle)
                                                                                                                                                                                                                                          -			 "\u25ba", // live (right arrow)
                                                                                                                                                                                                                                          -			 "\u25a0"],// done (black square)
                                                                                                                                                                                                                                          -	styles:		["nascent", "live", "done"],
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		spentTooBig:	"Spent time %0 can't exceed current estimate %1",
                                                                                                                                                                                                                                          -		noNegative:	"Times may not be negative numbers",
                                                                                                                                                                                                                                          -		statusTips:	["Not yet estimated", "To do", "Done"], // Array indexed by state (NASCENT/LIVE/DONE)
                                                                                                                                                                                                                                          -		descClickTip:	" -- Double-click to edit task description",
                                                                                                                                                                                                                                          -		statusClickTip:	" -- Double-click to mark task complete",
                                                                                                                                                                                                                                          -		statusDoneTip:	" -- Double-click to adjust the time spent, to revive the task",
                                                                                                                                                                                                                                          -		origTip:	"Original estimate in hours",
                                                                                                                                                                                                                                          -		curTip:		"Current estimate in hours",
                                                                                                                                                                                                                                          -		curTip2:	"Estimate in hours", // For when orig == cur
                                                                                                                                                                                                                                          -		clickTip:	" -- Click to adjust",
                                                                                                                                                                                                                                          -		spentTip:	"Hours spent on this task",
                                                                                                                                                                                                                                          -		remTip:		"Hours remaining",
                                                                                                                                                                                                                                          -		curPrompt:	"Estimate this task in hours, or adjust the current estimate by starting with + or -.\n\nYou may optionally also set or adjust the time spent by putting a second number after the first.",
                                                                                                                                                                                                                                          -		spentPrompt:	"Enter the number of hours you've spent on this task, or adjust the current number by starting with + or -.\n\nYou may optionally also set or adjust the time remaining by putting a second number after the first.",
                                                                                                                                                                                                                                          -		remPrompt:	"Enter the number of hours it will take to finish this task, or adjust the current estimate by starting with + or -.\n\nYou may optionally also set or adjust the time spent by putting a second number after the first.",
                                                                                                                                                                                                                                          -		numbersOnly:	"Enter numbers only, please",
                                                                                                                                                                                                                                          -		notCurrent:	"The tiddler has been modified since it was displayed, please redisplay it before doing this."
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var start = wikifier.matchStart, end = wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var origStr	= params.length > 0? params.shift() : "?"
                                                                                                                                                                                                                                          -		var orig	= +origStr // as a number
                                                                                                                                                                                                                                          -		var cur		= params.length > 1? +params.shift() : orig
                                                                                                                                                                                                                                          -		var spent	= params.length > 0? +params.shift() : 0
                                                                                                                                                                                                                                          -		if ( spent > cur )
                                                                                                                                                                                                                                          -			throw Error( this.lingo.spentTooBig.format([spent, cur]) )
                                                                                                                                                                                                                                          -		if ( orig < 0 || cur < 0 || spent < 0 )
                                                                                                                                                                                                                                          -			throw Error( this.lingo.noNegative )
                                                                                                                                                                                                                                          -		var rem		= cur - spent
                                                                                                                                                                                                                                          -		var state	= isNaN(orig+rem)? this.NASCENT : rem > 0? this.LIVE : this.DONE
                                                                                                                                                                                                                                          -		var table	= createTiddlyElement( place, "table", null, "task "+this.styles[state] )
                                                                                                                                                                                                                                          -		var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -		var row		= createTiddlyElement( tbody, "tr" )
                                                                                                                                                                                                                                          -		var statusCell	= createTiddlyElement( row,   "td", null, "status", this.bullets[state] )
                                                                                                                                                                                                                                          -		var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var origCell	= state==this.NASCENT || orig==cur? null
                                                                                                                                                                                                                                          -				: createTiddlyElement( row, "td", null, "numeric original" )
                                                                                                                                                                                                                                          -		var curCell	= createTiddlyElement( row, "td", null, "numeric current" )
                                                                                                                                                                                                                                          -		var spentCell	= createTiddlyElement( row, "td", null, "numeric spent" )
                                                                                                                                                                                                                                          -		var remCell	= createTiddlyElement( row, "td", null, "numeric remaining" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var sums = config.macros.tasksum.tasksums
                                                                                                                                                                                                                                          -		if ( sums && sums.length ) {
                                                                                                                                                                                                                                          -			var summary = [(state == this.NASCENT? NaN : orig), cur, spent]
                                                                                                                                                                                                                                          -			summary.owner = tiddler
                                                                                                                                                                                                                                          -			sums[0].push( summary )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// The description goes to the end of the line
                                                                                                                                                                                                                                          -		wikifier.subWikify( descCell, "$\\n?" )
                                                                                                                                                                                                                                          -		var descEnd = wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		statusCell.setAttribute( "title", this.lingo.statusTips[state] )
                                                                                                                                                                                                                                          -		descCell.setAttribute(   "title", this.lingo.statusTips[state]+this.lingo.descClickTip )
                                                                                                                                                                                                                                          -		if (origCell) {
                                                                                                                                                                                                                                          -			createTiddlyElement( origCell, "div", null, null, orig )
                                                                                                                                                                                                                                          -			origCell.setAttribute( "title", this.lingo.origTip )
                                                                                                                                                                                                                                          -			curCell.setAttribute( "title", this.lingo.curTip )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			curCell.setAttribute( "title", this.lingo.curTip2 )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		var curDivContents = (state==this.NASCENT)? "?" : cur
                                                                                                                                                                                                                                          -		var curDiv = createTiddlyElement( curCell, "div", null, null, curDivContents )
                                                                                                                                                                                                                                          -		spentCell.setAttribute( "title", this.lingo.spentTip )
                                                                                                                                                                                                                                          -		var spentDiv = createTiddlyElement( spentCell, "div", null, null, spent )
                                                                                                                                                                                                                                          -		remCell.setAttribute( "title", this.lingo.remTip )
                                                                                                                                                                                                                                          -		var remDiv = createTiddlyElement( remCell, "div", null, null, rem )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// Handle double-click on the description by going
                                                                                                                                                                                                                                          -		// into edit mode and selecting the description
                                                                                                                                                                                                                                          -		descCell.ondblclick = this.editDescription( tiddler, end, descEnd )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		function appTitle( el, suffix ) {
                                                                                                                                                                                                                                          -			el.setAttribute( "title", el.getAttribute("title")+suffix )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// For incomplete tasks, handle double-click on the bullet by marking the task complete
                                                                                                                                                                                                                                          -		if ( state != this.DONE ) {
                                                                                                                                                                                                                                          -			appTitle( statusCell, this.lingo.statusClickTip )
                                                                                                                                                                                                                                          -			statusCell.ondblclick = this.markTaskComplete( tiddler, start, end, macroName, orig, cur, state )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		// For complete ones, handle double-click on the bullet by letting you adjust the time spent
                                                                                                                                                                                                                                          -		else {
                                                                                                                                                                                                                                          -			appTitle( statusCell, this.lingo.statusDoneTip )
                                                                                                                                                                                                                                          -			statusCell.ondblclick = this.adjustTimeSpent( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// Add click handlers for the numeric cells.
                                                                                                                                                                                                                                          -		if ( state != this.DONE ) {
                                                                                                                                                                                                                                          -			appTitle( curCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -			curDiv.className = "adjustable"
                                                                                                                                                                                                                                          -			curDiv.onclick = this.adjustCurrentEstimate( tiddler, start, end, macroName,
                                                                                                                                                                                                                                          -				orig, cur, spent, curDivContents )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		appTitle( spentCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -		spentDiv.className = "adjustable"
                                                                                                                                                                                                                                          -		spentDiv.onclick = this.adjustTimeSpent( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		if ( state == this.LIVE ) {
                                                                                                                                                                                                                                          -			appTitle( remCell, this.lingo.clickTip )
                                                                                                                                                                                                                                          -			remDiv.className = "adjustable"
                                                                                                                                                                                                                                          -			remDiv.onclick = this.adjustTimeRemaining( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Puts the tiddler into edit mode, and selects the range of characters
                                                                                                                                                                                                                                          -	// defined by start and end.  Separated for leak prevention in IE.
                                                                                                                                                                                                                                          -	editDescription: function( tiddler, start, end ) {
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			story.displayTiddler( null, tiddler.title, DEFAULT_EDIT_TEMPLATE )
                                                                                                                                                                                                                                          -			var tiddlerElement = document.getElementById( story.idPrefix + tiddler.title )
                                                                                                                                                                                                                                          -			window.scrollTo( 0, ensureVisible(tiddlerElement) )
                                                                                                                                                                                                                                          -			var element = story.findEditField( tiddler.title, "text" )
                                                                                                                                                                                                                                          -			if ( element && element.tagName.toLowerCase() == "textarea" ) {
                                                                                                                                                                                                                                          -				// Back up one char if the last char's a newline
                                                                                                                                                                                                                                          -				if ( tiddler.text[end-1] == '\n' )
                                                                                                                                                                                                                                          -					--end
                                                                                                                                                                                                                                          -				element.focus()
                                                                                                                                                                                                                                          -				if ( element.setSelectionRange != undefined ) { // Mozilla
                                                                                                                                                                                                                                          -					element.setSelectionRange( start, end )
                                                                                                                                                                                                                                          -					// Damn mozilla doesn't scroll to visible.  Approximate.
                                                                                                                                                                                                                                          -					var max = 0.0 + element.scrollHeight
                                                                                                                                                                                                                                          -					var len = element.textLength
                                                                                                                                                                                                                                          -					var top = max*start/len, bot = max*end/len
                                                                                                                                                                                                                                          -					element.scrollTop = Math.min( top, (bot+top-element.clientHeight)/2 )
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else if ( element.createTextRange != undefined ) { // IE
                                                                                                                                                                                                                                          -					var range = element.createTextRange()
                                                                                                                                                                                                                                          -					range.collapse()
                                                                                                                                                                                                                                          -					range.moveEnd("character", end)
                                                                                                                                                                                                                                          -					range.moveStart("character", start)
                                                                                                                                                                                                                                          -					range.select()
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else // Other? Too bad, just select the whole thing.
                                                                                                                                                                                                                                          -					element.select()
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else
                                                                                                                                                                                                                                          -				return true
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Modifies a task macro call such that the task appears complete.
                                                                                                                                                                                                                                          -	markTaskComplete: function( tiddler, start, end, macroName, orig, cur, state ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( state == macro.NASCENT )
                                                                                                                                                                                                                                          -				orig = cur = 0
                                                                                                                                                                                                                                          -			// The second "cur" in the call below bumps up the time spent
                                                                                                                                                                                                                                          -			// to match the current estimate.
                                                                                                                                                                                                                                          -			macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, cur )
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the current estimate, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustCurrentEstimate: function( tiddler, start, end, macroName, orig, cur, spent, curDivContents ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.curPrompt, curDivContents )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				cur = macro.offset( cur, a[0] )
                                                                                                                                                                                                                                          -				if ( a.length > 1 )
                                                                                                                                                                                                                                          -					spent = macro.offset( spent, a[1] )
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the time spent, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustTimeSpent: function( tiddler, start, end, macroName, orig, cur, spent ) {
                                                                                                                                                                                                                                          -		var macro = this, text = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.spentPrompt, spent )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				spent = macro.offset( spent, a[0] )
                                                                                                                                                                                                                                          -				var rem = cur - spent
                                                                                                                                                                                                                                          -				if ( a.length > 1 ) {
                                                                                                                                                                                                                                          -					rem = macro.offset( rem, a[1] )
                                                                                                                                                                                                                                          -					cur = spent + rem
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Asks the user for an adjustment to the time remaining, modifies the macro call accordingly.
                                                                                                                                                                                                                                          -	adjustTimeRemaining: function( tiddler, start, end, macroName, orig, cur, spent ) {
                                                                                                                                                                                                                                          -		var macro = this
                                                                                                                                                                                                                                          -		var text  = tiddler.text
                                                                                                                                                                                                                                          -		var rem   = cur - spent
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( text !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var txt = prompt( macro.lingo.remPrompt, rem )
                                                                                                                                                                                                                                          -			if ( txt != null ) {
                                                                                                                                                                                                                                          -				var a = macro.breakInput( txt )
                                                                                                                                                                                                                                          -				var newRem = macro.offset( rem, a[0] )
                                                                                                                                                                                                                                          -				if ( newRem > rem || a.length > 1 )
                                                                                                                                                                                                                                          -					cur += (newRem - rem)
                                                                                                                                                                                                                                          -				else
                                                                                                                                                                                                                                          -					spent += (rem - newRem)
                                                                                                                                                                                                                                          -				if ( a.length > 1 )
                                                                                                                                                                                                                                          -					spent = macro.offset( spent, a[1] )
                                                                                                                                                                                                                                          -				macro.replaceMacroCall( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			return false
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Breaks input at spaces & commas, returns array
                                                                                                                                                                                                                                          -	breakInput: function( txt ) {
                                                                                                                                                                                                                                          -		var a = txt.trim().split( /[\s,]+/ )
                                                                                                                                                                                                                                          -		if ( a.length == 0 )
                                                                                                                                                                                                                                          -			a = [NaN]
                                                                                                                                                                                                                                          -		return a
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Adds to, subtracts from, or replaces a numeric value
                                                                                                                                                                                                                                          -	offset: function( num, txt ) {
                                                                                                                                                                                                                                          -		if ( txt == "" || typeof(txt) != "string" )
                                                                                                                                                                                                                                          -			return NaN
                                                                                                                                                                                                                                          -		if ( txt.match(/^[+-]/) )
                                                                                                                                                                                                                                          -			return num + (+txt)
                                                                                                                                                                                                                                          -		return +txt
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Does some error checking, then replaces the indicated macro
                                                                                                                                                                                                                                          -	// call within the text of the given tiddler.
                                                                                                                                                                                                                                          -	replaceMacroCall: function( tiddler, start, end, macroName, orig, cur, spent )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		if ( isNaN(cur+spent) ) {
                                                                                                                                                                                                                                          -			alert( this.lingo.numbersOnly )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if ( spent < 0 || cur < 0 ) {
                                                                                                                                                                                                                                          -			alert( this.lingo.noNegative )
                                                                                                                                                                                                                                          -			return
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		if ( isNaN(orig) )
                                                                                                                                                                                                                                          -			orig = cur
                                                                                                                                                                                                                                          -		if ( spent > cur )
                                                                                                                                                                                                                                          -			cur = spent
                                                                                                                                                                                                                                          -		var text = tiddler.text.substring(0,start) + "<<" + macroName + " " +
                                                                                                                                                                                                                                          -			orig + " " + cur + " " + spent + ">>" + tiddler.text.substring(end)
                                                                                                                                                                                                                                          -		var title = tiddler.title
                                                                                                                                                                                                                                          -		store.saveTiddler( title, title, text, config.options.txtUserName, new Date(), undefined )
                                                                                                                                                                                                                                          -		//story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -		if ( config.options.chkAutoSave )
                                                                                                                                                                                                                                          -			saveChanges()
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Tasksum Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<tasksum "start" ["here" [intro]]>>}}}
                                                                                                                                                                                                                                          -or:
                                                                                                                                                                                                                                          -> {{{<<tasksum "end" [intro]>>}}}
                                                                                                                                                                                                                                          -Put one of the {{{<<tasksum start>>}}} lines before the tasks you want to summarize, and an {{{end}}} line after them.  By default, the summary goes at the end; if you include {{{here}}} in the start line, the summary will go at the top.  The intro argument, if supplied, replaces the default text introducing the summary.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.tasksum = {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		unrecVerb:	"<<%0>> requires 'start' or 'end' as its first argument",
                                                                                                                                                                                                                                          -		mustMatch:	"<<%0 end>> must match a preceding <<%0 start>>",
                                                                                                                                                                                                                                          -		defIntro:	"Task summary:",
                                                                                                                                                                                                                                          -		nascentSum:	"''%0 not estimated''",
                                                                                                                                                                                                                                          -		doneSum:	"%0 complete (in %1 hours)",
                                                                                                                                                                                                                                          -		liveSum:	"%0 ongoing (%1 hours so far, ''%2 hours remaining'')",
                                                                                                                                                                                                                                          -		overSum:	"Total overestimate: %0%.",
                                                                                                                                                                                                                                          -		underSum:	"Total underestimate: %0%.",
                                                                                                                                                                                                                                          -		descPattern:	"%0 %1. %2",
                                                                                                                                                                                                                                          -                origTip:	"Total original estimates in hours",
                                                                                                                                                                                                                                          -		curTip:		"Total current estimates in hours",
                                                                                                                                                                                                                                          -		spentTip:	"Total hours spent on tasks",
                                                                                                                                                                                                                                          -		remTip:		"Total hours remaining"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var sums = this.tasksums
                                                                                                                                                                                                                                          -		if ( params[0] == "start" ) {
                                                                                                                                                                                                                                          -			sums.unshift([])
                                                                                                                                                                                                                                          -			if ( params[1] == "here" ) {
                                                                                                                                                                                                                                          -				sums[0].intro = params[2] || this.lingo.defIntro
                                                                                                                                                                                                                                          -				sums[0].place = place
                                                                                                                                                                                                                                          -				sums[0].placement = place.childNodes.length
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else if ( params[0] == "end" ) {
                                                                                                                                                                                                                                          -			if ( ! sums.length )
                                                                                                                                                                                                                                          -				throw Error( this.lingo.mustMatch.format([macroName]) )
                                                                                                                                                                                                                                          -			var list = sums.shift()
                                                                                                                                                                                                                                          -			var intro = list.intro || params[1] || this.lingo.defIntro
                                                                                                                                                                                                                                          -			var nNascent=0, nLive=0, nDone=0, nMine=0
                                                                                                                                                                                                                                          -			var totLiveSpent=0, totDoneSpent=0
                                                                                                                                                                                                                                          -			var totOrig=0, totCur=0, totSpent=0
                                                                                                                                                                                                                                          -			for ( var i=0; i < list.length; ++i ) {
                                                                                                                                                                                                                                          -				var a = list[i]
                                                                                                                                                                                                                                          -				if ( a.length > 3 ) {
                                                                                                                                                                                                                                          -					nNascent 	+= a[0]
                                                                                                                                                                                                                                          -					nLive 		+= a[1]
                                                                                                                                                                                                                                          -					nDone 		+= a[2]
                                                                                                                                                                                                                                          -					totLiveSpent 	+= a[3]
                                                                                                                                                                                                                                          -					totDoneSpent 	+= a[4]
                                                                                                                                                                                                                                          -					totOrig 	+= a[5]
                                                                                                                                                                                                                                          -					totCur 		+= a[6]
                                                                                                                                                                                                                                          -					totSpent 	+= a[7]
                                                                                                                                                                                                                                          -					if ( a.owner == tiddler )
                                                                                                                                                                                                                                          -						nMine	+= a[8]
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -				else {
                                                                                                                                                                                                                                          -					if ( a.owner == tiddler )
                                                                                                                                                                                                                                          -						++nMine
                                                                                                                                                                                                                                          -					if ( isNaN(a[0]) ) {
                                                                                                                                                                                                                                          -						++nNascent
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -					else {
                                                                                                                                                                                                                                          -						if ( a[1] > a[2] ) {
                                                                                                                                                                                                                                          -							++nLive
                                                                                                                                                                                                                                          -							totLiveSpent += a[2]
                                                                                                                                                                                                                                          -						}
                                                                                                                                                                                                                                          -						else {
                                                                                                                                                                                                                                          -							++nDone
                                                                                                                                                                                                                                          -							totDoneSpent += a[2]
                                                                                                                                                                                                                                          -						}
                                                                                                                                                                                                                                          -						totOrig  += a[0]
                                                                                                                                                                                                                                          -						totCur   += a[1]
                                                                                                                                                                                                                                          -						totSpent += a[2]
                                                                                                                                                                                                                                          -					}
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// If we're nested, push a summary outward
                                                                                                                                                                                                                                          -                        if ( sums.length ) {
                                                                                                                                                                                                                                          -				var summary = [nNascent, nLive, nDone, totLiveSpent, totDoneSpent,
                                                                                                                                                                                                                                          -						totOrig, totCur, totSpent, nMine]
                                                                                                                                                                                                                                          -				summary.owner = tiddler
                                                                                                                                                                                                                                          -				sums[0].push( summary )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var descs = [], styles = []
                                                                                                                                                                                                                                          -			if ( nNascent > 0 ) {
                                                                                                                                                                                                                                          -				descs.push( this.lingo.nascentSum.format([nNascent]) )
                                                                                                                                                                                                                                          -				styles.push( "nascent" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( nDone > 0 )
                                                                                                                                                                                                                                          -				descs.push( this.lingo.doneSum.format([nDone, totDoneSpent]) )
                                                                                                                                                                                                                                          -			if ( nLive > 0 ) {
                                                                                                                                                                                                                                          -				descs.push( this.lingo.liveSum.format([nLive, totLiveSpent, totCur-totSpent]) )
                                                                                                                                                                                                                                          -				styles.push( "live" )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			else
                                                                                                                                                                                                                                          -				styles.push( "done" )
                                                                                                                                                                                                                                          -			var off = ""
                                                                                                                                                                                                                                          -			if ( totOrig > totCur )
                                                                                                                                                                                                                                          -				off = this.lingo.overSum.format( [Math.round(100.0*(totOrig-totCur)/totCur)] )
                                                                                                                                                                                                                                          -			else if ( totCur > totOrig )
                                                                                                                                                                                                                                          -				off = this.lingo.underSum.format( [Math.round(100.0*(totCur-totOrig)/totOrig)] )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var top		= (list.intro != undefined)
                                                                                                                                                                                                                                          -			var table	= createTiddlyElement( null, "table", null, "tasksum "+(top?"top":"bottom") )
                                                                                                                                                                                                                                          -			var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -			var row		= createTiddlyElement( tbody, "tr", null, styles.join(" ") )
                                                                                                                                                                                                                                          -			var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var description = this.lingo.descPattern.format( [intro, descs.join(", "), off] )
                                                                                                                                                                                                                                          -			wikify( description, descCell, null, tiddler )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			var origCell	= totOrig == totCur? null
                                                                                                                                                                                                                                          -					: createTiddlyElement( row, "td", null, "numeric original", totOrig )
                                                                                                                                                                                                                                          -			var curCell	= createTiddlyElement( row, "td", null, "numeric current", totCur )
                                                                                                                                                                                                                                          -			var spentCell	= createTiddlyElement( row, "td", null, "numeric spent", totSpent )
                                                                                                                                                                                                                                          -			var remCell	= createTiddlyElement( row, "td", null, "numeric remaining", totCur-totSpent )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			if ( origCell )
                                                                                                                                                                                                                                          -				origCell.setAttribute( "title", this.lingo.origTip )
                                                                                                                                                                                                                                          -			curCell  .setAttribute( "title", this.lingo.curTip )
                                                                                                                                                                                                                                          -			spentCell.setAttribute( "title", this.lingo.spentTip )
                                                                                                                                                                                                                                          -			remCell  .setAttribute( "title", this.lingo.remTip )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// Discard the table if there are no tasks
                                                                                                                                                                                                                                          -			if ( list.length > 0 ) {
                                                                                                                                                                                                                                          -				var place = top? list.place : place
                                                                                                                                                                                                                                          -				var placement = top? list.placement : place.childNodes.length
                                                                                                                                                                                                                                          -				if ( placement >= place.childNodes.length )
                                                                                                                                                                                                                                          -					place.appendChild( table )
                                                                                                                                                                                                                                          -				else
                                                                                                                                                                                                                                          -					place.insertBefore( table, place.childNodes[placement] )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -		else
                                                                                                                                                                                                                                          -			throw Error( this.lingo.unrecVerb.format([macroName]) )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// If we're wikifying, and are followed by end-of-line, swallow the newline.
                                                                                                                                                                                                                                          -		if ( wikifier && wikifier.source.charAt(wikifier.nextMatch) == "\n" )
                                                                                                                                                                                                                                          -			++wikifier.nextMatch
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// This is the stack of pending summaries
                                                                                                                                                                                                                                          -	tasksums: []
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Taskadder Macro
                                                                                                                                                                                                                                          -Usage:
                                                                                                                                                                                                                                          -> {{{<<taskadder ["above"|"below"|"focus"|"nofocus"]...>>}}}
                                                                                                                                                                                                                                          -Creates a line with text entry fields for a description and an estimate.  By default, puts focus in the description field and adds tasks above the entry fields.  Use {{{nofocus}}} to not put focus in the description field.  Use {{{below}}} to add tasks below the entry fields.
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -config.macros.taskadder = {
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Translatable text:
                                                                                                                                                                                                                                          -	lingo: {
                                                                                                                                                                                                                                          -		unrecParam:	"<<%0>> doesn't recognize '%1' as a parameter",
                                                                                                                                                                                                                                          -		descTip:	"Describe a new task",
                                                                                                                                                                                                                                          -		curTip:		"Estimate how long in hours the task will take",
                                                                                                                                                                                                                                          -		buttonText:	"add task",
                                                                                                                                                                                                                                          -		buttonTip:	"Add a new task with the description and estimate as entered",
                                                                                                                                                                                                                                          -		notCurrent:	"The tiddler has been modified since it was displayed, please redisplay it before adding a task this way.",
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		eol:		"eol"
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// The macro handler
                                                                                                                                                                                                                                          -	handler: function( place, macroName, params, wikifier, paramString, tiddler )
                                                                                                                                                                                                                                          -	{
                                                                                                                                                                                                                                          -		var above = true
                                                                                                                                                                                                                                          -		var focus = false
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		while ( params.length > 0 ) {
                                                                                                                                                                                                                                          -			var p = params.shift()
                                                                                                                                                                                                                                          -			switch (p) {
                                                                                                                                                                                                                                          -			case "above": 	above = true;  break
                                                                                                                                                                                                                                          -			case "below": 	above = false; break
                                                                                                                                                                                                                                          -			case "focus": 	focus = true;  break
                                                                                                                                                                                                                                          -			case "nofocus":	focus = false; break
                                                                                                                                                                                                                                          -			default:	throw Error( this.lingo.unrecParam.format([macroName, p]) )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// If we're followed by end-of-line, swallow the newline.
                                                                                                                                                                                                                                          -		if ( wikifier.source.charAt(wikifier.nextMatch) == "\n" )
                                                                                                                                                                                                                                          -			++wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var where	= above? wikifier.matchStart : wikifier.nextMatch
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var table	= createTiddlyElement( place, "table", null, "task" )
                                                                                                                                                                                                                                          -		var tbody	= createTiddlyElement( table, "tbody" )
                                                                                                                                                                                                                                          -		var row		= createTiddlyElement( tbody, "tr" )
                                                                                                                                                                                                                                          -		var statusCell	= createTiddlyElement( row,   "td", null, "status" )
                                                                                                                                                                                                                                          -		var descCell	= createTiddlyElement( row,   "td", null, "description" )
                                                                                                                                                                                                                                          -		var curCell	= createTiddlyElement( row,   "td", null, "numeric" )
                                                                                                                                                                                                                                          -		var addCell	= createTiddlyElement( row,   "td", null, "addtask" )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var descId	= this.generateId()
                                                                                                                                                                                                                                          -		var curId	= this.generateId()
                                                                                                                                                                                                                                          -		var descInput	= createTiddlyElement( descCell, "input", descId )
                                                                                                                                                                                                                                          -		var curInput	= createTiddlyElement( curCell,  "input", curId  )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		descInput.setAttribute( "type", "text" )
                                                                                                                                                                                                                                          -		curInput .setAttribute( "type", "text" )
                                                                                                                                                                                                                                          -		descInput.setAttribute( "size", "40")
                                                                                                                                                                                                                                          -		curInput .setAttribute( "size", "6" )
                                                                                                                                                                                                                                          -		descInput.setAttribute( "autocomplete", "off" );
                                                                                                                                                                                                                                          -		curInput .setAttribute( "autocomplete", "off" );
                                                                                                                                                                                                                                          -		descInput.setAttribute( "title", this.lingo.descTip );
                                                                                                                                                                                                                                          -		curInput .setAttribute( "title", this.lingo.curTip  );
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		var addAction	= this.addTask( tiddler, where, descId, curId, above )
                                                                                                                                                                                                                                          -		var addButton	= createTiddlyButton( addCell, this.lingo.buttonText, this.lingo.buttonTip, addAction )
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		descInput.onkeypress = this.handleEnter(addAction)
                                                                                                                                                                                                                                          -		curInput .onkeypress = descInput.onkeypress
                                                                                                                                                                                                                                          -		addButton.onkeypress = this.handleSpace(addAction)
                                                                                                                                                                                                                                          -		if ( focus || tiddler.taskadderLocation == where ) {
                                                                                                                                                                                                                                          -			descInput.focus()
                                                                                                                                                                                                                                          -			descInput.select()
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns a function that inserts a new task macro into the tiddler.
                                                                                                                                                                                                                                          -	addTask: function( tiddler, where, descId, curId, above ) {
                                                                                                                                                                                                                                          -		var macro = this, oldText = tiddler.text
                                                                                                                                                                                                                                          -		return wrapEventHandler( function(e) {
                                                                                                                                                                                                                                          -			if ( oldText !== tiddler.text ) {
                                                                                                                                                                                                                                          -				alert( macro.lingo.notCurrent )
                                                                                                                                                                                                                                          -				return false
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			var desc	= document.getElementById(descId).value
                                                                                                                                                                                                                                          -			var cur		= document.getElementById(curId) .value
                                                                                                                                                                                                                                          -			var init	= tiddler.text.substring(0,where) + "<<task " + cur + ">> " + desc + "\n"
                                                                                                                                                                                                                                          -			var text	= init + tiddler.text.substring(where)
                                                                                                                                                                                                                                          -			var title	= tiddler.title
                                                                                                                                                                                                                                          -			tiddler.taskadderLocation = (above? init.length : where)
                                                                                                                                                                                                                                          -			try {
                                                                                                                                                                                                                                          -				store.saveTiddler( title, title, text, config.options.txtUserName, new Date(), undefined )
                                                                                                                                                                                                                                          -				//story.refreshTiddler( title, null, true )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			finally {
                                                                                                                                                                                                                                          -				delete tiddler.taskadderLocation
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			if ( config.options.chkAutoSave )
                                                                                                                                                                                                                                          -				saveChanges()
                                                                                                                                                                                                                                          -		} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that delegates to two other functions: "matches" to decide
                                                                                                                                                                                                                                          -	// whether to consume the event, and "addTask" to actually perform the work.
                                                                                                                                                                                                                                          -	handleGeneric: function( addTask, matches ) {
                                                                                                                                                                                                                                          -		return function(e) {
                                                                                                                                                                                                                                          -			if (!e) var e = window.event
                                                                                                                                                                                                                                          -			var consume = false
                                                                                                                                                                                                                                          -			if ( matches(e) ) {
                                                                                                                                                                                                                                          -				consume = true
                                                                                                                                                                                                                                          -				addTask( e )
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -			e.cancelBubble = consume;
                                                                                                                                                                                                                                          -			if ( consume && e.stopPropagation ) e.stopPropagation();
                                                                                                                                                                                                                                          -			return !consume;
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that handles enter keys by calling another event handler
                                                                                                                                                                                                                                          -	handleEnter: function( addTask ) {
                                                                                                                                                                                                                                          -		return this.handleGeneric( addTask, function(e){return e.keyCode == 13 || e.keyCode == 10} ) // Different codes for Enter
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// Returns an event handler that handles the space key by calling another event handler
                                                                                                                                                                                                                                          -	handleSpace: function( addTask ) {
                                                                                                                                                                                                                                          -		return this.handleGeneric( addTask, function(e){return (e.charCode||e.keyCode) == 32} )
                                                                                                                                                                                                                                          -	},
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	counter: 0,
                                                                                                                                                                                                                                          -	generateId: function() {
                                                                                                                                                                                                                                          -		return "taskadder:" + String(this.counter++)
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -/***
                                                                                                                                                                                                                                          -!Stylesheet
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -var stylesheet = '\
                                                                                                                                                                                                                                          -.viewer table.task, table.tasksum {\
                                                                                                                                                                                                                                          -	width: 100%;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -	border-collapse: collapse;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task {\
                                                                                                                                                                                                                                          -	border: none;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum, .viewer table.tasksum {\
                                                                                                                                                                                                                                          -	border: solid 2px #999;\
                                                                                                                                                                                                                                          -	margin: 3px 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td {\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -	border: 1px solid #ddd;\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	vertical-align: middle;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task tr {\
                                                                                                                                                                                                                                          -	border: none;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.viewer table.task td {\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -	vertical-align: baseline;\
                                                                                                                                                                                                                                          -	border: 1px solid #fff;\
                                                                                                                                                                                                                                          -	background-color: inherit;\
                                                                                                                                                                                                                                          -	margin: 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -td.numeric {\
                                                                                                                                                                                                                                          -	width: 3em;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.numeric div {\
                                                                                                                                                                                                                                          -	border: 1px solid #ddd;\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	margin: 1px 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.original div {\
                                                                                                                                                                                                                                          -	background-color: #fdd;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td.original {\
                                                                                                                                                                                                                                          -	background-color: #fdd;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.tasksum td.description {\
                                                                                                                                                                                                                                          -	background-color: #e8e8e8;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.status {\
                                                                                                                                                                                                                                          -	width: 1.5em;\
                                                                                                                                                                                                                                          -	cursor: default;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.description, table.tasksum td.description {\
                                                                                                                                                                                                                                          -	width: auto;\
                                                                                                                                                                                                                                          -	text-align: left;\
                                                                                                                                                                                                                                          -	padding: 0 3px;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.status,table.task.done td.description {\
                                                                                                                                                                                                                                          -	color: #ccc;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.current, table.task.done td.remaining {\
                                                                                                                                                                                                                                          -	visibility: hidden;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.done td.spent div, table.tasksum tr.done td.current,\
                                                                                                                                                                                                                                          -table.tasksum tr.done td.spent, table.tasksum tr.done td.remaining {\
                                                                                                                                                                                                                                          -	background-color: #eee;\
                                                                                                                                                                                                                                          -	color: #aaa;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.description {\
                                                                                                                                                                                                                                          -	color: #844;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.current div, table.tasksum tr.nascent td.numeric.current {\
                                                                                                                                                                                                                                          -	font-weight: bold;\
                                                                                                                                                                                                                                          -	color: #c00;\
                                                                                                                                                                                                                                          -	background-color: #def;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task.nascent td.spent, table.task.nascent td.remaining {\
                                                                                                                                                                                                                                          -	visibility: hidden;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -td.remaining {\
                                                                                                                                                                                                                                          -	font-weight: bold;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -.adjustable {\
                                                                                                                                                                                                                                          -	cursor: pointer; \
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task input {\
                                                                                                                                                                                                                                          -	display: block;\
                                                                                                                                                                                                                                          -	width: 100%;\
                                                                                                                                                                                                                                          -	font: inherit;\
                                                                                                                                                                                                                                          -	margin: 2px 0;\
                                                                                                                                                                                                                                          -	padding: 0;\
                                                                                                                                                                                                                                          -	border: 1px inset #999;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.numeric input {\
                                                                                                                                                                                                                                          -	background-color: #ffc;\
                                                                                                                                                                                                                                          -	text-align: center;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -table.task td.addtask {\
                                                                                                                                                                                                                                          -	width: 6em;\
                                                                                                                                                                                                                                          -	border-left: 2px solid white;\
                                                                                                                                                                                                                                          -	vertical-align: middle;\
                                                                                                                                                                                                                                          -}\
                                                                                                                                                                                                                                          -'
                                                                                                                                                                                                                                          -setStylesheet( stylesheet, "TaskMacroPluginStylesheet" )
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          !!Changes in 1.1.0
                                                                                                                                                                                                                                          -* Made the macros work in nested tiddlers (ie when one tiddler includes another using {{{<<tiddler>>}}} or something similar):
                                                                                                                                                                                                                                          -** Task summaries in the outer tiddler include the tasks from the inner one
                                                                                                                                                                                                                                          -** Using the editing shortcuts on the tasks as displayed in the outer tiddler correctly changes the inner tiddler and also redisplays the outer one
                                                                                                                                                                                                                                          -** Added sanity checks to the editing shortcuts so they will refuse to work if the tiddler has been modified behind their backs
                                                                                                                                                                                                                                          -* Made some small usability fixes:
                                                                                                                                                                                                                                          -** The "add task" button now responds to the Space key (hat tip: Daniel Baird)
                                                                                                                                                                                                                                          -** Double-clicking on a completed task's bullet now does the same thing as clicking on the elapsed time: it lets you adjust the time spent, giving you the option of resurrecting the task (hat tip: ~JackF)
                                                                                                                                                                                                                                          -** Reworked the focus handling of the taskadder macro so it works more intuitively, by refocusing on the same adder you just used
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The task macro provided by the TaskMacroPlugin is for planning, estimating, and tracking detailed tasks such as those required for writing software.  It is inspired by [[Joel Spolsky|http://www.joelonsoftware.com/articles/fog0000000245.html]]'s method for scheduling software development, also popularized by [[Voo2do|http://voo2do.com]] and [[XPlanner|http://xplanner.org]].
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -For changes since the previous version, see the TaskMacroReleaseNotes.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This tutorial leads you through the use of the task macro itself, and supporting macros that summarize lists of tasks and simplify the adding of tasks to a list.  Follow along by clicking the links below.  Or click the little down-arrow next to this tiddler's title, above, and choose "Open all" to have all the tutorial sections displayed at once.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          <!---
                                                                                                                                                                                                                                          -Includes portions of [[TagglyTaggingViewTemplate|http://simonbaird.com/mptw/#TagglyTaggingViewTemplate]], v1.2 (16-Jan-2006).
                                                                                                                                                                                                                                          -Also adds a pair of tasksum macros around the tiddler, to summarize any contained tasks at the top.  Removes the "-" in front of closeTiddler, which can easily bite you if you have a focusable element in a tiddler, such as a taskadder entry field.
                                                                                                                                                                                                                                          -Portions written by Luke Blanshard are hereby released into the public domain.
                                                                                                                                                                                                                                          ---->
                                                                                                                                                                                                                                          -<!--{{{-->
                                                                                                                                                                                                                                          -<div class="toolbar" macro="toolbar closeTiddler closeOthers +editTiddler permalink references jump newHere"></div>
                                                                                                                                                                                                                                          -<div class="tagglyTagged" macro="tags"></div>
                                                                                                                                                                                                                                          -<div><span class="title" macro="view title"></span><span class="miniTag" macro="miniTag"></span></div>
                                                                                                                                                                                                                                          -<div macro="tasksum start here"></div>
                                                                                                                                                                                                                                          -<div class="viewer" macro="view text wikified"></div>
                                                                                                                                                                                                                                          -<div macro="tasksum end"></div>
                                                                                                                                                                                                                                          -<div class="tagglyTagging" macro="tagglyListWithSort"></div>
                                                                                                                                                                                                                                          -<!--}}}-->
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          {{red{killme}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          /***
                                                                                                                                                                                                                                          -''TextAreaPlugin for TiddlyWiki version 2.0''
                                                                                                                                                                                                                                          -^^author: Eric Shulman - ELS Design Studios
                                                                                                                                                                                                                                          -source: http://www.elsdesign.com/tiddlywiki/#TextAreaPlugin
                                                                                                                                                                                                                                          -license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -This plugin 'hijacks' the TW core function, ''Story.prototype.focusTiddler()'', so it can add special 'keyDown' handlers to adjust several behaviors associated with the textarea control used in the tiddler editor.  Specifically, it:
                                                                                                                                                                                                                                          -* Adds text search INSIDE of edit fields.^^
                                                                                                                                                                                                                                          -Use ~CTRL-F for "Find" (prompts for search text), and ~CTRL-G for "Find Next" (uses previous search text)^^
                                                                                                                                                                                                                                          -* Enables TAB characters to be entered into field content^^
                                                                                                                                                                                                                                          -(instead of moving to next field)^^
                                                                                                                                                                                                                                          -* Option to set cursor at top of edit field instead of auto-selecting contents^^
                                                                                                                                                                                                                                          -(see configuration section for checkbox)^^
                                                                                                                                                                                                                                          -!!!!!Configuration
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content
                                                                                                                                                                                                                                          -<<option chkTextAreaExtensions>> add control-f (find), control-g (find again) and allow TABs as input in textarea
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Installation
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -Import (or copy/paste) the following tiddlers into your document:
                                                                                                                                                                                                                                          -''TextAreaPlugin'' (tagged with <<tag systemConfig>>)
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Revision History
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -''2006.01.22 [1.0.1]''
                                                                                                                                                                                                                                          -only add extra key processing for TEXTAREA elements (not other edit fields).
                                                                                                                                                                                                                                          -added option to enable/disable textarea keydown extensions (default is "standard keys" only)
                                                                                                                                                                                                                                          -''2006.01.22 [1.0.0]''
                                                                                                                                                                                                                                          -Moved from temporary "System Tweaks" tiddler into 'real' TextAreaPlugin tiddler.
                                                                                                                                                                                                                                          -<<<
                                                                                                                                                                                                                                          -!!!!!Code
                                                                                                                                                                                                                                          -***/
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -version.extensions.textAreaPlugin= {major: 1, minor: 0, revision: 1, date: new Date(2006,1,23)};
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -if (!config.options.chkDisableAutoSelect) config.options.chkDisableAutoSelect=false; // default to standard action
                                                                                                                                                                                                                                          -if (!config.options.chkTextAreaExtensions) config.options.chkTextAreaExtensions=false; // default to standard action
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -// Focus a specified tiddler. Attempts to focus the specified field, otherwise the first edit field it finds
                                                                                                                                                                                                                                          -Story.prototype.focusTiddler = function(title,field)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	var tiddler = document.getElementById(this.idPrefix + title);
                                                                                                                                                                                                                                          -	if(tiddler != null)
                                                                                                                                                                                                                                          -		{
                                                                                                                                                                                                                                          -		var children = tiddler.getElementsByTagName("*")
                                                                                                                                                                                                                                          -		var e = null;
                                                                                                                                                                                                                                          -		for (var t=0; t<children.length; t++)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			var c = children[t];
                                                                                                                                                                                                                                          -			if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")
                                                                                                                                                                                                                                          -				{
                                                                                                                                                                                                                                          -				if(!e)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				if(c.getAttribute("edit") == field)
                                                                                                                                                                                                                                          -					e = c;
                                                                                                                                                                                                                                          -				}
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		if(e)
                                                                                                                                                                                                                                          -			{
                                                                                                                                                                                                                                          -			e.focus();
                                                                                                                                                                                                                                          -			e.select(); // select entire contents
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// TWEAK: add TAB and "find" key handlers
                                                                                                                                                                                                                                          -			if (config.options.chkTextAreaExtensions) // add extra key handlers
                                                                                                                                                                                                                                          -				addKeyDownHandlers(e);
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			// TWEAK: option to NOT autoselect contents
                                                                                                                                                                                                                                          -			if (config.options.chkDisableAutoSelect) // set cursor to start of field content
                                                                                                                                                                                                                                          -				if (e.setSelectionRange) e.setSelectionRange(0,0); // for FF
                                                                                                                                                                                                                                          -				else if (e.createTextRange) { var r=e.createTextRange(); r.collapse(true); r.select(); } // for IE
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -			}
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -//{{{
                                                                                                                                                                                                                                          -function addKeyDownHandlers(e)
                                                                                                                                                                                                                                          -{
                                                                                                                                                                                                                                          -	// exit if not textarea or element doesn't allow selections
                                                                                                                                                                                                                                          -	if (e.tagName.toLowerCase()!="textarea" || !e.setSelectionRange) return;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// utility function: exits keydown handler and prevents browser from processing the keystroke
                                                                                                                                                                                                                                          -	var processed=function(ev) { ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false; }
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -	// capture keypress in edit field
                                                                                                                                                                                                                                          -	e.onkeydown = function(ev) { if (!ev) var ev=window.event;
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// process TAB
                                                                                                                                                                                                                                          -		if (!ev.shiftKey && ev.keyCode==9) { 
                                                                                                                                                                                                                                          -			// replace current selection with a TAB character
                                                                                                                                                                                                                                          -			var start=e.selectionStart; var end=e.selectionEnd;
                                                                                                                                                                                                                                          -			e.value=e.value.substr(0,start)+String.fromCharCode(9)+e.value.substr(end);
                                                                                                                                                                                                                                          -			// update insertion point, scroll it into view
                                                                                                                                                                                                                                          -			e.setSelectionRange(start+1,start+1);
                                                                                                                                                                                                                                          -			var linecount=e.value.split('\n').length;
                                                                                                                                                                                                                                          -			var thisline=e.value.substr(0,e.selectionStart).split('\n').length-1;
                                                                                                                                                                                                                                          -			e.scrollTop=Math.floor((thisline-e.rows/2)*e.scrollHeight/linecount);
                                                                                                                                                                                                                                          -			return processed(ev);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -		// process CTRL-F (find matching text) or CTRL-G (find next match)
                                                                                                                                                                                                                                          -		if (ev.ctrlKey && (ev.keyCode==70||ev.keyCode==71)) {
                                                                                                                                                                                                                                          -			// if ctrl-f or no previous search, prompt for search text (default to previous text or current selection)... if no search text, exit
                                                                                                                                                                                                                                          -			if (ev.keyCode==70||!e.find||!e.find.length)
                                                                                                                                                                                                                                          -				{ var f=prompt("find:",e.find?e.find:e.value.substring(e.selectionStart,e.selectionEnd)); e.focus(); e.find=f?f:e.find; }
                                                                                                                                                                                                                                          -			if (!e.find||!e.find.length) return processed(ev);
                                                                                                                                                                                                                                          -			// do case-insensitive match with 'wraparound'...  if not found, alert and exit 
                                                                                                                                                                                                                                          -			var newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase(),e.selectionStart+1);
                                                                                                                                                                                                                                          -			if (newstart==-1) newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase());
                                                                                                                                                                                                                                          -			if (newstart==-1) { alert("'"+e.find+"' not found"); e.focus(); return processed(ev); }
                                                                                                                                                                                                                                          -			// set new selection, scroll it into view, and report line position in status bar
                                                                                                                                                                                                                                          -			e.setSelectionRange(newstart,newstart+e.find.length);
                                                                                                                                                                                                                                          -			var linecount=e.value.split('\n').length;
                                                                                                                                                                                                                                          -			var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
                                                                                                                                                                                                                                          -			e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
                                                                                                                                                                                                                                          -			window.status="line: "+thisline+"/"+linecount;
                                                                                                                                                                                                                                          -			return processed(ev);
                                                                                                                                                                                                                                          -		}
                                                                                                                                                                                                                                          -	}
                                                                                                                                                                                                                                          -}
                                                                                                                                                                                                                                          -//}}}
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          http://tiddlywiki.com/
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          Timeline is the name of a specific facility located in the [[Fixture]] (EDL): It is a ordered list of ExplicitPlacement.s of MObjects. By traversing the Playlist you get at all elements actually to be rendered; the [[Builder]] uses this Timeline-list to construct actual Render Engine configurations to carry out the calculations.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          The Intention of this text is to help you understanding the design and to show some notable details.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!!Starting Point
                                                                                                                                                                                                                                          -Design is an experiment to find out how things are related. We can't //plan// a Design top down, rather we have to start at some point with some hypothesis and look how it works out. The point of origin for Ichthyo's design is the observation that the Render Engine needs some Separation of Concerns to get the complexity down. And especially, this design ''uses three different Levels'' or Layers within the Render Engine and EDL.
                                                                                                                                                                                                                                          -* the __high level__ within the EDL uses uniformly treated MObjects which are assembled/glued together by a network of [[Placements|Placement]].<br> It is supposed that the GUI will present this and //only this view //to the user, giving him the ability to work with the objects
                                                                                                                                                                                                                                          -* the __builder level__ works on a stripped-down subset of this ~MObject network: it uses the //same Object instances// but only assembled by [[Explicit Placements|ExplicitPlacement]] which locate the objects //on a simple (track, time) grid.// It's the job of the builder to create out of this simplified Network the Configuration of [[Render Nodes|ProcNode]] needed to do the actual rendering
                                                                                                                                                                                                                                          -* the __engine level__ uses solely [[Render Pipeline Nodes (ProcNode)|ProcNode]], i.e. a Graph of interconnected processing nodes. The important constraint here is that //any decisions are ruled out//. The core Render Engine with all its nodes is lacking the ability to do any tests and checks and has no possibility to branch or reconfigure anything. (this is an especially important lesson I draw from studying the current Cinelerra source code)
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!!Performance Considerations
                                                                                                                                                                                                                                          -* within the Engine the Render Nodes are containing the ''inner loop'', whose contents are to be executed hundred thousands to million times per frame. Every dispensable concern, which is not strictly necessary to get the job done, is worth the effort of factoring out here.
                                                                                                                                                                                                                                          -* performance pressure at the builder level is far lower, albeit still existent. Compared to the effort of calculating a single processing step, looping even over some hundred nodes and executing quite some logic is negligible. Danger bears on creating memory pressure or causing awkward execution patterns (in the backend) rather. So the main concern should be the ability of reconfiguring different aspects separately without much effort. If for example a given render strategy works out to create lots of deadlocks and waitstates in the backend, the design should account for the possibility to exchange it with another strategy without having to modify the inner workings of the build process.<br>On the other hand, I wouldn't be overly concerned to trigger the build process yet another time to get some specific problem solved. However, the possibility to share one Render configuration for, say, 20 sec of video, instead of triggering the build process 500 times for every frame in this timespan, would sure be worth considering if it's not overly complicated to achieve.
                                                                                                                                                                                                                                          -* contrary to this, the EDL level is harmless with respect to performance. Getting acceptable responsiveness on user interactions is sufficient. We could consider using high level languages here, for it is much more important being able to express and handle complicated object relationships with relative ease. The only (indirect) concern is to avoid generating memory pressure inadvertently. Edit actions generating memory peaks could interfere with an ongoing background render process. If we decide to use lots of relation objects or transient objects, we should use an object pool or still better an garbage collector.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!!Concepts and Interfaces
                                                                                                                                                                                                                                          -This design strives to build each level and subsystem around some central concepts, which are directly expressed as Interfaces. Commonly used Interfaces clamp the different layers.
                                                                                                                                                                                                                                          -* MObject gives an uniform view on all the various entities to be arranged in the EDL.
                                                                                                                                                                                                                                          -* all the arranging and relating of ~MObjects is abstracted as [[Placement]]. The contract of a Placement is that it always has a related Subject, that we can call some test methods on it (still to be defined), and, finally, that we can get an ExplicitPlacement from it.
                                                                                                                                                                                                                                          -* albeit being a special form of a Placement, the ExplicitPlacement is treated as a separate concept. With respect to edit operations within the EDL, it can stand for any sort of Placement. On the other hand the Builder takes a list of ~ExplicitPlacements as input for building up the Render Engine(s). This corresponds to the fact that the render process needs to organize the things to be done on a simple two dimensional grid of (output channel / time). The (extended) contract of an ~ExplicitPlacement provides us with this information (track,time).
                                                                                                                                                                                                                                          -* on the lower end of the builder, everything is organized around the Concept of a ProcNode, which enables us to //pull// one (freely addressable) Frame of calculated data. Further, the ProcNode has the ability to be wired with other nodes and [[Parameter Providers|ParamProvider]]
                                                                                                                                                                                                                                          -* the various types of data to be processed are abstracted away under the notion of a [[Frame]]. Basically, a Frame is an Buffer containing an Array of raw data and it can be located by some generic scheme, including (at least) the absolute starting time (and probably some type or channel id).
                                                                                                                                                                                                                                          -* All sorts of (target domain) [[Parameters]] are treated uniformly. There is a distinction between Parameters (which //could// be variable) and Configuration (which is considered to be fixed). In this context, Automation just appears as a special kind of ParamProvider.
                                                                                                                                                                                                                                          -* and finally, the calculation //process// together with its current state is represented by a StateProxy. I call this a "proxy", because it should encapsulate and hide all tedious details of communication, be it even asynchronous communication with some Controller or Dispatcher running in another Thread. In order to maintain a view on the current state of the render process, it could eventually be necessary to register as an observer somewhere or to send notifications to other parts of the system.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!!Handling Diversity
                                                                                                                                                                                                                                          -An important goal of this approach is to be able to push down the treatment of variations and special cases. We don't need to know what kind of Placement links one MObject to another, because it is sufficient for us to get an ExplicitPlacement. The Render Engine doesn't need to know if it is pulling audio Frames or video Frames or GOPs or OpenGL textures. It simply relies on the Builder wiring together the correct node types. And the Builder in turn does so by using some overloaded function of an iterator or visitor. There is no need for the video [[ProcNodes|ProcNode]] to test for the colormodel on every screen line, because the Data Frame can be a Template parametrized by the colormodel. All of this reduces complexity and quite some misconceptions can be detected already by the compiler.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!!Explicit structural differences
                                                                                                                                                                                                                                          -In case it's not already clear: we don't have "the" Render Engine, rather we construct a Render Engine for each structurally differing part of the timeline. (please relate this to the current Cinelerra code base, which constructs and builds up the render pipeline for each frame separately). No need to call back from within the pipeline to find out if a given plugin is enabled or to see if there are any automation keyframes. We don't need to pose any constraints on the structuring of the objects in the EDL, besides the requirement to get an ExplicitPlacement for each. We could even loosen the use of the common metaphor of placing media sequences on fixed tracks, if we want to get at a more advanced GUI at some point in the future.
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -!!!!Stateless Subsystems
                                                                                                                                                                                                                                          -The &raquo;current setup&laquo; of the objects in the EDL is sort of a global state. Same holds true for the Controller, as the Engine can be at playback, it can run a background render or scrub single frames. But the whole complicated subsystem of the Builder and one given Render Engine configuration can be made ''stateless''. As a benefit of this we can run this subsystems multi-threaded without the need of any precautions (locking, synchronizing). Because all state information is just passed in as function parameters and lives in local variables on the stack, or is contained in the StateProxy which represents the given render //process// and is passed down as function parameter as well. (note: I use this term in the usual, slightly relaxed manner; of course there are some configuration values contained in instance variables of the objects carrying out the calculations, but this values are considered to be constant over the course of the object usage).
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          - - - - - - - - - - diff --git a/wiki/uml b/wiki/uml deleted file mode 120000 index a59e206ca..000000000 --- a/wiki/uml +++ /dev/null @@ -1 +0,0 @@ -../doc/devel/uml \ No newline at end of file From 71c7bd6a82b09126699b204b40b2c95b8ae3d4da Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 14 Feb 2008 16:14:12 +0100 Subject: [PATCH 2/2] don't build testsuite for default target 'build' > (use 'scons testcode' or 'scons check' for this) --- SConstruct | 2 +- src/main.cpp | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/SConstruct b/SConstruct index 88c5dcb97..5dc55580a 100644 --- a/SConstruct +++ b/SConstruct @@ -264,7 +264,7 @@ def definePostBuildTargets(env, artifacts): il = env.Alias('install-lib', '$DESTDIR/lib') env.Alias('install', [ib, il]) - build = env.Alias('build', '$BINDIR') + build = env.Alias('build', artifacts['cinelerra']+artifacts['plugins']) allbu = env.Alias('allbuild', build+artifacts['testsuite']) env.Default('build') # additional files to be cleaned when cleaning 'build' diff --git a/src/main.cpp b/src/main.cpp index 746a02965..18384f0c7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -31,7 +31,6 @@ int main (int argc, char* argv[]) { cout << "*** Cinelerra NLE for Linux ***" << endl << " hello SCONS build system" << endl; - assert(true); return 0; }
                                                                                                                                                                                                                                        • gqdo?CAUPqd1jk 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 diff --git a/doc/devel/uml/fig128437.png b/doc/devel/uml/fig128437.png deleted file mode 100644 index 7baed24d45cb7035f9b05ba30b0796ccf852fc6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78 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 diff --git a/doc/devel/uml/fig128645.png b/doc/devel/uml/fig128645.png deleted file mode 100644 index 7baed24d45cb7035f9b05ba30b0796ccf852fc6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78 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