Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- 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 2016
- 766 messages
Re: [Pharo-dev] About Pharo 60
by Esteban Lorenzano
> On 28 Aug 2016, at 00:55, Cyril Ferlicot D. <cyril.ferlicot(a)gmail.com> wrote:
>
> Le 27/08/2016 à 14:32, Esteban Lorenzano a écrit :
>> yes, some years ago I made a package for this.
>> later Ben tried something similar with the user manager.
>> none of those approaches worked as general approach because you need to âcloseâ a lot of things⦠(not just the spotter⦠which by the way, NEEDS to have a setting, no idea who answered you that but he is wrong), and image is not prepared for that.
>>
>
> I checked the issue tracker and it was closed because people though that
> we need a better way to disable shortcuts in general and that it is not
> specific to Spotter.
>
> https://pharo.fogbugz.com/f/cases/17041/We-should-be-able-to-disable-GTSpot…
>
> But we still cannot disable/enable Spotter without hacking into KM :(
> I think that sometimes it is good to think about a generic solution, but
> we still can get a temporary one because everyone cannot wait 3 years
> that the good one works. We can still let a flag "Remove this temporary
> solution after we finish <issueNumberHere>â.
ok, I will re-open it because this is not about shourtcuts, is about enabling or disabling a tool. The fact that this tool is called with a shortcut is just a detail⦠and also is incomplete: a good setting should also remove spotter from world menu, for example.
Esteban
>
>
>> of course is still possible :)
>>
>> anyway, today I would tackle a solution in a different way: I would open my app morph on an SDL2 window and not touch the word at all (opening a headless image). This is not possible in windows because when you do âheadlessâ it just laugh at you, but is doable in the not-so-long term.
>>
>> Esteban
>>
>
> --
> Cyril Ferlicot
>
> http://www.synectique.eu
>
> 165 Avenue Bretagne
> Lille 59000 France
>
Aug. 28, 2016
Re: [Pharo-dev] ensure blocks in TestCase>>tearDown are not run if an error occurs inside ensured block when test itself was halted ...
by stepharo
Hi dale
Le 8/8/16 à 15:00, Dale Henrichs a écrit :
>
> Max,
>
> Thanks for looking into this.
>
> Do you think that this bug will be fixed in Pharo5.0? When I'm
> debugging the tests with this fatal pattern, my only recourse is to
> start and stop images between test runs ...
>
Definitively. We do regular backport of fixes when they are important
and this one looks important.
> The side effect of not running ensure blocks in tests is that a
> SharedQueue gets stuck waiting on an empty queue and when I interrupt
> that process (and get another debugger that is closed) I end up with
> the Empty Debugger problem where the debuggers have decide to stop
> working ... I saw that there was logic in Process>>terminate involved
> in dealing with processes running in critical blocks and that logic
> might be faulty as well ...
>
> Dale
>
> On 8/8/16 12:11 AM, Max Leske wrote:
>> Thanks Nicolai.
>>
>> Iâve opened an issue on phogbugz:
>> https://pharo.fogbugz.com/f/cases/18885/Ensure-blocks-in-test-tear-down-not….
>>
>>
>>> On 8 Aug 2016, at 09:03, Nicolai Hess <nicolaihess(a)gmail.com
>>> <mailto:nicolaihess@gmail.com>> wrote:
>>>
>>>
>>>
>>> 2016-08-08 8:52 GMT+02:00 Max Leske <maxleske(a)gmail.com
>>> <mailto:maxleske@gmail.com>>:
>>>
>>> Wow, thatâs pretty bad. The process termination logic should be
>>> taking care of the ensure blocks. Unfortunately I canât run any
>>> Pharo images at the moment but if thereâs something wrong with
>>> process termination then itâs likely that me or Ben made some
>>> mistake. Could someone please rerun Daleâs test scenario with
>>> the original process termination code (e.g. from Pharo 3) and
>>> report the results?
>>>
>>>
>>> Yes, test runs fine in pharo 30864 (halts in the ensure block)
>>>
>>>
>>> Cheers,
>>> Max
>>>
>>>
>>> > On 8 Aug 2016, at 03:25, Dale Henrichs
>>> <dale.henrichs(a)gemtalksystems.com
>>> <mailto:dale.henrichs@gemtalksystems.com>> wrote:
>>> >
>>> > While attempting to characterize the "Empty Debugger" problem
>>> that I've recently reported[1], I found that ensure blocks in
>>> TestCase>>teardown methods are not run if an Error is signaled
>>> while executing the code protected by the ensure block ... when
>>> the test itself brings up a debugger --- now that is a mouthful
>>> :) ... but a situation that commonly occurs ...
>>> >
>>> > I've attached a fileIn with a very simple reproduction of this
>>> problem. After filing in the code, execute the following:
>>> >
>>> > BugTestCase debug: #test.
>>> >
>>> > Abandon the first halt -- this is the halt in the test. Next a
>>> debugger is brought up on the error from inside the ensure block
>>> in the tearDown method:
>>> >
>>> > tearDown
>>> > [ self error: 'teardown' ]
>>> > ensure: [
>>> > "Imagine that something important NEEDED to be done
>>> here"
>>> > self halt ].
>>> > super tearDown.
>>> >
>>> > Abandon the error and the `self halt` in the ensure block is
>>> not run ...
>>> >
>>> > If you take the `self halt` out of the test method itself, the
>>> `self halt` in the ensure block _is_ run ...
>>> >
>>> > This does not directly lead to the Empty Debugger, but when
>>> the ensure blocks called during teardown are not run, a resource
>>> is not cleaned up properly and that leads to SharedQueue hanging
>>> ... when I interrupt the SharedQueue, I believe that this leads
>>> to the "Empty Debugger" a separate, but more nasty problem ...
>>> >
>>> > Dale
>>> >
>>> > [1]
>>> http://forum.world.st/Re-Empty-debugger-Pharo-5-0-td4909911.html
>>> <http://forum.world.st/Re-Empty-debugger-Pharo-5-0-td4909911.html>
>>> >
>>> > <BugTestCase.st <http://BugTestCase.st>>
>>>
>>>
>>>
>>
>
Aug. 28, 2016
Re: [Pharo-dev] ensure blocks in TestCase>>tearDown are not run if an error occurs inside ensured block when test itself was halted ...
by stepharo
Thank you all for taking care and feeling like Pharo is your baby :).
Stef
Le 8/8/16 à 09:11, Max Leske a écrit :
> Thanks Nicolai.
>
> Iâve opened an issue on phogbugz:
> https://pharo.fogbugz.com/f/cases/18885/Ensure-blocks-in-test-tear-down-not….
>
>
>> On 8 Aug 2016, at 09:03, Nicolai Hess <nicolaihess(a)gmail.com
>> <mailto:nicolaihess@gmail.com>> wrote:
>>
>>
>>
>> 2016-08-08 8:52 GMT+02:00 Max Leske <maxleske(a)gmail.com
>> <mailto:maxleske@gmail.com>>:
>>
>> Wow, thatâs pretty bad. The process termination logic should be
>> taking care of the ensure blocks. Unfortunately I canât run any
>> Pharo images at the moment but if thereâs something wrong with
>> process termination then itâs likely that me or Ben made some
>> mistake. Could someone please rerun Daleâs test scenario with the
>> original process termination code (e.g. from Pharo 3) and report
>> the results?
>>
>>
>> Yes, test runs fine in pharo 30864 (halts in the ensure block)
>>
>>
>> Cheers,
>> Max
>>
>>
>> > On 8 Aug 2016, at 03:25, Dale Henrichs
>> <dale.henrichs(a)gemtalksystems.com
>> <mailto:dale.henrichs@gemtalksystems.com>> wrote:
>> >
>> > While attempting to characterize the "Empty Debugger" problem
>> that I've recently reported[1], I found that ensure blocks in
>> TestCase>>teardown methods are not run if an Error is signaled
>> while executing the code protected by the ensure block ... when
>> the test itself brings up a debugger --- now that is a mouthful
>> :) ... but a situation that commonly occurs ...
>> >
>> > I've attached a fileIn with a very simple reproduction of this
>> problem. After filing in the code, execute the following:
>> >
>> > BugTestCase debug: #test.
>> >
>> > Abandon the first halt -- this is the halt in the test. Next a
>> debugger is brought up on the error from inside the ensure block
>> in the tearDown method:
>> >
>> > tearDown
>> > [ self error: 'teardown' ]
>> > ensure: [
>> > "Imagine that something important NEEDED to be done
>> here"
>> > self halt ].
>> > super tearDown.
>> >
>> > Abandon the error and the `self halt` in the ensure block is
>> not run ...
>> >
>> > If you take the `self halt` out of the test method itself, the
>> `self halt` in the ensure block _is_ run ...
>> >
>> > This does not directly lead to the Empty Debugger, but when the
>> ensure blocks called during teardown are not run, a resource is
>> not cleaned up properly and that leads to SharedQueue hanging ...
>> when I interrupt the SharedQueue, I believe that this leads to
>> the "Empty Debugger" a separate, but more nasty problem ...
>> >
>> > Dale
>> >
>> > [1]
>> http://forum.world.st/Re-Empty-debugger-Pharo-5-0-td4909911.html
>> <http://forum.world.st/Re-Empty-debugger-Pharo-5-0-td4909911.html>
>> >
>> > <BugTestCase.st <http://BugTestCase.st>>
>>
>>
>>
>
Aug. 28, 2016
Re: [Pharo-dev] [Pharo-users] [ann] GTExamples alpha
by Tudor Girba
Hi,
> On Aug 26, 2016, at 10:01 PM, Nicolai Hess <nicolaihess(a)gmail.com> wrote:
>
>
>
> 2016-08-26 0:51 GMT+02:00 Tudor Girba <tudor(a)tudorgirba.com>:
> Hi,
>
> I just tried again, and the latest GToolkit image does contain FileSystem class >> gtExampleZip:
>
> Yes, it is there, but not listed under the FileSystem class package.
> If you open Nautilus for all gt examples (world menu -> GT Examples -> Browse all examples)
> A Nautilus browser opens, but it shows mostly GT-Packages.
> And if you just open a new Nautilus window, select the FileSystem-Core package and choose "Browse All Examples of Package FileSystem-Core from the GT-Examples menu.
> you won't see any example.
> It is "impractical", that you need to select the GT-Examples-Examples package to actuall find the FileSystem-Core examples (and others).
>
> Or in short
> The FileSystem examples are not in the FileSystem *package*
> And the same for other examples, you can not find all "Collections"-Examples by selecting the Collection package and choose "Browse All Examplesâ
Indeed. Good catch. This should be rethought.
Cheers,
Doru
> Inspect this:
> Smalltalk gtExamplesContained select: [ :each |
> each method methodClass instanceSide = FileSystem ]
>
> This is the image:
> https://ci.inria.fr/moose/job/gtoolkit/5595/artifact/gtoolkit.zip
>
> Cheers,
> Doru
>
>
> > On Aug 25, 2016, at 11:40 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
> >
> > Hi Nicolai,
> >
> > Thanks a lot for the feedback. Please letâs continue. See more inline.
> >
> >> On Aug 25, 2016, at 6:34 PM, Nicolai Hess <nicolaihess(a)gmail.com> wrote:
> >>
> >>
> >>
> >> 2016-08-25 8:47 GMT+02:00 Tudor Girba <tudor(a)tudorgirba.com>:
> >> Hi,
> >>
> >> Hi Doru,
> >> some questions and feedback ( I am sorry for my tone or if this sounds negative, it isn't meant to be)
> >>
> >> Over the last coupe of years Stefan Reichhart and the rest of the GT team worked on an implementation of examples. The work is inspired from previous work done by Markus Gaelli and Adrian Kuhn.
> >>
> >> As one of the goals of GT is to offer a live programming environment,
> >>
> >> Isn't this what we already have, a live programming environment, I think for newcomers (and maybe others) this needs to make be more clear, how is different, what gap are you trying to fill.
> >>
> >> one important issue is how to move from the static code to live objects as fast as possible.
> >>
> >> Isn't code always "static" and aren't objects always "live", how do play gtExamples any role in this?
> >
> > What I meant is that I want to be as little as possible in the static code browser. Instead I want to write code in the presence of a bounded âselfâ which happens either in a debugger or in an inspector.
> >
> > The gap that examples fill is that when I look at a static code and I have examples about it, I can possibly jump to those examples and code against their result. So, instead of coding a method about a FileReference in the code browser, I will code it against an instance of a FileReference. Hence, we make live programming easier to achieve.
> >
> >
> >> That is why we worked on this library as a solution to provide a link between the static code and live objects.
> >>
> >> From my understanding, I think this "link" between code an objects is the real valuable new point. This is the great thing about gtExamples. link from code (the example methods itself or methods refering a class
> >> to an example object/instance that can be inspected (the raw object or an object specific inspector pane).
> >> This is what I would consider the real step forward. You see a method refering to class TextModel and Nautilus or any other tool not only offers a method to browse all Users of this class, but too, a dedicated
> >> list of "example methods" where every example has a view for this example instance that let the user show and interact (even for non-visual objects through the "evaluater pane", or just see the code creating this
> >> example.
> >
> > Exactly.
> >
> >> We really miss examples, I often see questions on the mailing list (especially about spect) that can be explained easily with an example. And even worse, often the examples already exists, they just aren't as visible.
> >
> > Exactly. These examples are particularly amplified by the fact that we have an inspector that can provide a reacher experience through different views.
> >
> >
> >> Furthermore, this examples library also enables the definition of assertions on the examples, and this provides the possibility of rethinking the way we construct tests throughout our system. Tests are great as they help us create live objects and then to assert live properties.
> >>
> >> This whole thing sounds as if Unit-Test were a good idea but not the way that they are used today, I strongly disagree. I don't see this as a "rethinking the way we construct tests", yes, we can
> >> augment the current set of tests with addtional assertions on live objects, but this is not a replacement.
> >> "Tests are great as they help us create live objects" This is not my only purpose for writing tests, often unit-tests cover methods and "private-apis" not even considered to be used on live objects. You can not (or I don't want to
> >> ) write tests only on "finished lived objects" sometimes we need tests for initialiazation/private code or exception handling I don't see how we can offer this only by using example instances (yes your "rethinking" sounds like "this
> >> is the better way to do testsâ).
> >
> > I think there is a misunderstanding here.
> >
> > When I test, (1) I create one or more objects, (2) I assert against them and then (3) I potentially cleanup. At least the objects from step 1 are potentially interesting for documentation purposes as well. However, because tests are built in a completely different environment than examples are, and because they are not casually linked to the code they are about, we cannot exploit them to the maximum potential.
> >
> > The GT-Examples model offers a unification. This means that you can use the same mechanism for expressing both a test scenario and a documentation one. There is potential to be exploited here. For example, there is research that aims to take the all sorts of objects and try to infer types for code out of these. We could make this much simpler.
> >
> > I understand that this is a departure from the classic way of testing, but we have already expressed more than 1 thousand examples both from a documentation and from testing point of view, and it does seem to work.
> >
> >
> >> However, they do not allow us to leverage the objects we create, and this can be a tremendous resource for understanding systems.
> >>
> >> In our vision, examples should be everywhere and they should be explicitly linked to the static code they exemplify. That is why the library comes with an initial integration in existing tools (such as Nautilus, Spotter, Inspector).
> >>
> >> The current solution works well and it is the result of several rewrites. We think that the solution is complete in terms of features, but there are still several things to improve and iterate on. To this end, I kindly ask you to take a look at it while distinguishing between the concrete implementation choice (e.g., the current extensive use of pragmas) and the conceptual benefits of the approach.
> >>
> >> To ease the discussion, we put together a short documentation:
> >>
> >> Everytime I see a gtExample method on a class I first think, shouldn't this go to a Help or Doc or Exampels class instead. I don't know how others thinks about this but this is my first impression.
> >> For example, the example on your page:
> >>
> >> FileSystem class >> #createFileOnDisk
> >>
> >> <gtExample>
> >> <
> >> description: 'Create a new file or override an existing file with some contents. Open and close the stream safely'
> >>>
> >> ^
> >> FileSystem workingDirectory / 'test.txt'
> >>
> >>
> >> writeStreamDo: [ :stream | stream nextPutAll: self
> >> comment ];
> >> yourself
> >>
> >> Nice, now the user can see how to use FileSystem to create a file, open *and* close the stream safely. But for me, this method does *not* belong to the FileSystem class it just not make any sense to me, to have a method (*in this class*) that opens and closes a stream. Even if this is just an example, I would put it in a doc-page or a tutorial that can execute code. But again , this is just my point of view.
> >> I can not really explain it, having a example method on Morph or a widget ui or a widget model class, that opens an example morph or widget in the world, is for me something completly different and a valid example.
> >> Having the same for the method above - is not, at least not as executable code on the FileSystm class).
> >
> > I do not understand this last point.
> >
> > Just because an object does not have a visual appearance like a Morph does, does not make it uninteresting from an interaction point of view. The inspector already can provide the views. We also have the possibility of adding custom actions that can be installed as menu items. Even for a morph, I sometimes want to not look at its default appearance, but at its submorphs. Thus, I do not see the confusion.
> >
> > Nevertheless, the example does not have to be on the class side. It can be in any class you want and you can associate it with a subject. For example, all Roassal examples are in dedicated classes. There are hundreds of methods, so putting them all on the class side of a domain class would not work at all. We showed the example on the class side because that is a pattern that people used for a long time and it is a reasonable place when you have only a handful of examples. The rationale is that an example is a way to instantiate a class, so having it on the class side is not far fetched. Also, if you put it on the class side, you get by default the class as a subject for the examples it contains which is quite natural.
> >
> >
> >> http://gtoolkit.org/doc/Examples/examples.html
> >>
> >> That being said, you can get it with the full GToolkit in Pharo 6.0:
> >>
> >> Is this based on the recent Pharo 6.0?
> >>
> >> GTExamplesReleaseTests are failing for me
> >
> > Yes, these are yellow.
> >
> >
> >> Where did you test this? I get some Object>>#name deprecation warnings when browsing for examples refering a class, for example on
> >> class FileSystem and menu entry "Browse Examples refering FileSystem" (maybe a Pharo 5.0 version?)
> >
> > I tested in Pharo 6.0 (60188), but we just got a problem that was reported related to Epicea and Martin is looking at it.
> >
> >
> >> The example on the examples.html side isn't actually in the image right?
> >
> > Yes, itâs not there yet.
> >
> >
> >> The browsing examples of a package (context menu on nautilus package pane) does not work or I don't understand why it does not find any examples at all.
> >> The World menu "Browse All Examples" does not contain the class FileSystem, although FileSystem>>gtExampleZip is a gtExample, this is because
> >> the example method is in an extension package, should all gtExample methods be class extensions ? This is handled differently for different packages.
> >
> > Hmm. When I "Browse All Examples" I get a Nautilus with FileSystem class>>gtExampleZip in my image. But, indeed, in the latest GToolkit image, this example is missing.
> >
> >
> >> The code pane context menu of a sendersOf Message browser is broken (debug menu).
> >
> > I do not understand what menu item you refer to. Could provide a screenshot.
> >
> >>
> >> From the web-side:
> >>
> >> "Furthermore, Nautilus, the World-Menu, all Rub-Text-Editors as well as Spotter and Inspector provide access to retrieve, browse and navigate examples from entities within the world"
> >> I can not find it, not in inspector, Rub-Text-Editors, only in Nautilus.
> >
> > In Nautilus and in RubText you get it in the GT-Examples menu (Browse examples with subject â¦).
> >
> > The Inspector is not yet there, but we are adding it.
> >
> >
> >> And the menu entries are ... unfortunate (see screenshot), what you put in, the whole source as menu label?
> >
> > Hmm. Something is strange there. I get the name of a method, not the source code. What image are you in?
> >
> >
> >> run "run the example and return its return-value"
> >>
> >> debug
> >> "same run, but open debugger if the example failsâ
> >> returnValue
> >> "the return-value"
> >> Executing run/debug/inspect returnValue does not seem to make any different when called from nautilus. It always gives
> >> an inspector on a dictionary holding the gtexample and its gtexampleresult (is this a bug?)
> >
> > Yes.
> >
> >
> >> Glossary:
> >> "Example: an example is a tiny stub object representing a GT-Example. It holds the references to its dependencies, subjects and many other entities. "
> >> What are "many other entities" this is a bit unclear
> >
> > Icon, Label, Provider, and others that you can add through custom annotations if you want to. This part is not yet clear.
> >
> >
> >> "After-method: the after-method is a method that is performed right after the example."
> >> After the example ? I thought an example is a "tiny stub *object*", how can it run?
> >> How it is run after I run an example for inspection, after I closed the inspector?
> >
> > Not yet. At this point, inspecting does not prevent triggering of the cleanup method, but it would certainly be interesting to get there.
> >
> > Cheers,
> > Doru
> >
> >> http://gtoolkit.org/#install
> >> (easiest is to download the ready made image for now)
> >>
> >> For those that are at ESUG, I will try to provide a short overview during the Show Us Your Project session from today.
> >>
> >> Cheers,
> >> Doru
> >>
> >>
> >> --
> >> www.tudorgirba.com
> >> www.feenk.com
> >>
> >> "Reasonable is what we are accustomed with."
> >>
> >>
> >>
> >> <gtexample_menu.png>
> >
> > --
> > www.tudorgirba.com
> > www.feenk.com
> >
> > "No matter how many recipes we know, we still value a chef."
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "Quality cannot be an afterthought."
>
>
>
--
www.tudorgirba.com
www.feenk.com
"What we can governs what we wish."
Aug. 28, 2016
Re: [Pharo-dev] [ann] GTExamples alpha
by Tudor Girba
Hi Nicolai,
> On Aug 26, 2016, at 10:08 PM, Nicolai Hess <nicolaihess(a)gmail.com> wrote:
[â¦]
> > And the menu entries are ... unfortunate (see screenshot), what you put in, the whole source as menu label?
>
> Hmm. Something is strange there. I get the name of a method, not the source code. What image are you in?
>
> Ah, it always uses the "selected text" for building the menu label, in this example screenshot, I 've selected the whole
> method.
> Hm. But I don't know how it would find the selected method anyway.
> If I selecte the method #append: and select
> Browse examples with subject #append:
> or
> Browse examples with literal: #append:
> it opens a browser on class Text ander there is a Text class>>#gtExampleSimple,
> but it does not contain #append: not as a literal or as a message send.
>
> I did another test: select the message "asText" and choose
> Browse Examples with literal #asText
> It opens a browse with some more classes/example methods but
> I can not see *any* relation between this example methods and the text I selected.
An example can have all sorts of objects as subjects such as class, method or package. But, it can also have more arbitrary objects such as text and this is what you see in the text pane. I agree that right now this is more experimental from a usage point of view and we likely should remove it from now to make the default behavior focus on code entities.
Doru
--
www.tudorgirba.com
www.feenk.com
"To utilize feedback, you first have to acquire it."
Aug. 28, 2016
Re: [Pharo-dev] About better communication in the community
by Tudor Girba
Hi,
I think this is a great idea.
Thanks for opening the issues. Now, the only question is where to put these. You suggest the package Manifest. I think this would work for individual packages, but as we are moving to projects (with Metacello), I would suggest to put these methods in the Configurations. This would also fit from a conceptual encapsulation point of view: loading and unloading are in the same place.
What do you think?
Doru
> On Aug 27, 2016, at 11:00 AM, stepharo <stepharo(a)free.fr> wrote:
>
> You see hernan doing positively is the best way to make that things happen
>
> We can have a
>
> preUnload hook
>
> Now we should check how it fits with cleanForProduction and others.
>
> But we should definitively have a way to express this.
>
> So let us see how we can design it and then just implement it. I'm sure that GT people are open to such hooks
>
> and if you really want to get a better Pharo for you then talk to them and us.
>
>
> https://pharo.fogbugz.com/f/cases/18997/Add-unload-to-package-manifest-in-QA
>
> https://pharo.fogbugz.com/f/cases/18998/Add-unload-to-package-manifest-of-S…
>
> https://pharo.fogbugz.com/f/cases/18999/Add-unload-to-package-manifest-in-G…
>
> https://pharo.fogbugz.com/f/cases/19000/Add-unload-to-package-manifest-in-GT
>
> Stef
>
--
www.tudorgirba.com
www.feenk.com
"Next time you see your life passing by, say 'hi' and get to know her."
Aug. 28, 2016
Re: [Pharo-dev] About Pharo 60
by stepharo
Thanks Cyril
Now we have to check what is synectique specific from what should be
pushed to Pharo.
> Since we moved to a Seaside application not so long after I joined
> Synectique we only disable some basic things.
>
> If I don't say anything wrong here is what we did:
> - Remove repositories containing "Synectique" in the name
> - Reset all passwords (MCHttpRepository clearPasswords)
> - Install a custom world menu (WorldState desktopMenuPragmaKeyword: 'XXX')
> - Remove Halos (At the time I created an issue to be able to do `Morph
> halosEnabled: false`, but it would be useful to make that a setting)
> - Remove Spotter ((KMRepository default globalCategories detect: [ :each
> | each isKindOf: GTSpotterGlobalShortcut ]) allEntries keymaps do:
> #disable)
> - Usman also added a transparent Morph that could catch some shortcuts I
> think and that would block some actions. We could disabled it with a
> dialog and a password.
>
>> Now this is important to see that if people for which the value is high
>> do not work on something
>> why others would do it.
>>> When I improved the deployment of Synectique Tools I asked to get a
>>> simple way to disable Spotter via a setting but I got as answer "No
>>> because you can do it by removing a global shortcut so it is not
>>> needed.".
>> I do not know how to do it either. So we should document that.
> What I did:
>
> (KMRepository default globalCategories detect: [ :each | each isKindOf:
> GTSpotterGlobalShortcut ]) allEntries keymaps do: #disable
>
> Ugly I know but it worked and was only called once in the CI.
>
>>> People in companies don't have the time to learn how shortcuts work and
>>> how to remove one without impacting something else. And they don't have
>>> the time to check Spotter code to know how it is call.
>>>
>>> If the image is able to have a deployment mode then I don't care how
>>> Spotter is disabled (setting or removing a shortcut). But for now we
>>> don't have it. :)
>> No you should care because one day you will come with a new requirement :)
>> I understand what you mean but the point is that Pharo is our common
>> architecture
>> so we should just all pay attention and we cannot ask people to do
>> everything because
>> we all have 24 h a day. So we should be smart, share and build together.
>>
Aug. 28, 2016
Layout in bloc
by Alexandre Bergel
Hi!
I am working on a popup support in Bloc and I am facing a problem. Consider the following code:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
space := BlSpace new.
space root layout: BlLinearLayout horizontal.
10
timesRepeat: [ | e |
e := (BlRectangle new extent: 20 @ 20) asElement.
e background: Color random.
space root addChild: e ].
space root children withIndexDo: [ :e :index | e translateBy: (index * 30) @ 10 ].
space root children do: [ :e |
e
addEventHandler:
(BlEventHandler
on: BlMouseEnterEvent
do: [ :evt |
| txt |
txt := BlText new
position: evt position;
fill: Color red;
text: 'Hello World'.
e parent addChild: txt ]).
].
space show
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
If you uncomment the second line (âspace root layout:â¦â), then the string hello world is added text to the element in which the mouse enter. With the layout, the string is added at the end of the line.
I like very much the idea of having the layout applied when elements are added (even I suspect we may have scalability issues very soon), but in that situation, this is not wished.
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Aug. 28, 2016
Re: [Pharo-dev] About Pharo 60
by Cyril Ferlicot D.
Le 27/08/2016 à 14:32, Esteban Lorenzano a écrit :
> yes, some years ago I made a package for this.
> later Ben tried something similar with the user manager.
> none of those approaches worked as general approach because you need to âcloseâ a lot of things⦠(not just the spotter⦠which by the way, NEEDS to have a setting, no idea who answered you that but he is wrong), and image is not prepared for that.
>
I checked the issue tracker and it was closed because people though that
we need a better way to disable shortcuts in general and that it is not
specific to Spotter.
https://pharo.fogbugz.com/f/cases/17041/We-should-be-able-to-disable-GTSpot…
But we still cannot disable/enable Spotter without hacking into KM :(
I think that sometimes it is good to think about a generic solution, but
we still can get a temporary one because everyone cannot wait 3 years
that the good one works. We can still let a flag "Remove this temporary
solution after we finish <issueNumberHere>".
> of course is still possible :)
>
> anyway, today I would tackle a solution in a different way: I would open my app morph on an SDL2 window and not touch the word at all (opening a headless image). This is not possible in windows because when you do âheadlessâ it just laugh at you, but is doable in the not-so-long term.
>
> Esteban
>
--
Cyril Ferlicot
http://www.synectique.eu
165 Avenue Bretagne
Lille 59000 France
Aug. 27, 2016
Re: [Pharo-dev] About Pharo 60
by Cyril Ferlicot D.
Le 27/08/2016 à 14:39, stepharo a écrit :
> Cyril what would be good is to share what you are disabling and to tunr
> such points into points that can be turned
> but inside Pharo like that you push the logic to the system.
>
Since we moved to a Seaside application not so long after I joined
Synectique we only disable some basic things.
If I don't say anything wrong here is what we did:
- Remove repositories containing "Synectique" in the name
- Reset all passwords (MCHttpRepository clearPasswords)
- Install a custom world menu (WorldState desktopMenuPragmaKeyword: 'XXX')
- Remove Halos (At the time I created an issue to be able to do `Morph
halosEnabled: false`, but it would be useful to make that a setting)
- Remove Spotter ((KMRepository default globalCategories detect: [ :each
| each isKindOf: GTSpotterGlobalShortcut ]) allEntries keymaps do:
#disable)
- Usman also added a transparent Morph that could catch some shortcuts I
think and that would block some actions. We could disabled it with a
dialog and a password.
> Now this is important to see that if people for which the value is high
> do not work on something
> why others would do it.
>> When I improved the deployment of Synectique Tools I asked to get a
>> simple way to disable Spotter via a setting but I got as answer "No
>> because you can do it by removing a global shortcut so it is not
>> needed.".
>
> I do not know how to do it either. So we should document that.
What I did:
(KMRepository default globalCategories detect: [ :each | each isKindOf:
GTSpotterGlobalShortcut ]) allEntries keymaps do: #disable
Ugly I know but it worked and was only called once in the CI.
>> People in companies don't have the time to learn how shortcuts work and
>> how to remove one without impacting something else. And they don't have
>> the time to check Spotter code to know how it is call.
>>
>> If the image is able to have a deployment mode then I don't care how
>> Spotter is disabled (setting or removing a shortcut). But for now we
>> don't have it. :)
> No you should care because one day you will come with a new requirement :)
> I understand what you mean but the point is that Pharo is our common
> architecture
> so we should just all pay attention and we cannot ask people to do
> everything because
> we all have 24 h a day. So we should be smart, share and build together.
>
--
Cyril Ferlicot
http://www.synectique.eu
165 Avenue Bretagne
Lille 59000 France
Aug. 27, 2016