Editing CustomHelp topics
Last updated at 9:55 pm UTC on 15 April 2018
CustomHelp
edit: aSelector
"Open a Workspace on the text in the given selector.
When accepted, compile the result as a help topic."
| topic window |
topic := (self respondsTo: aSelector)
ifTrue:[self perform: aSelector]
ifFalse:[HelpTopic title: 'Untitled' contents: 'Please edit this topic.
To change the topic title, edit the window label.'].
window := UIManager default
edit: topic contents
label: topic title
accept: [:text| self accept: aSelector title: window label contents: text].
accept: aSelector title: title contents: text
"Accept edited text. Compile it into a HelpTopic"
| code |
code := String streamContents:[:s|
s nextPutAll: aSelector.
s crtab; nextPutAll: '"This method was automatically generated. Edit it using:"'.
s crtab; nextPutAll: '"', self name,' edit: ', aSelector storeString,'"'.
s crtab; nextPutAll: '^HelpTopic'.
s crtab: 2; nextPutAll: 'title: ', title storeString.
s crtab: 2; nextPutAll: 'contents: '.
s cr; nextPutAll: (String streamContents:[:c| c nextChunkPutWithStyle: text]) storeString.
s nextPutAll:' readStream nextChunkText'.
].
self class
compile: code
classified: ((self class organization categoryOfElement: aSelector) ifNil:['pages']).