Hi,
I would recommend to look at the slightly cleaned up project export code in the Etoys 6 package (file.squeak.org/etoys). You can export plain morphic projects just fine in that package. However, all SystemWindows except workspaces are currently explicitly ignored.
As far as saving is concerned, the QuickGuides simply use a special exporter (for book morphs), rather than the Project exporter.
cheers, Tim
On Wed, 31 Aug 2016 at 09:16 H. Hirzel hannes.hirzel@gmail.com wrote:
The class comment of QuickGuideMorph. It refers to the place where the exported SISS files of the projects are stored. The Squeakland image contains many examples of SISS files.
A BookMorph that holds QuickGuides.
World an AlignmentMorph (the flap) an AlignmentMorph a QuickGuideMorph (one page per guide, 54 pages. Page may be a stub if guide not in) a QuickGuideHolderMorph a BookMorph (4 pages) a PasteUpMorph (a page)
QuickGuides are stored in Contents/Resources/QuickGuides/ or by language in Contents/Resources/locale/<id>/QuickGuides/ (see guidePath)
Categories = OrderedCollection of {catKey. catTitle} where catKey appears at the start of a file name 'Menu' catTitle may be UTF-8 full name. PagesForCategory dictionary of (catKey -> list). list has elements {guideName. guideTitle}. guideName is last part of a file name and guideTitle may be in UTF-8.
On 8/31/16, H. Hirzel hannes.hirzel@gmail.com wrote:
An entry point for reading about SISS in the Squeakland Etoys 5.0 image
QuickGuideMorph>>
convertProjectsWithBooksToSISSIn: dir to: outDir
| p book | dir fileNames do: [:f | (f endsWith: '.pr') ifTrue: [ p _ ProjectLoading loadName: f stream: (dir
readOnlyFileNamed: f)
fromDirectory: dir withProjectView: nil. book _ p world submorphs detect: [:b | b
isMemberOf: BookMorph]
ifNone: [nil]. book ifNotNil: [ book hidePageControls. book storeAsDataStreamNamed: (outDir
fullNameFor: (f copyUpTo:
$.), '.sexp.data.gz'). ]. p okToChangeSilently. ]. ].
On 8/31/16, H. Hirzel hannes.hirzel@gmail.com wrote:
Hello
I understand that the SISS serialisation format has been used in the Etoys 5.0 image to store quick guides. It is a plain text format.
What does SISS stand for?
Browsing the Etoys 5.0 image .....
To use SISS classes need to implement a method
sissExportSpecification
For example for Workspace it is
sissExportSpecification
^ #(('contents' #sissGetContents) ('bindings' #bindings) ('acceptDroppedMorphs' #acceptsDroppingMorphForReference) )
And a method
sissWriteValue
Morph >> sissWriteValue sissWriteValue
self prepareToBeSaved.
or
Object>>sissWriteValue sissWriteValue "Override if you wish"
^self
PasteUpMorph>>sissWriteValue sissWriteValue "Override if you wish"
| new | self prepareToBeSaved. new _ self clone. new privateSubmorphs: (submorphs reject: [:e | (e isKindOf: SolidSugarSuppliesTab) or: [(e isKindOf: Viewer) or: [(e isKindOf: SugarNavTab) or: [((e isKindOf: SystemWindow)
and: [(e model isKindOf: Workspace)
not]) or: [(e isMemberOf:
FlapTab) and: [e isGlobalFlap]]]]]]).
new instVarNamed: 'presenter' put: nil. new instVarNamed: 'worldState' put: nil. new privateExtension: self extension copy. new extension removeOtherProperties. self extension otherProperties keysDo: [:sym | (#(commandKeySelectors lastKeystroke locked) includes:
sym) ifFalse: [
new setProperty: sym toValue: (self extension
valueOfProperty: sym)
]. ]. ^ new.
Form>> sissWriteValue
SISSDictionaryForScanning reduceFormDepth ifTrue: [ ^ (self asFormOfDepth: 8) hibernate. ]. ^ self hibernate.
An example of the format
MSExpParser test1
| str1 str2 str3 | str1 _ '(script :name "testscript1:" :type "Player" :player "12" (parameter :name "parameter" :type "Number" :position
"1") (sequence (loop :type "repeat" (initial (literal :value "0")) (increment (literal :value "1")) (test (send :type "Number" (selector :selector "+") (send :type "Number" (selector :getter "x") (literal :type "Player" :value "self")) (literal :type "Number" :value "1"))) (sequence (assign :type "Number" :updating "Incr:" :property "x" (literal :type "Player" :value "4") (send :type "Number" (selector :selector "+") (literal :type "Number" :value "244.0") (literal :type "Number" :value "1")))))))'.
I understand that the SISS format has been used successfully in the Etoys image to store quick guide projects.
As far as Project saving is concerned it there a difference between Etoy Quick guide projects and regular Squeak Morphic projects?
Where can I find more information on the SISS format?
Regards
Hannes