[squeak-dev] Re: SISS serialisation format?
H. Hirzel
hannes.hirzel at gmail.com
Wed Aug 31 08:58:28 UTC 2016
Thank you Tim,
The reference is
http://files.squeak.org/etoys/6.0beta/Etoys6.0beta-7605-32bit/
(not file.squeak.org)
--Hannes
On 8/31/16, Tim Felgentreff <timfelgentreff at gmail.com> wrote:
> 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
>> >>
>> >
>>
>>
>
More information about the Squeak-dev
mailing list
|