The Trunk: HelpSystem-Core-tbn.53.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: HelpSystem-Core-tbn.53.mcz

commits-2
Torsten Bergmann uploaded a new version of HelpSystem-Core to project The Trunk:
http://source.squeak.org/trunk/HelpSystem-Core-tbn.53.mcz

==================== Summary ====================

Name: HelpSystem-Core-tbn.53
Author: tbn
Time: 1 October 2010, 12:11:03.269 am
UUID: cffd5e9f-f4db-224d-b40d-7fdab1718a39
Ancestors: HelpSystem-Core-tbn.52

Custom help books are now able to define where subbooks should be placed/displayed

See also http://code.google.com/p/pharo/issues/detail?id=3022 and thanx to Enrico Spinielli for the idea and initial implementation.

=============== Diff against HelpSystem-Core-tbn.52 ===============

Item was changed:
  ----- Method: CustomHelpHelpBuilder>>createTopicFrom: (in category 'private') -----
  createTopicFrom: aDescription
+ "Create a topic from a description stored on a class.
+ aDescription can specify (via #pages) the name of a class and not
+ only a selector. This allows for hierarchies with 'subtrees in the middle'"
- "Create a topic from a description stored on a class"
 
+ |topic page   pageClasses |
- |topic page method pragma   |
  topic := HelpTopic named: aDescription bookName.
  topic key: aDescription key.
+ topic icon: aDescription icon.
+ pageClasses := Set new.
+ aDescription pages do: [:pageSelectorOrClass|
+ page:= (Smalltalk hasClassNamed: pageSelectorOrClass asString)
+ ifFalse: [aDescription perform: pageSelectorOrClass]
+ ifTrue: [pageClasses add: (Smalltalk classNamed: pageSelectorOrClass asString).
+ (Smalltalk classNamed: pageSelectorOrClass asString) asHelpTopic].
- topic icon: aDescription icon.
- aDescription pages do: [:pageSelector|
- page := aDescription perform: pageSelector.
  topic addSubtopic: page.
  ].
+ ((aDescription subclasses asSet)
+ removeAllFoundIn: pageClasses;
+ yourself) do: [:subclass | topic subtopics add: subclass asHelpTopic ].
- aDescription subclasses do: [:subclass |
- topic subtopics add: subclass asHelpTopic ].
  ^topic!

Item was changed:
  ----- Method: HelpHowToHelpTopicsFromCode classSide>>pages (in category 'accessing') -----
  pages
+ ^#(overview step1 step2 step3 step4 step5 step6 step7)!
- ^#(overview step1 step2 step3 step4 step5)!

Item was added:
+ ----- Method: HelpHowToHelpTopicsFromCode classSide>>step6 (in category 'pages') -----
+ step6
+ ^HelpTopic
+ title: 'Step 6 - Add more structure'
+ contents:
+ 'STEP 6 - ADD MORE STRUCTURE
+
+ If you add a new subclass to your custom help class and repeating step 2 to 4 you can
+ profide new substructures (subbooks) since the help books are mapped to the
+ class hierarchy. Example:
+  
+ MyAppHelp subclass: #MyAppTutorial
+     instanceVariableNames: ''''
+  classVariableNames: ''''
+  poolDictionaries: ''''
+  category: ''MyApp-Help''
+
+ then implement a #bookName, the pages and a #pages method as before on this new
+ class and reopen the help browser.
+ '
+ !

Item was added:
+ ----- Method: HelpHowToHelpTopicsFromCode classSide>>step7 (in category 'pages') -----
+ step7
+ ^HelpTopic
+ title: 'Step 7 - Tips and Tricks'
+ contents:
+ 'STEP 7 - TIPS AND TRICKS
+
+ Tip1:
+           If you implement the #pages method you can also
+           use the name of a custom help class that should be
+           integrated between the specific pages:
+  
+               #pages
+                    ^(firstPage MyAppTutorial secondPage)
+
+ Tip2:
+           You can easily edit the help contents of a page by
+           using the #edit: message. For our example just evaluate:
+
+ MyAppHelp edit: #firstPage
+
+     This will open a workspace with the help contents and
+     when you accept it it will be saved back to the help
+     method defining the topic.  
+
+
+ '
+ !