Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
August 2010
- 112 participants
- 1765 messages
Re: [Pharo-project] Is there a good reason why ifEmpty: and ifNotEmpty: return nil rather than the receiver (as they do in Squeak) when the condition is false?
by Stéphane Ducasse
thanks for reporting
can you open a pharo bug entry else there is 80% of chance we will forget.
Stef
On Aug 9, 2010, at 10:40 PM, jaayer wrote:
> In squeak, if you send ifEmpty: or ifNotEmpty: to a collection and the condition being tested (emptiness or non-emptiness) is false, then the receiver (the collection) is returned rather than nil. This is more useful and more in line with how ifNil: and ifNotNil: work (which each otherwise return the receiver).
>
> See this bug report for more information:
>
> http://bugs.squeak.org/view.php?id=6364
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Aug. 10, 2010
Re: [Pharo-project] List of Downloadable Tools
by Mariano Martinez Peck
>
> And indeed the ConfigurationOfPharo is the one used to build the image.
> There you'll find the list of packages that are loaded in the image.
>
>
there is also the packages.txt in the zip of the image
> Cheers
> >
> > Maybe there's a wiki or a webpage I'm missing.
> >
> > Thanks!
> > Guille
> > _______________________________________________
> > Pharo-project mailing list
> > Pharo-project(a)lists.gforge.inria.fr
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> --
> Miguel Cobá
> http://miguel.leugim.com.mx
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Aug. 10, 2010
Re: [Pharo-project] Question: How can I add a items to System Browser Window menu?
by Mariano Martinez Peck
what would be create is to step by step make all menus easily extenesible.
Like nowadays with the world menu and pragmas
Carla, once I had a similar problem and the only solution was to override
that method with a *MyPackage in that method, and add there the menu entried
I wanted...this is completly wrong and sucks...but was the only thing I
found
cheers
2010/8/10 Carla F. Griggio <carla.griggio(a)gmail.com>
> Thanks!!! I'll try that! :D
>
> 2010/8/10 laurent laffont <laurent.laffont(a)gmail.com>
>
> 2010/8/10 Carla F. Griggio <carla.griggio(a)gmail.com>
>>
>> Ohh, I understand now.
>>> I was using the OmniBrowser System Browser.
>>>
>>> Either case, I don't know how I can customize the menu that appears when
>>> I right click on a category *without* changing the original code :( I
>>> want to "extend" that, not *change* it, just add a new comand option.
>>> Do you know if it's possible?
>>>
>>
>> You need to create a subclass of OBCommand which define these methods:
>> execute: what to do when clicking on it
>> group: answers a symbol to know in which group it will be displayed in
>> isActive: answers if the item is enabled/disabled
>> keystroke: answers the char for shortcut
>> label: answers the label
>> order: answers the position
>>
>> example:
>>
>> OBCommand subclass: #OBCmdRunAutotest
>> instanceVariableNames: ''
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'OB-Autotest'
>>
>> execute
>> |method|
>> method := target theClass >> target selector.
>> OBWaitRequest block: [ AutotestDashboard default triggerAutotestOn:
>> method ].
>>
>> group
>> ^ #testing
>>
>> isActive
>> ^ (requestor isSelected: target) and: [target isKindOf: OBMethodNode ]
>>
>> keystroke
>> ^ $T
>>
>> label
>> ^ 'trigger autotest'
>>
>> order
>> ^ '3'
>>
>>
>> Look at OBCommand subclasses for more examples.
>>
>> Cheers,
>>
>> Laurent Laffont
>>
>> http://pharocasts.blogspot.com/
>> http://magaloma.blogspot.com/
>>
>>
>>
>>> I can change it adding an option in Morph>>buildMetaMenu: evt, but I
>>> wanted to keep that code clean...
>>>
>>>
>>>
>>> On Tue, Aug 10, 2010 at 12:25 AM, Hernán Morales Durand <
>>> hernan.morales(a)gmail.com> wrote:
>>>
>>>> 2010/8/9 Carla F. Griggio <carla.griggio(a)gmail.com>:
>>>> > Exactly what Guille captured in the image he attached. When I open
>>>> that
>>>> > window from the World menu it says 'System Browser', although it could
>>>> > actually be an OmniBrowser on the system categories internally... Are
>>>> they
>>>> > two different things?
>>>>
>>>> I don't know which image you are using, some Pharo images includes the
>>>> OmniBrowser package already loaded and this is what you're probably
>>>> opening from the World menu.
>>>>
>>>> It isn't clear from the world menu which browser (System or Omni)
>>>> you're going to open.
>>>> You might want to use both or more system browsers (there are other
>>>> system browsers) at the same time. I use both tools often.
>>>>
>>>> The System Browser is the "classic" browser in Squeak, you may open it
>>>> evaluating
>>>>
>>>> Browser open
>>>>
>>>> The OmniBrowser System Browser is a browser based on the OmniBrowser
>>>> framework and it is opened evaluating
>>>>
>>>> OBSystemBrowser open
>>>>
>>>> I strongly suggest to choose the OmniBrowser way, it is a really good
>>>> framework, nicely supported and there is some documentation in PDF
>>>> format out there. The only drawback I saw is it is hard to develop a
>>>> browser to browse other things which are not "code".
>>>>
>>>> Cheers,
>>>>
>>>> Hernán
>>>>
>>>> > If they are, how can I open both? (Because until now I thought they
>>>> were the
>>>> > same thing).
>>>> > I might be interested in customizing both :P
>>>> >
>>>> >
>>>> > On Sat, Aug 7, 2010 at 9:13 PM, Hernán Morales Durand
>>>> > <hernan.morales(a)gmail.com> wrote:
>>>> >>
>>>> >> Hi Carla,
>>>> >>
>>>> >> 2010/8/7 Carla F. Griggio <carla.griggio(a)gmail.com>:
>>>> >> > Hello!
>>>> >> >
>>>> >> > I want to add an item to the menu that appears when you right click
>>>> on a
>>>> >> > category in the System Browser window.
>>>> >> >
>>>> >>
>>>> >> System Browser or OmniBrowser on system categories?
>>>> >>
>>>> >> Hernán
>>>> >>
>>>> >> _______________________________________________
>>>> >> Pharo-project mailing list
>>>> >> Pharo-project(a)lists.gforge.inria.fr
>>>> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>> >
>>>> > _______________________________________________
>>>> > Pharo-project mailing list
>>>> > Pharo-project(a)lists.gforge.inria.fr
>>>> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>> >
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> Pharo-project(a)lists.gforge.inria.fr
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Aug. 10, 2010
Re: [Pharo-project] Loading platform-specific code
by Mariano Martinez Peck
Sean, I didn't read all the thread, but did you know that Metacello let you
handle platform specific code?
Thus, you can define this in the ConfigurationOFfExternalWebBrowser, and not
depend on a class side initialize.
cheers
mariano
On Tue, Aug 10, 2010 at 9:14 AM, Norbert Hartl <norbert(a)hartl.name> wrote:
>
> On 09.08.2010, at 20:48, Sean P. DeNigris wrote:
>
> >
> >
> > Norbert Hartl wrote:
> >>
> >> The initialization of ExternalWebBrowser does a Smalltalk
> >> addToStartUpList: self.
> >>
> >
> > Ha ha, I didn't know about startUp. I thought "why the heck is it called
> > startUp"... and changed it to initializeMe!
> >
> > Playing with the image, and thanks to your comment, I just got an
> > interesting education on registering for startup and shutdown - thanks!
> >
> > I'm adding some info to SmalltalkImage's class comment and writing up
> some
> > sample code.
> >
> > So now the question is: is it better to lazily load external projects
> > required for other platforms, or load them all when you (most probably)
> have
> > an internet connection?
> >
> I think I don't fully understand what you mean with "lazily load" and
> "required for other platforms". But if it is just a choice when to load
> something then I would do while having a internet connection ;)
>
> Norbert
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Aug. 10, 2010
Re: [Pharo-project] Loading platform-specific code
by Norbert Hartl
On 09.08.2010, at 20:48, Sean P. DeNigris wrote:
>
>
> Norbert Hartl wrote:
>>
>> The initialization of ExternalWebBrowser does a Smalltalk
>> addToStartUpList: self.
>>
>
> Ha ha, I didn't know about startUp. I thought "why the heck is it called
> startUp"... and changed it to initializeMe!
>
> Playing with the image, and thanks to your comment, I just got an
> interesting education on registering for startup and shutdown - thanks!
>
> I'm adding some info to SmalltalkImage's class comment and writing up some
> sample code.
>
> So now the question is: is it better to lazily load external projects
> required for other platforms, or load them all when you (most probably) have
> an internet connection?
>
I think I don't fully understand what you mean with "lazily load" and "required for other platforms". But if it is just a choice when to load something then I would do while having a internet connection ;)
Norbert
Aug. 10, 2010
Re: [Pharo-project] 10 year old slides "Stable Squeak"
by Marcus Denker
On Aug 10, 2010, at 8:31 AM, Philippe Marschall wrote:
> On 08/09/2010 05:16 PM, Marcus Denker wrote:
>>
>> On Aug 9, 2010, at 5:11 PM, Philippe Marschall wrote:
>>
>>> On 08/09/2010 09:50 AM, Marcus Denker wrote:
>>>> ... while slowly improving the archive of ESUG, I found these 10 year old slides:
>>>>
>>>> http://www.slideshare.net/esug/stable-squeak-world-tour
>>>
>>> Could you post them directly? I don't have flash on this computer.
>>>
>> http://www.slideshare.net/esug/stable-squeak-world-tour/download
>>
>> Does that work?
>
> Nope, I have to register.
>
> What's wrong with just putting a PDF available for download over FTP or
> HTTP?
I just uploaded the file and thought it would be interesting from today's perspective.
As I just uploade the stuff to slideshare, it was easy to pushlish the link.
But this is now not that important... if I would have known that it's not that easy to view,
I would not have send the link in the first place.
The idea is to have the ESUG archive available in more than just slideshare... but everything
takes time and I can do things only step by step. And the step right now is slideshare.
Doing *anything* with an archive of 14 years of confrences takes a looong time....
There is an old html version here:
http://esug.org/oldsrv/summerschools/2000_Southampton/stableSqueak/stableSq…
Marcus
--
Marcus Denker -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.
Aug. 10, 2010
Re: [Pharo-project] 10 year old slides "Stable Squeak"
by Philippe Marschall
On 08/09/2010 05:16 PM, Marcus Denker wrote:
>
> On Aug 9, 2010, at 5:11 PM, Philippe Marschall wrote:
>
>> On 08/09/2010 09:50 AM, Marcus Denker wrote:
>>> ... while slowly improving the archive of ESUG, I found these 10 year old slides:
>>>
>>> http://www.slideshare.net/esug/stable-squeak-world-tour
>>
>> Could you post them directly? I don't have flash on this computer.
>>
> http://www.slideshare.net/esug/stable-squeak-world-tour/download
>
> Does that work?
Nope, I have to register.
What's wrong with just putting a PDF available for download over FTP or
HTTP?
Cheers
Philippe
Aug. 10, 2010
Re: [Pharo-project] Question: How can I add a items to System Browser Window menu?
by Carla F. Griggio
Thanks!!! I'll try that! :D
2010/8/10 laurent laffont <laurent.laffont(a)gmail.com>
> 2010/8/10 Carla F. Griggio <carla.griggio(a)gmail.com>
>
> Ohh, I understand now.
>> I was using the OmniBrowser System Browser.
>>
>> Either case, I don't know how I can customize the menu that appears when I
>> right click on a category *without* changing the original code :( I want
>> to "extend" that, not *change* it, just add a new comand option.
>> Do you know if it's possible?
>>
>
> You need to create a subclass of OBCommand which define these methods:
> execute: what to do when clicking on it
> group: answers a symbol to know in which group it will be displayed in
> isActive: answers if the item is enabled/disabled
> keystroke: answers the char for shortcut
> label: answers the label
> order: answers the position
>
> example:
>
> OBCommand subclass: #OBCmdRunAutotest
> instanceVariableNames: ''
> classVariableNames: ''
> poolDictionaries: ''
> category: 'OB-Autotest'
>
> execute
> |method|
> method := target theClass >> target selector.
> OBWaitRequest block: [ AutotestDashboard default triggerAutotestOn:
> method ].
>
> group
> ^ #testing
>
> isActive
> ^ (requestor isSelected: target) and: [target isKindOf: OBMethodNode ]
>
> keystroke
> ^ $T
>
> label
> ^ 'trigger autotest'
>
> order
> ^ '3'
>
>
> Look at OBCommand subclasses for more examples.
>
> Cheers,
>
> Laurent Laffont
>
> http://pharocasts.blogspot.com/
> http://magaloma.blogspot.com/
>
>
>
>> I can change it adding an option in Morph>>buildMetaMenu: evt, but I
>> wanted to keep that code clean...
>>
>>
>>
>> On Tue, Aug 10, 2010 at 12:25 AM, Hernán Morales Durand <
>> hernan.morales(a)gmail.com> wrote:
>>
>>> 2010/8/9 Carla F. Griggio <carla.griggio(a)gmail.com>:
>>> > Exactly what Guille captured in the image he attached. When I open that
>>> > window from the World menu it says 'System Browser', although it could
>>> > actually be an OmniBrowser on the system categories internally... Are
>>> they
>>> > two different things?
>>>
>>> I don't know which image you are using, some Pharo images includes the
>>> OmniBrowser package already loaded and this is what you're probably
>>> opening from the World menu.
>>>
>>> It isn't clear from the world menu which browser (System or Omni)
>>> you're going to open.
>>> You might want to use both or more system browsers (there are other
>>> system browsers) at the same time. I use both tools often.
>>>
>>> The System Browser is the "classic" browser in Squeak, you may open it
>>> evaluating
>>>
>>> Browser open
>>>
>>> The OmniBrowser System Browser is a browser based on the OmniBrowser
>>> framework and it is opened evaluating
>>>
>>> OBSystemBrowser open
>>>
>>> I strongly suggest to choose the OmniBrowser way, it is a really good
>>> framework, nicely supported and there is some documentation in PDF
>>> format out there. The only drawback I saw is it is hard to develop a
>>> browser to browse other things which are not "code".
>>>
>>> Cheers,
>>>
>>> Hernán
>>>
>>> > If they are, how can I open both? (Because until now I thought they
>>> were the
>>> > same thing).
>>> > I might be interested in customizing both :P
>>> >
>>> >
>>> > On Sat, Aug 7, 2010 at 9:13 PM, Hernán Morales Durand
>>> > <hernan.morales(a)gmail.com> wrote:
>>> >>
>>> >> Hi Carla,
>>> >>
>>> >> 2010/8/7 Carla F. Griggio <carla.griggio(a)gmail.com>:
>>> >> > Hello!
>>> >> >
>>> >> > I want to add an item to the menu that appears when you right click
>>> on a
>>> >> > category in the System Browser window.
>>> >> >
>>> >>
>>> >> System Browser or OmniBrowser on system categories?
>>> >>
>>> >> Hernán
>>> >>
>>> >> _______________________________________________
>>> >> Pharo-project mailing list
>>> >> Pharo-project(a)lists.gforge.inria.fr
>>> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>> >
>>> > _______________________________________________
>>> > Pharo-project mailing list
>>> > Pharo-project(a)lists.gforge.inria.fr
>>> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>> >
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Aug. 10, 2010
Re: [Pharo-project] Question: How can I add a items to System Browser Window menu?
by laurent laffont
2010/8/10 Carla F. Griggio <carla.griggio(a)gmail.com>
> Ohh, I understand now.
> I was using the OmniBrowser System Browser.
>
> Either case, I don't know how I can customize the menu that appears when I
> right click on a category *without* changing the original code :( I want
> to "extend" that, not *change* it, just add a new comand option.
> Do you know if it's possible?
>
You need to create a subclass of OBCommand which define these methods:
execute: what to do when clicking on it
group: answers a symbol to know in which group it will be displayed in
isActive: answers if the item is enabled/disabled
keystroke: answers the char for shortcut
label: answers the label
order: answers the position
example:
OBCommand subclass: #OBCmdRunAutotest
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'OB-Autotest'
execute
|method|
method := target theClass >> target selector.
OBWaitRequest block: [ AutotestDashboard default triggerAutotestOn: method
].
group
^ #testing
isActive
^ (requestor isSelected: target) and: [target isKindOf: OBMethodNode ]
keystroke
^ $T
label
^ 'trigger autotest'
order
^ '3'
Look at OBCommand subclasses for more examples.
Cheers,
Laurent Laffont
http://pharocasts.blogspot.com/
http://magaloma.blogspot.com/
> I can change it adding an option in Morph>>buildMetaMenu: evt, but I wanted
> to keep that code clean...
>
>
>
> On Tue, Aug 10, 2010 at 12:25 AM, Hernán Morales Durand <
> hernan.morales(a)gmail.com> wrote:
>
>> 2010/8/9 Carla F. Griggio <carla.griggio(a)gmail.com>:
>> > Exactly what Guille captured in the image he attached. When I open that
>> > window from the World menu it says 'System Browser', although it could
>> > actually be an OmniBrowser on the system categories internally... Are
>> they
>> > two different things?
>>
>> I don't know which image you are using, some Pharo images includes the
>> OmniBrowser package already loaded and this is what you're probably
>> opening from the World menu.
>>
>> It isn't clear from the world menu which browser (System or Omni)
>> you're going to open.
>> You might want to use both or more system browsers (there are other
>> system browsers) at the same time. I use both tools often.
>>
>> The System Browser is the "classic" browser in Squeak, you may open it
>> evaluating
>>
>> Browser open
>>
>> The OmniBrowser System Browser is a browser based on the OmniBrowser
>> framework and it is opened evaluating
>>
>> OBSystemBrowser open
>>
>> I strongly suggest to choose the OmniBrowser way, it is a really good
>> framework, nicely supported and there is some documentation in PDF
>> format out there. The only drawback I saw is it is hard to develop a
>> browser to browse other things which are not "code".
>>
>> Cheers,
>>
>> Hernán
>>
>> > If they are, how can I open both? (Because until now I thought they were
>> the
>> > same thing).
>> > I might be interested in customizing both :P
>> >
>> >
>> > On Sat, Aug 7, 2010 at 9:13 PM, Hernán Morales Durand
>> > <hernan.morales(a)gmail.com> wrote:
>> >>
>> >> Hi Carla,
>> >>
>> >> 2010/8/7 Carla F. Griggio <carla.griggio(a)gmail.com>:
>> >> > Hello!
>> >> >
>> >> > I want to add an item to the menu that appears when you right click
>> on a
>> >> > category in the System Browser window.
>> >> >
>> >>
>> >> System Browser or OmniBrowser on system categories?
>> >>
>> >> Hernán
>> >>
>> >> _______________________________________________
>> >> Pharo-project mailing list
>> >> Pharo-project(a)lists.gforge.inria.fr
>> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>> >
>> > _______________________________________________
>> > Pharo-project mailing list
>> > Pharo-project(a)lists.gforge.inria.fr
>> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>> >
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Aug. 10, 2010
Re: [Pharo-project] Early days of an MVP framework
by Schwab,Wilhelm K
Gary,
Is there a way to disable a ComposableMorph and all of its children?
Bill
________________________________________
From: pharo-project-bounces(a)lists.gforge.inria.fr [pharo-project-bounces(a)lists.gforge.inria.fr] On Behalf Of Schwab,Wilhelm K [bschwab(a)anest.ufl.edu]
Sent: Monday, August 09, 2010 10:38 PM
To: Pharo-project(a)lists.gforge.inria.fr
Subject: Re: [Pharo-project] Early days of an MVP framework
Gary,
I have a composite GUI that appears to work. I need to mask about 3,000 images in pairs of three that repeat in sequences (don't worry, you'll be happier if you don't understand<g>). I am hoping to use the first triad in each sequence as the basis for a "fill down" command that will hopefully leave me making only minor edits to most of the masks.
Thanks!
Bill
________________________________________
From: pharo-project-bounces(a)lists.gforge.inria.fr [pharo-project-bounces(a)lists.gforge.inria.fr] On Behalf Of Schwab,Wilhelm K [bschwab(a)anest.ufl.edu]
Sent: Monday, August 09, 2010 7:05 PM
To: Pharo-project(a)lists.gforge.inria.fr
Subject: Re: [Pharo-project] Early days of an MVP framework
Gary,
I tried making some changes and found it very easy to end up with an empty shell. It appears that you are using the builder as a factory and are completely uninterested in hanging on to it :) Is that accurate? Is it good design?
Bill
-----Original Message-----
From: pharo-project-bounces(a)lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Schwab,Wilhelm K
Sent: Monday, August 09, 2010 5:06 PM
To: Pharo-project(a)lists.gforge.inria.fr
Subject: Re: [Pharo-project] Early days of an MVP framework
Gary,
Thanks for the examples. One thing is driving me nuts: in the past, I thought that creating a new row or column made a morph but did not add it to the morph being created. Might I have added them redundantly? Does re-adding a child have no effect or somehow replace it? Is this a morphi/Polymorph beginner trap? Be honest, I can take it :)
Bill
-----Original Message-----
From: pharo-project-bounces(a)lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Gary Chambers
Sent: Monday, August 09, 2010 5:45 AM
To: Pharo-project(a)lists.gforge.inria.fr
Subject: Re: [Pharo-project] Early days of an MVP framework
And with a stack layout...
(UITheme builder
newColumn: {
UITheme builder newTabGroup: {
'First page' -> ((UITheme builder newStack: {
(UITheme builder
newAlphaImage: UITheme current warningIcon
help: nil)
alpha: 0.5.
CircleMorph new
hResizing: #spaceFill;
vResizing: #spaceFill})
fillStyle: Color red;
hResizing: #spaceFill;
vResizing: #spaceFill).
'Second page' -> (UITheme builder newPanel
fillStyle: Color green;
hResizing: #spaceFill;
vResizing: #spaceFill)}.
(UITheme builder newRow: {
UITheme builder newOKButton.
UITheme builder newCancelButton})
listCentering: #bottomRight})
extent: 200@300;
openInWindow
Regards, Gary
----- Original Message -----
From: "Gary Chambers" <gazzaguru2(a)btinternet.com>
To: <Pharo-project(a)lists.gforge.inria.fr>
Sent: Monday, August 09, 2010 11:30 AM
Subject: Re: [Pharo-project] Early days of an MVP framework
> This even (to get buttons on right with correct tab key navigation
> ordering...
>
> (UITheme builder
> newColumn: {
> UITheme builder newTabGroup: {
> 'First page' -> (UITheme builder newPanel
> fillStyle: Color red;
> hResizing: #spaceFill;
> vResizing: #spaceFill).
> 'Second page' -> (UITheme builder newPanel
> fillStyle: Color green;
> hResizing: #spaceFill;
> vResizing: #spaceFill)}.
> (UITheme builder newRow: {
> UITheme builder newOKButton.
> UITheme builder newCancelButton})
> listCentering: #bottomRight})
> extent: 200@300;
> openInWindow
>
>
> Regards, Gary
>
> ----- Original Message -----
> From: "Gary Chambers" <gazzaguru2(a)btinternet.com>
> To: <Pharo-project(a)lists.gforge.inria.fr>
> Sent: Monday, August 09, 2010 11:07 AM
> Subject: Re: [Pharo-project] Early days of an MVP framework
>
>
>> Any Morph can use a layoutPolicy.
>> Available are
>> none (position based)
>> Prorportional (frame/fractions/offsets)
>> Table (overly complex too)
>> Row (one of mine, quicker for simple rows)
>> Stack (mine, overlay morphs on top of each other)
>>
>> TEasilyThemed provides some methods like...
>>
>> newRow: {aMorph, anotherMorph}
>> newColumn:
>>
>> Something like this works...
>>
>> (UITheme builder
>> newColumn: {
>> UITheme builder newPanel
>> fillStyle: Color red;
>> hResizing: #spaceFill;
>> vResizing: #spaceFill.
>> UITheme builder newRow: {
>> UITheme builder newOKButton.
>> UITheme builder newCancelButton}})
>> extent: 200@300;
>> openInHand
>>
>> (can use openInWindow also)...
>>
>> Rather busy today, hope this helps in the meantime...
>>
>> Regards, Gary
>>
>> ----- Original Message -----
>> From: "Schwab,Wilhelm K" <bschwab(a)anest.ufl.edu>
>> To: <pharo-project(a)lists.gforge.inria.fr>
>> Sent: Sunday, August 08, 2010 11:46 PM
>> Subject: [Pharo-project] Early days of an MVP framework
>>
>>
>>> Gary,
>>>
>>> I was on an unstoppable roll (salvaged early on by Andreas' bitblt
>>> coaching), until I needed to repeat a "complex" GUI component and
>>> wanted/insisted on doing so with some reuse. Seaside gives us
>>> components on web pages; we need them for GUI code too. I tried
>>> turning my presenter-like structures into factories that would add
>>> morphs to a single shell, but it fell apart when it came time to set
>>> the framing values. I was not particularly interested in fixing it,
>>> because if I could do that, I would simply build proper composite
>>> widgets using the fix.
>>>
>>> The problem appears to be in SystemWindow, which does some
>>> incredibly complicated things, all of which (correct me if I am
>>> wrong) would be unnecessary if only there were a good set of layout
>>> managers. I can get very simple-minded about things, but it would
>>> make a whole lot more sense to me to create rows and columns of
>>> widgets, adding splitters between them until the whole things
>>> behaves as intended, rather than writing code (present only in a
>>> top-level shell) that tries to split things up into rows using its
>>> own judgment. Not good. I realize you did not create the
>>> situation, and have done wonders to make it work far better than when you found it.
>>>
>>> Some time ago, I built an emulated widget framework for Dolphin,
>>> which I needed because the combination of Dolphin's view resources
>>> and Windows itself was too slow for what I was trying to do. That
>>> project included a somewhat strange set of layout classes, but the
>>> basics are present, and it is not Object Arts' IP. I ported the
>>> classes to Pharo and did some work on stub View and Presenter
>>> classes that I had added to Pharo largely to passify my code that I
>>> was importing from Dolphin. The layouts think in terms of emulated
>>> widgets, and I see no reason to change their minds: I might want to
>>> replicate the framework. However, dynamic typing and a couple of
>>> extra methods allow them to work with just about anything. My goals
>>> are modest. Being able to compose rows and columns would do a lot
>>> for me. Add splitters and the ability to fix the size of some items, and I could almost anything I would need.
>>>
>>> View class>>example
>>> | row column dot square out shell |
>>> dot := ( Form dotOfSize:100 ) asFormOfDepth:32.
>>> square := ( Form squareOfSize:100 ) asFormOfDepth:32.
>>> out := Array writeStream.
>>>
>>> row := ContainerView row.
>>> 2 timesRepeat:[
>>> column := row addSubview:ContainerView column.
>>> 2 timesRepeat:[
>>> out nextPut:(
>>> column addSubview:ImageView new
>>> ).
>>> ].
>>> ].
>>>
>>> out contents with:{ dot copy. square copy. square copy. dot copy. }
>>> do:[ :view :form | view morph image:form.
>>> ].
>>>
>>> row rectangle:( 0@0 extent:400@400 ).
>>> row layout.
>>>
>>> shell := StandardWindow labelled:'Hello MVP'.
>>> ^shell addMorph:row morph frame:( 0@0 extent:1@1 ); yourself.
>>>
>>>
>>> The above code produces an array of dots and squares, as intended.
>>> One quirk is that the grid does not resize as the shell resizes, a
>>> consequence of my not having hooked it up to resize events. I might
>>> get some interesting meltdowns once I begin to do that =:0 I used
>>> your PanelMorph as the "view" associated with ContainerView. What,
>>> ContainView isn't a view??? No. The code is biased toward Morphic,
>>> but hopefully the same code should extend to wx, GTK, etc.
>>> Dolphin's views have a handle instance variable to control the
>>> external resource; these views have an instance variable pointing to
>>> their morph. Handling of sub views works pretty much as in Dolphin:
>>> any view/morph can have children, but adding them is "legal" only for composites.
>>>
>>> Most systems I have seen treat coordinates relative to the
>>> parent/owner, but not Morphic. I remember seeing plans to make the
>>> change, but nothing after that. The view instances provide a
>>> natural place to fix things, so I took the plunge. If we switch to
>>> some other graphical realization, we can simply remove the the transformation.
>>>
>>> Are the existing splitters as strange as SystemWindow? By that I
>>> mean, would it be reasonable to add them between other morphs and
>>> look for events from them, or will they have to be replaced? I will
>>> eventually need splitters, but I could initially live without them
>>> if I can get reliable composition where I need it.
>>>
>>> There are very few view classes at present. MorphView can wrap
>>> almost anything, so it might be better to create a rich set of
>>> presenters instead. Dolphin's view resources are going to be
>>> interesting to replace. There are some complexities that I suspect
>>> are in deference to Windows, and some that might be avoidable. For
>>> our purposes, it might be enough to use SIXX to serialize a bunch of
>>> message sends and gzip the results to save memory. Another option
>>> might be to rely on class methods; having full closures won't hurt;
>>> they might allow sufficient hooking that resources in the Dolphin sense won't even be necessary.
>>> The desire for them quickly arises because views get realized in
>>> places know nothing about how the views should be configured; at
>>> least I think that is what happened to me after just a couple of
>>> hours. I am far less interested in having a graphical view editor
>>> than I am in being able to write **GOOD** code that assembles things
>>> as I want. If the result happens to allow a graphical editor too, so much the better.
>>>
>>> Any interest?
>>>
>>> Bill
>>>
>>>
>>> -----------------------------
>>>
>>> View
>>> MorphViev
>>> ImageView
>>> ContainerView
>>>
>>> ViewGadgetLayoutAbstract
>>> ScrollerGadgetLayout
>>> NullViewGadgetLayout
>>> FixedStretchFixedGadgetLayout
>>> ProportionalGadgetLayout
>>> PreferredExtentsGadgetLayout
>>> GridGadgetRowsLayout
>>> VerticalListLayout
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
Pharo-project(a)lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
Pharo-project(a)lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
Pharo-project(a)lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
Pharo-project(a)lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Aug. 10, 2010