[squeak-dev] [ANN] Styled Text Editor for Cuis 4.0 Smalltalk

Juan Vuletich (mail lists) juanlists at jvuletich.org
Sat Apr 28 22:15:14 UTC 2012



Found the bug. It didn't happen always, only if there was a $. in some part of the path. It is fixed now on GitHub. 

Thanks, Bob! 

Cheers, 

Juan Vuletich

Quoting Bob Arning <arning315 at comcast.net>: 

> It only works if I manually remove the .object suffix from 
>
> ( 2012/04/22  04:43:50           13,060 )      Styled Text Editor Documentation.object
>
> I encountered it initially while doing:
>
> StyledTextInstaller new install
>
> which produced this:
>
> Halt
> 28 April 2012 3:24:02.533 pm
>
> VM: Mac OS - Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.138] Croquet Cog 4.0.2519
> Image: Cuis 4.0 [latest update: #1260]
>
> StandardFileStream class(Object)>>halt
>     Receiver: StandardFileStream
>     Arguments and temporary variables: 
>
>     Receiver's instance variables: 
>         superclass:     FileStream
>         methodDict:     a MethodDictionary(#actAsExecutor->(StandardFileStream>>#actAsExecu...etc...
>         format:     146
>         instanceVariables:     #('name' 'fileID' 'buffer1')
>         organization:     ('open/close' close closed ensureOpen open:forWrite: openReadOnly...etc...
>         subclasses:     nil
>         name:     #StandardFileStream
>         classPool:     a Dictionary(#Registry->a WeakRegistry(<this WeakRegistry is locked>...etc...
>         sharedPools:     nil
>
> StandardFileStream class>>fileDoesNotExistUserHandling:
>     Receiver: StandardFileStream
>     Arguments and temporary variables: 
>         fullFileName:     '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>         selection:     3
>         newName:     nil
>     Receiver's instance variables: 
>         superclass:     FileStream
>         methodDict:     a MethodDictionary(#actAsExecutor->(StandardFileStream>>#actAsExecu...etc...
>         format:     146
>         instanceVariables:     #('name' 'fileID' 'buffer1')
>         organization:     ('open/close' close closed ensureOpen open:forWrite: openReadOnly...etc...
>         subclasses:     nil
>         name:     #StandardFileStream
>         classPool:     a Dictionary(#Registry->a WeakRegistry(<this WeakRegistry is locked>...etc...
>         sharedPools:     nil
>
> FileDoesNotExistException>>defaultAction
>     Receiver: FileDoesNotExistException: '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>     Arguments and temporary variables: 
>
>     Receiver's instance variables: 
>         messageText:     nil
>         tag:     nil
>         signalContext:     FileDoesNotExistException(Exception)>>signal
>         handlerContext:     BlockClosure>>on:do:
>         outerContext:     nil
>         fileName:     '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>         readOnly:     nil
>
> UndefinedObject>>handleSignal:
>     Receiver: nil
>     Arguments and temporary variables: 
>         exception:     FileDoesNotExistException: '/Users/bob/squeak/Cuis4.0-1260/Documents...etc...
>     Receiver's instance variables: 
> nil
> FileDoesNotExistException(Exception)>>pass
>     Receiver: FileDoesNotExistException: '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>     Arguments and temporary variables: 
>
>     Receiver's instance variables: 
>         messageText:     nil
>         tag:     nil
>         signalContext:     FileDoesNotExistException(Exception)>>signal
>         handlerContext:     BlockClosure>>on:do:
>         outerContext:     nil
>         fileName:     '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>         readOnly:     nil
>
> [] in PasteUpMorph>>becomeActiveDuring:
>     Receiver: a PasteUpMorph(1622) [world]
>     Arguments and temporary variables: 
> <<error during printing>
>     Receiver's instance variables: 
>         bounds:     0 at 0 corner: 1462 at 957
>         owner:     nil
>         submorphs:     #(a SystemWindow(633)('Styled Text Editor Documentation') a Taskbar(...etc...
>         fullBounds:     0 at 0 corner: 1462 at 957
>         color:     (Color r: 0.7 g: 0.72 b: 0.83)
>         extension:     a MorphExtension (2543) [eventHandler = an EventHandler]  [other:  (...etc...
>         borderWidth:     0
>         borderColor:     (Color r: 0.5 g: 0.5 b: 0.5)
>         worldState:     a WorldState
>         backgroundImage:     Form(1462x957x32)
>         backgroundImageData:     #[255 216 255 236 0 17 68 117 99 107 121 0 1 0 4 0 0 0 81 ...etc...
>
> BlockClosure>>valueWithPossibleArgument:
>     Receiver: [closure] in PasteUpMorph>>becomeActiveDuring:
>     Arguments and temporary variables: 
>         anArg:     FileDoesNotExistException: '/Users/bob/squeak/Cuis4.0-1260/Documents/Mac...etc...
>     Receiver's instance variables: 
>         outerContext:     PasteUpMorph>>becomeActiveDuring:
>         startpc:     71
>         numArgs:     1
>
> [] in MethodContext(ContextPart)>>handleSignal:
>     Receiver: BlockClosure>>on:do:
>     Arguments and temporary variables: 
> <<error during printing>
>     Receiver's instance variables: 
>         sender:     PasteUpMorph>>becomeActiveDuring:
>         pc:     17
>         stackp:     3
>         method:     (BlockClosure>>#on:do: "a CompiledMethod(4063)")
>         closureOrNil:     nil
>         receiver:     [closure] in HandMorph>>sendFocusEvent:to:in:
>
> BlockClosure>>ensure:
>     Receiver: [closure] in MethodContext(ContextPart)>>handleSignal:
>     Arguments and temporary variables: 
>         aBlock:     [closure] in MethodContext(ContextPart)>>handleSignal:
>         complete:     nil
>         returnValue:     nil
>     Receiver's instance variables: 
>         outerContext:     MethodContext(ContextPart)>>handleSignal:
>         startpc:     98
>         numArgs:     0
>
> MethodContext(ContextPart)>>handleSignal:
>     Receiver: BlockClosure>>on:do:
>     Arguments and temporary variables: 
>         exception:     FileDoesNotExistException: '/Users/bob/squeak/Cuis4.0-1260/Documents...etc...
>         val:     nil
>     Receiver's instance variables: 
>         sender:     PasteUpMorph>>becomeActiveDuring:
>         pc:     17
>         stackp:     3
>         method:     (BlockClosure>>#on:do: "a CompiledMethod(4063)")
>         closureOrNil:     nil
>         receiver:     [closure] in HandMorph>>sendFocusEvent:to:in:
>
> MethodContext(ContextPart)>>handleSignal:
>     Receiver: BlockClosure>>on:do:
>     Arguments and temporary variables: 
>         exception:     FileDoesNotExistException: '/Users/bob/squeak/Cuis4.0-1260/Documents...etc...
>         val:     nil
>     Receiver's instance variables: 
>         sender:     SmalltalkEditor>>evaluateSelectionAndDo:ifFail:
>         pc:     17
>         stackp:     3
>         method:     (BlockClosure>>#on:do: "a CompiledMethod(4063)")
>         closureOrNil:     nil
>         receiver:     [closure] in SmalltalkEditor>>evaluateSelectionAndDo:ifFail:
>
> FileDoesNotExistException(Exception)>>signal
>     Receiver: FileDoesNotExistException: '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>     Arguments and temporary variables: 
>
>     Receiver's instance variables: 
>         messageText:     nil
>         tag:     nil
>         signalContext:     FileDoesNotExistException(Exception)>>signal
>         handlerContext:     BlockClosure>>on:do:
>         outerContext:     nil
>         fileName:     '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>         readOnly:     nil
>
> StandardFileStream class>>oldFileNamed:
>     Receiver: StandardFileStream
>     Arguments and temporary variables: 
>         fileName:     '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>         fullName:     '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>     Receiver's instance variables: 
>         superclass:     FileStream
>         methodDict:     a MethodDictionary(#actAsExecutor->(StandardFileStream>>#actAsExecu...etc...
>         format:     146
>         instanceVariables:     #('name' 'fileID' 'buffer1')
>         organization:     ('open/close' close closed ensureOpen open:forWrite: openReadOnly...etc...
>         subclasses:     nil
>         name:     #StandardFileStream
>         classPool:     a Dictionary(#Registry->a WeakRegistry(<this WeakRegistry is locked>...etc...
>         sharedPools:     nil
>
> FileStream class>>oldFileNamed:
>     Receiver: FileStream
>     Arguments and temporary variables: 
>         fileName:     '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>     Receiver's instance variables: 
>         superclass:     ReadWriteStream
>         methodDict:     a MethodDictionary(#asBinaryOrTextStream->(FileStream>>#asBinaryOrT...etc...
>         format:     140
>         instanceVariables:     #('rwmode')
>         organization:     ('accessing' contents contentsOfEntireFile directoryEntry mimeTyp...etc...
>         subclasses:     #(StandardFileStream)
>         name:     #FileStream
>         classPool:     a Dictionary()
>         sharedPools:     nil
>
> StyledTextModel class>>fromFileNamed:
>     Receiver: StyledTextModel
>     Arguments and temporary variables: 
>         fileName:     '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>         file:     nil
>         model:     #(nil)
>     Receiver's instance variables: 
>         superclass:     TextModel
>         methodDict:     a MethodDictionary(#actualContents:->(StyledTextModel>>#actualConte...etc...
>         format:     140
>         instanceVariables:     #('styleSet' 'fileName')
>         organization:     ('accessing' actualContents: basicActualContents: styleSet styleS...etc...
>         subclasses:     nil
>         name:     #StyledTextModel
>         classPool:     nil
>         sharedPools:     nil
>
> StyledTextInstaller>>open:
>     Receiver: a StyledTextInstaller
>     Arguments and temporary variables: 
>         name:     'Macbeth Example'
>         fileName:     '/Users/bob/squeak/Cuis4.0-1260/Documents/Macbeth Example'
>         model:     nil
>     Receiver's instance variables: 
> a StyledTextInstaller
> StyledTextInstaller>>openMacbethExample
>     Receiver: a StyledTextInstaller
>     Arguments and temporary variables: 
>         window:     nil
>     Receiver's instance variables: 
> a StyledTextInstaller
> StyledTextInstaller>>openExamples
>     Receiver: a StyledTextInstaller
>     Arguments and temporary variables: 
>
>     Receiver's instance variables: 
> a StyledTextInstaller
> StyledTextInstaller>>install
>     Receiver: a StyledTextInstaller
>     Arguments and temporary variables: 
>
>     Receiver's instance variables: 
> a StyledTextInstaller
>
> --- The full stack ---
> StandardFileStream class(Object)>>halt
> StandardFileStream class>>fileDoesNotExistUserHandling:
> FileDoesNotExistException>>defaultAction
> UndefinedObject>>handleSignal:
> FileDoesNotExistException(Exception)>>pass
> [] in PasteUpMorph>>becomeActiveDuring:
> BlockClosure>>valueWithPossibleArgument:
> [] in MethodContext(ContextPart)>>handleSignal:
> BlockClosure>>ensure:
> MethodContext(ContextPart)>>handleSignal:
> MethodContext(ContextPart)>>handleSignal:
> FileDoesNotExistException(Exception)>>signal
> StandardFileStream class>>oldFileNamed:
> FileStream class>>oldFileNamed:
> StyledTextModel class>>fromFileNamed:
> StyledTextInstaller>>open:
> StyledTextInstaller>>openMacbethExample
> StyledTextInstaller>>openExamples
> StyledTextInstaller>>install
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> UndefinedObject>>DoIt
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> [] in SmalltalkEditor>>evaluateSelectionAndDo:ifFail:
> BlockClosure>>on:do:
> SmalltalkEditor>>evaluateSelectionAndDo:ifFail:
> SmalltalkEditor>>doIt
> SmalltalkEditor>>doIt:
> SmalltalkEditor(TextEditor)>>dispatchOn:
> SmalltalkEditor(TextEditor)>>processKeyStroke:
> [] in InnerTextMorph>>processKeyStroke:
> InnerTextMorph>>handleInteraction:
> InnerTextMorph>>processKeyStroke:
> [] in InnerTextMorph>>keyStroke:
> SmalltalkCompleter(AutoCompleter)>>autoCompletionAround:keyStroke:
> InnerTextMorph>>keyStroke:
> InnerTextMorph>>handleKeystroke:
> KeyboardEvent>>sentTo:
> InnerTextMorph(Morph)>>handleEvent:
> InnerTextMorph(Morph)>>handleFocusEvent:
> [] in HandMorph>>sendFocusEvent:to:in:
> BlockClosure>>on:do:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:in:
> HandMorph>>sendKeyboardEvent:
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [] in WorldState>>doOneCycleNowFor:
> Array(SequenceableCollection)>>do:
> WorldState>>handsDo:
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> PasteUpMorph>>doOneCycle
> [] in ProjectX class>>spawnNewProcessX
> [] in BlockClosure>>newProcess
>
>
> On 4/28/12 1:30 PM, Juan Vuletich (mail lists) wrote: 
>
> > Hi Bob, 
> >
> > Evaluating 'StyledTextInstaller new openStyledTextEditorDocumentation' works for me... Does it fail for you? 
> >
> > Cheers, 
> >
> > Juan Vuletich
> >
> >
> > Quoting Bob Arning <arning315 at comcast.net>: 
> >
> > > I encountered a small glitch installing this - the example files had a .object suffix, but the code to open them did not.
> > >
> > > Cheers,
> > > Bob
> > >
> > > On 4/21/12 2:20 PM, Bernhard Pieber wrote: 
> > >
> > > > Dear Smalltalkers,I am very happy to announce that the Styled Text Editor for the brand new Cuis 4.0 is now available on GitHub [1]. The Styled Text Editor was first presented by me at last year's ESUG in Edinburgh [2]. Thanks to ESUG the presentation was recorded [3].The Styled Text Editor is a framework for rich text editing using styles as known from popular word processors like Apple Pages or Microsoft Word. It features paragraph and character styles, allowing easy text formatting using styles only. It is intended for applications where users need to work with good looking rich text in a simple and fast way.Rich text commonly refers to text with formatting information like different fonts, sizes, alignments, and emphasis. To make editing as simple as possible instead of individual formatting information end users apply styles to parts of the text. Editing is made fast by keyboard shortcuts for text navigation, selection, and styles selection. Where possible the feel of widely used rich text editors is supported.It includes many features like - numbered and bulleted list paragraph styles - support for images - multiple level undo and redo - text completion using various glossaries including a dictionary of English with about 166.000 words - RTF clipboard (on OS X VMs with the ClipboardExtendedPlugin)The Styled Text Editor is developed in Cuis with the plan to eventually port it to Squeak and Pharo. The development of the Styled Text Editor inspired many changes to Cuis itself, and It is the first package to use the brand new DVCS based development process for external packages for Cuis 4.0.The idea and funding was provided by me, Bernhard Pieber and my company Software Generation. The implementation was done by Juan Vuletich, the mastermind behind Cuis. Thanks Juan for the close cooperation. It was and still is great fun to work with you.We are looking forward to feedback from you. Fork it on GitHub [1], create issues and send us pull requests. ;-)Cheers, Bernhard Pieber[1] https://github.com/bpieber/Cuis-StyledTextEditor [2] http://www.esug.org/wiki/pier/Conferences/2011/Schedule-And-Talks/StyledTextEditor [3] http://www.youtube.com/watch?v=pUoVbvwspi8&list=PL813665D04A2E4C0A&index=7&feature=plpp_video
> >
> > Cheers,
> > Juan Vuletich

Cheers,
Juan Vuletich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20120428/31fce42d/attachment-0001.htm


More information about the Squeak-dev mailing list