_window = 1 begin enum 1 _label _input _result end enum void local fn BuildWindow window _window, @"A + B", ( 0, 0, 260, 200 ) textlabel _label, @"Enter two signed integers separated by a comma, space/s or plus sign. Enter return to calculate.", ( 20, 130, 220, 48 ), _window textfield _input,,,( 20, 90, 220, 24 ), _window TextFieldSetMaximumNumberOfLines( _input, 1 ) ControlSetFormat( _input, @"0123456789 ,+-", YES, 0, NULL ) ControlSetAlignment( _input, NSTextAlignmentCenter ) textlabel _result,, ( 20, 50, 220, 24 ), _window ControlSetAlignment( _result, NSTextAlignmentRight ) WindowMakeFirstResponder( _window, _input ) end fn local fn DoCalc NSInteger value1, value2 CFStringRef calcStr = fn ControlStringValue( _input ) calcStr = fn StringByReplacingOccurrencesOfString( calcStr, @",", @"\t" ) calcStr = fn StringByReplacingOccurrencesOfString( calcStr, @"+", @"\t" ) calcStr = fn StringByReplacingOccurrencesOfString( calcStr, @" ", @"\t" ) CFArrayRef calcArr = fn StringComponentsSeparatedByString( calcStr, @"\t" ) value1 = fn StringIntegerValue( fn ArrayFirstObject( calcArr ) ) value2 = fn StringIntegerValue( fn ArrayLastObject( calcArr ) ) ControlSetStringValue( _result, fn StringWithFormat( @"%ld + %ld = %ld", value1, value2, value1 + value2 ) ) end fn void local fn DoDialog( ev as long, tag as long, wnd as long ) select ( ev ) case _textFieldDidEndEditing : fn DoCalc case _windowWillClose : end end select end fn on dialog fn DoDialog fn BuildWindow HandleEvents