[squeak-dev] Re: SISS serialisation format?

Tim Felgentreff timfelgentreff at gmail.com
Wed Aug 31 07:23:24 UTC 2016


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 at 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 at 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 at 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
> >>
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20160831/01c6da3f/attachment.htm


More information about the Squeak-dev mailing list