On 21 March 2012 15:25, Guillermo Polito <[email protected]> wrote: > So, If I have an image with no GUI, which UIManager should I install, how > and when? Because at image startup I can't use a MorphicUIManager if I > don't have it loaded into the image :). > Commanline ui manager? or just stick with non-interative one.
See the implementation of #default in UIManager class. It implies that one of its subclasses should answer 'true' on #isActiveManager. actually we could use that, by niling the default manager at snapshot time, so then once image boots, it will detect a new manager.. or fail (hehe). > > On Wed, Mar 21, 2012 at 8:00 AM, Camillo Bruni <[email protected]> > wrote: >> >> indeed the non-interactive one keeps the previous version alive in the >> instvar... >> >> I just copied the existing implementation (without much motivation). >> Bit for simplicity's sake we should simply instantiate every time the >> proper ui manager, that would simplify these ugly methods quite a bit. >> >> cami >> >> >> On 2012-03-21, at 04:12, Igor Stasenko wrote: >> >> > the logic there was to set a non-interactive ui manager >> > for headless sessions only , and then restore back a previous one >> > (whatever it is), once session is changed back to headfull. >> > >> > if its uiManager is nil, it should reset the default manager, >> > if i remember correctly, then UImanager itself will take care >> > instantiating default one. >> > >> > On 21 March 2012 04:35, Guillermo Polito <[email protected]> >> > wrote: >> >> Hi, >> >> >> >> I was doing some hacking, and playing with NonInteractiveUIManager. >> >> And it >> >> puzzled me that I realized that it has an inst var uiManager that seems >> >> to >> >> refer to an uiManager it's replacing. >> >> But my UIManager is not replacing anyone, it's my default and unique >> >> UIManager and this var points to nil :S! >> >> >> >> So the code below does not work... >> >> >> >> onSnapshot: resuming >> >> "The resuming argument is true when image boots from disk, >> >> and false, if user just did an image snapshot." >> >> >> >> resuming ifTrue: [ >> >> Smalltalk isHeadless ifFalse: [ >> >> "restore old, or nil, so it will be set in #default " >> >> uiManager beDefault. >> >> UIManager default onSnapshot: resuming. >> >> ^ self ]. >> >> Smalltalk isInteractive ifTrue: [ >> >> "use a headless but interactive manager" >> >> ^ self headlessManager onSnapshot: resuming ]]. >> >> >> >> >> >> " this flag set to true only if we are saving a snapshot before >> >> quitting >> >> " >> >> doNotQuitOnRestart ifTrue: [ >> >> Smalltalk snapshot: false andQuit: true]. >> >> >> >> >> >> I made it work in my image adding within the controversial lines: >> >> >> >> uiManager ifNotNil: [ >> >> uiManager beDefault. >> >> UIManager default onSnapshot: resuming. >> >> ] >> >> >> >> But it really looks like a hack because that inst var is ment to do >> >> something else... >> >> Is it asking me for a refactor? Or am I using this stuff in the wrong >> >> way? >> >> Camillo, Igor? :P >> >> >> >> Guille >> > >> > >> > >> > -- >> > Best regards, >> > Igor Stasenko. >> > >> >> > -- Best regards, Igor Stasenko.
