static void die() { /** an acc can't return, so go here instead **/ while( 1 ) { event = evnt_mesag( msg_buff ); } /* while */ } /* die() */
void event_loop (struct win_data * wd) { int msg_buf[8]; do { evnt_mesag (msg_buf); } while (msg_buf[0] != WM_CLOSED); }
void terminate() { int message[8]; char problem[] = "[1][ | Problem occured during | | initialisation !][ Hmm ]"; if (_app) { appl_exit(); return; } else { FOREVER { evnt_mesag (message); if (message[0] == AC_OPEN) form_alert (1, problem); } } }
/* gem_exit() * ================================================================ * Clean exit. */ void gem_exit( int code ) { int ignore[8]; /* * Go into an endless loop if we're a desk accessory... */ if( !_app ) for(;;) evnt_mesag( ignore ); /* * Otherwise, clean up and call the exit hooks */ wind_update( END_UPDATE ); close_vwork(); wind_exit(); appl_exit(); exit( code ); }
void main( void ) { void *sav_ssp = Super(0); register tCOOKIE *p = *(tCOOKIE **)_p_cookies; /** look for FSMC cookie ... **/ if( p != NULL ) { while( p->id != 0L ) { if( p->id == 0x46534D43 /* 'FSMC' */ ) { pgdos_info = p->arg; break; } /* if */ p++; } /* while */ } /* if */ Super(sav_ssp); /** set up acc ... */ ap_id = appl_init(); if( ap_id < 0 ) { Cconws( "chq: can't initialise\r\n" ); die(); } /* if */ if( !vq_gdos() ) { form_alert( 1, "[1][chq: GDOS not present][Too Bad]" ); die(); } /* if */ if( pgdos_info == NULL ) { form_alert( 1, "[1][chq: can't control|" "printer quality|" "with this GDOS][Too Bad]" ); die(); } /* if */ menu_id = menu_register( ap_id, acc_name ); if( menu_id < 0 ) { form_alert( 1, "[1][chq: can't start accessory][Too Bad]" ); die(); } /* if */ /* Cconws( "chq $Revision: 1.1 $ ready to roll !!!\r\n" ); */ /** main accessory loop ... ** wait to be activated, then set quality flag **/ while( 1 ) { event = evnt_mesag( msg_buff ); /* wait .. */ /** if the message is for us, set the printer quality **/ if( (msg_buff[0] == AC_OPEN) && (msg_buff[4] == menu_id) ) { register int qual_flag; switch( form_alert( 1, "[0][select print quality][default|draft|final]" ) ) { case 3: qual_flag = 1; /* final button */ break; case 2: qual_flag = 0; /* draft button */ break; default: qual_flag = -1; /* default button */ } /* switch */ pgdos_info->values[1] = qual_flag; } /* if */ } /* while */ } /* main() */
void main() { int message[8], flag; char string[6]; gl_apid = appl_init(); if (! _app) { menu_register (gl_apid, " Super Server"); evnt_timer (1000, 0); } if (! rsrc_load ("IND.RSC")) { form_alert (1, "[1][ | Cannot find IND.RSC ! ][ Cancel ]"); terminate(); return; } get_path(); if (initialise_windows (4, ICONIFY) == 0) { leave_windows(); rsrc_free(); terminate(); return; } if (get_version (string) > 0) { form_alert (1, "[1][ | STiK is not loaded, | | or corrupted !][ Cancel ]"); leave_windows(); rsrc_free(); terminate(); return; } change_freestring (START, ST_VERS, -1, string, 5); change_freestring (START, SS_VERS, -1, version, 5); set_api_struct(); if (init_modules() == 0) { leave_windows(); rsrc_free(); terminate(); return; } set_callbacks (CB_EVENT, (FUNC) check_modules, (FUNC) 0L); init_configs(); graf_mouse (ARROW, NULL); if (_app) { do_some_work(); while (! exit_inetd) { evnt_mesag (message); message_handler (message); while ((flag = operate_events()) >= 0); if (flag == -4) exit_inetd = TRUE; } } else { FOREVER { evnt_mesag (message); message_handler (message); } } if (strings) Mfree (strings); terminate_modules(); leave_windows(); rsrc_free(); appl_exit(); }
/* MAIN() * ================================================================ */ VOID main( VOID ) { OBJECT *tree; WORD i; WORD button; GRECT box; GRECT xrect; WORD tempx; GRECT rect; MRETS mk; WORD ptitle, pitem, pmenu; OBJECT *ptree; BOOLEAN flag; BOOLEAN done; WORD dummy; WORD xvalue; appl_init(); phys_handle = graf_handle( &gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox ); graf_mouse( ARROW, 0L ); rsrc_load( "TEST.RSC" ); rsrc_gaddr( 0, MENU1, &ad_tree ); rsrc_gaddr( 0, BIGBOX, &ad_box ); rsrc_gaddr( 0, COUNTRY, &ad_country ); rsrc_gaddr( 0, OTHER, &ad_other ); rsrc_gaddr( 0, MENUBAR, &ad_menubar ); rsrc_gaddr( 0, TREE6, &ad_extra ); ad_other[ ROOT ].ob_x = ad_other[ ROOT ].ob_y = 0; #if 0 /* test setting delay and height variables */ TData.Delay = 100L; TData.Drag = 10000L; TData.Delay = 250L; TData.Speed = 0L; TData.Height = 16; menu_settings( 1, &TData ); #endif /* test attaching submenus */ Menu.mn_tree = ad_country; Menu.mn_menu = ROOT; Menu.mn_item = Cur2; Menu.mn_scroll = TRUE; menu_attach( 1, ad_tree, DELETE, &Menu ); Menu.mn_tree = ad_other; Menu.mn_menu = DISNEY; Menu.mn_item = MICKEY; Menu.mn_scroll = FALSE; menu_attach( 1, ad_tree, FLOPPY, &Menu ); Menu.mn_tree = ad_other; Menu.mn_menu = MODEM; Menu.mn_item = Cur3; Menu.mn_scroll = FALSE; menu_attach( 1, ad_country, 5, &Menu ); Menu.mn_tree = ad_other; Menu.mn_menu = DISNEY; Menu.mn_item = MICKEY; Menu.mn_scroll = FALSE; menu_attach( 1, ad_country, 1, &Menu ); Menu.mn_tree = ad_other; Menu.mn_menu = DISNEY; Menu.mn_item = MICKEY; Menu.mn_scroll = FALSE; menu_attach( 1, ad_country, ARKANSAS, &Menu ); Menu.mn_tree = ad_other; Menu.mn_menu = QUOTES; Menu.mn_item = Cur4; Menu.mn_scroll = FALSE; menu_attach( 1, ad_other, 5, &Menu ); Menu.mn_tree = ad_country; Menu.mn_menu = ROOT; Menu.mn_item = Cur2; Menu.mn_scroll = TRUE; menu_attach( 1, ad_menubar, PASTE, &Menu ); Menu.mn_tree = ad_country; Menu.mn_menu = ROOT; Menu.mn_item = Cur2; Menu.mn_scroll = TRUE; menu_attach( 1, ad_menubar, FNEW, &Menu ); menu_icheck( ad_tree, Cur1, 1 ); menu_icheck( ad_country, Cur2, 1 ); menu_icheck( ad_other, Cur3, 1 ); menu_icheck( ad_other, Cur4, 1 ); menu_icheck( ad_other, Cur5, 1 ); ActiveTree( ad_box ); form_center( ad_box, &rect.g_x, &rect.g_y, &rect.g_w, &rect.g_h ); ObX( ROOT ) = rect.g_x; xrect = ObRect( TITLE1 ); objc_offset( ad_box, TITLE1, &xrect.g_x, &xrect.g_y ); tempx = xrect.g_x; xrect.g_x = (( xrect.g_x + 7 )/8 ) * 8; rect.g_x = rect.g_x + ( xrect.g_x - tempx ); ObX( ROOT ) = rect.g_x; rect.g_x -= 3; form_dial( FMD_START, rect.g_x, rect.g_y, rect.g_w, rect.g_h, rect.g_x, rect.g_y, rect.g_w, rect.g_h ); objc_draw( ad_box, ROOT, MAX_DEPTH, rect.g_x, rect.g_y, rect.g_w, rect.g_h ); do { ActiveTree( ad_box ); button = form_do( ad_box, 0L ); switch( button ) { case TITLE1: box = ObRect( TITLE1 ); objc_offset( ad_box, TITLE1, &box.g_x, &box.g_y ); Menu.mn_tree = ad_tree; Menu.mn_menu = ROOT; Menu.mn_item = Cur1; Menu.mn_scroll = FALSE; flag = menu_popup( &Menu, box.g_x, box.g_y, &MData ); if( flag ) MenuCheck( MData.mn_tree, MData.mn_menu, MData.mn_item ); break; case TITLE2: box = ObRect( TITLE2 ); objc_offset( ad_box, TITLE2, &box.g_x, &box.g_y ); Menu.mn_tree = ad_country; Menu.mn_menu = ROOT; Menu.mn_item = Cur2; Menu.mn_scroll = TRUE; flag = menu_popup( &Menu, box.g_x, box.g_y, &MData ); if( flag ) MenuCheck( MData.mn_tree, MData.mn_menu, MData.mn_item ); break; case TITLE3: box = ObRect( TITLE3 ); objc_offset( ad_box, TITLE3, &box.g_x, &box.g_y ); Menu.mn_tree = ad_other; Menu.mn_menu = MODEM; Menu.mn_item = Cur3; Menu.mn_scroll = FALSE; flag = menu_popup( &Menu, box.g_x, box.g_y, &MData ); if( flag ) MenuCheck( MData.mn_tree, MData.mn_menu, MData.mn_item ); break; case TITLE4: box = ObRect( TITLE4 ); objc_offset( ad_box, TITLE4, &box.g_x, &box.g_y ); Menu.mn_tree = ad_other; Menu.mn_menu = QUOTES; Menu.mn_item = Cur4; Menu.mn_scroll = FALSE; flag = menu_popup( &Menu, box.g_x, box.g_y, &MData ); if( flag ) MenuCheck( MData.mn_tree, MData.mn_menu, MData.mn_item ); break; default: break; } }while( button != XEXIT ); form_dial( FMD_FINISH, rect.g_x, rect.g_y, rect.g_w, rect.g_h, rect.g_x, rect.g_y, rect.g_w, rect.g_h ); evnt_button( 1, 1, 0, &dummy, &dummy, &dummy, &dummy ); /* display menubar stuff here */ ActiveTree( ad_menubar ); menu_bar( ad_menubar, TRUE ); do { evnt_mesag( msg ); if( msg[0] == MN_SELECTED ) { /* msg[7] is the parent of FQUIT - which the user can't know */ ptr = &msg[5]; if( ( *ptr == ad_menubar ) && ( msg[4] == FQUIT ) ) { button = form_alert( 1, "[1][ | EXIT PROGRAM? ][OK|Cancel]"); if( button == 1 ) done = TRUE; } else MenuCheck( *ptr, msg[7], msg[4] ); menu_tnormal( ad_menubar, msg[3], TRUE ); } }while( !done ); menu_bar( ad_menubar, FALSE ); rsrc_free(); graf_mouse( ARROW, 0L ); appl_exit(); }
/* MAIN() * ================================================================ */ VOID main( VOID ) { WORD button; BOOLEAN done; OBJECT *tree; appl_init(); phys_handle = graf_handle( &gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox ); open_vwork(); graf_mouse( ARROW, 0L ); rsrc_load( "DEMO.RSC" ); rsrc_gaddr( 0, MENUBAR, &ad_menubar ); rsrc_gaddr( 0, ATREE, &ad_tree ); rsrc_gaddr( 0, FONTTREE, &ad_fonts ); rsrc_gaddr( 0, STREE, &ad_style ); rsrc_gaddr( 0, POSTREE, &ad_position ); rsrc_gaddr( 0, CTREE, &ad_color ); rsrc_gaddr( 0, PTREE, &ad_pattern ); rsrc_gaddr( 0, MTREE, &ad_modem ); rsrc_gaddr( 0, BAUDRATE, &ad_baudrate ); rsrc_gaddr( 0, PARTREE, &ad_parity ); rsrc_gaddr( 0, BITTREE, &ad_bittree ); rsrc_gaddr( 0, STOPTREE, &ad_stoptree ); rsrc_gaddr( 0, PORTTREE, &ad_porttree ); rsrc_gaddr( 0, FLOWTREE, &ad_flowtree ); rsrc_gaddr( 0, LTREE, &ad_list ); rsrc_gaddr( 0, TOOLBOX, &ad_tools ); rsrc_gaddr( 0, BLANK, &ad_blank ); rsrc_gaddr( 0, TOOLBOX2, &ad_box2 ); rsrc_gaddr( 0, TOOLBAR, &ad_box3 ); rsrc_gaddr( 0, FONT2, &ad_font2 ); /* Attach all Submenus that are being attached */ AttachMenus(); /* CheckMark the Current Menu Items in their respective menus */ menu_icheck( ad_baudrate, CurBaudRate, 1 ); menu_icheck( ad_parity, CurParity, 1 ); menu_icheck( ad_bittree, CurBits, 1 ); menu_icheck( ad_stoptree, CurStopBits, 1 ); menu_icheck( ad_porttree, CurPort, 1 ); menu_icheck( ad_flowtree, CurFlow, 1 ); menu_icheck( ad_style, CurStyle, 1 ); menu_icheck( ad_position, CurPos, 1 ); menu_icheck( ad_fonts, CurFonts, 1 ); menu_icheck( ad_font2, CurFont2, 1 ); /* display menubar stuff here */ menu_bar( ad_menubar, TRUE ); /* initialize windows */ wind_get( 0, WF_FULLXYWH, &desk.g_x, &desk.g_y, &desk.g_w, &desk.g_h ); cur_tree = ad_tools; menu_flag = TRUE; /* Set Toggle Flags */ SubFlag = TRUE; ToolFlag = TRUE; CurRect.g_x = desk.g_x; CurRect.g_y = desk.g_y; CurRect.g_w = 320; CurRect.g_h = 200; InitObjects(); InitWindow(); menu_ienable( ad_menubar, FOPEN, 0 ); menu_ienable( ad_menubar, FCLOSE, 1 ); done = FALSE; do { evnt_mesag( msg ); wind_update( BEG_UPDATE ); if( msg[0] == MN_SELECTED ) { /* msg[7] is the parent of FQUIT - which the user can't know */ ptr = ( OBJECT **)&msg[5]; if( *ptr == ad_menubar ) { switch( msg[4] ) { case FQUIT: button = form_alert( 1, "[1][ | EXIT PROGRAM? ][OK|Cancel]"); if( button == 1 ) done = TRUE; break; case ABOUTX: execform( ad_tree, 0 ); break; case PHONE: do_modem(); break; case TABOUT: /* Enable, Disable About PLUS change TEXT */ menu_flag ^= 1; menu_ienable( ad_menubar, ABOUTX, menu_flag ); menu_text( ad_menubar, TABOUT, TextAbout[ menu_flag ] ); if( menu_flag ) menu_text( ad_menubar, ABOUTX, " About Demo... " ); else menu_text( ad_menubar, ABOUTX, " Disabled... " ); break; case TSUB: /* Enable/Disable all Submenus */ SubFlag ^= 1; menu_text( ad_menubar, TSUB, TextSubMenu[ SubFlag ] ); if( SubFlag ) AttachMenus(); else DetachMenus(); break; case SLISTS: DoList(); /* Do A Drop Down List Dialog */ break; case TOOLFLAG: /* Enable/Disable ToolBox */ ToolFlag ^= 1; menu_text( ad_menubar, TOOLFLAG, TextToolBox[ ToolFlag ] ); if( ToolFlag ) { *( (LONG *)&tree_data[0] ) = ( LONG )cur_tree; wind_set( wid, WF_TOOLBAR, tree_data[0], tree_data[1], dummy, dummy ); } else wind_set( wid, WF_TOOLBAR, 0, 0, dummy, dummy ); break; case SWITCH: /* Switch ToolBoxes */ if( cur_tree == ad_tools ) cur_tree = ad_box2; else if( cur_tree == ad_box2 ) { cur_tree = ad_box3; ActiveTree( ad_fonts ); textptr = ObString( CurFonts ); strncpy( &tbuff[0], &textptr[1], 28 ); ActiveTree( ad_box3 ); TedText( FBUTT1 ) = &tbuff[0]; } else cur_tree = ad_tools; *( (LONG *)&tree_data[0] ) = ( LONG )cur_tree; ToolFlag = TRUE; menu_text( ad_menubar, TOOLFLAG, TextToolBox[ ToolFlag ] ); wind_set( wid, WF_TOOLBAR, tree_data[0], tree_data[1], dummy, dummy ); break; case FCLOSE: /* close Window */ if( wid ) { wind_get( wid, WF_CURRXYWH, &CurRect.g_x, &CurRect.g_y, &CurRect.g_w, &CurRect.g_h ); wind_close( wid ); wind_delete( wid ); wid = 0; menu_ienable( ad_menubar, FCLOSE, 0 ); menu_ienable( ad_menubar, FOPEN, 1 ); } break; case FOPEN: /* open Window */ if( !wid ) { InitWindow(); menu_ienable( ad_menubar, FOPEN, 0 ); menu_ienable( ad_menubar, FCLOSE, 1 ); } break; default: break; } } /* MENU SELECTED -> Font Style Menu Clicked on as a SUBMENU from the Menubar*/ if( *ptr == ad_style ) { menu_icheck( ad_style, CurStyle, 0 ); /* Turn OFF Old Checkmark */ menu_icheck( ad_style, msg[4], 1 ); /* Turn ON New CheckMark */ CurStyle = msg[4]; /* Update Current Var */ menu_istart( 1, ad_style, ROOT, CurStyle ); /* Reset Starting Position*/ } /* MENU SELECTED -> Font Position Clicked on as a SUBMENU from the menubar */ if( *ptr == ad_position ) { menu_icheck( ad_position, CurPos, 0 ); menu_icheck( ad_position, msg[4], 1 ); CurPos = msg[4]; menu_istart( 1, ad_position, ROOT, CurPos ); } /* MENU SELECTED -> Fonts Menu Clicked on as a SUBMENU from the menubar */ if( *ptr == ad_fonts ) { menu_icheck( ad_fonts, CurFonts, 0 ); menu_icheck( ad_fonts, msg[4], 1 ); CurFonts = msg[4]; menu_istart( 1, ad_fonts, ROOT, CurFonts ); } menu_tnormal( ad_menubar, msg[3], TRUE ); } if( msg[0] != MN_SELECTED ) { switch( msg[0] ) { case WM_FULLED: DoFull( msg[3] ); break; case WM_REDRAW: DoRedraw( msg ); break; case WM_ARROWED: case WM_HSLID: case WM_VSLID: break; case WM_MOVED: if( msg[3] == wid ) { wind_set( wid, WF_CURRXYWH, msg[4], msg[5], msg[6], msg[7] ); } break; case WM_TOPPED: if( msg[3] == wid ) { wind_set( wid, WF_TOP ); } break; case WM_CLOSED: if( msg[3] == wid ) { wind_get( wid, WF_CURRXYWH, &CurRect.g_x, &CurRect.g_y, &CurRect.g_w, &CurRect.g_h ); wind_close( wid ); wind_delete( wid ); wid = 0; menu_ienable( ad_menubar, FCLOSE, 0 ); menu_ienable( ad_menubar, FOPEN, 1 ); } break; case WM_SIZED: DoSizer( msg ); break; case WM_TOOLBAR: if( msg[3] == wid ) { /* Button Handling for ToolBox #1 */ if( cur_tree == ad_tools ) { switch( msg[4] ) { case T1B1: button = B1B1; break; case T1B2: button = B1B2; break; case T1B3: button = B1B3; break; case T1B4: button = B1B4; break; case T1B5: button = B1B5; break; } } /* Button Handling for TOOLBOX 2 */ if( cur_tree == ad_box2 ) { switch( msg[4] ) { case T2I1: button = T2B1; break; case T2I2: button = T2B2; break; case T2I3: button = T2B3; break; case T2I4: button = T2B4; break; case T2I5: button = T2B5; break; } } /* Word Processing Tree */ if( cur_tree == ad_box3 ) { switch( msg[4] ) { case FBUTT1: case FBUTT2: DoFonts(); break; default: break; } } if( cur_tree != ad_box3 ) { if( cur_tree[ button ].ob_state & SELECTED ) cur_tree[ button ].ob_state &= ~SELECTED; else cur_tree[ button ].ob_state |= SELECTED; objc_offset( cur_tree, button, &r.g_x, &r.g_y ); r.g_x -= 2; r.g_y -= 2; r.g_w = cur_tree[ button ].ob_width + 4; r.g_h = cur_tree[ button ].ob_height + 4; do_redraw( cur_tree, button, &r ); } } /* end of msg[3] == wid */ break; case WM_ICONIFY: if( msg[3] == wid ) wind_set( msg[3], WF_ICONIFY, msg[4], msg[5], msg[6], msg[7] ); break; case WM_UNICONIFY: if( msg[3] == wid ) wind_set( msg[3], WF_UNICONIFY, msg[4], msg[5], msg[6], msg[7] ); break; default: break; } /* end of switch */ } wind_update( END_UPDATE ); }while( !done ); if( wid > 0 ) wind_delete( wid ); menu_bar( ad_menubar, FALSE ); graf_mouse( ARROW, 0L ); rsrc_free(); close_vwork(); appl_exit(); }