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