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 2017
- 787 messages
Re: [Pharo-dev] Writeup: how to contribute to Pharo
by Guillermo Polito
On Thu, Aug 10, 2017 at 9:39 PM, Torsten Bergmann <astares(a)gmx.de> wrote:
> Hi Guille,
>
> nice writeup and definitely needed. Thanks a lot!
>
> If possible you should complete it with:
> - how Windows users could contribute
>
Hard topic. I'm taking benefit of my gf's windows computer right now to
test. Basically, windows has problems with long paths but there are
workarounds. Icerberg works by default without any changes (same bugs as in
linux and osx at least :)). Here are my notes to make it work:
* Download latest pharo:
- http://files.pharo.org/image/70/latest-32.zip
- http://files.pharo.org/vm/pharo-spur32/win/stable-20170720.zip
* Clone using sourcetree
This is very slow and failed to checkout (not clone) because of the
"Filename too long errors"
I found for this the following workaround:
http://pingec.si/blog/articles/msysgit-longpath/
Once I did that, sourcetree worked nicely, and I could commit and change
branches using iceberg.
Warning: I did not test making changes on the "long files" to see what
happens...
> - that #development branch is used instead of master
>
I'll make another writeup about the entire process.
> - how one can keep his own fork up to date
>
And about this one too
>
> Also it would be good to have the AboutBox in Pharo with the build number
> again.
>
> Because the ZeroCnnf just gives you a Pharo.image and nobody knows what
> the build number
> or sha was to reproduce how old or new this is.
>
Well, actually right now
SystemVersion current
has the hash of the commit the image was generated from if you check the
inspector. It's then a UI problem and easy to fix. Maybe somebody could use
this to try making a pull request?
Then, we could add a build number in SystemVersion of course.
Guille
>
> Thanks
> T.
>
>
> *Gesendet:* Donnerstag, 10. August 2017 um 17:17 Uhr
> *Von:* "Guillermo Polito" <guillermopolito(a)gmail.com>
> *An:* "Discusses Development of Pharo" <pharo-dev(a)lists.pharo.org>
> *Betreff:* [Pharo-dev] Writeup: how to contribute to Pharo
> Hi,
>
> I've made some write up for the pharo part (not metacello or external
> projects)
>
> https://github.com/guillep/PharoIntegrationProcess/wiki/
> Contribute-a-fix-to-Pharo
>
> Of course, expect bugs on it :) Not everything is smooth. If you have
> comments, they are welcome.
>
> Guille
>
> --
>
>
>
> Guille Polito
>
>
>
> Research Engineer
>
> French National Center for Scientific Research - *http://www.cnrs.fr*
> <http://www.cnrs.fr>
>
>
>
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>
--
Guille Polito
Research Engineer
French National Center for Scientific Research - *http://www.cnrs.fr*
<http://www.cnrs.fr>
*Web:* *http://guillep.github.io* <http://guillep.github.io>
*Phone: *+33 06 52 70 66 13
Aug. 10, 2017
Re: [Pharo-dev] [Pharo-users] [ann] moldable brick editor - alpha
by Tudor Girba
Thanks Stef!
Doru
> On Aug 10, 2017, at 11:52 AM, Stephane Ducasse <stepharo.self(a)gmail.com> wrote:
>
> Hi alex
>
> I added
> https://pharo.fogbugz.com/f/cases/20298/Check-and-remove-Athens-dependency-…
> But it would be better that you enter bug entry and not me because IT DOES NOT SCALE.
>
> Stef
>
> On Wed, Aug 9, 2017 at 10:17 PM, Aliaksei Syrel <alex.syrel(a)gmail.com> wrote:
> Hi Stef,
>
> Can you be more precise so that we can take action?
>
> In ConfigurationOfOSWindow there is the following dependency:
>
> spec
>
>
> with: 'OSWindow-SDL2'
> with: [ spec requires: #('OSWindow-Core' 'Athens' ) ]
>
> The problem is that OSWindow-SDL2 depends on Athens which is strange, because windowing system should not know anything about rendering and Athens (or Pompeii or Sparta).
> In Bloc we use OSWindow to support native windows and have a corresponding dependency in BaselineOfBloc. It means that when loading Bloc monticello (or metacello) updates OSWindow which requests loading of Athens. At the same time there are some Morphic classes that were removed in Pharo 7 while Athens adds extension methods to those classes. So we should either update Athens to remove those extensions method and (which is better) make OSWindow independent from Athens.
>
> Just remember that we will not add new things in Pharo if we do not remove the equivalent already in the system.
> I'm fed up to have three different half working mechanisms.
>
> Key class exists in Pharo by default and is already used by morphic: KeyboardEvent>>#key. We just reuse existing stuff :)
>
> Cheers,
> Alex
>
> On 9 August 2017 at 20:17, Stephane Ducasse <stepharo.self(a)gmail.com> wrote:
>
>
> On Sun, Aug 6, 2017 at 8:07 PM, Aliaksei Syrel <alex.syrel(a)gmail.com> wrote:
> Hi Denis,
>
> Thanks a lot for looking into it :)
> See my answers for every point below:
>
> 1) Loading in Pharo 7 signal dependency error:
> That is true, but I can not do anything about it now :( OSWindow-SDL depends on Athens (while it should not). In Bloc we don't use / need Athens but because of OSWindow's dependency Athens tries to update itself. Additionally the classes you mentioned were removed from the system, while Athens adds extension methods to them => error during installation. In Pharo 6 there is no error, though.
>
> Can you be more precise so that we can take action?
>
>
>
>
> 2) Text cursor up/down is not working correctly when text is wrapped.
> Indeed, up/down movement is a bit tricky :) But its implementation is in fact very interesting. Take a look at this video: â
> Bloc-FocusNavigationLong.movâ
> Bloc has support of element-independent visual focus navigation. In the editor we reuse it for the cursor (one cursor for a moment but we target to support multiple). However, because of text's special nature it is not super smooth but will be improved :)
>
> 3) I look a bit at text commands (TextEditorCommand) and found that current KeyMapping package ($a asShortcut) is not used. Instead there is new hierarchy of BlKeyCombination.
>
> It is a special bloc feature that requires its own announcement. As a teaser I can say that we rely on Key and not on Character + modifiers while defining shortcuts. It allows us to build any key combinations possible. For example we distinguish left and right shift, left and right meta, etc. Shortcuts can consist only of one Key or be just only right shift :) It is super flexible but we will come to it later ;)
>
> Just remember that we will not add new things in Pharo if we do not remove the equivalent already in the system.
> I'm fed up to have three different half working mechanisms.
>
>
> P.S. arrows are also treated at shortcuts and not as keystroke: meaning that there is no need to do this:
>
> <Screen Shot 2017-08-06 at 20.03.11.png>
>
> 4) I thing we should try to use Commander for new UI widgets. For example It is very naturally applied to TextEditorCommand hierarchy. And it will automatically remove hardcoded shortcuts defined in method BrTextEditor>>onAttached:
>
> Commander didn't yet made it into release :) Just as prove of concept I hardcoded shortcuts in onAttached: tin order to show that they all are in one single place. There is no other place where we check if any modifier keys pressed! It is beautiful and will allow us to ship editor with fully customisable shortcuts (nothing should stop us from having vim bindings).
>
> Cheers,
> Alex
>
> On 6 August 2017 at 19:17, Denis Kudriashov <dionisiydk(a)gmail.com> wrote:
> Good job guys.
>
> Here is my feedback:
>
> 1) Loading in Pharo 7 signal dependency error:
> This package depends on the following classes:
> NewList
> NewListRenderer
> TabActionButton
> Tab
> TabBar
> Then I proceed and it was loaded fine. And editor works like in demo.
>
> 2) Text cursor up/down is not working correctly when text is wrapped.
> - it jumps between real text line instead of visual wrapped lines.
> - it skips empty lines
> - sometimes it is just not moved (not found concrete case)
>
> 3) I look a bit at text commands (TextEditorCommand) and found that current KeyMapping package ($a asShortcut) is not used. Instead there is new hierarchy of BlKeyCombination.
> What the reason for this?
>
> 4) I thing we should try to use Commander for new UI widgets. For example It is very naturally applied to TextEditorCommand hierarchy. And it will automatically remove hardcoded shortcuts defined in method BrTextEditor>>onAttached:
>
>
>
>
> 2017-08-05 0:19 GMT+02:00 Tudor Girba <tudor(a)tudorgirba.com>:
> Hi,
>
> We are very happy to announce the alpha version of a moldable editor built in Brick (https://github.com/pharo-graphics/Brick) which is based on Bloc (https://github.com/pharo-graphics/Bloc) This is primarily the work of Alex Syrel. The project was initially financially sponsored by ESUG and it is currently supported by feenk. And of course, the project is based on the tremendous work that went into Bloc and Brick by all contributors.
>
> Take a look at this 2 min video:
> https://www.youtube.com/watch?v=2vy6VMJM9W4&feature=youtu.be
>
> The basic editor works and it is both flexible and scalable. For example, the last example shown in the video is an editor opened on 1M characters, which is reasonably large, and as can be seen see one can interact with it as smoothly as with the one screen text. It actually works just as fine with 100M characters.
>
> The functionality of the editor includes: rendering, line wrapping, keypress and shortcut handling, navigation, selection and text styling. Currently, the editor is 1260 lines of code including method and class comments. This is not large for a text editor and this is possible because most of the work is done by generic concepts that already exist in Bloc such as layouts and text measurements. Beside the small maintenance cost, the benefit is that we have the option to build all sorts of variations with little effort. That is why we call this a moldable text editor.
>
> Another benefit of using elements and layouts is that we can also embed other kinds of non-text elements with little effort (such as pictures), and obtain a rich and live text editor. We already have basic examples for this behavior, and we will focus more in the next period on this area.
>
> The next immediate step is to add syntax highlighting. Beside the text attributes problem, this issue will also exercise the thread-safety the implementation is. The underlying structure (https://en.wikipedia.org/wiki/Rope_(data_structure)) is theoretically thread-safe, but it still needs to be proven in practice.
>
> We think this is a significant step because the editor was the main piece missing in Brick and it will finally allow us to build value that can be directly perceived by regular users on top of Brick and this, in turn, will generate more traction. Please also note that because now Bloc is directly embeddable in Morphic it means that we can actually start using it right away. For example, the picture below shows the text element being shown through a live preview in the GTInspector.
>
> <AC36A55F-405C-6147-9E0F-BA1F6F1008BA.png>
>
> This is another puzzle piece towards the final goal of engineering the future of the Pharo user interface. There is still a long way to go to reach that goal, but considering the work that is behind us, that goal that looked so illusive when Alain and Stef initiated the Bloc project is now palpable.
>
> We will continue the work on this over the next period and we expect to announce new developments soon.
>
> If you want to play with it, you can load the code like this (works in both Pharo 6 and 7):
> Iceberg enableMetacelloIntegration: true.
> Metacello new
> baseline: 'Brick';
> repository: 'github://pharo-graphics/Brick/src';
> load: #development
>
> Please let us know what you think.
>
> Cheers,
> Alex and Doru
>
>
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "What is more important: To be happy, or to make happy?"
>
>
>
>
>
>
--
www.tudorgirba.com
www.feenk.com
"One cannot do more than one can do."
Aug. 10, 2017
Re: [Pharo-dev] FileSystem fix integration
by Alistair Grant
Hi Stef,
On Wed, Aug 09, 2017 at 10:12:17PM +0200, Stephane Ducasse wrote:
> Hi alistair
>
> I went on fogbugz to find the fix to be included and I'm not sure not
> that find them.
> I looked for FileSystem.
>
> I found
> - https://pharo.fogbugz.com/f/cases/20165/Support-segment-path-printing
>
> - https://pharo.fogbugz.com/f/cases/18084/FileReference-EnsureCreateFile
> https://github.com/pharo-project/pharo/pull/133
>
> - https://pharo.fogbugz.com/f/cases/19609/FileReference-base-should-be-before…
> https://github.com/pharo-project/pharo/pull/137
>
> Did I miss some others?
>
> Stef
- https://pharo.fogbugz.com/f/cases/20294/Add-FileAttributesPlugin-to-the-lin…
This is the first step in fixing FileReference>>isSymlink and
extending support for all file attributes returned by stat() and
lstat().
The parent issue is:
https://pharo.fogbugz.com/f/cases/18279/isSymlink-seems-to-be-broken-on-Lin…
Just for completeness, the two issues relating to FileReference>>/:
- https://pharo.fogbugz.com/f/cases/13217/FS-basename-with-compound-path-stri…
- https://github.com/pharo-project/pharo/pull/192
- https://pharo.fogbugz.com/f/cases/18042
- https://github.com/pharo-project/pharo/pull/75
Cheers,
Alistair
Aug. 10, 2017
Re: [Pharo-dev] FileSystem fix integration
by Alistair Grant
Hi Stef,
On Wed, Aug 09, 2017 at 08:23:50PM +0200, Stephane Ducasse wrote:
> Tx!
> So that I do not make mistake:
> The fix is the second solution. Now do we have somewhere the first one?
See below...
> On Wed, Aug 9, 2017 at 10:08 AM, Denis Kudriashov <dionisiydk(a)gmail.com> wrote:
> > Hi
> >
> > 2017-08-09 8:47 GMT+02:00 Alistair Grant <akgrant0710(a)gmail.com>:
> >>
> >> Hi Stef,
> >>
> >> On Tue, Aug 08, 2017 at 07:00:04PM +0200, Stephane Ducasse wrote:
> >> > Hi Alistair
> >> >
> >> > I'm going over the green build first.
> >> >
> >> > - Then also
> >> > https://pharo.fogbugz.com/f/cases/18042/FileSystem-a-file-doesn-t-exist-but…
> >> > I read it but do you suggest to drop it and close it?
> >>
> >> I don't think this issue should be dropped, there is a regular stream of
> >> questions to the mailing list from newcomers getting confused by the
> >> current behaviour.
> >>
> >> There are basically two opposing proposals:
> >>
> >> 1. Modify FileReference>>/ to accept a path and parse it correctly
> >> (which is what I proposed).
See:
- https://pharo.fogbugz.com/f/cases/13217/FS-basename-with-compound-path-stri…
- https://github.com/pharo-project/pharo/pull/192
> >> 2. Modify FileReference>>/ to explicitly reject an argument which
> >> includes the path delimiter (and it should suggest using #resolve:).
See:
- https://pharo.fogbugz.com/f/cases/18042
- https://github.com/pharo-project/pharo/pull/75
Cheers,
Alistair
> >> The first proposal is more "practical", and the second is more "pure",
> >> keeping the to original design goals and abstractions.
> >>
> >> Both have had multiple people support them, and both are better than the
> >> current situation, however it is subjective as to which of the two
> >> proposals is better.
> >
> >
> > I would vote for first solution
> >
> >>
> >>
> >> I'm not sure what the normal tie-breaking process is, but I'm happy to
> >> defer to the Pharo Association (Esteban? / Marcus? / yourself?).
> >>
> >> Cheers,
> >> Alistair
> >>
> >
>
Aug. 10, 2017
Re: [Pharo-dev] Spec menu extensibility (epicea)
by Stephane Ducasse
Tx eliot for sharing your experience with us.
I will keep that in mind (I decided that I should not start something
new before finishing something)
So frustrating to have many not finished items.
Stef
On Thu, Aug 10, 2017 at 7:39 PM, Eliot Miranda <eliot.miranda(a)gmail.com> wrote:
> Hi Peter,
>
> On Thu, Aug 10, 2017 at 12:48 AM, Peter Uhnak <i.uhnak(a)gmail.com> wrote:
>>
>> Hi Stef,
>>
>> I use both a variant with an argument and without, however I have slightly
>> modified PragmaMenuBuilder to support this.
>>
>> e.g. I have
>>
>> <opEditorToolbarMenu> which always adds entries to a particular menu.
>> <opEditorToolbarMenu: #OPUmlClassEditorPlugin> which adds entries only
>> when some particular context is active (here it would mean that the items
>> are added only when ClassEditor plugin is active)
>>
>> (The second case can be done with a local if condition, but I found this
>> to be more practical.)
>>
>> I don't see a benefit in having 'order' as part of the pragma, because you
>> can specify the order for the menu items themselves.
>>
>> What I am still wondering is whether it is better to have a different
>> pragma for each menu, or have the menu name as an argument. The same goes
>> for differentiating pragmas between different tools.
>>
>> e.g.
>>
>> <opEditorToolBarMenu: #OPUmlClassEditorPlugin> vs <menu: #EditorToolbar
>> tool: #OP context: #OPUmlClassEditorPlugin>
>
>
> I very strongly recommend the latter. Why? If designed appropriately the
> second form is used as a selector in *building* the menu. So the idea is to
> have the menu builder perform the pragma to add that item to it. Then there
> are many menu items in the system that use the same pragma and one can see
> both senders of the pragma (which are examples of menu extensions) /and/ the
> implementor(s) (which is an example of how to actually extend a menu).
>
> With the former one has to have somewhere that relates a specific menu to
> the pragma that extends only that menu, a way of extracting that information
> form that pragma, and finally a way of extending the menu. With the latter
> there needs be only one version of the code that collects the pragmas for
> any menu and extends that menu. It becomes a standard library feature.
>
>
>>
>> the latter seems like it's adding more complexity.
>
>
> But when used in a real system it actually reduces complexity, and provides
> examples to the user of how to define menu extensions and to implementors of
> how to extend menus. VisualWorks works like this and has since 1998 when
> Steve Dahl and I designed the pragma system for just this case.
>
> We /did/ add a grouping facility based on floating point numbers, a hack,
> but a reasonable one. If you look at, say, the standard programming text
> menu, which at its simplest might be
>
> again
> undo
> -----------
> cut
> copy
> paste
> -----------
> do it
> print it
> debug it
> -----------
> accept
> cancel
> -----------
> format
> spawn
> explain
>
> the grouping of related items is quite important in the menu being easy to
> navigate. But if we want to extend it we wan to be able to add groups to
> it. In VW we number the groups in the base menu in tens, so again/undo is
> 10.0, cut/copy/paste is 20.0, etc. Then anyone can define a new group
> relative to the base groups by providing a group number such as 35.0 to add
> between do it/print it/debug it and accept/cancel
>
>
>
>>
>> Peter
>>
>>
>> On Wed, Aug 09, 2017 at 09:58:54PM +0200, Stephane Ducasse wrote:
>> > Hi Peter
>> >
>> > Yes I was thinking about it.
>> > Now from your experience what kind of pragma should we provide?
>> >
>> > <group: 'name' order: 10>
>> >
>> > Not sure that we need the argument to the group.
>> >
>> > <menusForGroup: 'name'>
>> >
>> > <menuForGroup: 'name' order: 10>
>> >
>> > Stef
>> >
>> >
>> >
>> >
>> > On Sun, Aug 6, 2017 at 12:09 AM, Peter Uhnak <i.uhnak(a)gmail.com> wrote:
>> > > Hi Stef,
>> > >
>> > > I faced similar issue and then I've found out that PragmaMenuBuilder
>> > > is compatible with Spec.
>> > >
>> > > Something like...
>> > >
>> > > builder := PragmaMenuBuilder pragmaKeyword: 'myPragma' model: self.
>> > > menu := MenuModel new.
>> > > menu fromSpec: builder menuSpec.
>> > >
>> > > Peter
>> > >
>> > >
>> > > On Sat, Aug 05, 2017 at 06:26:45PM +0200, Stephane Ducasse wrote:
>> > >> Hi guys
>> > >>
>> > >> I would like to know if there is a pattern to build extensible menu
>> > >> in Spec.
>> > >> For example, I extending Epicea to support pillar fileout so that I
>> > >> can turn a coding section into a pillar steps of action.
>> > >>
>> > >> I wanted to extend the epicea browser to get my menu in:
>> > >> But the code is like that:
>> > >>
>> > >> EPLogBrowserModel >> addMenuItemsForSelectedItemsIn: aMenu
>> > >>
>> > >> aMenu addGroup: [ :aGroup |
>> > >> self menuActionsForSelectedItems do: [ :oldStyleMenuItemArray |
>> > >> aGroup addItem: [ :anItem |
>> > >> anItem
>> > >> name: oldStyleMenuItemArray first;
>> > >> description: oldStyleMenuItemArray third;
>> > >> icon: (self iconNamed: oldStyleMenuItemArray fourth);
>> > >> action: [ self perform: oldStyleMenuItemArray second ]
>> > >> ] ] ].
>> > >>
>> > >> aMenu addGroup: [ :aGroup |
>> > >> aGroup addItem: [ :anItem |
>> > >> anItem
>> > >> name: 'Filters';
>> > >> icon: (self iconNamed: #smallFindIcon);
>> > >> subMenu: self filtersSubMenu ] ].
>> > >>
>> > >> aMenu addGroup: [ :aGroup |
>> > >> aGroup addItem: [ :anItem |
>> > >> anItem
>> > >> name: 'File Out';
>> > >> description: 'Write selected entries to an Ombu file';
>> > >> icon: (self iconNamed: #smallSaveAsIcon);
>> > >> action: [ self fileOutSelection ] ] ].
>> > >>
>> > >>
>> > >> EPLogBrowserModel >> menuMorphForSelectedItems
>> > >>
>> > >> | aMenu |
>> > >> aMenu := MenuModel new.
>> > >> showEntryItemMenu ifTrue: [ self
>> > >> addMenuItemsForSelectedItemsIn: aMenu ].
>> > >> ^ aMenu buildWithSpecAsPopup
>> > >>
>> > >>
>> > >> So I would like to improve Epicea but I face the problem of the
>> > >> limits
>> > >> of Spec (presumably).
>> > >> I'm thinking to add a <specMenu: 10> pragma to handle this case.
>> > >> Any thought.
>> > >>
>> > >> Stef
>> > >>
>> > >
>> >
>>
>
>
>
> --
> _,,,^..^,,,_
> best, Eliot
Aug. 10, 2017
Re: [Pharo-dev] Spec menu extensibility (epicea)
by Eliot Miranda
Hi Peter,
On Thu, Aug 10, 2017 at 12:48 AM, Peter Uhnak <i.uhnak(a)gmail.com> wrote:
> Hi Stef,
>
> I use both a variant with an argument and without, however I have slightly
> modified PragmaMenuBuilder to support this.
>
> e.g. I have
>
> <opEditorToolbarMenu> which always adds entries to a particular menu.
> <opEditorToolbarMenu: #OPUmlClassEditorPlugin> which adds entries only
> when some particular context is active (here it would mean that the items
> are added only when ClassEditor plugin is active)
>
> (The second case can be done with a local if condition, but I found this
> to be more practical.)
>
> I don't see a benefit in having 'order' as part of the pragma, because you
> can specify the order for the menu items themselves.
>
> What I am still wondering is whether it is better to have a different
> pragma for each menu, or have the menu name as an argument. The same goes
> for differentiating pragmas between different tools.
>
> e.g.
>
> <opEditorToolBarMenu: #OPUmlClassEditorPlugin> vs <menu: #EditorToolbar
> tool: #OP context: #OPUmlClassEditorPlugin>
>
I very strongly recommend the latter. Why? If designed appropriately the
second form is used as a selector in *building* the menu. So the idea is
to have the menu builder perform the pragma to add that item to it. Then
there are many menu items in the system that use the same pragma and one
can see both senders of the pragma (which are examples of menu extensions)
/and/ the implementor(s) (which is an example of how to actually extend a
menu).
With the former one has to have somewhere that relates a specific menu to
the pragma that extends only that menu, a way of extracting that
information form that pragma, and finally a way of extending the menu.
With the latter there needs be only one version of the code that collects
the pragmas for any menu and extends that menu. It becomes a standard
library feature.
> the latter seems like it's adding more complexity.
>
But when used in a real system it actually reduces complexity, and provides
examples to the user of how to define menu extensions and to implementors
of how to extend menus. VisualWorks works like this and has since 1998
when Steve Dahl and I designed the pragma system for just this case.
We /did/ add a grouping facility based on floating point numbers, a hack,
but a reasonable one. If you look at, say, the standard programming text
menu, which at its simplest might be
again
undo
-----------
cut
copy
paste
-----------
do it
print it
debug it
-----------
accept
cancel
-----------
format
spawn
explain
the grouping of related items is quite important in the menu being easy to
navigate. But if we want to extend it we wan to be able to add groups to
it. In VW we number the groups in the base menu in tens, so again/undo is
10.0, cut/copy/paste is 20.0, etc. Then anyone can define a new group
relative to the base groups by providing a group number such as 35.0 to add
between do it/print it/debug it and accept/cancel
> Peter
>
>
> On Wed, Aug 09, 2017 at 09:58:54PM +0200, Stephane Ducasse wrote:
> > Hi Peter
> >
> > Yes I was thinking about it.
> > Now from your experience what kind of pragma should we provide?
> >
> > <group: 'name' order: 10>
> >
> > Not sure that we need the argument to the group.
> >
> > <menusForGroup: 'name'>
> >
> > <menuForGroup: 'name' order: 10>
> >
> > Stef
> >
> >
> >
> >
> > On Sun, Aug 6, 2017 at 12:09 AM, Peter Uhnak <i.uhnak(a)gmail.com> wrote:
> > > Hi Stef,
> > >
> > > I faced similar issue and then I've found out that PragmaMenuBuilder
> is compatible with Spec.
> > >
> > > Something like...
> > >
> > > builder := PragmaMenuBuilder pragmaKeyword: 'myPragma' model: self.
> > > menu := MenuModel new.
> > > menu fromSpec: builder menuSpec.
> > >
> > > Peter
> > >
> > >
> > > On Sat, Aug 05, 2017 at 06:26:45PM +0200, Stephane Ducasse wrote:
> > >> Hi guys
> > >>
> > >> I would like to know if there is a pattern to build extensible menu
> in Spec.
> > >> For example, I extending Epicea to support pillar fileout so that I
> > >> can turn a coding section into a pillar steps of action.
> > >>
> > >> I wanted to extend the epicea browser to get my menu in:
> > >> But the code is like that:
> > >>
> > >> EPLogBrowserModel >> addMenuItemsForSelectedItemsIn: aMenu
> > >>
> > >> aMenu addGroup: [ :aGroup |
> > >> self menuActionsForSelectedItems do: [ :oldStyleMenuItemArray |
> > >> aGroup addItem: [ :anItem |
> > >> anItem
> > >> name: oldStyleMenuItemArray first;
> > >> description: oldStyleMenuItemArray third;
> > >> icon: (self iconNamed: oldStyleMenuItemArray fourth);
> > >> action: [ self perform: oldStyleMenuItemArray second ]
> ] ] ].
> > >>
> > >> aMenu addGroup: [ :aGroup |
> > >> aGroup addItem: [ :anItem |
> > >> anItem
> > >> name: 'Filters';
> > >> icon: (self iconNamed: #smallFindIcon);
> > >> subMenu: self filtersSubMenu ] ].
> > >>
> > >> aMenu addGroup: [ :aGroup |
> > >> aGroup addItem: [ :anItem |
> > >> anItem
> > >> name: 'File Out';
> > >> description: 'Write selected entries to an Ombu file';
> > >> icon: (self iconNamed: #smallSaveAsIcon);
> > >> action: [ self fileOutSelection ] ] ].
> > >>
> > >>
> > >> EPLogBrowserModel >> menuMorphForSelectedItems
> > >>
> > >> | aMenu |
> > >> aMenu := MenuModel new.
> > >> showEntryItemMenu ifTrue: [ self
> > >> addMenuItemsForSelectedItemsIn: aMenu ].
> > >> ^ aMenu buildWithSpecAsPopup
> > >>
> > >>
> > >> So I would like to improve Epicea but I face the problem of the limits
> > >> of Spec (presumably).
> > >> I'm thinking to add a <specMenu: 10> pragma to handle this case.
> > >> Any thought.
> > >>
> > >> Stef
> > >>
> > >
> >
>
>
--
_,,,^..^,,,_
best, Eliot
Aug. 10, 2017
Re: [Pharo-dev] Updating the CI
by Guillermo Polito
This is done. Everything is working well. I closed the issue.
https://pharo.fogbugz.com/f/cases/edit/20299/
On Thu, Aug 10, 2017 at 11:56 AM, Guillermo Polito <
guillermopolito(a)gmail.com> wrote:
> Hi all,
>
> I'm updating some CI plugins right now. Will notify as soon as everything
> is smooth again. The issue related to the update is here:
>
> https://pharo.fogbugz.com/f/cases/20299/Update-CI-plugins-
> to-latest-git-plugins
>
> (yes, we have an issue so we can keep track of the plugins we have)
>
> --
>
>
>
> Guille Polito
>
>
> Research Engineer
>
> French National Center for Scientific Research - *http://www.cnrs.fr*
> <http://www.cnrs.fr>
>
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>
--
Guille Polito
Research Engineer
French National Center for Scientific Research - *http://www.cnrs.fr*
<http://www.cnrs.fr>
*Web:* *http://guillep.github.io* <http://guillep.github.io>
*Phone: *+33 06 52 70 66 13
Aug. 10, 2017
Writeup: how to contribute to Pharo
by Guillermo Polito
Hi,
I've made some write up for the pharo part (not metacello or external
projects)
https://github.com/guillep/PharoIntegrationProcess/wiki/
Contribute-a-fix-to-Pharo
Of course, expect bugs on it :) Not everything is smooth. If you have
comments, they are welcome.
Guille
--
Guille Polito
Research Engineer
French National Center for Scientific Research - *http://www.cnrs.fr*
<http://www.cnrs.fr>
*Web:* *http://guillep.github.io* <http://guillep.github.io>
*Phone: *+33 06 52 70 66 13
Aug. 10, 2017
Re: [Pharo-dev] Impediment to contributing
by Guillermo Polito
Hi,
I've made some write up for the pharo part (not metacello or external
projects)
https://github.com/guillep/PharoIntegrationProcess/wiki/Contribute-a-fix-to…
Of course, expect bugs on it :) Not everything is smooth. If you have
comments, they are welcome.
Guille
On Thu, Aug 10, 2017 at 4:01 PM, stephan <stephan(a)stack.nl> wrote:
> I feel frustrated, and blocked in contributing.
> I miss up to date information on how to cleanly
> install Pharo so that I can use Iceberg with
> Metacello, and the process to use to contribute
> to both Pharo itself and to the different
> projects on github.
> Every time I try to do something that comes
> close to using git, I run into issues.
>
> Stephan
>
>
>
--
Guille Polito
Research Engineer
French National Center for Scientific Research - *http://www.cnrs.fr*
<http://www.cnrs.fr>
*Web:* *http://guillep.github.io* <http://guillep.github.io>
*Phone: *+33 06 52 70 66 13
Aug. 10, 2017