Beautiful :) Doru
On Jan 28, 2013, at 10:15 PM, Andrei Vasile Chis <[email protected]> wrote: > Hi all, > > As I'm playing with the debugger I thought I'll share with you a nice > feature the current model supports: scripting the actions > > In the current version the following code is a rather complicated > way of opening a debugger for the code '#(1 2 3 4 5) do: [:each | each > asString ]' > > [ |process| > process := Processor activeProcess. > UIManager default defer: [ |debugger session| > session := SpecDebugger spanNewSessionForProcess: process. > "create the model" > session errorWasInUIProcess: false. > > debugger := SpecDebugger debugSession: session. "open the > debugger"]. > process suspend. > > "The previous lines open a debugger for this code" > #(1 2 3 4 5) do: [:each | each asString ] > ] fork. > > However, the nice thing about the code above is that as the model is > completely > separated from the ui, the model can be used to script some actions > (stepInto, stepThrough, etc) > before or after opening the debugger. So in the code bellow using one of the > two > commented blocks of code, one execute some actions before or after opening > the debugger. > > [ |process| > process := Processor activeProcess. > UIManager default defer: [ |debugger session| > session := SpecDebugger spanNewSessionForProcess: process. > "create the model" > session errorWasInUIProcess: false. > > "session > stepInto; > stepThrough; > stepThrough; > stepThrough; > stepThrough; > stepOver; > stepInto." > > debugger := SpecDebugger debugSession: session. "open the > debugger" > > "debugger session > confirm: 'Step Into'; > stepInto; > confirm: '4 * Step Through'; > stepThrough; > stepThrough; > stepThrough; > stepThrough; > confirm: 'Step Over'; > stepOver; > confirm: 'Step Into'; > stepInto." ]. > process suspend. > > "The previous lines open a debugger for this code" > #(1 2 3 4 5) do: [:each | each asString ] > ] fork. > > Also the same model can be used with multiple ui's or the same ui can be > reused with different models. > Right now this works in Pharo 2.0, but there isn't a configuration for > loading it; if someone really wants to > try it I can provide instructions of how to load the code. > > Cheers, > Andrei -- www.tudorgirba.com "Sometimes the best solution is not the best solution."
