43 lines
1.5 KiB
Plaintext
43 lines
1.5 KiB
Plaintext
_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
|