Photo gallery?
by Damien Cassou
Hi,
is there any photo gallery available for Pier? I mean a widget where I
could upload pictures and they are rendered in a nice way. I started
one 4 years ago but I abandoned it.
Bye
--
Damien Cassou
http://damiencassou.seasidehosting.st
5 years, 4 months
pier2 loaded successfully on Pharo 1.4
by Esteban Lorenzano
Hi,
with seaside 3.0 fixed (as I send in another mail), I can report that pier2 loads and runs out of the box on pharo 1.4
best,
Esteban
11 years, 4 months
Magritte "First Example" in Seaside Book
by Bruce Prior
I have been working on understanding Magritte and tried the First
Example in the Seaside Book (Lulu publication, page 358, section 24.2).
The Example failed to run, apparently because the method keyword,
accessor:, in the descriptions wasn't recognized. When I added my own
getters and setters for the instance variable names (street, plz, etc)
everything in the Example worked fine.
Is the code in the Example perhaps outdated? Could someone suggest what
method I might use? I tried asAccessor: and selectorAccessor: with no
success.
11 years, 4 months
PRContext, PRContextFilter, cookies enabled, component creation and Restful urls
by Nick Ager
Hi,
Today I checked-in a fix which reverts a change I made to try to stop
multiple PRContextFilter s being added to the session filter chain.
Unfortunately the fix caused unintended side-effects, which I believe
contributed to the problems Sergio mentioned. Hopefully the reversion
should fix some or all of these problems.
However there's still an issue with the interaction of PRContext,
PRContextFilter, cookies, component creation and Restful urls. To
illustrate the issue execute the following:
createSimplestPierPRContextFilterIssue
| app rootPage |
rootPage := (PRPage named: 'rootPage') contents: '+counter+'; yourself.
rootPage localEnvironment: ((PRComponent named: 'contents')
componentClass: PRContentsWidget; yourself).
rootPage addChild: ((PRComponent named: 'counter') componentClass:
WACounter; yourself).
app := PRPierFrame registerAsApplication: 'contexttest' kernel: (PRKernel
named: 'contexttest' root: rootPage).
then browse to http://localhost:8080/contexttest You should see a counter
instance. Increment the value of the counter once. Then in a new window/tab
of the same browser, browse to same url (http://localhost:8080/contexttest)
and decrement the value of the counter once. Now return to the original
value and increment again - the counter displays the value "-1" rather than
"2".
If I try the same test in Pier 1, (note in Pier 1 you'll have to manually
enable cookies through the /config), when I first browse to the second tab,
the counter already displays "1".
What's happening? In the Pier 2 case:
* PRPierFrame>>#initialRequest is called for every Restful url. There is no
distinction between a call when a new session has been created and a call
with an existing session.
* In PRPierFrame>>#initialRequest a new PRContextFilter is added to the
session: "self session addFilter: (PRContextFilter on: self)"
* In WASession>>#handleFiltered: aRequestContext, if there is no
continuation key, #start is called on the session, which creates a new root
component - in this case a new PRPierFrame.
* So every time we browse to a Restful url a new PRPierFrame is created
which holds the PRContext. This context is then "held" by the
PRContextFilter.
What does this mean in our counter example:
In the first tab a new session is created, a new PRPierFrame, a new
PRContextFilter and a new WACounter instance are created. The link to
increment the counter contains a continuation key so #initialRequest isn't
called and callback is fired incrementing the counter which in turn
displays "1".
In the second tab the session already exists, however without a
continuation key a new PRPierFrame, a new PRContextFilter and a new
WACounter instance are created. Decrementing the counter decrements it on
the new WACounter instance.
Now returning to the first tab we again try to increment the counter. The
callback on the first component created is called and the counter is
incremented. However in the rendering phase, the second component created
in the second tab is displayed, with it's counter unincremented and set to
"-1".
What are the problems:
* There is no distinction between #initialRequest called with a newly
created session and #initialRequest called from a session recovered via a
cookie. Neither is there an obvious way of detecting for which case
#initialRequest
has been called.
* Within WASession>>#handleFiltered: if no continuation key exists a new
root component is created.
* A new PRContextFilter is added for each Restful call.
Two possible solutions:
* A new PRPierFrame is only created when a new session is created. This
should then function as Pier 1. However if the root presenter is exchanged
in one open tab e.g. with a #call or #show on the root, then other open
tabs will not operate as intended. The implementation would I think require
a custom session with a custom #handleFiltered: or alternatively a modified
WASession which allows configurable behaviour when there's no continuation
key.
* If however we want to allow for multiple components so that state isn't
maintained between two identical Restful - that is both counters start at
0. Then we could move PRContext into the session, and remove the
PRContextFilter.
I hope this makes sense I've I understood the situation correctly. Any
thoughts?
Nick
11 years, 4 months
Pier port to Magritte with pragmas
by Nick Ager
Hi,
I've checked-in an initial port of Pier using Magritte with pragma support
into: http://source.lukas-renggli.ch/pier2unstable - all tests are green
and with a cursory test everything appears to be functioning as before.
The port includes the following packages:
pier-model
pier-seaside
pier-security
pier-pharo-model
pier-pharo-persistency
pier-tests-model
pier-test-security
and the following add ons:
pier-blog
pier-book
pier-setup
pier-google
pier-documents
Next steps:
1) Be great if people can try the initial port and report any errors or
different behaviour
2) If success with 1) perhaps we can move to new repositories (e.g.
Magritte3, Pier3, Pier3addons)
3) Continue porting addons. There are many add-ons in both
http://source.lukas-renggli.ch/pieraddons and
http://source.lukas-renggli.ch/pier2addons that would be great to port.
4) Document the changes to Magritte and how they effect Pier.
Porting guide:
*1) search for all instances of #description if they are magritte
descriptions rename the method #magritteDescription
2) remove #magritteDynamic and remove the block around the method.
3) Use the refactoring support to move class-side descriptions to instance
side descriptions with pragmas - making sure that any accessors to class
side methods are either prefixed with ‘class’ or moved to the instance
side. If you move description help methods to instance side be careful if
they contain context := PRCurrentContext value - context will shadow an
instance variable of the same name so either replace context with self
context and remove context := PRCurrentContext value or rename context say
theContext and replace context := PRCurrentContext value with theContext :=
self context.
4) Remove any empty categories on the class side.*
*5) PRWidget derived classes should either by modified to be derived from
PRWidgetPropertyBase or keep derived from **PRWidget but modify the
accessors to store state in instance variable rather than the property
dictionary in **PRWidgetPropertyBase. See PRViewsWidget and PRSearchWidget
for examples of both types of port.*
*6) Modify structure initialisation with PRComponent to use prototype
instance rather than classes. So*
*
(PRComponent named: 'contents')
componentClass: PRContentsWidget;
write: '%c' using: PRContentsWidget descriptionHeading;
yourself
becomes to:
(PRComponent named: 'contents') prototypeInstance: (PRContentsWidget new
heading: '%c'; yourself)
**
yourself
**
you may well have to add setters to allow initial settings to be set on the
prototype instances again see **PRViewsWidget and **PRSearchWidget for
examples.*
*7) P**ut a break point in Object>>description and Object
class>>description to trap any cases you’ve missed (the break-point should
not be hit) and check the add-on.*
*
*
*Hope this makes sense*
*
*
*Nick*
*
*
11 years, 4 months
pier admin: problems starting seaside control panel
by sergio_101
i am working with pier admin, and having some issues..
when starting with a clean image (downloaded from pier site) .. i
install rfbserver (in case i need to get into it while it's
deployed).. then, i shut down the webserver and install pier admin.
when i try to start seaside control panel, i get:
21 January 2012 1:42:15 pm
VM: Mac OS - intel - 1072 - Croquet Closure Cog VM [CoInterpreter
VMMaker.oscog-eem.140] Pier 2.0
Image: Pharo1.3 [Latest update: #13320]
OBMorphicPlatform(Object)>>doesNotUnderstand: #optionalButtons
Receiver: an OBMorphicPlatform
Arguments and temporary variables:
aMessage: optionalButtons
exception: MessageNotUnderstood: OBMorphicPlatform>>optionalButtons
resumeValue: nil
Receiver's instance variables:
an OBMorphicPlatform
WAPharoServerAdaptorBrowser class(OBBrowser class)>>buttonPanel
Receiver: WAPharoServerAdaptorBrowser
Arguments and temporary variables:
Receiver's instance variables:
superclass: WAServerAdaptorBrowser
methodDict: a MethodDictionary()
format: 136
instanceVariables: nil
organization: ('as yet unclassified')
subclasses: nil
name: #WAPharoServerAdaptorBrowser
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'Seaside-Pharo-Tools-OmniBrowser'
traitComposition: {}
localSelectors: nil
WAPharoServerAdaptorBrowser class(OBBrowser class)>>panels
Receiver: WAPharoServerAdaptorBrowser
Arguments and temporary variables:
Receiver's instance variables:
superclass: WAServerAdaptorBrowser
methodDict: a MethodDictionary()
format: 136
instanceVariables: nil
organization: ('as yet unclassified')
subclasses: nil
name: #WAPharoServerAdaptorBrowser
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'Seaside-Pharo-Tools-OmniBrowser'
traitComposition: {}
localSelectors: nil
WAPharoServerAdaptorBrowser class(OBBrowser class)>>new
Receiver: WAPharoServerAdaptorBrowser
Arguments and temporary variables:
Receiver's instance variables:
superclass: WAServerAdaptorBrowser
methodDict: a MethodDictionary()
format: 136
instanceVariables: nil
organization: ('as yet unclassified')
subclasses: nil
name: #WAPharoServerAdaptorBrowser
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'Seaside-Pharo-Tools-OmniBrowser'
traitComposition: {}
localSelectors: nil
WAPharoServerAdaptorBrowser class(OBBrowser class)>>open
Receiver: WAPharoServerAdaptorBrowser
Arguments and temporary variables:
Receiver's instance variables:
superclass: WAServerAdaptorBrowser
methodDict: a MethodDictionary()
format: 136
instanceVariables: nil
organization: ('as yet unclassified')
subclasses: nil
name: #WAPharoServerAdaptorBrowser
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'Seaside-Pharo-Tools-OmniBrowser'
traitComposition: {}
localSelectors: nil
[self open] in WAPharoServerAdaptorBrowser class>>menuCommandOn:
Receiver: WAPharoServerAdaptorBrowser
Arguments and temporary variables:
Receiver's instance variables:
superclass: WAServerAdaptorBrowser
methodDict: a MethodDictionary()
format: 136
instanceVariables: nil
organization: ('as yet unclassified')
subclasses: nil
name: #WAPharoServerAdaptorBrowser
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'Seaside-Pharo-Tools-OmniBrowser'
traitComposition: {}
localSelectors: nil
[| selArgCount |
(selArgCount := selector numArgs) = 0
ifTrue: [target perform: selector]
ifFalse: [selArgCount = arguments size
ifTrue: [target perform: selector withArguments: arguments]
ifFalse: [target
perform: selector
withArguments: (arguments copyWith: evt)]].
self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
Receiver: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
Arguments and temporary variables:
evt: [558@375 mouseUp 745728 nil]
selArgCount: 0
Receiver's instance variables:
bounds: 497@371 corner: 663@385
owner: a MenuMorph(186646528)
submorphs: #()
fullBounds: 497@371 corner: 663@385
color: Color black
extension: a MorphExtension (499908608)
font: a StrikeFont(Bitmap DejaVu Sans 9 14)
emphasis: 0
contents: 'Seaside Control Panel'
hasFocus: false
isEnabled: true
subMenu: nil
isSelected: false
target: [self open]
selector: #value
arguments: #()
icon: Form(12x12x32)
getStateSelector: nil
enablementSelector: nil
keyText: nil
BlockClosure>>ensure:
Receiver: [| selArgCount |
(selArgCount := selector numArgs) = 0
ifTrue: [target perform: selector...etc...
Arguments and temporary variables:
aBlock: [oldcursor show]
complete: nil
returnValue: nil
Receiver's instance variables:
outerContext: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
startpc: 156
numArgs: 0
CursorWithMask(Cursor)>>showWhile:
Receiver: ((CursorWithMask
extent: 16@16
depth: 1
fromArray: #(
2r0
2r10000000000000000000000...etc...
Arguments and temporary variables:
aBlock: [| selArgCount |
(selArgCount := selector numArgs) = 0
ifTrue: [targe...etc...
oldcursor: ((CursorWithMask
extent: 16@16
depth: 1
fromArray: #(
2r0
2r1...etc...
Receiver's instance variables:
bits: a Bitmap of length 16
width: 16
height: 16
depth: 1
offset: -1@ -1
maskForm: Form(16x16x1)
ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
Receiver: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
Arguments and temporary variables:
evt: [558@375 mouseUp 745728 nil]
w: a PasteUpMorph(425197568) [world]
Receiver's instance variables:
bounds: 497@371 corner: 663@385
owner: a MenuMorph(186646528)
submorphs: #()
fullBounds: 497@371 corner: 663@385
color: Color black
extension: a MorphExtension (499908608)
font: a StrikeFont(Bitmap DejaVu Sans 9 14)
emphasis: 0
contents: 'Seaside Control Panel'
hasFocus: false
isEnabled: true
subMenu: nil
isSelected: false
target: [self open]
selector: #value
arguments: #()
icon: Form(12x12x32)
getStateSelector: nil
enablementSelector: nil
keyText: nil
ToggleMenuItemMorph(MenuItemMorph)>>mouseUp:
Receiver: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
Arguments and temporary variables:
evt: [558@375 mouseUp 745728 nil]
Receiver's instance variables:
bounds: 497@371 corner: 663@385
owner: a MenuMorph(186646528)
submorphs: #()
fullBounds: 497@371 corner: 663@385
color: Color black
extension: a MorphExtension (499908608)
font: a StrikeFont(Bitmap DejaVu Sans 9 14)
emphasis: 0
contents: 'Seaside Control Panel'
hasFocus: false
isEnabled: true
subMenu: nil
isSelected: false
target: [self open]
selector: #value
arguments: #()
icon: Form(12x12x32)
getStateSelector: nil
enablementSelector: nil
keyText: nil
ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp:
Receiver: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
Receiver's instance variables:
bounds: 497@371 corner: 663@385
owner: a MenuMorph(186646528)
submorphs: #()
fullBounds: 497@371 corner: 663@385
color: Color black
extension: a MorphExtension (499908608)
font: a StrikeFont(Bitmap DejaVu Sans 9 14)
emphasis: 0
contents: 'Seaside Control Panel'
hasFocus: false
isEnabled: true
subMenu: nil
isSelected: false
target: [self open]
selector: #value
arguments: #()
icon: Form(12x12x32)
getStateSelector: nil
enablementSelector: nil
keyText: nil
MouseButtonEvent>>sentTo:
Receiver: [558@375 mouseUp 745728 nil]
Arguments and temporary variables:
anObject: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
Receiver's instance variables:
timeStamp: 745728
source: a HandMorph(843055104)
windowIndex: nil
type: #mouseUp
buttons: 0
position: 558@375
handler: nil
wasHandled: true
whichButton: 4
ToggleMenuItemMorph(Morph)>>handleEvent:
Receiver: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
Receiver's instance variables:
bounds: 497@371 corner: 663@385
owner: a MenuMorph(186646528)
submorphs: #()
fullBounds: 497@371 corner: 663@385
color: Color black
extension: a MorphExtension (499908608)
font: a StrikeFont(Bitmap DejaVu Sans 9 14)
emphasis: 0
contents: 'Seaside Control Panel'
hasFocus: false
isEnabled: true
subMenu: nil
isSelected: false
target: [self open]
selector: #value
arguments: #()
icon: Form(12x12x32)
getStateSelector: nil
enablementSelector: nil
keyText: nil
MorphicEventDispatcher>>dispatchDefault:with:
Receiver: a MorphicEventDispatcher
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
aMorph: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
localEvt: nil
index: 1
child: nil
morphs: #()
inside: true
Receiver's instance variables:
lastType: #mouseUp
lastDispatch: #dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
Receiver: a MorphicEventDispatcher
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
aMorph: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
Receiver's instance variables:
lastType: #mouseUp
lastDispatch: #dispatchDefault:with:
ToggleMenuItemMorph(Morph)>>processEvent:using:
Receiver: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
defaultDispatcher: a MorphicEventDispatcher
Receiver's instance variables:
bounds: 497@371 corner: 663@385
owner: a MenuMorph(186646528)
submorphs: #()
fullBounds: 497@371 corner: 663@385
color: Color black
extension: a MorphExtension (499908608)
font: a StrikeFont(Bitmap DejaVu Sans 9 14)
emphasis: 0
contents: 'Seaside Control Panel'
hasFocus: false
isEnabled: true
subMenu: nil
isSelected: false
target: [self open]
selector: #value
arguments: #()
icon: Form(12x12x32)
getStateSelector: nil
enablementSelector: nil
keyText: nil
MorphicEventDispatcher>>dispatchDefault:with:
Receiver: a MorphicEventDispatcher
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
aMorph: a MenuMorph(186646528)
localEvt: [558@375 mouseUp 745728 nil]
index: 8
child: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
morphs: an Array(a ToggleMenuItemMorph(369885184)'Finder' a
ToggleMenuItemMorph...etc...
inside: false
Receiver's instance variables:
lastType: #mouseUp
lastDispatch: #dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
Receiver: a MorphicEventDispatcher
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
aMorph: a MenuMorph(186646528)
Receiver's instance variables:
lastType: #mouseUp
lastDispatch: #dispatchDefault:with:
MenuMorph(Morph)>>processEvent:using:
Receiver: a MenuMorph(186646528)
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
defaultDispatcher: a MorphicEventDispatcher
Receiver's instance variables:
bounds: 493@234 corner: 667@506
owner: nil
submorphs: an Array(a ToggleMenuItemMorph(369885184)'Finder' a
ToggleMenuItemMo...etc...
fullBounds: 493@234 corner: 668@507
color: (Color r: 0.871 g: 0.871 b: 0.871)
extension: a MorphExtension (190578688) [other: (basicColor ->
(Color r: 0.784...etc...
borderWidth: 1
borderColor: Color gray
defaultTarget: nil
selectedItem: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
stayUp: false
popUpOwner: a ToggleMenuItemMorph(169082880)'Tools'
activeSubMenu: nil
activatorDockingBar: nil
embeddable: nil
menuItems: nil
MenuMorph(Morph)>>processEvent:
Receiver: a MenuMorph(186646528)
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
Receiver's instance variables:
bounds: 493@234 corner: 667@506
owner: nil
submorphs: an Array(a ToggleMenuItemMorph(369885184)'Finder' a
ToggleMenuItemMo...etc...
fullBounds: 493@234 corner: 668@507
color: (Color r: 0.871 g: 0.871 b: 0.871)
extension: a MorphExtension (190578688) [other: (basicColor ->
(Color r: 0.784...etc...
borderWidth: 1
borderColor: Color gray
defaultTarget: nil
selectedItem: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
stayUp: false
popUpOwner: a ToggleMenuItemMorph(169082880)'Tools'
activeSubMenu: nil
activatorDockingBar: nil
embeddable: nil
menuItems: nil
MenuMorph>>handleFocusEvent:
Receiver: a MenuMorph(186646528)
Arguments and temporary variables:
evt: [558@375 mouseUp 745728 nil]
Receiver's instance variables:
bounds: 493@234 corner: 667@506
owner: nil
submorphs: an Array(a ToggleMenuItemMorph(369885184)'Finder' a
ToggleMenuItemMo...etc...
fullBounds: 493@234 corner: 668@507
color: (Color r: 0.871 g: 0.871 b: 0.871)
extension: a MorphExtension (190578688) [other: (basicColor ->
(Color r: 0.784...etc...
borderWidth: 1
borderColor: Color gray
defaultTarget: nil
selectedItem: a ToggleMenuItemMorph(497549312)'Seaside Control Panel'
stayUp: false
popUpOwner: a ToggleMenuItemMorph(169082880)'Tools'
activeSubMenu: nil
activatorDockingBar: nil
embeddable: nil
menuItems: nil
[ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder
handleFocusEvent: (anEvent
transformedBy: (focusHolder transformedFrom: self))] in
HandMorph>>sendFocusEvent:to:clear:
Receiver: a HandMorph(843055104)
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
focusHolder: a MenuMorph(186646528)
result: #(nil)
Receiver's instance variables:
bounds: 896@429 corner: 912@445
owner: a PasteUpMorph(425197568) [world]
submorphs: #()
fullBounds: 896@429 corner: 912@445
color: Color blue
extension: a MorphExtension (141295616) [eventHandler = an EventHandler]
mouseFocus: nil
keyboardFocus: nil
eventListeners: nil
mouseListeners: nil
keyboardListeners: nil
mouseClickState: nil
mouseOverHandler: a MouseOverHandler
lastMouseEvent: [896@429 mouseUp 780699 nil]
targetOffset: 93@8
damageRecorder: a DamageRecorder
cacheCanvas: nil
cachedCanvasHasHoles: true
temporaryCursor: nil
temporaryCursorOffset: nil
hardwareCursor: nil
hasChanged: true
savedPatch: nil
userInitials: ''
lastEventBuffer: #(1 780699 896 429 0 0 1 1)
lastKeyScanCode: 2
combinedChar: nil
[aBlock value] in PasteUpMorph>>becomeActiveDuring:
Receiver: a PasteUpMorph(425197568) [world]
Arguments and temporary variables:
aBlock: [ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder
...etc...
Receiver's instance variables:
bounds: 0@0 corner: 1276@730
owner: nil
submorphs: an Array(a TaskbarMorph(984088576) a
SystemWindow(476577792) a Syste...etc...
fullBounds: nil
color: Color white
extension: a MorphExtension (666632192) [eventHandler = an
EventHandler] [othe...etc...
borderWidth: 0
borderColor: (Color r: 0.03 g: 0.02 b: 0.0)
backgroundMorph: nil
worldState: a WorldState
griddingOn: nil
BlockClosure>>on:do:
Receiver: [aBlock value]
Arguments and temporary variables:
exception: Error
handlerAction: [:ex |
ActiveWorld := priorWorld.
ActiveEvent := priorEvent.
...etc...
handlerActive: false
Receiver's instance variables:
outerContext: PasteUpMorph>>becomeActiveDuring:
startpc: 67
numArgs: 0
PasteUpMorph>>becomeActiveDuring:
Receiver: a PasteUpMorph(425197568) [world]
Arguments and temporary variables:
aBlock: [ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder
...etc...
priorWorld: a PasteUpMorph(425197568) [world]
priorHand: a HandMorph(843055104)
priorEvent: [558@375 mouseOver red nil nil]
Receiver's instance variables:
bounds: 0@0 corner: 1276@730
owner: nil
submorphs: an Array(a TaskbarMorph(984088576) a
SystemWindow(476577792) a Syste...etc...
fullBounds: nil
color: Color white
extension: a MorphExtension (666632192) [eventHandler = an
EventHandler] [othe...etc...
borderWidth: 0
borderColor: (Color r: 0.03 g: 0.02 b: 0.0)
backgroundMorph: nil
worldState: a WorldState
griddingOn: nil
HandMorph>>sendFocusEvent:to:clear:
Receiver: a HandMorph(843055104)
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
focusHolder: a MenuMorph(186646528)
aBlock: [self mouseFocus: nil]
w: a PasteUpMorph(425197568) [world]
result: #(nil)
Receiver's instance variables:
bounds: 896@429 corner: 912@445
owner: a PasteUpMorph(425197568) [world]
submorphs: #()
fullBounds: 896@429 corner: 912@445
color: Color blue
extension: a MorphExtension (141295616) [eventHandler = an EventHandler]
mouseFocus: nil
keyboardFocus: nil
eventListeners: nil
mouseListeners: nil
keyboardListeners: nil
mouseClickState: nil
mouseOverHandler: a MouseOverHandler
lastMouseEvent: [896@429 mouseUp 780699 nil]
targetOffset: 93@8
damageRecorder: a DamageRecorder
cacheCanvas: nil
cachedCanvasHasHoles: true
temporaryCursor: nil
temporaryCursorOffset: nil
hardwareCursor: nil
hasChanged: true
savedPatch: nil
userInitials: ''
lastEventBuffer: #(1 780699 896 429 0 0 1 1)
lastKeyScanCode: 2
combinedChar: nil
HandMorph>>sendEvent:focus:clear:
Receiver: a HandMorph(843055104)
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
focusHolder: a MenuMorph(186646528)
aBlock: [self mouseFocus: nil]
result: nil
Receiver's instance variables:
bounds: 896@429 corner: 912@445
owner: a PasteUpMorph(425197568) [world]
submorphs: #()
fullBounds: 896@429 corner: 912@445
color: Color blue
extension: a MorphExtension (141295616) [eventHandler = an EventHandler]
mouseFocus: nil
keyboardFocus: nil
eventListeners: nil
mouseListeners: nil
keyboardListeners: nil
mouseClickState: nil
mouseOverHandler: a MouseOverHandler
lastMouseEvent: [896@429 mouseUp 780699 nil]
targetOffset: 93@8
damageRecorder: a DamageRecorder
cacheCanvas: nil
cachedCanvasHasHoles: true
temporaryCursor: nil
temporaryCursorOffset: nil
hardwareCursor: nil
hasChanged: true
savedPatch: nil
userInitials: ''
lastEventBuffer: #(1 780699 896 429 0 0 1 1)
lastKeyScanCode: 2
combinedChar: nil
HandMorph>>sendMouseEvent:
Receiver: a HandMorph(843055104)
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
Receiver's instance variables:
bounds: 896@429 corner: 912@445
owner: a PasteUpMorph(425197568) [world]
submorphs: #()
fullBounds: 896@429 corner: 912@445
color: Color blue
extension: a MorphExtension (141295616) [eventHandler = an EventHandler]
mouseFocus: nil
keyboardFocus: nil
eventListeners: nil
mouseListeners: nil
keyboardListeners: nil
mouseClickState: nil
mouseOverHandler: a MouseOverHandler
lastMouseEvent: [896@429 mouseUp 780699 nil]
targetOffset: 93@8
damageRecorder: a DamageRecorder
cacheCanvas: nil
cachedCanvasHasHoles: true
temporaryCursor: nil
temporaryCursorOffset: nil
hardwareCursor: nil
hasChanged: true
savedPatch: nil
userInitials: ''
lastEventBuffer: #(1 780699 896 429 0 0 1 1)
lastKeyScanCode: 2
combinedChar: nil
HandMorph>>handleEvent:
Receiver: a HandMorph(843055104)
Arguments and temporary variables:
anEvent: [558@375 mouseUp 745728 nil]
evt: [558@375 mouseUp 745728 nil]
ofs: nil
Receiver's instance variables:
bounds: 896@429 corner: 912@445
owner: a PasteUpMorph(425197568) [world]
submorphs: #()
fullBounds: 896@429 corner: 912@445
color: Color blue
extension: a MorphExtension (141295616) [eventHandler = an EventHandler]
mouseFocus: nil
keyboardFocus: nil
eventListeners: nil
mouseListeners: nil
keyboardListeners: nil
mouseClickState: nil
mouseOverHandler: a MouseOverHandler
lastMouseEvent: [896@429 mouseUp 780699 nil]
targetOffset: 93@8
damageRecorder: a DamageRecorder
cacheCanvas: nil
cachedCanvasHasHoles: true
temporaryCursor: nil
temporaryCursorOffset: nil
hardwareCursor: nil
hasChanged: true
savedPatch: nil
userInitials: ''
lastEventBuffer: #(1 780699 896 429 0 0 1 1)
lastKeyScanCode: 2
combinedChar: nil
HandMorph>>processEvents
Receiver: a HandMorph(843055104)
Arguments and temporary variables:
evt: [558@375 mouseUp 745728 nil]
evtBuf: #(1 745728 558 375 0 0 1 1)
type: 1
hadAny: false
Receiver's instance variables:
bounds: 896@429 corner: 912@445
owner: a PasteUpMorph(425197568) [world]
submorphs: #()
fullBounds: 896@429 corner: 912@445
color: Color blue
extension: a MorphExtension (141295616) [eventHandler = an EventHandler]
mouseFocus: nil
keyboardFocus: nil
eventListeners: nil
mouseListeners: nil
keyboardListeners: nil
mouseClickState: nil
mouseOverHandler: a MouseOverHandler
lastMouseEvent: [896@429 mouseUp 780699 nil]
targetOffset: 93@8
damageRecorder: a DamageRecorder
cacheCanvas: nil
cachedCanvasHasHoles: true
temporaryCursor: nil
temporaryCursorOffset: nil
hardwareCursor: nil
hasChanged: true
savedPatch: nil
userInitials: ''
lastEventBuffer: #(1 780699 896 429 0 0 1 1)
lastKeyScanCode: 2
combinedChar: nil
[:h |
ActiveHand := h.
h processEvents.
ActiveHand := nil] in WorldState>>doOneCycleNowFor:
Receiver: a WorldState
Arguments and temporary variables:
h: a HandMorph(843055104)
Receiver's instance variables:
hands: an Array(a HandMorph(843055104))
viewBox: 0@0 corner: 1276@730
canvas: a FormCanvas on: RFBDisplayScreen(1276x730x32)
damageRecorder: a DamageRecorder
stepList: a Heap(StepMessage(#stepAt: -> an
OverflowRowMorph(184549376))(an Ove...etc...
lastStepTime: 780697
lastStepMessage: nil
lastCycleTime: 780718
alarms: a Heap()
lastAlarmTime: 780697
menuBuilder: a PragmaMenuBuilder
Array(SequenceableCollection)>>do:
Receiver: an Array(a HandMorph(843055104))
Arguments and temporary variables:
aBlock: [:h |
ActiveHand := h.
h processEvents.
ActiveHand := nil]
index: 1
indexLimiT: 1
Receiver's instance variables:
an Array(a HandMorph(843055104))
WorldState>>handsDo:
Receiver: a WorldState
Arguments and temporary variables:
aBlock: [:h |
ActiveHand := h.
h processEvents.
ActiveHand := nil]
Receiver's instance variables:
hands: an Array(a HandMorph(843055104))
viewBox: 0@0 corner: 1276@730
canvas: a FormCanvas on: RFBDisplayScreen(1276x730x32)
damageRecorder: a DamageRecorder
stepList: a Heap(StepMessage(#stepAt: -> an
OverflowRowMorph(184549376))(an Ove...etc...
lastStepTime: 780697
lastStepMessage: nil
lastCycleTime: 780718
alarms: a Heap()
lastAlarmTime: 780697
menuBuilder: a PragmaMenuBuilder
WorldState>>doOneCycleNowFor:
Receiver: a WorldState
Arguments and temporary variables:
aWorld: a PasteUpMorph(425197568) [world]
Receiver's instance variables:
hands: an Array(a HandMorph(843055104))
viewBox: 0@0 corner: 1276@730
canvas: a FormCanvas on: RFBDisplayScreen(1276x730x32)
damageRecorder: a DamageRecorder
stepList: a Heap(StepMessage(#stepAt: -> an
OverflowRowMorph(184549376))(an Ove...etc...
lastStepTime: 780697
lastStepMessage: nil
lastCycleTime: 780718
alarms: a Heap()
lastAlarmTime: 780697
menuBuilder: a PragmaMenuBuilder
WorldState>>doOneCycleFor:
Receiver: a WorldState
Arguments and temporary variables:
aWorld: a PasteUpMorph(425197568) [world]
Receiver's instance variables:
hands: an Array(a HandMorph(843055104))
viewBox: 0@0 corner: 1276@730
canvas: a FormCanvas on: RFBDisplayScreen(1276x730x32)
damageRecorder: a DamageRecorder
stepList: a Heap(StepMessage(#stepAt: -> an
OverflowRowMorph(184549376))(an Ove...etc...
lastStepTime: 780697
lastStepMessage: nil
lastCycleTime: 780718
alarms: a Heap()
lastAlarmTime: 780697
menuBuilder: a PragmaMenuBuilder
PasteUpMorph>>doOneCycle
Receiver: a PasteUpMorph(425197568) [world]
Arguments and temporary variables:
Receiver's instance variables:
bounds: 0@0 corner: 1276@730
owner: nil
submorphs: an Array(a TaskbarMorph(984088576) a
SystemWindow(476577792) a Syste...etc...
fullBounds: nil
color: Color white
extension: a MorphExtension (666632192) [eventHandler = an
EventHandler] [othe...etc...
borderWidth: 0
borderColor: (Color r: 0.03 g: 0.02 b: 0.0)
backgroundMorph: nil
worldState: a WorldState
griddingOn: nil
[[World doOneCycle.
Processor yield.
false] whileFalse.
nil] in Project class>>spawnNewProcess
Receiver: Project
Arguments and temporary variables:
Receiver's instance variables:
superclass: Model
methodDict: a MethodDictionary()
format: 132
instanceVariables: nil
organization: ('as yet unclassified')
subclasses: nil
name: #Project
classPool: a Dictionary(#UIProcess->a Process in nil )
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'System-Support'
traitComposition: {}
localSelectors: nil
[self value.
Processor terminateActive] in BlockClosure>>newProcess
Receiver: [[World doOneCycle.
Processor yield.
false] whileFalse.
nil]
Arguments and temporary variables:
Receiver's instance variables:
outerContext: Project class>>spawnNewProcess
startpc: 57
numArgs: 0
--- The full stack ---
OBMorphicPlatform(Object)>>doesNotUnderstand: #optionalButtons
WAPharoServerAdaptorBrowser class(OBBrowser class)>>buttonPanel
WAPharoServerAdaptorBrowser class(OBBrowser class)>>panels
WAPharoServerAdaptorBrowser class(OBBrowser class)>>new
WAPharoServerAdaptorBrowser class(OBBrowser class)>>open
[self open] in WAPharoServerAdaptorBrowser class>>menuCommandOn:
[| selArgCount |
(selArgCount := selector numArgs) = 0
ifTrue: [target perform: selector]
ifFalse: [selArgCount = arguments size
ifTrue: [target perform: selector withArguments: arguments]
ifFalse: [target
perform: selector
withArguments: (arguments copyWith: evt)]].
self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
BlockClosure>>ensure:
CursorWithMask(Cursor)>>showWhile:
ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
ToggleMenuItemMorph(MenuItemMorph)>>mouseUp:
ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
ToggleMenuItemMorph(Morph)>>handleEvent:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
ToggleMenuItemMorph(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
MenuMorph(Morph)>>processEvent:using:
MenuMorph(Morph)>>processEvent:
MenuMorph>>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>>sendMouseEvent:
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 Project class>>spawnNewProcess
[self value.
Processor terminateActive] in BlockClosure>>newProcess
--
----
peace,
sergio
photographer, journalist, visionary
http://www.CodingForHire.com
http://www.coffee-black.com
http://www.painlessfrugality.com
http://www.twitter.com/sergio_101
http://www.facebook.com/sergio101
11 years, 4 months