Search code examples
textboxsmalltalkpharo

Pharo Smalltalk: How to create an input field using TextMorph and then get the data off the input field?


I am completely new to Pharo, Smalltalk. I'm developing a small app that will convert temperature from Fahrenheit to Celsius. Can anyone give me any idea on how to create an input field using TextMorph and display it on a window as shown in the screen shot. In addition, being able to get the data back from the input field when the button is clicked. The below code is what I have done so far. Screenshot

The class TemperatureMorph

 BorderedMorph subclass: #TemperatureMorph
        instanceVariableNames: 'tempInputField counter'
        classVariableNames: ''
        package: 'Assignment'

The initialize method: Contains a label, textbox and a button.

initialize 
    | headingLabel converterButton|
    super initialize.
    self bounds: (0@0 corner:300@300).
    self color: Color gray.

    headingLabel := StringMorph contents: 'Converter'.
    headingLabel position: 130@20. 
    self addMorph: headingLabel.

    tempInputField := TextMorph new.     
    tempInputField position: 50@50. 
    self addMorph: tempInputField.

Thanks


Solution

  • You can already see the necessary code in your screenshot, you only have to replace the construction of a StringMorph with that of a TextMorph. I suggest you take a look at the Pharo by Example book. It has a chapter on Morphic, which is the UI framework in Pharo.

    yourTextMorph := TextMorph new.
    yourTextMorph contents: 'initial text'.
    ownerMorph addMorph: yourTextMorph.
    

    I guess you will also want to read the contents back out of the TextMorph. You can use yourTextMorph contents to achieve that. See also Pharo Smalltalk: Reading from TextMorph