116 lines
2.9 KiB
Plaintext
116 lines
2.9 KiB
Plaintext
void local fn BuildWindow
|
|
long tag, index
|
|
CFStringRef title
|
|
CFMutableStringRef letters = fn MutableStringWithString( @"ABCDEFGHIJKLMNOPQRSTUVWXYZ" )
|
|
|
|
window 1, @"Honeycombs", (0,0,419,443), NSWindowStyleMaskTitled
|
|
WindowSetBackgroundColor( 1, fn ColorWhite )
|
|
|
|
CGrect r = {20,339,95,85}
|
|
for tag = 1 to 20
|
|
subclass button tag,,, @"", r,, NSBezelStyleSmallSquare
|
|
index = rnd(len(letters)-1)
|
|
title = mid(letters,index,1)
|
|
ButtonSetTitle( tag, title )
|
|
ButtonSetKeyEquivalent( tag, lcase(title) )
|
|
MutableStringDeleteCharacters( letters, fn RangeMake( index, 1 ) )
|
|
ButtonSetTransparent( tag, YES )
|
|
r = fn CGRectOffset( r, 0, -82 )
|
|
if ( tag mod 4 == 0 )
|
|
r.origin.x += 71
|
|
if ( r.origin.y < -21.0 )
|
|
r.origin.y = 339
|
|
else
|
|
r.origin.y = 298
|
|
end if
|
|
end if
|
|
next
|
|
|
|
textlabel 21,, (18,20,383,24)
|
|
ControlSetFont( 21, fn FontSystemFontOfSize(20) )
|
|
ControlSetAlignment( 21, NSTextAlignmentCenter )
|
|
end fn
|
|
|
|
void local fn ViewDrawRect( tag as long )
|
|
CGRect r = fn ViewBounds( tag )
|
|
ColorRef titleColor, fillColor
|
|
|
|
if ( fn ControlIsEnabled( tag ) )
|
|
titleColor = fn ColorRed
|
|
fillColor = fn ColorYellow
|
|
else
|
|
titleColor = fn ColorBlack
|
|
fillColor = fn ColorMagenta
|
|
end if
|
|
|
|
BezierPathRef path = fn BezierPathInit
|
|
BezierPathSetLineWidth( path, 5.0 )
|
|
BezierpathSetLineCapStyle( path, NSRoundLineCapStyle )
|
|
|
|
CGPoint pt = {0,41}
|
|
BezierPathMoveToPoint( path, pt )
|
|
|
|
pt.x += 23.67 : pt.y += 41
|
|
BezierPathLineToPoint( path, pt )
|
|
|
|
pt.x += 47.34
|
|
BezierPathLineToPoint( path, pt )
|
|
|
|
pt.x += 23.67 : pt.y -= 41
|
|
BezierPathLineToPoint( path, pt )
|
|
|
|
pt.x -= 23.67 : pt.y -= 41
|
|
BezierPathLineToPoint( path, pt )
|
|
|
|
pt.x -= 47.34
|
|
BezierPathLineToPoint( path, pt )
|
|
|
|
pt.x -= 23.67 : pt.y += 41
|
|
BezierPathLineToPoint( path, pt )
|
|
|
|
ColorSet( fillColor )
|
|
BezierPathFill( path )
|
|
|
|
ColorSet( fn ColorBlack )
|
|
BezierPathStroke( path )
|
|
|
|
CFStringRef title = fn ButtonTitle( tag )
|
|
CFDictionaryRef attrs = @{
|
|
NSFontAttributeName:fn FontWithName( @"Helvetica-Bold", 52),
|
|
NSForegroundColorAttributeName:titleColor}
|
|
|
|
CFMutableAttributedStringRef aString = fn MutableAttributedStringWithAttributes( title, attrs )
|
|
MutableAttributedStringSetAlignment( aString, NSTextAlignmentCenter )
|
|
r.origin.y += 10
|
|
AttributedStringDrawInRect( aString, r )
|
|
end fn
|
|
|
|
void local fn Finished
|
|
long tag
|
|
for tag = 1 to 20
|
|
if ( fn ControlIsEnabled( tag ) ) then exit fn
|
|
next
|
|
end
|
|
end fn
|
|
|
|
void local fn ButtonAction( tag as long )
|
|
CFStringRef string = fn StringByAppendingString( fn ControlStringValue(21), fn ButtonTitle(tag) )
|
|
ControlSetStringValue( 21, string )
|
|
ControlSetEnabled( tag, NO )
|
|
fn Finished
|
|
end fn
|
|
|
|
void local fn DoDialog( ev as long, tag as long )
|
|
select ( ev )
|
|
case _btnClick : fn ButtonAction( tag )
|
|
case _viewDrawRect : fn ViewDrawRect( tag )
|
|
end select
|
|
end fn
|
|
|
|
random
|
|
fn BuildWindow
|
|
|
|
on Dialog fn DoDialog
|
|
|
|
HandleEvents
|