|
Pharo /
GUIIdeasIn this code MyGUI>>open generates the layout for the GUI. These tend to be long methods, because there is so much detail in them. In an effort to reduce the size of 'open', I segregated several similar bits under the method name of 'row<description>:' (rowCurrentTemp:, rowPrefTemp:, etc). Each of the methods are inserted into 'open'. In open, you see: dialog newColumn: {
self rowPrefTemp: dialog.
self rowHeaterAdjustment: dialog.
self rowCoolerAdjustment: dialog.
self rowFudgeAdjustment: dialog.
self rowBumpTemp: dialog.
self rowTurnOnMargin: dialog.
self rowTurnOffMargin: dialog.
self rowDelaySeconds: dialog.
self rowCurrentTemp: dialog.
}.
One of these, for example rowPrefTemp: rowPrefTemp: dialog ^dialog newRow: {
prefTemp := dialog newTextEntryFor: (ValueHolder new contents: myControl
therm prefTemp)
getText: #contents setText: #contents: help: 'This is the pref temp'.
dialog
newButtonFor: self
getState: nil
action: #setPrefTemp
arguments: nil "if args, use { xx. xxx.}"
getEnabled: nil
label: ' Set Preferred'
help: 'helpText'.
}.
Note how each method takes 'dialog' as an argument. dialog is used internally in the methods. It appears that these methods must specifically 'return' (using the carat '^' symbol). Otherwise the method will be performed, but there is no automatic return of the output. I am not sure why the ^ is necessary. What's nice about this, besides making 'open' more readable, is that the order of the buttons can be easily changed. |