Re: [Pharo-dev] Understanding the System Browser

2014-06-09 Thread Benjamin
On 07 Jun 2014, at 13:03, Nicolai Hess nicolaih...@web.de wrote:

 
 --- Part 1  -- Methods 
 
 1) What Browser full  really means ? and whats the difference with plain 
 browsing ? 
 
 I would say Browse Full is the normal browser, no scope and other (older) 
 SystemBrowser had some
 special views, like hierarchy browser, version browser…

That’s something like that :)
Actually it opens a new browser, with the exact same state as the current one.

Kind of a `Nautilus clone`.
 
 
 7) why rename method all is in the main menu and in the sub menu 
 “refactoring

The refactoring engine comes as a plugin/layer on top of the bare Nautilus.
So some actions are implemented without the refactoring engine (the `Analyse` 
menu)
and some are implemented with the Refactoring engine.

Moreover, some actions are in the main menu and the refractoring menu because
it’s a refactoring often used, and you do not want 5 clicks to reach it.

 
 8) add in Group throws me an error listmanager is nil.
 
 Groups are buggy, I am about to refactor and fix this. Feel free to file some 
 bug reports if they are missing.

They use to work :P

  
 
 -- Part 2 -- Classes 
 
 9) In analyze sub menu there is a Force the generation of intialize method 
 what this means ?
 
 generates an initialze method which calls super initialize and initialize all 
 instvars with nil,
 helpful if you make a new subclass with additional inst vars.

What you describe is `Generate initialize method`.

If you already have an `initialize` method, doing `Generate initialize method` 
will only
jump to the method, while the `Force the generation of initialize method` will 
empty it
and fill it with the default pattern once more.

  
 
 10) In refactoring  coder rewriting . How all options work ? Whats their 
 purpose ?
 

They use to work, but I never use them so I can not be sure they still work :P
It brings some DSL for AST manipulation. I think there is a chapter about that 
in PBE

 
  
 
 11) In refactoring  class refactoring what Realize really does ?

It goes for all the `shouldBeImplemented` in the superclasses, and create a 
method for it.
It turns an abstract class into a concrete one :)



Ben

Re: [Pharo-dev] Understanding the System Browser

2014-06-07 Thread Nicolai Hess
Hi Kilon,


2014-06-07 11:12 GMT+02:00 kilon alios kilon.al...@gmail.com:

 I want to make a video tutorial about System Browser and I want to clarify
 some things first :


Great!



 --- Part 1  -- Methods 

 1) What Browser full  really means ? and whats the difference with plain
 browsing ?


I would say Browse Full is the normal browser, no scope and other
(older) SystemBrowser had some
special views, like hierarchy browser, version browser...



 2) When I move a method to a different package , what really happens ?


The methods protocol will change, and therefor it belongs now to different
package than its class



 3) When refactoring a method to add a parameter how this works because I
 cant make it work.


For example Workspace#openFile:
and you would like to add a failblock add paramter, change selector to
openFile:ifFailed:
and define the default value, for example nil.
Now all existing calls to Workspace#openFile: will be replaced with
openFile:filename ifFailed:nil




 4) What does Inline parameter for factoring methods really does ? Does it
 just convert the method to a unary with the argument as a local ?

 5) What inline target sends does ?

 6) How method move works ?


This may be a usefull refactoring, I never used  :)
The purpose is, if you have a method (#draw for example) in Object X which
implementation highly depens on the internal structure
of one of the instvars of X, it is better to move this method to the class
of this instvar and
call something like var drawFor:self




 7) why rename method all is in the main menu and in the sub menu
 refactoring

 8) add in Group throws me an error listmanager is nil.


Groups are buggy, I am about to refactor and fix this. Feel free to file
some bug reports if they are missing.



 -- Part 2 -- Classes 

 9) In analyze sub menu there is a Force the generation of intialize
 method what this means ?


generates an initialze method which calls super initialize and initialize
all instvars with nil,
helpful if you make a new subclass with additional inst vars.



 10) In refactoring  coder rewriting . How all options work ? Whats their
 purpose ?


I would like to know that too :)



 11) In refactoring  class refactoring what Realize really does ?


No idea



 12) in refactoring  class refactoring if I do split and press cancel in
 both dialogs to cancel the actions to exits with an error.


thats bad.



 13) add in group also displays the same error here


groups, yes well ...




 --- Part 3 -- Packages

 14) add in group throws me an error


I hate groups :)



 15) What Add tag really does ?


It helps to organize classes within one package. Therefor you don't need to
create seperate packages for every group, for example:
MyProject-X-Core
MyProject-X-Tests
MyProject-X-Model
MyProject-X-UI
just one package with tags:
MyProject-X with tags Core/Tests/Model/UI



 Those are just a few questions for now. I want to make a tutorial that
 really exposes the power of system Browser.




I hope this helps, we really really need good (up to date) documentation ,
thank you for your efforts.


nicolai


Re: [Pharo-dev] Understanding the System Browser

2014-06-07 Thread kilon alios
thank you Nicolai for the reply. I think I have enough info to cover most
of my questions now in the video tutorial. But if anyone else can help out
answering those please do so.


On Sat, Jun 7, 2014 at 2:03 PM, Nicolai Hess nicolaih...@web.de wrote:

 Hi Kilon,


 2014-06-07 11:12 GMT+02:00 kilon alios kilon.al...@gmail.com:

 I want to make a video tutorial about System Browser and I want to clarify
 some things first :


 Great!



 --- Part 1  -- Methods 

 1) What Browser full  really means ? and whats the difference with
 plain browsing ?


 I would say Browse Full is the normal browser, no scope and other
 (older) SystemBrowser had some
 special views, like hierarchy browser, version browser...



 2) When I move a method to a different package , what really happens ?


 The methods protocol will change, and therefor it belongs now to different
 package than its class



 3) When refactoring a method to add a parameter how this works because I
 cant make it work.


 For example Workspace#openFile:
 and you would like to add a failblock add paramter, change selector to
 openFile:ifFailed:
 and define the default value, for example nil.
 Now all existing calls to Workspace#openFile: will be replaced with
 openFile:filename ifFailed:nil




 4) What does Inline parameter for factoring methods really does ? Does it
 just convert the method to a unary with the argument as a local ?

 5) What inline target sends does ?

 6) How method move works ?


 This may be a usefull refactoring, I never used  :)
 The purpose is, if you have a method (#draw for example) in Object X which
 implementation highly depens on the internal structure
 of one of the instvars of X, it is better to move this method to the class
 of this instvar and
 call something like var drawFor:self




 7) why rename method all is in the main menu and in the sub menu
 refactoring

 8) add in Group throws me an error listmanager is nil.


 Groups are buggy, I am about to refactor and fix this. Feel free to file
 some bug reports if they are missing.



 -- Part 2 -- Classes 

 9) In analyze sub menu there is a Force the generation of intialize
 method what this means ?


 generates an initialze method which calls super initialize and initialize
 all instvars with nil,
 helpful if you make a new subclass with additional inst vars.



 10) In refactoring  coder rewriting . How all options work ? Whats their
 purpose ?


 I would like to know that too :)



 11) In refactoring  class refactoring what Realize really does ?


 No idea



 12) in refactoring  class refactoring if I do split and press cancel in
 both dialogs to cancel the actions to exits with an error.


 thats bad.



 13) add in group also displays the same error here


 groups, yes well ...




 --- Part 3 -- Packages

 14) add in group throws me an error


 I hate groups :)



 15) What Add tag really does ?


 It helps to organize classes within one package. Therefor you don't need
 to create seperate packages for every group, for example:
 MyProject-X-Core
 MyProject-X-Tests
 MyProject-X-Model
 MyProject-X-UI
 just one package with tags:
 MyProject-X with tags Core/Tests/Model/UI



 Those are just a few questions for now. I want to make a tutorial that
 really exposes the power of system Browser.




 I hope this helps, we really really need good (up to date) documentation ,
 thank you for your efforts.


 nicolai