/* ***Beim GEM abmelden*** */ void exitGEM(void) { setpal(oldpal); v_clsvwk(vhndl); rsrc_free(); appl_exit(); }
static void gui_quit(void) { LOG("quitting"); struct gui_window *gw = window_list; struct gui_window *tmp = window_list; /* Destroy all remaining browser windows: */ while (gw) { tmp = gw->next; browser_window_destroy(gw->browser->bw); gw = tmp; } /* destroy the treeview windows: */ atari_global_history_destroy(); atari_hotlist_destroy(); atari_cookie_manager_destroy(); /* shutdown the toolbar framework: */ toolbar_exit(); /* save persistent informations: */ urldb_save_cookies(nsoption_charp(cookie_file)); urldb_save(nsoption_charp(url_file)); deskmenu_destroy(); gemtk_wm_exit(); rsrc_free(); LOG("Shutting down plotter"); plot_finalise(); LOG("done"); }
void gui_quit(void) { LOG(("")); struct gui_window * gw = window_list; struct gui_window * tmp = window_list; while( gw ) { tmp = gw->next; browser_window_destroy(gw->browser->bw); gw = tmp; } global_history_destroy(); hotlist_destroy(); toolbar_exit(); urldb_save_cookies(nsoption_charp(cookie_file)); urldb_save(nsoption_charp(url_file)); deskmenu_destroy(); gemtk_wm_exit(); rsrc_free(); LOG(("Shutting down plotter")); plot_finalise(); LOG(("done")); }
GemTerm() { #ifndef SAI /* * Remove the menu bar */ menu_bar( gl_menu, FALSE ); #endif SAI /* * Free up the memory used by the resource */ rsrc_free(); /* * Close the workstation */ v_clsvwk( vdi_handle ); /* * And terminate the application */ appl_exit(); }
/*---------------------------------------------------*/ void quit_all() { wind_update(END_MCTRL); wind_update(END_UPDATE); (void)rsrc_free(); (void)appl_exit(); exit(0); }
void main() { OBJECT *tree; int tree_cnt, count; appl_init(); graf_mouse (ARROW, NULL); if (rsrc_load ("CTRL.RSC") == 0) { form_alert (1, "[1][ | Couldn't locate CTRL.RSC ! ][ Ooops ]"); appl_exit(); return; } for (tree_cnt = 0; tree_cnt < 3; tree_cnt++) { rsrc_gaddr (R_TREE, tree_cnt, & tree); do { if (tree->ob_type & 0x7f00) if ((tree->ob_state & CROS_CHK) == CROS_CHK) { tree->ob_type = G_USERDEF; tree->ob_spec.userblk = &my_user_block; tree->ob_state &= ~ CROS_CHK; } } while ((tree++->ob_flags & LASTOB) == 0); } if (init_data() == 0) { rsrc_free(); appl_exit(); return; } wind_update (BEG_UPDATE); gem_prgm(); wind_update (END_UPDATE); rsrc_free(); appl_exit(); }
/* ------------------------------------------------------------------- */ int main(void) { appl_init(); graf_mouse(ARROW, 0); if(is_ttf_gdos()) { /* is GDOS loaded? */ if(rsrc_load("ttf-dump.rsc")) { rsrc_gaddr( R_TREE, CHOOSER, &chooser ); choose_font(); rsrc_free(); } else form_alert(1, "[3][Cannot open resource file][OK]"); } else form_alert(1, "[3][this program needs TTF-GDOS][OK]"); appl_exit(); exit(0); } /* main() */
int main(void) { int x,y,w,h; int vid; int work_in[] = {1,7,1,1,1,1,1,1,1,1,2}; int work_out[57]; OBJECT * dial; appl_init(); vid = graf_handle(&vid,&vid,&vid,&vid); v_opnvwk(work_in,&vid,work_out); if(rsrc_load("test2rsc.rsc")) { rsrc_gaddr(R_TREE,TESTDIAL,&dial); form_center(dial,&x,&y,&w,&h); form_dial(FMD_START,0,0,0,0,x,y,w,h); objc_draw(dial,0,9,x,y,w,h); own_form_do(dial,0); form_dial(FMD_FINISH,0,0,0,0,x,y,w,h); rsrc_free(); } else { form_alert(1,"[1][Couldn't load resource file!][Bummer!]"); } v_clsvwk(vid); appl_exit(); return 0; }
//******************************************************************** // 1998-09-16 - Created //******************************************************************** // deinit: De-inits everything from memory de-allocations to closing // files and windows //******************************************************************** void deinit(void) { #ifdef LOGGING Log(LOG_FUNCTION,"deinit()\n"); #endif // close_main_win(); deinit_graph(); #ifdef USE_MENU menu_bar(menu_tree,0); #endif if(icons) rsrc_free(); if(ap_id!=NOLL) appl_exit(); }
/* rsrc_exit(); * ================================================================ */ void rsrc_exit( void ) { /* Free up the DATA Buffer */ if( data_buffer ) Mfree( data_buffer ); data_buffer = NULL; /* Close up and Free all the windows */ if( wid > 0 ) { wind_close( wid ); wind_delete( wid ); } /* Free up the Resource */ rsrc_free(); /* Free up the SubMenus and Popups */ FreeMenus(); }
//******************************************************************** // 1998-09-16 - Created //******************************************************************** // init_rsc: Loads and initiates the resource-file //******************************************************************** int init_rsc() { short dummy; char filnamn[ MAXSTRING ]; rsrc_free(); strcpy( filnamn , system_dir ); if( screeny > 15 ) strcat( filnamn , RESURSL ); else strcat( filnamn , RESURSH ); dummy = rsrc_load( filnamn ); if( !dummy ) { strcpy( tempvar.errorstring , RESOURCE_ERROR ); alertbox( 1 , tempvar.errorstring ); #ifdef LOGGING Log( LOG_INIT , "Could not load resource-file: %s\n" , filnamn ); #endif Return FALSE; } for( dummy = 0 ; dummy < MAX_ALERTS ; dummy++ ) rsrc_gaddr( R_STRING , dummy , &alerts[ dummy ] ); rsrc_gaddr(R_TREE,ICONS,&icons); init_info_win(); // init_main_win(); #ifdef USE_MENU rsrc_gaddr(R_TREE,MENU,&menu_tree); #endif Return TRUE; }
void rsrc_exit( void ) { rsrc_free(); }
int main(void) { int error; #if _MINT_ /* HR 151102 */ have_ssystem = Ssystem(-1, 0, 0) == 0; /* HR 151102: use Ssystem where possible */ mint = (find_cookie('MiNT') == -1) ? FALSE : TRUE; magx = (find_cookie('MagX') == -1) ? FALSE : TRUE; /* HR 151102 */ geneva = (find_cookie('Gnva') == -1) ? FALSE : TRUE; /* DjV 035 080203 */ mint |= magx; /* Quick & dirty */ if (mint) { Psigsetmask(0x7FFFE14EL); Pdomain(1); } #endif x_init(); if ((ap_id = appl_init()) < 0) return -1; if (_GemParBlk.glob.version >= 0x400) { shel_write(9, 1, 0, NULL, NULL); menu_register(ap_id, " Tera Desktop"); } if (rsrc_load(RSRCNAME) == 0) form_alert(1, msg_resnfnd); else { if ((error = init_xdialog(&vdi_handle, malloc, free, "Tera Desktop", 1, &nfonts)) < 0) xform_error(error); else { init_vdi(); rsc_init(); if (((max_w / screen_info.fnt_w) < 40) || ((max_h / screen_info.fnt_h) < 25)) alert_printf(1, MRESTLOW); else { if ((error = alloc_global_memory()) == 0) { if (exec_deskbat() == FALSE) { if (load_icons() == FALSE) { if (init() == FALSE) { graf_mouse(ARROW, NULL); evntloop(); wd_del_all(); menu_bar(menu, 0); xw_close_desk(); } free_icons(); /* HR 151102 */ wind_set(0, WF_NEWDESK, NULL, 0); dsk_draw(); } } Mfree(global_memory); } else xform_error(error); } if (vq_gdos() != 0) vst_unload_fonts(vdi_handle, 0); exit_xdialog(); } rsrc_free(); } /* DjV 013 030103 100203 ---vvv--- */ /* * The following section handles system shutdown and resolution change * If a resolution change is required, shutdown is performed first * If only shutdown s required, system will reset at the end. */ /* appl_exit(); */ if ( chrez || shutdown ) /* If change resolution or shutdown ... */ { /* Tell all applications which would understand it to end */ quit = shel_write ( 4, 2, 0, NULL, NULL ); /* complete shutdown */ evnt_timer( 3000, 0 ); /* Wait a bit? */ /* /* * In Mint, must tell all proceseses to terminate nicely ? * but this is only in this group ? What to do? */ Pkill(0, SIGTERM); evnt_timer(3000, 0); /* Wait a bit? */ */ /* * After all applications have hopefully been closed, * change the screen resolution if needed; * else- reset the computer */ if ( chrez ) get_set_video(2); #if 1 else #if _MINT_ if (!mint) /* HR 230203: Dont reset under MiNT or MagiC !!!!! */ #endif { /* Perform a reset here */ #if 0 /* with warnings */ long *m; /* to memory locations */ long rv; /* reset vector */ Super ( 0L ); /* Supervisor; old stack won't be needed again */ *(m = 0x420L) = 0L; /* memctrl */ *(m = 0x43aL) = 0L; /* memval2 */ *(m = 0x426L) = 0L; /* resvalid */ m = *( m = 0x4f2 ); /* to start of OS */ rv = *(m + 4); /* to routine that handles the reset */ Supexec(rv); /* execute it */ #else /* HR: without warnings */ long (*rv)(); /* reset vector */ Super ( 0L ); /* Supervisor; old stack won't be needed again */ memctrl = 0L; memval2 = 0L; resvalid = 0L; (long)rv = *((long *)os_start + 4); /* routine that handles the reset */ Supexec(rv); /* execute it */ #endif } #endif }
/* *** Beim GEM anmelden *** */ int initGEM(void) { int rgb[3]; int work_in[12], work_out[57]; /* VDI-Felder */ int i, ap_id; ap_id=appl_init(); if(ap_id==-1) return(-1); if(aesversion>=0x400) /* Wenn m�glich einen Namen anmelden */ menu_register(ap_id, " STed\0\0\0\0"); graf_mouse(ARROW, 0L); /* Maus als Pfeil */ if( !rsrc_load("sted.rsc") ) { form_alert(1, "[3][Could not|load <sted.rsc>][Cancel]"); appl_exit(); return(-1); } rsrc_gaddr(R_TREE, MAINMENU, &menu); /* Adresse holen */ rsrc_gaddr(R_TREE, ABOUTSED, &aboutdlg); rsrc_gaddr(R_TREE, LDATDIA, &lvdatdlg); #ifdef RESTRIC_STED lvdatdlg[LVLTYP].ob_flags |= HIDETREE; lvdatdlg[LVLTYP].ob_flags &= ~EDITABLE; lvdatdlg[LVLTYPT1].ob_flags |= HIDETREE; lvdatdlg[LVLTYPT2].ob_flags |= HIDETREE; lvdatdlg[LVLID].ob_flags |= HIDETREE; lvdatdlg[LVLID].ob_flags &= ~EDITABLE; lvdatdlg[LVLIDT1].ob_flags |= HIDETREE; #endif wind_get(0, WF_WORKXYWH, &deskx, &desky, &deskw, &deskh); /* Desktopgr��e */ vhndl=graf_handle(&i, &i, &i, &i); for(i=0; i<10; i++) work_in[i]=1; work_in[10]=2; v_opnvwk(work_in, &vhndl, work_out); /* VDI-Station �ffnen */ vq_extnd(vhndl, 1, work_out); bipp=work_out[4]; /* Bits pro Bitplane ermitteln */ if(bipp>8) { form_alert(1, "[3][Sorry, STed only works|in 16 and 256 colors!][Ok]"); v_clsvwk(vhndl); rsrc_free(); appl_exit(); return(-1); } menu_bar(menu, 1); /* Men� darstellen */ for(i=0; i<15; i++) /* Alte Farben sichern */ { vq_color(vhndl, i, 1, rgb); oldpal[i][0]=rgb[0]; oldpal[i][1]=rgb[1]; oldpal[i][2]=rgb[2]; } setpal(newpal); /* Neue Farben setzen */ return(0); }
void main(void) { WORD x,y,w,h; WORD mx,my,button,kstate,clicks; MFDB mfdbs,mfdbd; WORD xyarray[8],vid; WORD work_in[] = {1,7,1,1,1,1,1,1,1,1,2}; WORD work_out[57]; OBJECT *dial; char path[200],file[30]; appl_init(); strcpy(path,"C:\\*"); strcpy(file,"noname.inf"); vid = graf_handle(&vid,&vid,&vid,&vid); v_opnvwk(work_in,&vid,work_out); /* for(x = 0; x < 25; x++) form_error(x); */ /* fsel_input(path,file,&button); */ form_alert(3,"[2][Test av|form_alert.|Windoze rulez...|...___NOOOT!___][Ja|Kanske|Nej]"); if(rsrc_load("test2rsc.rsc")) { int co; int i; rsrc_gaddr(R_TREE,TESTDIAL,&dial); form_center(dial,&x,&y,&w,&h); form_dial(FMD_START,0,0,0,0,x,y,w,h); objc_draw(dial,0,9,x,y,w,h); form_do(dial,0); form_dial(FMD_FINISH,0,0,0,0,x,y,w,h); i = 0; objc_delete(dial,11); while(1) { fprintf(stderr,"%3d next=%3d head=%3d tail=%3d\r\n", i,dial[i].ob_next,dial[i].ob_head,dial[i].ob_tail); if(dial[i].ob_flags & LASTOB) { break; }; i++; }; getchar(); rsrc_free(); } else { form_alert(1,"[1][Couldn't load resource file!][Bummer!]"); }; v_clsvwk(vid); fprintf(stderr,"environ size=%d",shel_write(SWM_ENVIRON,ENVIRON_SIZE,0,NULL,NULL)); appl_exit(); }
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 ) { 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(); }
/* 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(); }