112 lines
3.1 KiB
Plaintext
112 lines
3.1 KiB
Plaintext
_window = 1
|
|
begin enum 1
|
|
_int1Label
|
|
_int1Field
|
|
_int2Label
|
|
_int2Field
|
|
_calcResults
|
|
_calcBtn
|
|
end enum
|
|
|
|
void local fn BuildWindow
|
|
CGRect r
|
|
|
|
r = fn CGRectMake( 0, 0, 480, 360 )
|
|
window _window, @"Integer Arithmetic", r, NSWindowStyleMaskTitled + NSWindowStyleMaskClosable + NSWindowStyleMaskMiniaturizable
|
|
|
|
r = fn CGRectMake( 240, 320, 150, 24 )
|
|
textlabel _int1Label, @"Enter first integer:", r, _window
|
|
ControlSetAlignment( _int1Label, NSTextAlignmentRight )
|
|
r = fn CGRectMake( 400, 322, 60, 24 )
|
|
textfield _int1Field, YES, @"25", r, _window
|
|
ControlSetAlignment( _int1Field, NSTextAlignmentCenter )
|
|
ControlSetUsesSingleLineMode( _int1Field, YES )
|
|
ControlSetFormat( _int1Field, @"0123456789-", YES, 5, NULL )
|
|
|
|
r = fn CGRectMake( 240, 290, 150, 24 )
|
|
textlabel _int2Label, @"Enter second integer:", r, _window
|
|
ControlSetAlignment( _int2Label, NSTextAlignmentRight )
|
|
r = fn CGRectMake( 400, 292, 60, 24 )
|
|
textfield _int2Field, YES, @"53", r, _window
|
|
ControlSetAlignment( _int2Field, NSTextAlignmentCenter )
|
|
ControlSetUsesSingleLineMode( _int2Field, YES )
|
|
ControlSetFormat( _int2Field, @"0123456789-", YES, 5, NULL )
|
|
|
|
r = fn CGRectMake( 50, 60, 380, 200 )
|
|
textview _calcResults, r,,, _window
|
|
TextViewSetTextContainerInset( _calcResults, fn CGSizeMake( 10, 20 ) )
|
|
TextSetFontWithName( _calcResults, @"Menlo", 13.0 )
|
|
TextViewSetEditable( _calcResults, NO )
|
|
|
|
r = fn CGRectMake( 370, 13, 100, 32 )
|
|
button _calcBtn,,, @"Calculate", r
|
|
end fn
|
|
|
|
local fn PerformCalculations
|
|
CFStringRef tempStr
|
|
|
|
NSInteger i1 = fn ControlIntegerValue( _int1Field )
|
|
NSInteger i2 = fn ControlIntegerValue( _int2Field )
|
|
|
|
CFMutableStringRef mutStr = fn MutableStringWithCapacity( 0 )
|
|
|
|
// Display inout integers
|
|
tempStr = fn StringWithFormat( @"Number 1: %ld\nNumber 2: %ld\n\n", i1, i2 )
|
|
MutableStringAppendString( mutStr, tempStr )
|
|
|
|
// Add
|
|
tempStr = fn StringWithFormat( @"Addition: %ld + %ld = %ld\n", i1, i2, i1 + i2 )
|
|
MutableStringAppendString( mutStr, tempStr )
|
|
|
|
// Subtract
|
|
tempStr = fn StringWithFormat( @"Subtraction: %ld - %ld = %ld\n", i1, i2, i1 - i2 )
|
|
MutableStringAppendString( mutStr, tempStr )
|
|
|
|
// Multiply
|
|
tempStr = fn StringWithFormat( @"Multiplication: %ld * %ld = %ld\n", i1, i2, i1 * i2 )
|
|
MutableStringAppendString( mutStr, tempStr )
|
|
|
|
if ( i2 != 0 )
|
|
|
|
// Divide
|
|
tempStr = fn StringWithFormat( @"Integer Division: %ld / %ld = %ld\n", i1, i2, i1 / i2 )
|
|
MutableStringAppendString( mutStr, tempStr )
|
|
|
|
// Float Divide
|
|
tempStr = fn StringWithFormat( @"Float Division: %ld / %ld = %f\n", i1, i2, (float)i1 / (float)i2 )
|
|
MutableStringAppendString( mutStr, tempStr )
|
|
|
|
// mod
|
|
tempStr = fn StringWithFormat( @"Modulo: %ld mod %ld = %ld remainder\n", i1, i2, i1 mod i2 )
|
|
MutableStringAppendString( mutStr, tempStr )
|
|
|
|
// power
|
|
tempStr = fn StringWithFormat( @"Power: %ld ^ %ld = %e\n", i1, i2, i1 ^ i2 )
|
|
MutableStringAppendString( mutStr, tempStr )
|
|
|
|
else
|
|
|
|
MutableStringAppendString( mutStr, @"Cannot divide by zero." )
|
|
|
|
end if
|
|
|
|
TextSetString( _calcResults, mutStr )
|
|
end fn
|
|
|
|
void local fn DoDialog( ev as long, tag as long, wnd as long )
|
|
'~'1
|
|
select ( ev )
|
|
case _btnClick
|
|
select ( tag )
|
|
case _calcBtn : fn PerformCalculations
|
|
end select
|
|
case _windowWillClose : end
|
|
end select
|
|
end fn
|
|
|
|
on dialog fn DoDialog
|
|
|
|
fn BuildWindow
|
|
|
|
HandleEvents
|