In part 2 of our intro to Smalltalk and Squeak, we'll be
looking at how we use the system browser to do more work, save/edit our code,
and manage our classes. Part 1 of the basics can be found by clicking
here.
As with our previous work, we need to open up a system browser first. Left
click on the background, hold the button down, select "open", and select
"browser". A green window labeled "System Browser" should appear. The window
should look like this:
Note: My browser window looks different. Just like other
environments, you can change the preferences in this one as well. You
can check other options by left clicking in the system window and
choosing 'help', and then choosing 'preferences'. A window will pop
up, and you can click on true/false to toggle the selection.
The top half contains (or will contain) all of the class information in this
image of Squeak. This contains everything needed not only for Smalltalk, but
also the Squeak environment itself. It is organized as shown below:
If we click on a class category in the leftmost pane, then on the bottom we
should see code that looks like this:
"#NameOfClass" is just what it says - you need to change this to whatever
name you want for your class.
Clicking on a class in the left-center pane should bring up something similar
in the bottom pane:
In most cases, you won't be making any major changes to classes which are
already in the image. However, if you do, this would be where you start. This is
where you would start/continue working on a class you have done.
Clicking on a class method category in the right-center pane should bring up
something looking like this:
These are different from the class and instance variables that were
discussed earlier. These variables exist only within the method in which they
are declared. Remember that our earlier variables were essentially global and
could be used in any method.
Our last example comes from clicking on a particular method. In this case,
I'm chosing a different method which incorporates all of the elements shown
above:
So, the two variables which are passed to this method are "aScorePlayer"
and "scoreName".
For more help, you can go on to step 3 of our little tutorial on
Squeak basics. This has to deal with menu
basics. You can also find out about the menus we can use with the
browser by going to the browser
menus page.
The bottom half contains all of the code and other text for the
classes. We'll step through an example to show how it changes.
Object subclass: #NameOfClass
instanceVariableNames: 'instVarName1 instVarName2'
classVariableNames: 'ClassVarName1 ClassVarName2'
poolDictionaries: ''
category: 'Music-Scores'
This is what the various pieces are here. Make a note that at this stage,
everything shown will be default values. When we start making our own classes,
this is where we will always want to begin:
AlignmentMorph subclass: #ScorePlayerMorph
instanceVariableNames: 'scorePlayer trackInstNames
instrumentSelector scrollSlider pianoRoll playOrPause scoreTitle '
classVariableNames: 'LastMIDIPort '
poolDictionaries: ''
category: 'Music-Scores'
As you can see, it follows the same format as the previous section. The
difference here is that the values shown are specifically for the class and are
not defaults. In this case, take note that the parent class is AlignmentMorph
and not Object. Also notice that the number of instance and class variables is
not bounded - it can be any number greater than 0.
message selector and argument names
"comment stating purpose of message"
| temporary variable names |
statements
Again as with our first example, these are default values. They mean the
following:
onScorePlayer: aScorePlayer title: scoreName
"This method takes in a scorePlayer and the file name"
"It then sets up the controls in the scorePlayerMorph"
| divider col volRow rateRow scrollRow rateRow1 volRow1
scrollRow1 pianoRow rightCol leftCol r |
scorePlayer _ aScorePlayer.
scoreTitle _ scoreName.
This time, the various lines have values in them: