[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
|