Hi,
I enhanced Glamour with a first version of a Watcher browser that offers a behavior similar to Quick Preview on Mac.
For example, if you run the code below in a Moose image, and then press Ctrl+Shift+Space you will get a preview of source code in a window floating above the current one. See the attachment.
| browser |
browser := GLMTabulator new.
browser column: #methods.
browser transmit to: #methods; andShow: [:a | a list display: #methods; format: #selector ].
browser transmit from: #methods; toWatcher; andShow: [:a |
a smalltalkCode
smalltalkClass: [ :method | method methodClass ];
display: [:method | method getSource ] ].
browser openOn: GLMBrowser
To get it 100% useable I would need help with some Morphic magic:
- to make the Watcher window not appear in the taskbar
- to make the rendering of Watcher happen in another thread so that it does not block the current UI
Cheers,
Doru
--
www.tudorgirba.com
"Not knowing how to do something is not an argument for how it cannot be done."
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 767 by sean.p.d...(a)gmail.com: Book: presentation names are
confusing
http://code.google.com/p/moose-technology/issues/detail?id=767
For example, on
http://www.themoosebook.org/book/internals/glamour/presentations/action-list
ActionListPresentation is referenced, but the class name is
GLMActionListPresentation. So, when I pasted it into a workspace, it was
highlighted red as an unrecognized class. I think it'd be clearer to either
use full presentation class names or spaces between camel case
(e.g. "Action List Presentation").
The same is true for some of the other presentations e.g. DiffPresentation
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 644 by cy.delau...(a)gmail.com: A fly by help to show each time the
source code of an entity
http://code.google.com/p/moose-technology/issues/detail?id=644
Maybe it would be interesting when navigating in moose, to always have a
fly by help that show the source code of an element
Status: New
Owner: ----
CC: georgega...(a)gmail.com
Labels: Type-Defect Priority-Medium Component-ExternalTools
New issue 782 by tudor.gi...(a)gmail.com: inFamix should export basic metrics
for methods
http://code.google.com/p/moose-technology/issues/detail?id=782
inFamix should export basic method metrics:
- LOC (lines of code)
- NOS (number of statements)
- CYCLO (cyclomatic complexity)
Status: New
Owner: ----
CC: alexandr...(a)gmail.com
Labels: Type-Defect Priority-Medium Component-Roassal Milestone-4.7
New issue 797 by tudor.gi...(a)gmail.com: ROLine should support width
http://code.google.com/p/moose-technology/issues/detail?id=797
Right now we cannot assign the width of a line. We need this mechanism.
Hi,
In Pharo 1.4, Glamour has a problem with selecting an element in the tree when the element is nested.
The following snippet shows the problem:
browser := GLMBasicExamples new treeWithInitialSelection.
browser openOn: {
#first->{$a->{}. $c->{}. $d->{}}.
#second->{$e->{}. $f->{}}.
#third->{$h->{}}
}.
(browser panes first port: #selection) value: (browser panes first port: #entity) value first value first.
Cheers,
Doru
--
www.tudorgirba.com
"What we can governs what we wish."
Hi,
Here is how to install Athens (I also added this comment to the ConfigurationOfAthens):
1. Install Cairo on your machine
For example, for Mac, you open the terminal and run:
sudo port install -f cairo +universal
More information can be found here:
http://cairographics.org/download/
2. Download the NativeBoost enabled Cog VM from:
https://ci.lille.inria.fr/pharo/view/NativeBoost/
3. Get a Pharo image and run:
Gofer new
squeaksource: 'Athens';
package: 'ConfigurationOfAthens';
load.
(Smalltalk at: #ConfigurationOfAthens) loadDevelopment
4. Play with it. For example:
VGTigerDemo runDemo
Thanks Igor!
Cheers,
Doru
--
www.tudorgirba.com
"Live like you mean it."
You shouldnt use Brew, because it cant compile universal binaries.
Athens, with a cairo backend, uses NativeBoost which needs 32 bit
libraries, because CogGM is targeted to 32 bits.
I also tried with Brew, that's why i found out is hard to instruct
brew to compile universal binaries.
Fernando
On Fri, May 25, 2012 at 12:39 PM, Serge Stinckwich
<serge.stinckwich(a)gmail.com> wrote:
> On Fri, May 25, 2012 at 4:57 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>> Hi,
>>
>> Here is how to install Athens (I also added this comment to the ConfigurationOfAthens):
>>
>>
>> 1. Install Cairo on your machine
>> For example, for Mac, you open the terminal and run:
>> sudo port install -f cairo +universal
>>
>> More information can be found here:
>> http://cairographics.org/download/
>>
>>
>> 2. Download the NativeBoost enabled Cog VM from:
>> https://ci.lille.inria.fr/pharo/view/NativeBoost/
>>
>>
>> 3. Get a Pharo image and run:
>> Gofer new
>> Â Â Â Â squeaksource: 'Athens';
>> Â Â Â Â package: 'ConfigurationOfAthens';
>> Â Â Â Â load.
>> (Smalltalk at: #ConfigurationOfAthens) loadDevelopment
>>
>>
>> 4. Play with it. For example:
>> VGTigerDemo runDemo
>
> I install Cairo with brew on mac os x:
> brew install cairo
>
> And I got the following stack trace:
>
>
> 25 May 2012 5:37:03 pm
>
> VM: Mac OS - intel - 1074 - NBCoInterpreter
> NativeBoost-CogPlugin-IgorStasenko.9 uuid:
> 801decd2-0b42-fa49-bcea-d7564d516a1b May  1 2012,
> StackToRegisterMappingCogit VMMaker-oscog-EstebanLorenzano.158 uuid:
> 82eded98-68af-4c80-a472-4f6de293adcf May  1 2012,
> https://git.gitorious.org/cogvm/blessed.git Commit:
> 6aa3fd0f1188078d3167dec1a53031a61b97b688 Date: Tue May 1 20:28:14 2012
> +0200 By: Esteban Lorenzano <estebanlm(a)gmail.com>
> Image: Pharo1.4a [Latest update: #14418]
>
> NBFFICallout(Object)>>error:
> Â Â Â Â Receiver: a NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aString: Â Â Â Â 'function unavailable'
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â asm: Â Â an AJx86Assembler
> Â Â Â Â Â Â Â Â proxy: Â a NBInterpreterProxy
> Â Â Â Â Â Â Â Â options: Â Â Â Â a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
> #optReturnP...etc...
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â a NBFnSpec
> Â Â Â Â Â Â Â Â requestor: Â Â Â AthensCairoSurface class
> Â Â Â Â Â Â Â Â methodArgs: Â Â an OrderedCollection('aFormat' 'aWidth' 'aHeight')
> Â Â Â Â Â Â Â Â coercionMayFail: Â Â Â Â true
> Â Â Â Â Â Â Â Â callInfo: Â Â Â an AJCdeclCallInfo
>
> [:gen |
> fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module:
> aModuleNameOrHandle.
> Â Â Â Â fnAddress
> Â Â Â Â Â Â Â Â ifNil: [self error: 'function unavailable'].
> Â Â Â Â self mayCallback
> Â Â Â Â Â Â Â Â ifTrue: [asm push: fnAddress asUImm32;
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â mov: NativeBoost callgateFunctionAddress asUImm32 to: EAX;
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â call: EAX]
> Â Â Â Â Â Â Â Â ifFalse: [asm mov: fnAddress asUImm32 to: EAX;
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â call: EAX]] in NBFFICallout>>generateCall:module:
> Â Â Â Â Receiver: a NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aModuleNameOrHandle: Â Â a NBFFICallout
> Â Â Â Â Â Â Â Â fnAddress: Â Â Â '/opt/local/lib/libcairo.2.dylib'
> Â Â Â Â Â Â Â Â gen: Â Â #(nil)
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â asm: Â Â an AJx86Assembler
> Â Â Â Â Â Â Â Â proxy: Â a NBInterpreterProxy
> Â Â Â Â Â Â Â Â options: Â Â Â Â a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
> #optReturnP...etc...
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â a NBFnSpec
> Â Â Â Â Â Â Â Â requestor: Â Â Â AthensCairoSurface class
> Â Â Â Â Â Â Â Â methodArgs: Â Â an OrderedCollection('aFormat' 'aWidth' 'aHeight')
> Â Â Â Â Â Â Â Â coercionMayFail: Â Â Â Â true
> Â Â Â Â Â Â Â Â callInfo: Â Â Â an AJCdeclCallInfo
>
> BlockClosure>>valueWithPossibleArgs:
> Â Â Â Â Receiver: [:gen |
> fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module:
> aModuleNam...etc...
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â anArray: Â Â Â Â an Array(a NBFFICallout a NBInterpreterProxy an AJx86Assembler)
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â outerContext: Â NBFFICallout>>generateCall:module:
> Â Â Â Â Â Â Â Â startpc: Â Â Â Â 91
> Â Â Â Â Â Â Â Â numArgs: Â Â Â Â 1
>
> [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
> Â Â Â Â (self optEmitCall
> Â Â Â Â Â Â Â Â Â Â Â Â or: [self optNoCleanup])
> Â Â Â Â Â Â Â Â ifTrue: [call disableCleanup]] in [:call |
> self optNoAlignment
> Â Â Â Â Â Â Â Â ifTrue: [call alignment: 1].
> Â Â Â Â self pushArguments.
> Â Â Â Â coercionMayFail
> Â Â Â Â Â Â Â Â ifTrue: [proxy ifFailedJumpTo: self failedLabel].
> Â Â Â Â asm
> Â Â Â Â Â Â Â Â decorateWith: 'FFI: performing a call'
> Â Â Â Â Â Â Â Â while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
> Â Â Â Â Â Â Â Â Â Â Â Â (self optEmitCall
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â or: [self optNoCleanup])
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
> Â Â Â Â Receiver: a NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aFunctionBodyBlock: Â Â an AJCdeclCallInfo
> Â Â Â Â Â Â Â Â call: Â [:gen |
> fnAddress := requestor nbGetSymbolAddress: fnSpec functionName m...etc...
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â asm: Â Â an AJx86Assembler
> Â Â Â Â Â Â Â Â proxy: Â a NBInterpreterProxy
> Â Â Â Â Â Â Â Â options: Â Â Â Â a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
> #optReturnP...etc...
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â a NBFnSpec
> Â Â Â Â Â Â Â Â requestor: Â Â Â AthensCairoSurface class
> Â Â Â Â Â Â Â Â methodArgs: Â Â an OrderedCollection('aFormat' 'aWidth' 'aHeight')
> Â Â Â Â Â Â Â Â coercionMayFail: Â Â Â Â true
> Â Â Â Â Â Â Â Â callInfo: Â Â Â an AJCdeclCallInfo
>
> BlockClosure>>ensure:
> Â Â Â Â Receiver: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
> Â Â Â Â (self optEmitCall
> Â Â Â Â Â Â Â Â Â Â Â Â or: [...etc...
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [level := level - 1.
> Â Â Â Â self
> Â Â Â Â Â Â Â Â addInstruction: (AJInstructionDecoration n...etc...
> Â Â Â Â Â Â Â Â complete: Â Â Â nil
> Â Â Â Â Â Â Â Â returnValue: Â Â nil
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â outerContext: Â [:call |
> self optNoAlignment
> Â Â Â Â Â Â Â Â ifTrue: [call alignment: 1].
> Â Â Â Â sel...etc...
> Â Â Â Â Â Â Â Â startpc: Â Â Â Â 151
> Â Â Â Â Â Â Â Â numArgs: Â Â Â Â 0
>
> AJx86Assembler>>decorateWith:while:
> Â Â Â Â Receiver: an AJx86Assembler
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â annotation: Â Â 'FFI: performing a call'
> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
> Â Â Â Â (self o...etc...
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â instructions: Â <<error during printing>>
>
> [:call |
> self optNoAlignment
> Â Â Â Â Â Â Â Â ifTrue: [call alignment: 1].
> Â Â Â Â self pushArguments.
> Â Â Â Â coercionMayFail
> Â Â Â Â Â Â Â Â ifTrue: [proxy ifFailedJumpTo: self failedLabel].
> Â Â Â Â asm
> Â Â Â Â Â Â Â Â decorateWith: 'FFI: performing a call'
> Â Â Â Â Â Â Â Â while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
> Â Â Â Â Â Â Â Â Â Â Â Â (self optEmitCall
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â or: [self optNoCleanup])
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
> Â Â Â Â Receiver: a NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aFunctionBodyBlock: Â Â an AJCdeclCallInfo
> Â Â Â Â Â Â Â Â call: Â [:gen |
> fnAddress := requestor nbGetSymbolAddress: fnSpec functionName m...etc...
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â asm: Â Â an AJx86Assembler
> Â Â Â Â Â Â Â Â proxy: Â a NBInterpreterProxy
> Â Â Â Â Â Â Â Â options: Â Â Â Â a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
> #optReturnP...etc...
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â a NBFnSpec
> Â Â Â Â Â Â Â Â requestor: Â Â Â AthensCairoSurface class
> Â Â Â Â Â Â Â Â methodArgs: Â Â an OrderedCollection('aFormat' 'aWidth' 'aHeight')
> Â Â Â Â Â Â Â Â coercionMayFail: Â Â Â Â true
> Â Â Â Â Â Â Â Â callInfo: Â Â Â an AJCdeclCallInfo
>
> AJx86Assembler>>performingCall:in:
> Â Â Â Â Receiver: an AJx86Assembler
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â ci: Â Â an AJCdeclCallInfo
> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [:call |
> self optNoAlignment
> Â Â Â Â Â Â Â Â ifTrue: [call alignment: 1].
> Â Â Â Â self push...etc...
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â instructions: Â <<error during printing>>
>
> NBFFICallout>>foreignCall:
> Â Â Â Â Receiver: a NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [:call |
> self optNoAlignment
> Â Â Â Â Â Â Â Â ifTrue: [call alignment: 1].
> Â Â Â Â self push...etc...
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â asm: Â Â an AJx86Assembler
> Â Â Â Â Â Â Â Â proxy: Â a NBInterpreterProxy
> Â Â Â Â Â Â Â Â options: Â Â Â Â a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
> #optReturnP...etc...
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â a NBFnSpec
> Â Â Â Â Â Â Â Â requestor: Â Â Â AthensCairoSurface class
> Â Â Â Â Â Â Â Â methodArgs: Â Â an OrderedCollection('aFormat' 'aWidth' 'aHeight')
> Â Â Â Â Â Â Â Â coercionMayFail: Â Â Â Â true
> Â Â Â Â Â Â Â Â callInfo: Â Â Â an AJCdeclCallInfo
>
> NBFFICallout>>generateInstructions:
> Â Â Â Â Receiver: a NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aFunctionBodyBlock: Â Â [:gen |
> fnAddress := requestor nbGetSymbolAddress: fnSpec ...etc...
> Â Â Â Â Â Â Â Â instructions: Â nil
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â asm: Â Â an AJx86Assembler
> Â Â Â Â Â Â Â Â proxy: Â a NBInterpreterProxy
> Â Â Â Â Â Â Â Â options: Â Â Â Â a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
> #optReturnP...etc...
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â a NBFnSpec
> Â Â Â Â Â Â Â Â requestor: Â Â Â AthensCairoSurface class
> Â Â Â Â Â Â Â Â methodArgs: Â Â an OrderedCollection('aFormat' 'aWidth' 'aHeight')
> Â Â Â Â Â Â Â Â coercionMayFail: Â Â Â Â true
> Â Â Â Â Â Â Â Â callInfo: Â Â Â an AJCdeclCallInfo
>
> NBFFICallout>>generate:
> Â Â Â Â Receiver: a NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aFunctionBodyBlock: Â Â [:gen |
> fnAddress := requestor nbGetSymbolAddress: fnSpec ...etc...
> Â Â Â Â Â Â Â Â generatedCode: Â nil
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â asm: Â Â an AJx86Assembler
> Â Â Â Â Â Â Â Â proxy: Â a NBInterpreterProxy
> Â Â Â Â Â Â Â Â options: Â Â Â Â a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
> #optReturnP...etc...
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â a NBFnSpec
> Â Â Â Â Â Â Â Â requestor: Â Â Â AthensCairoSurface class
> Â Â Â Â Â Â Â Â methodArgs: Â Â an OrderedCollection('aFormat' 'aWidth' 'aHeight')
> Â Â Â Â Â Â Â Â coercionMayFail: Â Â Â Â true
> Â Â Â Â Â Â Â Â callInfo: Â Â Â an AJCdeclCallInfo
>
> NBFFICallout>>generateCall:module:
> Â Â Â Â Receiver: a NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â functionSpec: Â #(#AthensCairoSurface #cairo_image_surface_create
> #(#int #aFormat...etc...
> Â Â Â Â Â Â Â Â aModuleNameOrHandle: Â Â '/opt/local/lib/libcairo.2.dylib'
> Â Â Â Â Â Â Â Â fnAddress: Â Â Â #(nil)
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â asm: Â Â an AJx86Assembler
> Â Â Â Â Â Â Â Â proxy: Â a NBInterpreterProxy
> Â Â Â Â Â Â Â Â options: Â Â Â Â a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
> #optReturnP...etc...
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â a NBFnSpec
> Â Â Â Â Â Â Â Â requestor: Â Â Â AthensCairoSurface class
> Â Â Â Â Â Â Â Â methodArgs: Â Â an OrderedCollection('aFormat' 'aWidth' 'aHeight')
> Â Â Â Â Â Â Â Â coercionMayFail: Â Â Â Â true
> Â Â Â Â Â Â Â Â callInfo: Â Â Â an AJCdeclCallInfo
>
> [:gen | gen sender: sender;
> Â Â Â Â Â Â Â Â callType: self nbCallingConvention;
> Â Â Â Â Â Â Â Â generateCall: fnSpec module: self nbLibraryNameOrHandle] in
> AthensCairoSurface class(Object)>>nbCall:
> Â Â Â Â Receiver: AthensCairoSurface
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â a NBFFICallout
> Â Â Â Â Â Â Â Â sender: Â Â Â Â #(#AthensCairoSurface #cairo_image_surface_create #(#int
> #aFormat #, #i...etc...
> Â Â Â Â Â Â Â Â gen: Â Â AthensCairoSurface class>>primImage:width:height:
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â superclass: Â Â AthensSurface
> Â Â Â Â Â Â Â Â methodDict: Â Â a
> MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
> Â Â Â Â Â Â Â Â format: Â Â Â Â 140
> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('handle' 'context' 'builder' 'id')
> Â Â Â Â Â Â Â Â organization: Â ('converting' asAthensPaintOn: writeToPng:)
> ('as yet unclassified...etc...
> Â Â Â Â Â Â Â Â subclasses: Â Â {AthensCairoPDFSurface}
> Â Â Â Â Â Â Â Â name: Â #AthensCairoSurface
> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
> Â Â Â Â Â Â Â Â sharedPools: Â Â an OrderedCollection(AthensCairoDefs)
> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
> Â Â Â Â Â Â Â Â category: Â Â Â #'Athens-Cairo'
> Â Â Â Â Â Â Â Â traitComposition: Â Â Â TCairoLibrary
> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â a Set(#asForm #createFormPaint: #stride
> #setOperator: #writeToP...etc...
> Â Â Â Â Â Â Â Â uniqueSession: Â nil
> Â Â Â Â Â Â Â Â dispatch: Â Â Â nil
> Â Â Â Â Â Â Â Â dispatchStruct: Â Â Â Â nil
>
> NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
> Â Â Â Â Receiver: NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [:gen | gen sender: sender;
> Â Â Â Â Â Â Â Â callType: self nbCallingConvention;
> Â Â Â Â Â Â Â Â g...etc...
> Â Â Â Â Â Â Â Â retryCtx: Â Â Â AthensCairoSurface class>>primImage:width:height:
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â code: Â nil
> Â Â Â Â Â Â Â Â newMethod: Â Â Â nil
> Â Â Â Â Â Â Â Â args: Â nil
> Â Â Â Â Â Â Â Â i: Â Â Â nil
> Â Â Â Â Â Â Â Â iLimiT: Â Â Â Â nil
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â superclass: Â Â NBNativeCodeGen
> Â Â Â Â Â Â Â Â methodDict: Â Â a
> MethodDictionary(#aliasForType:->(NBFFICallout>>#aliasForType:
> "a...etc...
> Â Â Â Â Â Â Â Â format: Â Â Â Â 148
> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('fnSpec' 'requestor' 'methodArgs'
> 'coercionMayFail' 'callI...etc...
> Â Â Â Â Â Â Â Â organization: Â ('type aliases' aliasForType:)
> ('accessing' anonSpec: callType: c...etc...
> Â Â Â Â Â Â Â Â subclasses: Â Â {NBNativeFunctionGen}
> Â Â Â Â Â Â Â Â name: Â #NBFFICallout
> Â Â Â Â Â Â Â Â classPool: Â Â Â a Dictionary(#CustomErrorCodes->nil
> #CustomErrorMessages->nil #TypeA...etc...
> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
> Â Â Â Â Â Â Â Â category: Â Â Â #'NativeBoost-Core'
> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>
> NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
> Â Â Â Â Receiver: NBFFICallout
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aContext: Â Â Â AthensCairoSurface class>>primImage:width:height:
> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [:gen | gen sender: sender;
> Â Â Â Â Â Â Â Â callType: self nbCallingConvention;
> Â Â Â Â Â Â Â Â g...etc...
> Â Â Â Â Â Â Â Â method: Â Â Â Â (AthensCairoSurface class>>#primImage:width:height: "a
> CompiledMethod(4...etc...
> Â Â Â Â Â Â Â Â lastError: Â Â Â 502
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â superclass: Â Â NBNativeCodeGen
> Â Â Â Â Â Â Â Â methodDict: Â Â a
> MethodDictionary(#aliasForType:->(NBFFICallout>>#aliasForType:
> "a...etc...
> Â Â Â Â Â Â Â Â format: Â Â Â Â 148
> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('fnSpec' 'requestor' 'methodArgs'
> 'coercionMayFail' 'callI...etc...
> Â Â Â Â Â Â Â Â organization: Â ('type aliases' aliasForType:)
> ('accessing' anonSpec: callType: c...etc...
> Â Â Â Â Â Â Â Â subclasses: Â Â {NBNativeFunctionGen}
> Â Â Â Â Â Â Â Â name: Â #NBFFICallout
> Â Â Â Â Â Â Â Â classPool: Â Â Â a Dictionary(#CustomErrorCodes->nil
> #CustomErrorMessages->nil #TypeA...etc...
> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
> Â Â Â Â Â Â Â Â category: Â Â Â #'NativeBoost-Core'
> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>
> AthensCairoSurface class(Object)>>nbCall:
> Â Â Â Â Receiver: AthensCairoSurface
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â fnSpec: Â Â Â Â #(#AthensCairoSurface #cairo_image_surface_create #(#int
> #aFormat #, #i...etc...
> Â Â Â Â Â Â Â Â sender: Â Â Â Â AthensCairoSurface class>>primImage:width:height:
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â superclass: Â Â AthensSurface
> Â Â Â Â Â Â Â Â methodDict: Â Â a
> MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
> Â Â Â Â Â Â Â Â format: Â Â Â Â 140
> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('handle' 'context' 'builder' 'id')
> Â Â Â Â Â Â Â Â organization: Â ('converting' asAthensPaintOn: writeToPng:)
> ('as yet unclassified...etc...
> Â Â Â Â Â Â Â Â subclasses: Â Â {AthensCairoPDFSurface}
> Â Â Â Â Â Â Â Â name: Â #AthensCairoSurface
> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
> Â Â Â Â Â Â Â Â sharedPools: Â Â an OrderedCollection(AthensCairoDefs)
> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
> Â Â Â Â Â Â Â Â category: Â Â Â #'Athens-Cairo'
> Â Â Â Â Â Â Â Â traitComposition: Â Â Â TCairoLibrary
> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â a Set(#asForm #createFormPaint: #stride
> #setOperator: #writeToP...etc...
> Â Â Â Â Â Â Â Â uniqueSession: Â nil
> Â Â Â Â Â Â Â Â dispatch: Â Â Â nil
> Â Â Â Â Â Â Â Â dispatchStruct: Â Â Â Â nil
>
> AthensCairoSurface class>>primImage:width:height:
> Â Â Â Â Receiver: AthensCairoSurface
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aFormat: Â Â Â Â 0
> Â Â Â Â Â Â Â Â aWidth: Â Â Â Â 800
> Â Â Â Â Â Â Â Â aHeight: Â Â Â Â 800
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â superclass: Â Â AthensSurface
> Â Â Â Â Â Â Â Â methodDict: Â Â a
> MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
> Â Â Â Â Â Â Â Â format: Â Â Â Â 140
> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('handle' 'context' 'builder' 'id')
> Â Â Â Â Â Â Â Â organization: Â ('converting' asAthensPaintOn: writeToPng:)
> ('as yet unclassified...etc...
> Â Â Â Â Â Â Â Â subclasses: Â Â {AthensCairoPDFSurface}
> Â Â Â Â Â Â Â Â name: Â #AthensCairoSurface
> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
> Â Â Â Â Â Â Â Â sharedPools: Â Â an OrderedCollection(AthensCairoDefs)
> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
> Â Â Â Â Â Â Â Â category: Â Â Â #'Athens-Cairo'
> Â Â Â Â Â Â Â Â traitComposition: Â Â Â TCairoLibrary
> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â a Set(#asForm #createFormPaint: #stride
> #setOperator: #writeToP...etc...
> Â Â Â Â Â Â Â Â uniqueSession: Â nil
> Â Â Â Â Â Â Â Â dispatch: Â Â Â nil
> Â Â Â Â Â Â Â Â dispatchStruct: Â Â Â Â nil
>
> AthensCairoSurface class>>extent:format:
> Â Â Â Â Receiver: AthensCairoSurface
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â anExtent: Â Â Â (800@800)
> Â Â Â Â Â Â Â Â aFormat: Â Â Â Â 0
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â superclass: Â Â AthensSurface
> Â Â Â Â Â Â Â Â methodDict: Â Â a
> MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
> Â Â Â Â Â Â Â Â format: Â Â Â Â 140
> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('handle' 'context' 'builder' 'id')
> Â Â Â Â Â Â Â Â organization: Â ('converting' asAthensPaintOn: writeToPng:)
> ('as yet unclassified...etc...
> Â Â Â Â Â Â Â Â subclasses: Â Â {AthensCairoPDFSurface}
> Â Â Â Â Â Â Â Â name: Â #AthensCairoSurface
> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
> Â Â Â Â Â Â Â Â sharedPools: Â Â an OrderedCollection(AthensCairoDefs)
> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
> Â Â Â Â Â Â Â Â category: Â Â Â #'Athens-Cairo'
> Â Â Â Â Â Â Â Â traitComposition: Â Â Â TCairoLibrary
> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â a Set(#asForm #createFormPaint: #stride
> #setOperator: #writeToP...etc...
> Â Â Â Â Â Â Â Â uniqueSession: Â nil
> Â Â Â Â Â Â Â Â dispatch: Â Â Â nil
> Â Â Â Â Â Â Â Â dispatchStruct: Â Â Â Â nil
>
> AthensCairoSurface class>>extent:
> Â Â Â Â Receiver: AthensCairoSurface
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â anExtent: Â Â Â (800@800)
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â superclass: Â Â AthensSurface
> Â Â Â Â Â Â Â Â methodDict: Â Â a
> MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
> Â Â Â Â Â Â Â Â format: Â Â Â Â 140
> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('handle' 'context' 'builder' 'id')
> Â Â Â Â Â Â Â Â organization: Â ('converting' asAthensPaintOn: writeToPng:)
> ('as yet unclassified...etc...
> Â Â Â Â Â Â Â Â subclasses: Â Â {AthensCairoPDFSurface}
> Â Â Â Â Â Â Â Â name: Â #AthensCairoSurface
> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
> Â Â Â Â Â Â Â Â sharedPools: Â Â an OrderedCollection(AthensCairoDefs)
> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
> Â Â Â Â Â Â Â Â category: Â Â Â #'Athens-Cairo'
> Â Â Â Â Â Â Â Â traitComposition: Â Â Â TCairoLibrary
> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â a Set(#asForm #createFormPaint: #stride
> #setOperator: #writeToP...etc...
> Â Â Â Â Â Â Â Â uniqueSession: Â nil
> Â Â Â Â Â Â Â Â dispatch: Â Â Â nil
> Â Â Â Â Â Â Â Â dispatchStruct: Â Â Â Â nil
>
> VGTigerDemo>>initialize
> Â Â Â Â Receiver: a VGTigerDemo
> Â Â Â Â Arguments and temporary variables:
>
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â surface: Â Â Â Â nil
>
> VGTigerDemo class(Behavior)>>new
> Â Â Â Â Receiver: VGTigerDemo
> Â Â Â Â Arguments and temporary variables:
>
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â superclass: Â Â Object
> Â Â Â Â Â Â Â Â methodDict: Â Â a
> MethodDictionary(#convertPathData2->(VGTigerDemo>>#convertPathDat...etc...
> Â Â Â Â Â Â Â Â format: Â Â Â Â 132
> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('surface')
> Â Â Â Â Â Â Â Â organization: Â ('as yet unclassified' convertPathData2 initialize runDemo)
>
> Â Â Â Â Â Â Â Â subclasses: Â Â nil
> Â Â Â Â Â Â Â Â name: Â #VGTigerDemo
> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
> Â Â Â Â Â Â Â Â category: Â Â Â #'Athens-Examples'
> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>
> VGTigerDemo class>>runDemo
> Â Â Â Â Receiver: VGTigerDemo
> Â Â Â Â Arguments and temporary variables:
>
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â superclass: Â Â Object
> Â Â Â Â Â Â Â Â methodDict: Â Â a
> MethodDictionary(#convertPathData2->(VGTigerDemo>>#convertPathDat...etc...
> Â Â Â Â Â Â Â Â format: Â Â Â Â 132
> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('surface')
> Â Â Â Â Â Â Â Â organization: Â ('as yet unclassified' convertPathData2 initialize runDemo)
>
> Â Â Â Â Â Â Â Â subclasses: Â Â nil
> Â Â Â Â Â Â Â Â name: Â #VGTigerDemo
> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
> Â Â Â Â Â Â Â Â category: Â Â Â #'Athens-Examples'
> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>
> UndefinedObject>>DoIt
> Â Â Â Â Receiver: nil
> Â Â Â Â Arguments and temporary variables:
>
> Â Â Â Â Receiver's instance variables:
> nil
>
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> Â Â Â Â Receiver: a Compiler
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â textOrStream: Â a ReadWriteStream
> Â Â Â Â Â Â Â Â aContext: Â Â Â nil
> Â Â Â Â Â Â Â Â receiver: Â Â Â nil
> Â Â Â Â Â Â Â Â aRequestor: Â Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â failBlock: Â Â Â [self morph flash.
> Â Â Â Â ^ nil]
> Â Â Â Â Â Â Â Â logFlag: Â Â Â Â true
> Â Â Â Â Â Â Â Â methodNode: Â Â DoIt
> Â Â Â Â ^ VGTigerDemo runDemo
> Â Â Â Â Â Â Â Â method: Â Â Â Â (UndefinedObject>>#DoIt "a CompiledMethod(926679040)")
> Â Â Â Â Â Â Â Â value: Â nil
> Â Â Â Â Â Â Â Â toLog: Â nil
> Â Â Â Â Â Â Â Â itsSelection: Â nil
> Â Â Â Â Â Â Â Â itsSelectionString: Â Â nil
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â sourceStream: Â a ReadWriteStream
> Â Â Â Â Â Â Â Â requestor: Â Â Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â class: Â UndefinedObject
> Â Â Â Â Â Â Â Â category: Â Â Â nil
> Â Â Â Â Â Â Â Â context: Â Â Â Â nil
> Â Â Â Â Â Â Â Â parser: Â Â Â Â a Parser
>
> [rcvr class evaluatorClass new
> Â Â Â Â Â Â Â Â evaluate: self selectionForDoitAsStream
> Â Â Â Â Â Â Â Â in: ctxt
> Â Â Â Â Â Â Â Â to: rcvr
> Â Â Â Â Â Â Â Â notifying: self morph
> Â Â Â Â Â Â Â Â ifFail: [self morph flash.
> Â Â Â Â Â Â Â Â Â Â Â Â ^ nil]
> Â Â Â Â Â Â Â Â logged: true] in SmalltalkEditor>>evaluateSelectionAndDo:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â rcvr: Â nil
> Â Â Â Â Â Â Â Â ctxt: Â nil
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> BlockClosure>>on:do:
> Â Â Â Â Receiver: [rcvr class evaluatorClass new
> Â Â Â Â Â Â Â Â evaluate: self selectionForDoitAsStream
> Â Â Â Â Â Â Â Â in: ctxt
> Â Â Â Â Â Â Â Â to: ...etc...
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â exception: Â Â Â OutOfScopeNotification
> Â Â Â Â Â Â Â Â handlerAction: Â [:ex | ex resume: true]
> Â Â Â Â Â Â Â Â handlerActive: Â true
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â outerContext: Â SmalltalkEditor>>evaluateSelectionAndDo:
> Â Â Â Â Â Â Â Â startpc: Â Â Â Â 110
> Â Â Â Â Â Â Â Â numArgs: Â Â Â Â 0
>
> SmalltalkEditor>>evaluateSelectionAndDo:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [:result | result]
> Â Â Â Â Â Â Â Â result: Â Â Â Â nil
> Â Â Â Â Â Â Â Â rcvr: Â nil
> Â Â Â Â Â Â Â Â ctxt: Â nil
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> SmalltalkEditor>>evaluateSelection
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
>
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> SmalltalkEditor>>doIt
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
>
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> SmalltalkEditor>>doIt:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aKeyboardEvent: Â Â Â Â [keystroke '<Cmd-d>']
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aKeyboardEvent: Â Â Â Â [keystroke '<Cmd-d>']
> Â Â Â Â Â Â Â Â aBoolean: Â Â Â false
> Â Â Â Â Â Â Â Â return: Â Â Â Â [:val | ^ val]
> Â Â Â Â Â Â Â Â asciiValue: Â Â 101
> Â Â Â Â Â Â Â Â actions: Â Â Â Â #(#noop: #cursorHome: #noop: #noop: #cursorEnd: #noop:
> #noop: #noop: #...etc...
> Â Â Â Â Â Â Â Â action: Â Â Â Â #doIt:
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> SmalltalkEditor(TextEditor)>>dispatchCommandOn:return:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aKeyboardEvent: Â Â Â Â [keystroke '<Cmd-d>']
> Â Â Â Â Â Â Â Â return: Â Â Â Â [:val | ^ val]
> Â Â Â Â Â Â Â Â asciiValue: Â Â 100
> Â Â Â Â Â Â Â Â honorCommandKeys: Â Â Â true
> Â Â Â Â Â Â Â Â char: Â nil
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> SmalltalkEditor(TextEditor)>>dispatchOn:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aKeyboardEvent: Â Â Â Â [keystroke '<Cmd-d>']
> Â Â Â Â Â Â Â Â char: Â nil
> Â Â Â Â Â Â Â Â return: Â Â Â Â [:val | ^ val]
> Â Â Â Â Â Â Â Â keyEvents: Â Â Â nil
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> [self dispatchOn: aKeyboardEvent] in SmalltalkEditor(TextEditor)>>keystroke:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aKeyboardEvent: Â Â Â Â [keystroke '<Cmd-d>']
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> SmalltalkEditor(TextEditor)>>handleKeystrokeAction:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [self dispatchOn: aKeyboardEvent]
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â anAction: Â Â Â [self dispatchOn: aKeyboardEvent]
> Â Â Â Â Â Â Â Â aKeyboardEvent: Â Â Â Â [keystroke '<Cmd-d>']
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> SmalltalkEditor(TextEditor)>>keystroke:
> Â Â Â Â Receiver: a SmalltalkEditor
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â aKeyboardEvent: Â Â Â Â [keystroke '<Cmd-d>']
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â morph: Â a TextMorphForEditView(741605376)
> Â Â Â Â Â Â Â Â selectionShowing: Â Â Â true
> Â Â Â Â Â Â Â Â model: Â a Workspace
> Â Â Â Â Â Â Â Â editingState: Â a SmalltalkEditingState
>
> [editor keystroke: evt] in [| action |
> evt keyValue = 13
> Â Â Â Â Â Â Â Â ifTrue: [action := self crAction.
> Â Â Â Â Â Â Â Â Â Â Â Â action
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNotNil: [evt hand newKeyboardFocus: nil.
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ^ action value]].
> Â Â Â Â self
> Â Â Â Â Â Â Â Â handleInteraction: [editor keystroke: evt].
> Â Â Â Â self updateFromParagraph.
> Â Â Â Â super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
> Â Â Â Â Receiver: a TextMorphForEditView(741605376)
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â evt: Â Â [keystroke '<Cmd-d>']
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â bounds: Â Â Â Â (0@0) corner: (473@18)
> Â Â Â Â Â Â Â Â owner: Â a TransformMorph(38535168)
> Â Â Â Â Â Â Â Â submorphs: Â Â Â #()
> Â Â Â Â Â Â Â Â fullBounds: Â Â (0@0) corner: (473@18)
> Â Â Â Â Â Â Â Â color: Â Color black
> Â Â Â Â Â Â Â Â extension: Â Â Â a MorphExtension (824180736) [other: Â (blinkStart ->
> 1085881) (myDep...etc...
> Â Â Â Â Â Â Â Â borderWidth: Â Â 0
> Â Â Â Â Â Â Â Â borderColor: Â Â Color black
> Â Â Â Â Â Â Â Â textStyle: Â Â Â a TextStyle Bitmap DejaVu Sans 9
> Â Â Â Â Â Â Â Â text: Â a Text for 'VGTigerDemo runDemo'
> Â Â Â Â Â Â Â Â wrapFlag: Â Â Â true
> Â Â Â Â Â Â Â Â paragraph: Â Â Â a Paragraph
> Â Â Â Â Â Â Â Â editor: Â Â Â Â a SmalltalkEditor
> Â Â Â Â Â Â Â Â container: Â Â Â nil
> Â Â Â Â Â Â Â Â predecessor: Â Â nil
> Â Â Â Â Â Â Â Â successor: Â Â Â nil
> Â Â Â Â Â Â Â Â backgroundColor: Â Â Â Â nil
> Â Â Â Â Â Â Â Â margins: Â Â Â Â (0@0) corner: (0@0)
> Â Â Â Â Â Â Â Â editView: Â Â Â a PluggableTextMorph(838860800)
> Â Â Â Â Â Â Â Â acceptOnCR: Â Â false
> Â Â Â Â Â Â Â Â autoAccept: Â Â false
> Â Â Â Â Â Â Â Â acceptOnFocusChange: Â Â false
> Â Â Â Â Â Â Â Â selectionColor: Â Â Â Â nil
>
> TextMorphForEditView(TextMorph)>>handleInteraction:
> Â Â Â Â Receiver: a TextMorphForEditView(741605376)
> Â Â Â Â Arguments and temporary variables:
> Â Â Â Â Â Â Â Â interactionBlock: Â Â Â [editor keystroke: evt]
> Â Â Â Â Â Â Â Â oldEditor: Â Â Â a SmalltalkEditor
> Â Â Â Â Â Â Â Â oldParagraph: Â a Paragraph
> Â Â Â Â Â Â Â Â oldText: Â Â Â Â a Text for 'VGTigerDemo runDemo'
> Â Â Â Â Receiver's instance variables:
> Â Â Â Â Â Â Â Â bounds: Â Â Â Â (0@0) corner: (473@18)
> Â Â Â Â Â Â Â Â owner: Â a TransformMorph(38535168)
> Â Â Â Â Â Â Â Â submorphs: Â Â Â #()
> Â Â Â Â Â Â Â Â fullBounds: Â Â (0@0) corner: (473@18)
> Â Â Â Â Â Â Â Â color: Â Color black
> Â Â Â Â Â Â Â Â extension: Â Â Â a MorphExtension (824180736) [other: Â (blinkStart ->
> 1085881) (myDep...etc...
> Â Â Â Â Â Â Â Â borderWidth: Â Â 0
> Â Â Â Â Â Â Â Â borderColor: Â Â Color black
> Â Â Â Â Â Â Â Â textStyle: Â Â Â a TextStyle Bitmap DejaVu Sans 9
> Â Â Â Â Â Â Â Â text: Â a Text for 'VGTigerDemo runDemo'
> Â Â Â Â Â Â Â Â wrapFlag: Â Â Â true
> Â Â Â Â Â Â Â Â paragraph: Â Â Â a Paragraph
> Â Â Â Â Â Â Â Â editor: Â Â Â Â a SmalltalkEditor
> Â Â Â Â Â Â Â Â container: Â Â Â nil
> Â Â Â Â Â Â Â Â predecessor: Â Â nil
> Â Â Â Â Â Â Â Â successor: Â Â Â nil
> Â Â Â Â Â Â Â Â backgroundColor: Â Â Â Â nil
> Â Â Â Â Â Â Â Â margins: Â Â Â Â (0@0) corner: (0@0)
> Â Â Â Â Â Â Â Â editView: Â Â Â a PluggableTextMorph(838860800)
> Â Â Â Â Â Â Â Â acceptOnCR: Â Â false
> Â Â Â Â Â Â Â Â autoAccept: Â Â false
> Â Â Â Â Â Â Â Â acceptOnFocusChange: Â Â false
> Â Â Â Â Â Â Â Â selectionColor: Â Â Â Â nil
>
>
> --- The full stack ---
> NBFFICallout(Object)>>error:
> [:gen |
> fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module:
> aModuleNameOrHandle.
> Â Â Â Â fnAddress
> Â Â Â Â Â Â Â Â ifNil: [self error: 'function unavailable'].
> Â Â Â Â self mayCallback
> Â Â Â Â Â Â Â Â ifTrue: [asm push: fnAddress asUImm32;
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â mov: NativeBoost callgateFunctionAddress asUImm32 to: EAX;
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â call: EAX]
> Â Â Â Â Â Â Â Â ifFalse: [asm mov: fnAddress asUImm32 to: EAX;
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â call: EAX]] in NBFFICallout>>generateCall:module:
> BlockClosure>>valueWithPossibleArgs:
> [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
> Â Â Â Â (self optEmitCall
> Â Â Â Â Â Â Â Â Â Â Â Â or: [self optNoCleanup])
> Â Â Â Â Â Â Â Â ifTrue: [call disableCleanup]] in [:call |
> self optNoAlignment
> Â Â Â Â Â Â Â Â ifTrue: [call alignment: 1].
> Â Â Â Â self pushArguments.
> Â Â Â Â coercionMayFail
> Â Â Â Â Â Â Â Â ifTrue: [proxy ifFailedJumpTo: self failedLabel].
> Â Â Â Â asm
> Â Â Â Â Â Â Â Â decorateWith: 'FFI: performing a call'
> Â Â Â Â Â Â Â Â while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
> Â Â Â Â Â Â Â Â Â Â Â Â (self optEmitCall
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â or: [self optNoCleanup])
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
> BlockClosure>>ensure:
> AJx86Assembler>>decorateWith:while:
> [:call |
> self optNoAlignment
> Â Â Â Â Â Â Â Â ifTrue: [call alignment: 1].
> Â Â Â Â self pushArguments.
> Â Â Â Â coercionMayFail
> Â Â Â Â Â Â Â Â ifTrue: [proxy ifFailedJumpTo: self failedLabel].
> Â Â Â Â asm
> Â Â Â Â Â Â Â Â decorateWith: 'FFI: performing a call'
> Â Â Â Â Â Â Â Â while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
> Â Â Â Â Â Â Â Â Â Â Â Â (self optEmitCall
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â or: [self optNoCleanup])
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
> AJx86Assembler>>performingCall:in:
> NBFFICallout>>foreignCall:
> NBFFICallout>>generateInstructions:
> NBFFICallout>>generate:
> NBFFICallout>>generateCall:module:
> [:gen | gen sender: sender;
> Â Â Â Â Â Â Â Â callType: self nbCallingConvention;
> Â Â Â Â Â Â Â Â generateCall: fnSpec module: self nbLibraryNameOrHandle] in
> AthensCairoSurface class(Object)>>nbCall:
> NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
> NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
> AthensCairoSurface class(Object)>>nbCall:
> AthensCairoSurface class>>primImage:width:height:
> AthensCairoSurface class>>extent:format:
> AthensCairoSurface class>>extent:
> VGTigerDemo>>initialize
> VGTigerDemo class(Behavior)>>new
> VGTigerDemo class>>runDemo
> UndefinedObject>>DoIt
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> [rcvr class evaluatorClass new
> Â Â Â Â Â Â Â Â evaluate: self selectionForDoitAsStream
> Â Â Â Â Â Â Â Â in: ctxt
> Â Â Â Â Â Â Â Â to: rcvr
> Â Â Â Â Â Â Â Â notifying: self morph
> Â Â Â Â Â Â Â Â ifFail: [self morph flash.
> Â Â Â Â Â Â Â Â Â Â Â Â ^ nil]
> Â Â Â Â Â Â Â Â logged: true] in SmalltalkEditor>>evaluateSelectionAndDo:
> BlockClosure>>on:do:
> SmalltalkEditor>>evaluateSelectionAndDo:
> SmalltalkEditor>>evaluateSelection
> SmalltalkEditor>>doIt
> SmalltalkEditor>>doIt:
> SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return:
> SmalltalkEditor(TextEditor)>>dispatchCommandOn:return:
> SmalltalkEditor(TextEditor)>>dispatchOn:
> [self dispatchOn: aKeyboardEvent] in SmalltalkEditor(TextEditor)>>keystroke:
> SmalltalkEditor(TextEditor)>>handleKeystrokeAction:
> SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent:
> SmalltalkEditor(TextEditor)>>keystroke:
> [editor keystroke: evt] in [| action |
> evt keyValue = 13
> Â Â Â Â Â Â Â Â ifTrue: [action := self crAction.
> Â Â Â Â Â Â Â Â Â Â Â Â action
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNotNil: [evt hand newKeyboardFocus: nil.
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ^ action value]].
> Â Â Â Â self
> Â Â Â Â Â Â Â Â handleInteraction: [editor keystroke: evt].
> Â Â Â Â self updateFromParagraph.
> Â Â Â Â super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
> TextMorphForEditView(TextMorph)>>handleInteraction:
> Â - - - - - - - - - - - - - - -
> Â Â Â Â Â Â Â Â Â Â Â Â - - - - - - - - - - - - - - - - - -
> TextMorphForEditView>>handleInteraction:
> [| action |
> evt keyValue = 13
> Â Â Â Â Â Â Â Â ifTrue: [action := self crAction.
> Â Â Â Â Â Â Â Â Â Â Â Â action
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNotNil: [evt hand newKeyboardFocus: nil.
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ^ action value]].
> Â Â Â Â self
> Â Â Â Â Â Â Â Â handleInteraction: [editor keystroke: evt].
> Â Â Â Â self updateFromParagraph.
> Â Â Â Â super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
> ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
> ToolRegistry>>codeCompletionAround:textMorph:keyStroke:
> SmalltalkEditor>>codeCompletionAround:textMorph:keyStroke:
> TextMorphForEditView(TextMorph)>>keyStroke:
> TextMorphForEditView>>keyStroke:
> TextMorphForEditView(TextMorph)>>handleKeystroke:
> KeyboardEvent>>sentTo:
> TextMorphForEditView(Morph)>>handleEvent:
> TextMorphForEditView(Morph)>>handleFocusEvent:
> [ActiveHand := self.
> Â Â Â Â ActiveEvent := anEvent.
> Â Â Â Â result := focusHolder
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â handleFocusEvent: (anEvent
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â transformedBy: (focusHolder transformedFrom: self))] in
> HandMorph>>sendFocusEvent:to:clear:
> [aBlock value] in PasteUpMorph>>becomeActiveDuring:
> BlockClosure>>on:do:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:clear:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendKeyboardEvent:
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [:h |
> ActiveHand := h.
> Â Â Â Â h processEvents.
> Â Â Â Â ActiveHand := nil] in WorldState>>doOneCycleNowFor:
> Array(SequenceableCollection)>>do:
> WorldState>>handsDo:
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> PasteUpMorph>>doOneCycle
> [[World doOneCycle.
> Â Â Â Â Processor yield.
> Â Â Â Â false] whileFalse.
> Â Â Â Â nil] in MorphicUIManager>>spawnNewProcess
> [self value.
> Â Â Â Â Processor terminateActive] in BlockClosure>>newProcess
>
>
>
> --
> Serge Stinckwich
> UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam
> Every DSL ends up being Smalltalk
> http://doesnotunderstand.org/
>
Hi!
I've spent a bit of time in trying to port DSM to Roassal. Unfortunately not everything goes as smooth as I wished. The task is clearly doable, but it is a bit more than merely changing MOViewRenderer for ROMondrianViewBuilder.
For example, there is code like:
shapeOfDetailedHeader
^ MOFixedRectangleShape new width: 36; height: 10; withoutBorder; fontSize: 8; fontFamily: 'Accuny'
In Roassal, the width and the height is defined on the element, and not the shape. A ROBox does not know how to display text, it has to be added a ROLabel in it.
Well... I feel the safer is to revert what I have done yesterday, and leaving DSM use Mondrian. Else if someone wants to rethink DSM a bit.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi guys
I would like to take the opportunity that we will be present at PharoConf to organize a Moose
meeting.
- I would like to see how we (INRIA) can allocate some time to improve the configuration of moose.
- and I would like to come with 3 other items where we will invest
- Arki
- so what are the other two that are important for the community?
Stef