Re: [Pharo-users] GitFileTree on Pharo 5.0

2017-02-25 Thread Thierry Goubier

Hi Pierce,

Le 26/02/2017 à 02:35, Pierce Ng a écrit :

On Tue, Nov 29, 2016 at 12:57:47PM +0100, Thierry Goubier wrote:

Ok. Will have a look into the catalog browser source code to get rid of
that. I know that the catalog browser uses the Pharo6
ConfigurationOfGitFileTree instead of the Pharo5 one.


Thierry,

Picking up an old thread, any idea how to fix this? On Pharo 5, the result of
"CatalogProvider projectNamed: 'GlorpSQLite' has the Pharo 6 meta repo as the
repositoryUrl. Presumably this is why Catalog Browser on Pharo 5 says
GlorpSQLite is "Unknown" instead of "Pharo 5.0".


Yes, that was the issue. So the configuration in the Pharo6 meta repo 
has to support both Pharo 5 and 6.


Thierry


Pierce







Re: [Pharo-users] Which is the best way of opening a PDF and HTML local files from Pharo

2017-02-25 Thread Holger Freyther

> On 26 Feb 2017, at 12:27, David T. Lewis  wrote:
> 

Hi,


> I tried "OSProcess command: 'xdg-open ', pdfPathString" in Pharo, and it works
> for me. Maybe check to be sure that pdfPathString is right?

if you don't control pdfPathStrig you will also need to escape this string. I 
don't know if Pharo/OSProcess has support for the necessary escaping. E.g. 
'foo.pdf; rm -rf /' as input should not lead to the removal of your system. :)

holger


Re: [Pharo-users] Which is the best way of opening a PDF and HTML local files from Pharo

2017-02-25 Thread David T. Lewis
On Fri, Feb 24, 2017 at 01:07:18PM -0500, Offray Vladimir Luna C??rdenas wrote:
> Thanks Hilaire.
> 
> I was thinking in something that depend on OSProcess and invoke xdg-open 
> on Linux, for example, but is not working neither.
> 
> OSProcess command: 'xdg-open ', pdfPathString
> 
> doesn't open the PDF file :-/.
> 

Hi Offray,

I tried "OSProcess command: 'xdg-open ', pdfPathString" in Pharo, and it works
for me. Maybe check to be sure that pdfPathString is right?

Dave




Re: [Pharo-users] GitFileTree on Pharo 5.0

2017-02-25 Thread Pierce Ng
On Thu, Dec 01, 2016 at 07:05:37PM +0100, Trussardi Dario Romano wrote:
>   few days ago i encountered problems installing gitFileTree in pharo 5.0.
>   The basic error is relative to the : External module not found.

Could be that the VM cannot locate the libgit2 so/dylib, which is my case. On
Pharo 6, LGitLibrary:

  unixModuleName 
^ 'libgit2.so.0'

  macModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent / 'Plugins'.
#('libgit2.dylib' 'libgit2.0.dylib')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ libName ].

self error: 'Module not found.'

Pierce



Re: [Pharo-users] GitFileTree on Pharo 5.0

2017-02-25 Thread Pierce Ng
On Tue, Nov 29, 2016 at 12:57:47PM +0100, Thierry Goubier wrote:
> Ok. Will have a look into the catalog browser source code to get rid of
> that. I know that the catalog browser uses the Pharo6
> ConfigurationOfGitFileTree instead of the Pharo5 one.

Thierry,

Picking up an old thread, any idea how to fix this? On Pharo 5, the result of
"CatalogProvider projectNamed: 'GlorpSQLite' has the Pharo 6 meta repo as the
repositoryUrl. Presumably this is why Catalog Browser on Pharo 5 says
GlorpSQLite is "Unknown" instead of "Pharo 5.0".

Pierce



Re: [Pharo-users] Which is the best way of opening a PDF and HTML local files from Pharo

2017-02-25 Thread Offray Vladimir Luna Cárdenas

Hi Alistair,

Unix process is making the task properly. Now I wonder how I can load 
the proper OS-Windows, OS-Unix or OS-Mac in Monticello, so the 
Grafoscopio package loads only the requirements for making this work 
accordingly to the platform where is running.


Cheers,

Offray


On 24/02/17 16:54, Alistair Grant wrote:

Hi Offray,

Which version of Pharo are you running?  My understanding is that
Pharo5 & 6 use OSSubprocess, not OSProcess.

I'm using xdg-open to open pdf files on linux (Arch):

| proc |

proc := OSSUnixSubprocess new.
proc
 command: 'xdg-open';
 arguments: (Array with: url).
 proc run.
UIManager inform: 'Opened: ', url.

url is the path to the file in this case.

You can check the exit status with:

proc exitStatusInterpreter

e.g.:

proc exitStatusInterpreter isSuccess

Cheers,
Alistair


On 25 February 2017 at 05:07, Offray Vladimir Luna Cárdenas
 wrote:

Thanks Hilaire.

I was thinking in something that depend on OSProcess and invoke xdg-open on
Linux, for example, but is not working neither.

OSProcess command: 'xdg-open ', pdfPathString

doesn't open the PDF file :-/.

Cheers,

Offray



On 24/02/17 13:02, Hilaire wrote:

Oh, you can add your extension to the OSPlateform hierarchy.

So one your extensions added in the hierarchy, your code will use it
with an uniform:

OSPlateforme current openPdf: 'grafoscopio.pdf'


Le 24/02/2017 à 18:55, Hilaire a écrit :

But likely there is already something like that in the system but I
can't see.










Re: [Pharo-users] Loading Seaside via Bootstrap in Pharo 6

2017-02-25 Thread Cyril Ferlicot D.
On 25/02/2017 17:27, stepharong wrote:
> I do not know when we removed NewListModel
> We should check that.
> And probably update clients to use ListModel.
> Stef
> 
> 

It was in Pharo 60089:

https://pharo.fogbugz.com/f/cases/15849

-- 
Cyril Ferlicot

http://www.synectique.eu

2 rue Jacques Prévert 01,
59650 Villeneuve d'ascq France



signature.asc
Description: OpenPGP digital signature


Re: [Pharo-users] Loading Seaside via Bootstrap in Pharo 6

2017-02-25 Thread stepharong

I do not know when we removed NewListModel
We should check that.
And probably update clients to use ListModel.
Stef





Hi Torsten,


On 21 Feb 2017, at 14:24, Torsten Bergmann  wrote:

Hi,

regarding the problem Sven mentioned on  
http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/2017-February/030542.html


here are my findings:

When I use latest Pharo 6 (Image 60404) and run

 Metacello new
smalltalkhubUser: 'Seaside' project: 'MetacelloConfigurations';
configuration: 'Seaside3';
version: #'release3.2';
load

it loads the latest release 3.2 (which internally loads 3.2.1).  The  
package is "ConfigurationOfSeaside3-JohanBrichau.323.mcz"


Yes that worked for me too.

I then had to load my own project using the same API, so not:

ConfigurationOfBetaNineT3 project bleedingEdge load: 'trackit'.

But:

Metacello new
configuration: 'BetaNineT3';
version: #bleedingEdge; 
load: 'trackit'.

This then loaded Bootstrap as needed (with Seaside already present).

This loads fine in Pharo 6 except that after installation the "Tools"  
-> "Seaside control panel" is not working anymore as
"NewListModel" is not found anymore. So the control panel is broken.  
Dont know what the migration path is for UI's

who used the removed "NewListModel" class.


Here is how I quickly patched the control panel:

WAPharoServerAdapterSpecBrowser>>#initializeWidgets

self instantiateModels: #(
listModel ListModel
textModel TextModel
toolbarModel WAServerAdapterToolbar).

WAPharoServerAdapterSpecBrowser>>initializePresenter

self initializeAdaptors.

textModel aboutToStyle: false.

listModel
		whenSelectedItemChanged: [ :selection | adaptor := selection. self  
updateUIState];

whenListChanged: [ self updateUIState];
		displayBlock: [ :item | (item class name,' ',item statusString)  
asStringMorph ];

"icons: [ :item | self iconForAdaptor: item];
iconMaxSize: 16@16;"
menu: [ :aMenu | self adaptorsMenu: aMenu].

self focusOrder
add: listModel;
add: toolbarModel;
add: textModel.

self disableAllButtons

So I replaced NewListModel with ListModel and I commented out the icon  
related stuff. This might be a bit too quick, I don't know.


So yes - one can (by using the above script) use Seaside but currently  
has to start the server with a script
until this is fixed. This is good to know - but does not solve the  
"loading from catalog" issue.


-

So (in a fresh image 60404) I loaded "Bootstrap" from catalog and I  
received the error Sven reported.


But ConfigurationOfBootstrap itself is not the problem I guess. Because  
it is also only referencing the
"release3.2" version of Seaside and also  
"ConfigurationOfSeaside3-JohanBrichau.323.mcz" is loaded.



The Transcript shows the following error output:

 Loaded -> ConfigurationOfSeaside3-JohanBrichau.323 ---  
http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/ ---
 http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/Error:  
Name not found: Seaside-Pharo-Development


Also when you try to open the ConfigurationOfSeaside3 using Versionner  
I receiver an error "Name not found: Seaside-Pharo-Development".


So there must be something wrong with the Seaside config I thought - or  
(what would be worse) with the newer Metacello
version included in Pharo 6. At least the config looks OK and in both  
situations "ConfigurationOfSeaside3-JohanBrichau.323" is used.


Additionally I tried:

- when I load the Bootstrap config in a fresh Pharo 5.0 image (50769)  
from Catalog all loads fine.

- when I manipulate the Pharo 6 image to have a version 5 signature
  SystemVersion newVersion: 'Pharo5.0'. SystemVersion  current  
inspect.
  and load from catalog afterwards it also does not work. So I guess a  
Pharo 5.x specific config rule could not be the cause.



Now I checked how Catalog loads the configs. And in class  
CatalogProject you will notice that for the catalog we still use Gofer  
for loading


  installStableVersion
Gofer it
url: self repositoryUrl;
configurationOf: self name;
loadStable

when I change it to Metacello API

   installStableVersion
  Metacello new
repository: self repositoryUrl, '/',self name;
configuration: self name;
version: #'stable';
load

what a surprise: anything loads fine. I still wonder and do not know  
about the difference why Gofer and Metacello loading in Pharo 6

makes a difference now.

So we could fix it for the catalog ... still I have no glue about the  
Gofer/Metacello 

Re: [Pharo-users] Loading Seaside via Bootstrap in Pharo 6

2017-02-25 Thread stepharong
On Tue, 21 Feb 2017 14:24:32 +0100, Torsten Bergmann   
wrote:



Hi,

regarding the problem Sven mentioned on  
http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/2017-February/030542.html


here are my findings:

When I use latest Pharo 6 (Image 60404) and run

  Metacello new
 smalltalkhubUser: 'Seaside' project: 'MetacelloConfigurations';
 configuration: 'Seaside3';
 version: #'release3.2';
 load

it loads the latest release 3.2 (which internally loads 3.2.1).  The  
package is "ConfigurationOfSeaside3-JohanBrichau.323.mcz"


This loads fine in Pharo 6 except that after installation the "Tools" ->  
"Seaside control panel" is not working anymore as

"NewListModel" is not found anymore. So the control panel is broken.


OOPS I thought that we deprecated it or not even removed it but changed  
the underlying

implementation. We should fix that.


Dont know what the migration path is for UI's
who used the removed "NewListModel" class.

So yes - one can (by using the above script) use Seaside but currently  
has to start the server with a script
until this is fixed. This is good to know - but does not solve the  
"loading from catalog" issue.






Re: [Pharo-users] Grafoscopio User Manual: Early beta

2017-02-25 Thread stepharong

This is what I was asking myself. :)



As a side note, Grafoscopio documentation was made in Grafoscopio... you  
know, we love self-referential systems ;-).


Cheers,

Offray

On 24/02/17 09:17, Offray Vladimir Luna Cárdenas wrote:


Hi all,

I'm making a couple of articles for the JOSS[1], which, by the way is  
an interesting critic/hack to the anachronistic published paper on  
indexed journal[2], making visible the work of >>research who use  
mainly software as a medium to communicate and make research.[1]  
http://joss.theoj.org/[2] http://joss.theoj.org/about


JOSS proposes a pretty good structure for the companion readme file for  
the software. I started to write it, but I entered to some kind of  
"writing frenzy" and, after almost 40 pages(!), >>it ended in the  
English Grafoscopio User Manual:


http://mutabit.com/repos.fossil/grafoscopio/doc/tip/Docs/En/Books/Manual/manual.pdf

Is the first text I write of such length in English, so any critic on  
typos, clarity or others are welcomed. Please see the "Community  
Guidelines" section, particularly "Report issues or >>problems", so I  
can follow and address the suggestions better.


I will be making some minor updates on the software and the manual to  
improve consistency (manual URL, remains the same, pointing to the last  
version).


Cheers,

Offray








--
Using Opera's mail client: http://www.opera.com/mail/

Re: [Pharo-users] changing font size in Spec TreeModel or FastTable Tree

2017-02-25 Thread stepharong

On Sat, 25 Feb 2017 14:23:21 +0100, Peter Uhnak  wrote:


Hi,

how can I change the font size of either (or both) Spec TreeModel or  
FastTable's tree?


The font size is by default taken from the StandardFonts defaultFont,  
but I see no option to change it anywhere for _a specific tree only_.


(Also odd that both use #defaultFont and not #listFont).


Yes this is sad.
I think that we pay the price to use a singleton.




Thanks,
Peter




--
Using Opera's mail client: http://www.opera.com/mail/



Re: [Pharo-users] startUp Application

2017-02-25 Thread Pablo R. Digonzelli
Thanks all! 
I have enought information to begin working with.
I will comment the results.




Ing. Pablo Digonzelli 
Software Solutions 
IP-Solutiones SRL 
Dividato SA 
25 de Mayo 521 
San Miguel de Tucumán 
Email: pdigonze...@softsargentina.com 
pdigonze...@gmail.com 
Cel: 5493815982714

- Mensaje original -
De: "Ben Coman" 
Para: "Any question about pharo is welcome" 
Enviados: Sábado, 25 de Febrero 2017 9:45:22
Asunto: Re: [Pharo-users] startUp Application

I haven't packaged any apps myself.  I just have fun hacking the Image.
I know of these Squeak related ones from a while ago.
YMMV but may give some ideas.

http://squeakvm.org/win32/custom.html

http://squeak.preeminent.org/tut2007/html/205.html

cheers -ben

On Fri, Feb 24, 2017 at 9:24 AM, Pablo R. Digonzelli
 wrote:
> Hi, I want to know how to do in order a desktop application start with its
> custom menu without pharo panel.
> I read something about to startUp method but i need more information.
> Sorry for my english and TIA
>
>
>
>
> 
> Ing. Pablo Digonzelli
> Software Solutions
> IP-Solutiones SRL
> Dividato SA
> 25 de Mayo 521
> San Miguel de Tucumán
> Email: pdigonze...@softsargentina.com
> pdigonze...@gmail.com
> Cel: 5493815982714



Re: [Pharo-users] Fast Table causes Instances of Matrix are not indexable?

2017-02-25 Thread stepharong

Hi alistair

if you use matrix as a grid (and not as a mathematical matrix) you may  
want to have a look at

2Darray and Grid
available in Containers

http://smalltalkhub.com/#!/~StephaneDucasse/Containers

MCHttpRepository
location: 'http://smalltalkhub.com/mc/StephaneDucasse/Containers/main'
user: ''
password: ''



Hi All,

I've just upgrade from Pharo 60395 to 60411 and am now unable to
inspect instances of Matrix.

I think I read somewhere that the GTInspector is now using fast tables,
and am guessing that it is this change that is causing the problem.

I've included code below to reproduce the problem and a stack trace.
The sample code creates a 3 x 3 matrix.

FTTableContainerMorph>>updateExposedRows suggests that the matrix is
being treated as a one-dimensional collection:

self owner numberOfRows  => 9 "expected 3"
self owner numberOfColumns  => 1 "expected 3"

I'll keep investigating, but if someone more familiar can point me in
the right direction, any hints will be appreciated.

Thanks,
Alistair

Pharo 6.0
Latest update: #60411
OS: 4.9.8-1-ARCH



| m |

m := Matrix rows: 3 columns: 3.
1 to: 3 do: [ :i |
1 to: 3 do: [ :j |
m at: i at: j put: 'C', i printString, j printString ] ].
m inspect



Matrix(Object)>>error:
Matrix(Object)>>errorNotIndexable
Matrix(Object)>>at:
GLMFastListDataSource(FTSimpleDataSource)>>elementAt:
GLMFastListDataSource>>cellColumn:row:
FTTableContainerMorph>>updateExposedRows
FTTableMorph>>resetPosition
FTTableMorph>>resizeAllSubviews
FTTableMorph>>extent:
FTTableMorph(Morph)>>bounds:
FTTableMorph(Morph)>>layoutInBounds:
FTTableMorph(Morph)>>layoutProportionallyIn:
[ :m | m layoutProportionallyIn: newBounds ] in
ProportionalLayout>>layout:in: in Block: [ :m | m
layoutProportionallyIn: newBounds ]
Array(SequenceableCollection)>>do:
GLMPanelMorph(Morph)>>submorphsDo:
ProportionalLayout>>layout:in:
GLMPanelMorph(Morph)>>doLayoutIn:
[ self doLayoutIn: self layoutBounds ] in
GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
self layoutBounds ]
BlockClosure>>on:do:
GLMPanelMorph(Morph)>>computeFullBounds
GLMPanelMorph(Morph)>>fullBounds
[ :m |
| subBox |
m visible
ifTrue: [ subBox := m fullBounds.
box
ifNil: [ box := subBox copy ]
ifNotNil: [ box := box quickMerge: subBox ] ] ] in
GLMPanelMorph(Morph)>>submorphBounds in Block: [ :m | ...
Array(SequenceableCollection)>>do:
GLMPanelMorph(Morph)>>submorphBounds
GLMPanelMorph(Morph)>>privateFullBounds
GLMPanelMorph(Morph)>>doLayoutIn:
[ self doLayoutIn: self layoutBounds ] in
GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
self layoutBounds ]
BlockClosure>>on:do:
GLMPanelMorph(Morph)>>computeFullBounds
GLMPanelMorph(Morph)>>fullBounds




--
Using Opera's mail client: http://www.opera.com/mail/



[Pharo-users] 4 new chapters for new book on OOP and Design

2017-02-25 Thread stepharong

Hi

I just released four new chapters for the Learning OO programming and  
design with Pharo.


https://ci.inria.fr/pharo-contribution/view/Books/job/LearningObjectOrientedProgramming/98/artifact/book.pdf

6 Objects and Classes
7 LateBinding
13 Inheritance
14 Understanding Super
Super thanks to Hayatou Oumarou for his deep reviews of the book.

Stef



[Pharo-users] Voyage: refreshing an object back to its repository state

2017-02-25 Thread Hilaire
Hi,

Let's say object A is persisted in a Voyage repository. Then object A is
modified in memory. Next I want to put object A back to its state as
persisted in the repository.

As there is some caching in place, doing a 'ObjectA selectAll' will
return the modified instance in memory, no access to the DB takes place.

As understood, cache can be flushed, but it is overkill, no?

Is it safe to just do:

VOMongoRepostiry current cache removeObject: objectA

to only flush objectA from cache?

Hilaire

-- 
Dr. Geo
http://drgeo.eu




[Pharo-users] changing font size in Spec TreeModel or FastTable Tree

2017-02-25 Thread Peter Uhnak
Hi,

how can I change the font size of either (or both) Spec TreeModel or 
FastTable's tree?

The font size is by default taken from the StandardFonts defaultFont, but I see 
no option to change it anywhere for _a specific tree only_.

(Also odd that both use #defaultFont and not #listFont).

Thanks,
Peter



Re: [Pharo-users] Team programming with Smalltalk

2017-02-25 Thread Hilaire
The best of the two worlds ;)

Le 25/02/2017 à 12:37, Norbert Hartl a écrit :
> To me it is important to have a working image that collects side effects as 
> well as having a process that builds an image from scratch. 

-- 
Dr. Geo
http://drgeo.eu




Re: [Pharo-users] startUp Application

2017-02-25 Thread Ben Coman
I haven't packaged any apps myself.  I just have fun hacking the Image.
I know of these Squeak related ones from a while ago.
YMMV but may give some ideas.

http://squeakvm.org/win32/custom.html

http://squeak.preeminent.org/tut2007/html/205.html

cheers -ben

On Fri, Feb 24, 2017 at 9:24 AM, Pablo R. Digonzelli
 wrote:
> Hi, I want to know how to do in order a desktop application start with its
> custom menu without pharo panel.
> I read something about to startUp method but i need more information.
> Sorry for my english and TIA
>
>
>
>
> 
> Ing. Pablo Digonzelli
> Software Solutions
> IP-Solutiones SRL
> Dividato SA
> 25 de Mayo 521
> San Miguel de Tucumán
> Email: pdigonze...@softsargentina.com
> pdigonze...@gmail.com
> Cel: 5493815982714



Re: [Pharo-users] Fast Table causes Instances of Matrix are not indexable?

2017-02-25 Thread Alistair Grant
Hi Andrei,

Thanks for the suggestion!  That avoids the problem until the fix is in.

Thanks again,
Alistair


On 25 February 2017 at 22:50, Andrei Chis  wrote:
> Hi Alistair,
>
> I do not have access to a computer right now but indeed this is related to
> GTInspector moving to fast table. You should be able to temporarily solve
> this be defining a custom Items presentation in the Matrix class that in the
> display block transforms the martix to an ordered collection.
>
> We'll integrate a fix at the beginning of next week to solve this in the
> inspector without requiring a new presentation.
>
> Cheers,
> Andeei
>
>
> On Feb 25, 2017 12:10 PM, "Alistair Grant"  wrote:
>
> Hi All,
>
> I've just upgrade from Pharo 60395 to 60411 and am now unable to
> inspect instances of Matrix.
>
> I think I read somewhere that the GTInspector is now using fast tables,
> and am guessing that it is this change that is causing the problem.
>
> I've included code below to reproduce the problem and a stack trace.
> The sample code creates a 3 x 3 matrix.
>
> FTTableContainerMorph>>updateExposedRows suggests that the matrix is
> being treated as a one-dimensional collection:
>
> self owner numberOfRows  => 9 "expected 3"
> self owner numberOfColumns  => 1 "expected 3"
>
> I'll keep investigating, but if someone more familiar can point me in
> the right direction, any hints will be appreciated.
>
> Thanks,
> Alistair
>
> Pharo 6.0
> Latest update: #60411
> OS: 4.9.8-1-ARCH
>
>
>
> | m |
>
> m := Matrix rows: 3 columns: 3.
> 1 to: 3 do: [ :i |
> 1 to: 3 do: [ :j |
> m at: i at: j put: 'C', i printString, j printString ] ].
> m inspect
>
>
>
> Matrix(Object)>>error:
> Matrix(Object)>>errorNotIndexable
> Matrix(Object)>>at:
> GLMFastListDataSource(FTSimpleDataSource)>>elementAt:
> GLMFastListDataSource>>cellColumn:row:
> FTTableContainerMorph>>updateExposedRows
> FTTableMorph>>resetPosition
> FTTableMorph>>resizeAllSubviews
> FTTableMorph>>extent:
> FTTableMorph(Morph)>>bounds:
> FTTableMorph(Morph)>>layoutInBounds:
> FTTableMorph(Morph)>>layoutProportionallyIn:
> [ :m | m layoutProportionallyIn: newBounds ] in
> ProportionalLayout>>layout:in: in Block: [ :m | m
> layoutProportionallyIn: newBounds ]
> Array(SequenceableCollection)>>do:
> GLMPanelMorph(Morph)>>submorphsDo:
> ProportionalLayout>>layout:in:
> GLMPanelMorph(Morph)>>doLayoutIn:
> [ self doLayoutIn: self layoutBounds ] in
> GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
> self layoutBounds ]
> BlockClosure>>on:do:
> GLMPanelMorph(Morph)>>computeFullBounds
> GLMPanelMorph(Morph)>>fullBounds
> [ :m |
> | subBox |
> m visible
> ifTrue: [ subBox := m fullBounds.
> box
> ifNil: [ box := subBox copy ]
> ifNotNil: [ box := box quickMerge: subBox ] ] ] in
> GLMPanelMorph(Morph)>>submorphBounds in Block: [ :m | ...
> Array(SequenceableCollection)>>do:
> GLMPanelMorph(Morph)>>submorphBounds
> GLMPanelMorph(Morph)>>privateFullBounds
> GLMPanelMorph(Morph)>>doLayoutIn:
> [ self doLayoutIn: self layoutBounds ] in
> GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
> self layoutBounds ]
> BlockClosure>>on:do:
> GLMPanelMorph(Morph)>>computeFullBounds
> GLMPanelMorph(Morph)>>fullBounds
>
>



Re: [Pharo-users] Fast Table causes Instances of Matrix are not indexable?

2017-02-25 Thread Andrei Chis
Hi Alistair,

I do not have access to a computer right now but indeed this is related to
GTInspector moving to fast table. You should be able to temporarily solve
this be defining a custom Items presentation in the Matrix class that in
the display block transforms the martix to an ordered collection.

We'll integrate a fix at the beginning of next week to solve this in the
inspector without requiring a new presentation.

Cheers,
Andeei

On Feb 25, 2017 12:10 PM, "Alistair Grant"  wrote:

Hi All,

I've just upgrade from Pharo 60395 to 60411 and am now unable to
inspect instances of Matrix.

I think I read somewhere that the GTInspector is now using fast tables,
and am guessing that it is this change that is causing the problem.

I've included code below to reproduce the problem and a stack trace.
The sample code creates a 3 x 3 matrix.

FTTableContainerMorph>>updateExposedRows suggests that the matrix is
being treated as a one-dimensional collection:

self owner numberOfRows  => 9 "expected 3"
self owner numberOfColumns  => 1 "expected 3"

I'll keep investigating, but if someone more familiar can point me in
the right direction, any hints will be appreciated.

Thanks,
Alistair

Pharo 6.0
Latest update: #60411
OS: 4.9.8-1-ARCH



| m |

m := Matrix rows: 3 columns: 3.
1 to: 3 do: [ :i |
1 to: 3 do: [ :j |
m at: i at: j put: 'C', i printString, j printString ] ].
m inspect



Matrix(Object)>>error:
Matrix(Object)>>errorNotIndexable
Matrix(Object)>>at:
GLMFastListDataSource(FTSimpleDataSource)>>elementAt:
GLMFastListDataSource>>cellColumn:row:
FTTableContainerMorph>>updateExposedRows
FTTableMorph>>resetPosition
FTTableMorph>>resizeAllSubviews
FTTableMorph>>extent:
FTTableMorph(Morph)>>bounds:
FTTableMorph(Morph)>>layoutInBounds:
FTTableMorph(Morph)>>layoutProportionallyIn:
[ :m | m layoutProportionallyIn: newBounds ] in
ProportionalLayout>>layout:in: in Block: [ :m | m
layoutProportionallyIn: newBounds ]
Array(SequenceableCollection)>>do:
GLMPanelMorph(Morph)>>submorphsDo:
ProportionalLayout>>layout:in:
GLMPanelMorph(Morph)>>doLayoutIn:
[ self doLayoutIn: self layoutBounds ] in
GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
self layoutBounds ]
BlockClosure>>on:do:
GLMPanelMorph(Morph)>>computeFullBounds
GLMPanelMorph(Morph)>>fullBounds
[ :m |
| subBox |
m visible
ifTrue: [ subBox := m fullBounds.
box
ifNil: [ box := subBox copy ]
ifNotNil: [ box := box quickMerge: subBox ] ] ] in
GLMPanelMorph(Morph)>>submorphBounds in Block: [ :m | ...
Array(SequenceableCollection)>>do:
GLMPanelMorph(Morph)>>submorphBounds
GLMPanelMorph(Morph)>>privateFullBounds
GLMPanelMorph(Morph)>>doLayoutIn:
[ self doLayoutIn: self layoutBounds ] in
GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
self layoutBounds ]
BlockClosure>>on:do:
GLMPanelMorph(Morph)>>computeFullBounds
GLMPanelMorph(Morph)>>fullBounds


Re: [Pharo-users] Team programming with Smalltalk

2017-02-25 Thread Norbert Hartl


Von meinem iPad gesendet

> Am 17.02.2017 um 18:27 schrieb Hilaire :
> 
> You have a very strong point.
> The problem you emphasised, without explicitly naming it, comes from the
> image. Because the image preserves state it is also a great receptacle
> and accumulator for entropies, and as we know entropies only increase,
> never decrease!
> The direct consequence is that, at some time, after some interactions,
> installing code in some order, or installing broken code, an image
> breaks, hit the ground and becomes unusable. The image limit is always
> the chaos (as long as it is used as a living thing and its evolving
> state is preserved, saved),
> 
I do not understand why we should keep entropy low. There are a lot of side 
effects that occur in a program. It is not only code changes, it is also 
creating objects, load external data, etc. Is it possible to draw a clear 
boundary? If not the side effects collect in every image that does something. 
So having an image that collects huge amounts of side effects and still runs as 
expected could be seen as robust system, no? 
Software does not need to fail immediately, it can also when side effects 
collect. This you cannot easily catch with tests. Trying to keep side effects 
low could also mean that you should restart your images often in order to get 
rid of side effects. So keep an image running and operate with it can be seen 
as stress test for the software.
A usual workflow is to commit code changes, having something like jenkins 
building your image from scratch. You then copy the built image to server and 
never save it again. To me it has to do with reproducibility that you need in 
order to have deployment process. 
To me it is important to have a working image that collects side effects as 
well as having a process that builds an image from scratch. 

Norbert
> Entropies always comes with interacting 'living' system.
> 
> So Smalltalk image comes with this downside of entropies. I don't see
> how you can bring argument against that to developer team, because it is
> the Smalltalk weakness, as well its strong point. Very funny.
> 
> Of course you can try to limit entropies. Versioning your image is
> probably what to do, for example host task could save version of your
> image every two hours, daily, etc.
> 
> GNU Smalltalk took an original approach: it ships a minimal image you
> don't modify and you install code on top of it. So really you never save
> your image, entropies remains constant over time. This approach is not
> really possible with Pharo.
> 
> Best wishes
> 
> Hilaire
> 
>> Le 15/02/2017 à 23:43, horrido a écrit :
>> In file-based word, the answer is tests and CI. What is the smalltalk way?
>> And please do not say "It's in the conceptual nature of programming" -- if
>> the scenario makes no sense in the smalltalk world (maybe you are not
>> supposed to have 20 people working on the same project?) please say this.
>> 
>> -
>> 
>> How would you respond? I know Smalltalk can be used in large team
>> programming, but since I personally have no experience with this, I cannot
>> respond intelligently.
> 
> -- 
> Dr. Geo
> http://drgeo.eu
> 
> 




[Pharo-users] Fast Table causes Instances of Matrix are not indexable?

2017-02-25 Thread Alistair Grant
Hi All,

I've just upgrade from Pharo 60395 to 60411 and am now unable to
inspect instances of Matrix.

I think I read somewhere that the GTInspector is now using fast tables,
and am guessing that it is this change that is causing the problem.

I've included code below to reproduce the problem and a stack trace.
The sample code creates a 3 x 3 matrix.

FTTableContainerMorph>>updateExposedRows suggests that the matrix is
being treated as a one-dimensional collection:

self owner numberOfRows  => 9 "expected 3"
self owner numberOfColumns  => 1 "expected 3"

I'll keep investigating, but if someone more familiar can point me in
the right direction, any hints will be appreciated.

Thanks,
Alistair

Pharo 6.0
Latest update: #60411
OS: 4.9.8-1-ARCH



| m |

m := Matrix rows: 3 columns: 3.
1 to: 3 do: [ :i |
1 to: 3 do: [ :j |
m at: i at: j put: 'C', i printString, j printString ] ].
m inspect



Matrix(Object)>>error:
Matrix(Object)>>errorNotIndexable
Matrix(Object)>>at:
GLMFastListDataSource(FTSimpleDataSource)>>elementAt:
GLMFastListDataSource>>cellColumn:row:
FTTableContainerMorph>>updateExposedRows
FTTableMorph>>resetPosition
FTTableMorph>>resizeAllSubviews
FTTableMorph>>extent:
FTTableMorph(Morph)>>bounds:
FTTableMorph(Morph)>>layoutInBounds:
FTTableMorph(Morph)>>layoutProportionallyIn:
[ :m | m layoutProportionallyIn: newBounds ] in
ProportionalLayout>>layout:in: in Block: [ :m | m
layoutProportionallyIn: newBounds ]
Array(SequenceableCollection)>>do:
GLMPanelMorph(Morph)>>submorphsDo:
ProportionalLayout>>layout:in:
GLMPanelMorph(Morph)>>doLayoutIn:
[ self doLayoutIn: self layoutBounds ] in
GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
self layoutBounds ]
BlockClosure>>on:do:
GLMPanelMorph(Morph)>>computeFullBounds
GLMPanelMorph(Morph)>>fullBounds
[ :m |
| subBox |
m visible
ifTrue: [ subBox := m fullBounds.
box
ifNil: [ box := subBox copy ]
ifNotNil: [ box := box quickMerge: subBox ] ] ] in
GLMPanelMorph(Morph)>>submorphBounds in Block: [ :m | ...
Array(SequenceableCollection)>>do:
GLMPanelMorph(Morph)>>submorphBounds
GLMPanelMorph(Morph)>>privateFullBounds
GLMPanelMorph(Morph)>>doLayoutIn:
[ self doLayoutIn: self layoutBounds ] in
GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
self layoutBounds ]
BlockClosure>>on:do:
GLMPanelMorph(Morph)>>computeFullBounds
GLMPanelMorph(Morph)>>fullBounds