[futurebasic] A couple of problems with this code

Message: < previous - next > : Reply : Subscribe : Cleanse
Home   : October 2009 : Group Archive : Group : All Groups

From: Brian Heibert <heibert@...>
Date: Tue, 27 Oct 2009 22:47:31 -0400
Hi,

Two prolems I am having...
One is the game editor window is loading before the splash
and the drawing tools window only appears after I quit the application
It appears for a minute then the app quits

Brian


output file "StoryTeller"

include "Tlbx MacApplication.incl"

_toolWnd = 4000

begin enum
_colorPop = 1
end enum

Local fn BuildPopMenu( id as Long )
'~'1
dim as MenuRef  mRef
dim as Str255   s

Menu id, 0, _enable, ""
s = "Black;Yellow;Green;Cyan;Blue;Magenta;Red"
Menu id, 1, _enable, s
mRef = fn GetMenuHandle( id )
DeleteMenu( id )
InsertMenu( mRef, -1 )
end fn

local fn BuildToolWindow
'~'1
dim as WindowAttributes    wa
dim as Rect                r
dim as Boolean           @ bool : bool = _true

wa = _kWindowToolbarButtonAttribute

SetRect( @r, 20, 60, 280, 140 )
Appearance Window -_toolWnd,¬
                  "Artist Tools", @r,¬
                  _kDocumentWindowClass, wa
FN SetWindowBackground( _kThemeActiveDialogBackgroundBrush, _false )


SetRect( @r, 20, 18, 240, 38 )
Appearance Button _colorPop,¬
                  ,, 101, -1,¬
                  "Select a pen color:", @r,¬
                  _kControlPopupButtonProc

end fn

local fn DoPopup( menuID as long )
'~'1
dim as Long     mItem
dim as Str255   txtStr
dim as MenuRef  mRef
dim as Long     outWnd

mItem = button( menuID )
mRef  = button( menuID, _FBgetControlMenuHandle )
call GetMenuItemText( mRef, mItem, @txtStr )

outWnd = window(2)
window output 2
select case ( txtStr )
case "Black"  : Color = _zBlack
case "Yellow" : Color = _zYellow
case "Green"  : Color = _zGreen
case "Cyan"   : Color = _zCyan
case "Blue"   : Color = _zBlue
case "Magenta": Color = _zMagenta
case "Red"    : Color = _zRed
end select

if outWnd then window output outWnd

end fn


local fn PrintWindow( whichWindow as Long )
'~'1
dim as Rect    r
dim as Pointer rgn, pict

Window whichWindow
SetRect( r, 0, 0, Window( _width ) - 1, Window( _height) - 1 )
rgn = fn NewRgn
GetClip( rgn )
ClipRect( r )
pict = fn GetPict( r)
long if ( pict )
Def Page
long if ( prcancel == _false )
Def LPrint
long if ( prcancel == _false )
Route _toPrinter
DrawPicture (  pict, r )
Route _toScreen
Close LPrint
end if
end if
KillPicture( pict )
xelse
stop "GetPict error"
end if
SetClip( rgn )
DisposeRgn( rgn )

end fn


local fn PollMouseScribble
'~'1
dim as Point mPt
begin globals
dim as Point sPrevPt
end globals

PenSize( 8, 8 )

long if ( fn Button )
GetMouse( @mPt )
long if ( sPrevPt.h% != _minInt )
plot sPrevPt.h%, sPrevPt.v% to mPt.h%, mPt.v%
end if
sPrevPt = mPt
xelse
sPrevPt.h% = _minInt
end if

end fn


STRINGLIST ON
include "Util_AppleHelp.incl"

/*toolbox fn HIAboutBox( CFDictionaryRef inOptions ) = OSStatus*/
/*toolbox fn CFDictionaryCreate( CFAllocatorRef allocator, ptr keys,  
ptr values, CFIndex numValues, ptr keyCallBacks, ptr valueCallBacks) =  
CFDictionaryRef*/
/*toolbox CFDictionaryGetKeysAndValues( CFDictionaryRef dict, ptr  
keys,  ptr values)*/
/*toolbox fn CFBundleGetDataPointerForName( CFBundleRef bundle,  
CFStringRef symbolName ) = pointer*/
#IF DEF _usingLiteRuntime
dim e1$,e2$,e3$
e1$ = "Sorry!"
e2$ = "This program will not work in the console runtime."
e3$ = "Select Standard BASIC or Appearance Compliant from the Command  
menu."
PRINT e1$
PRINT e2$
PRINT e3$
#ELSE
BEGIN GLOBALS
DIM gRGBChoice AS RGBColor
END GLOBALS

dim as Str255    s
dim as FSSpec    fileSpec

APPLE MENU "About StoryTeller..."

CLEAR LOCAL
LOCAL FN DisplayColorValues (@RGBOut AS POINTER TO RGBColor)
'---> Variables
DIM SampleRect AS RECT
DIM cyan&,magenta&,yellow&
'---> Get CMY values.
cyan&    = RGBOut.red   AND &FFFF
magenta& = RGBOut.green AND &FFFF
yellow&  = RGBOut.blue  AND &FFFF
CALL moveto (0,0)
'~Coordinates
SetRect(SampleRect, 95,70,250,170)
//BOX 970,610 TO 510,12
PaintRect(SampleRect)
BOX FILL 500,150 TO 800,170
COLOR _zBlack'reset color to black
END FN

CLEAR LOCAL
LOCAL FN ColorPicker
'---> Variables
DIM RGBIn   AS RGBColor
DIM RGBOut  AS RGBColor
DIM WherePt AS POINT
DIM Msg$
DIM Picked AS BOOLEAN
'---> Pick Color
WherePt.h% = 50
WherePt.v% = 50
Msg$       = "Pick a color (any color)!"
Picked    = FN GetColor (WherePt, Msg$, RGBIn, RGBOut)
'---> Pick Anything?
LONG IF Picked
gRGBChoice = RGBOut
#IF CarbonLib
FN DisplayColorValues(gRGBChoice)
#ENDIF
END IF
END FN



INCLUDE "Welcome.incl"
INCLUDE "LaunchURL.incl"

dim as int OSErr, @ firstCustomHelpItem
dim as Handle @ hmHandle
#if carbonlib
    OSErr = fn HMGETHELPMENU(hmHandle, firstCustomHelpItem)
#else
    OSErr = fn HMGETHELPMENUHANDLE(hmHandle)
    firstCustomHelpItem = fn COUNTMITEMS(hmHandle)+1
#endif
dim hlpm1$,hlpm2$,hlpm3$,hlpm4$,hlpm5$,hlpm6$
//hlpm1$ = "/?StoryTeller Help"
hlpm2$ = "-"
hlpm3$ = "Goto storyteller.macdesignedsoftware.com"
hlpm4$ = "Goto macdesignedsoftware.com"
hlpm5$ = "-"
hlpm6$ = "Shareware $12.00"

//call AppendMenu(hmHandle, hlpm1$)
call AppendMenu(hmHandle, hlpm2$)
call AppendMenu(hmHandle, hlpm3$)
call AppendMenu(hmHandle, hlpm4$)
call AppendMenu(hmHandle, hlpm5$)
call AppendMenu(hmHandle, hlpm6$)

LOCAL FN CLOSEUNIX (n as long)
CLOSE #n
END FN

local fn DoAboutMenu
dim as CFStringRef        keys(3), values(3)
dim as CFDictionaryRef    dict
dim as OSStatus           ignore
dim as pointer            keyCallBacks
begin globals
dim as CFBundleRef        sCoreFoundBndl
end globals

long if ( sCoreFoundBndl == 0 )
sCoreFoundBndl = fn CreateBundleForFramework 
( "CoreFoundation.framework" )
end if
// data pointer from bundle and name of extern const
keyCallBacks = fn CFBundleGetDataPointerForName( sCoreFoundBndl, ¬
    fn CFSTR( "kCFCopyStringDictionaryKeyCallBacks" ) )
keys(0)   = fn CFSTR( "HIAboutBoxName" )
values(0) = fn CFSTR( "StoryTeller" )

keys(1)   = fn CFSTR( "HIAboutBoxVersion" )
values(1) = fn CFSTR( "Version 1.00 by Brian Heibert" )

keys(2)   = fn CFSTR( "HIAboutBoxDescription" )
values(2) = fn CFSTR( "storyteller.macdesignedsoftware.com" )

keys(3)   = fn CFSTR( "HIAboutBoxCopyright" )
values(3) = fn CFSTR( "© Copyright 2009 MacDesigned Software. All  
Rights Reserved." )

dict = fn CFDictionaryCreate( 0, @keys(0), @values(0), 4,  
keyCallBacks, 0 )
ignore = fn HIAboutBox( dict )
CFRelease( dict )

end fn

INCLUDE "InitIncludes.incl"

'----------
include "Util_CE.incl"

local mode
local fn TextViewNoEdit( nextHandler as EventHandlerCallRef, inEvent  
as EventRef, userData as pointer )
'~'1
end fn = _userCanceledErr

local mode
local fn SetTextViewEditability( txtView as HIViewRef, editable as  
Boolean )
'~'1
begin globals
dim as EventHandlerRef  sNoEditHandler
end globals
long if ( editable )
long if ( sNoEditHandler )
fn RemoveEventHandler( sNoEditHandler )
sNoEditHandler = 0
end if
xelse
long if ( sNoEditHandler == 0 )
fn CEAddEvent( _kEventClassTextField, _kEventTextShouldChangeInRange )
fn CEInstallControlEventHandler( txtView, @fn TextViewNoEdit, 0,  
@sNoEditHandler )
end if
end if
end fn
'----------

local mode
local fn BuildSplashFromNib
dim as IBNibRef    @ nib
dim as WindowRef   @ w
dim as OSStatus      err

'~'1

err = fn CreateNibReference( fn CFSTR( "StoryTeller" ), @nib )
if err then stop "CreateNibReference error"

/*err = fn SetMenuBarFromNib( nib, fn CFSTR( "MenuBar" ) )
if err then stop "SetMenuBarFromNib error"*/

err = fn CreateWindowFromNib( nib, fn CFSTR( "ST_Splash" ), @w )
DisposeNibReference( nib )
if err then stop "CreateWindowFromNib error"
ShowWindow( w )

// the FB wndNum is determined by MakeIntoFBWindow's second parameter;  
there is nothing relevant in the nib
fn MakeIntoFBWindow( w, 1 )

// use an FB runtime utility to put text into the nib-derived control
/*def SetButtonTextString( _eutcBtn, "programmed text" )*/
end fn

local fn BuildEditorFromNib
'~'1
dim as IBNibRef    @ nib
dim as WindowRef   @ w
dim as OSStatus      err

err = fn CreateNibReference( fn CFSTR( "StoryTeller" ), @nib )
if err then stop "CreateNibReference error"

/*err = fn SetMenuBarFromNib( nib, fn CFSTR( "MenuBar" ) )
if err then stop "SetMenuBarFromNib error"*/

err = fn CreateWindowFromNib( nib, fn CFSTR( "ST_GameEdtor" ), @w )
DisposeNibReference( nib )
if err then stop "CreateWindowFromNib error"
ShowWindow( w )

// the FB wndNum is determined by MakeIntoFBWindow's second parameter;  
there is nothing relevant in the nib
fn MakeIntoFBWindow( w, 2 )

// use an FB runtime utility to put text into the nib-derived control
/*def SetButtonTextString( _eutcBtn, "programmed text" )*/
BOX 970,610 TO 510,12
end fn

local fn BuildGotoCardFromNib
'~'1
dim as IBNibRef    @ nib
dim as WindowRef   @ w
dim as OSStatus      err
err = fn CreateNibReference( fn CFSTR( "StoryTeller" ), @nib )
if err then stop "CreateNibReference error"
err = fn CreateWindowFromNib( nib, fn CFSTR( "ST_Goto" ), @w )
DisposeNibReference( nib )
if err then stop "CreateWindowFromNib error"
ShowWindow( w )

fn MakeIntoFBWindow(w, 3)

end fn

local fn BuildGotoURLFromNib
'~'1
dim as IBNibRef    @ nib
dim as WindowRef   @ w
dim as OSStatus      err
err = fn CreateNibReference( fn CFSTR( "StoryTeller" ), @nib )
if err then stop "CreateNibReference error"
err = fn CreateWindowFromNib( nib, fn CFSTR( "ST_GotoURL" ), @w )
DisposeNibReference( nib )
if err then stop "CreateWindowFromNib error"
ShowWindow( w )

fn MakeIntoFBWindow(w, 4)

end fn

local fn BuildOtherSizeNib
'~'1
dim as IBNibRef    @ nib
dim as WindowRef   @ w
dim as OSStatus      err
err = fn CreateNibReference( fn CFSTR( "StoryTeller" ), @nib )
if err then stop "CreateNibReference error"
err = fn CreateWindowFromNib( nib, fn CFSTR( "ST_OtherSize" ), @w )
DisposeNibReference( nib )
if err then stop "CreateWindowFromNib error"
ShowWindow( w )

fn MakeIntoFBWindow(w, 5)

end fn

INCLUDE "Project.incl"

local fn DoDialog
dim as long evnt, ref
evnt = dialog(0)
ref = dialog(evnt)
select evnt
case _wndclose
WINDOW CLOSE #ref
case _wndclick
select ref
long if ( ref == 2)

end if
end select
case _cursOver
select ref
case _quitBtn
cursor _kThemePointingHandCursor, _themeCursorStatic
case _newBtn
cursor _kThemePointingHandCursor, _themeCursorStatic
case _openBtn
cursor _kThemePointingHandCursor, _themeCursorStatic
end select
case _btnClick
select ref
case _colorPop
fn DoPopup( _colorPop )
case _gotogoto
dim address as STR255
address = EDIT$(_gotofield)
FN LaunchURL (address, "_LoadTrue") : WINDOW CLOSE #4
case _gotocancel
window close #4
case _quitBtn
gFBQuit = _Yes
case _newBtn
fn FileCloseProject
fn FileNewProject
case _openBtn
fn FileCloseProject
fn FileNewProject
fn FileOpenProject
case _URLbtn
FN LaunchURL ("http://storyteller.macdesignedsoftware.com", "_LoadTrue")
case _RegisterBtn
FN LaunchURL ("http://www.macdesignedsoftware.com/store_online.html",  
"_LoadTrue")
case _RegisterBtn2
FN LaunchURL ("http://www.macdesignedsoftware.com/store_online.html",  
"_LoadTrue")
case _GTCCancel
WINDOW CLOSE #3
case _GTCGoto
WINDOW CLOSE #3
case _gotoURL
fn BuildGotoURLFromNib
case _otherSizeCancel
window close #5
case _otherSizeSetSize
dim sizeVal as STR255
sizeVal = EDIT$(_otherSize)

//print sizeVal
window close #5

end select
end select
end fn




LOCAL FN OpenHelpBook (n1 as long,n2 as long)
fn HBGotoPage( n1, n2 )
end fn


local fn DoMenu
dim as OSStatus ignore

DIM menuID as long , itemID as long
menuID = MENU(_menuID)
itemID = MENU(_itemID)
select menuID
case 2
select itemID
case _Dictionary
INCLUDE "LaunchURL.incl"
FN LaunchURL ("dict://","_LoadTrue")
end select
case _mColor
select itemID
case _selectBack
FN ColorPicker
case _selectText
FN ColorPicker
end select
case _kHMHelpMenuID
select case itemID
case 1
FN OpenHelpBook (0,0)
case 3
FN LaunchURL ("http://storyteller.macdesignedsoftware.com","_LoadTrue")
case 4
FN LaunchURL ("http://www.macdesignedsoftware.com","_LoadTrue")
case 6
FN LaunchURL ("http://www.macdesignedsoftware.com/ 
store_online.html","_LoadTrue")

end select
case _appleMenu : ignore = fn DoAboutMenu
case _mGoto
select itemID
case _GotoCard
fn BuildGotoCardFromNib
case _gotoURL
'~gotoURL
  fn BuildGotoURLFromNib
end select
case _FileMenu
select itemID
case _FileNew
fn FileCloseProject
fn FileNewProject
case _FileOpen
FN FileCloseProject
FN FileNewProject
FN FileOpenProject
case _FileClose
fn FileCloseProject
end select
case _mSize
select itemID
case _size8
TEXT ,8
case _size9
case _size11
case _size12
case _size15
case _size16
case _size18
case _size20
case _size24
case _sizeOther
fn BuildOtherSizeNib
end select
case _mCommand
select itemID
case _RunGame
//_statNoFramed
//EDIT FIELD #_HITextViewCtrl, _statNoFramed
fn SetTextViewEditability( _HITextViewCtrl, _false )
end select
end select
end fn

INCLUDE "EventHandler.incl"

#ENDIF