From decwrl!ucbvax!tut.cis.ohio-state.edu!rutgers!aramis.rutgers.edu!dartagnan.rutgers.edu!mcgrew Sat Sep 23 16:00:59 PDT 1989 Article 73 of comp.sources.sun: Path: decwrl!ucbvax!tut.cis.ohio-state.edu!rutgers!aramis.rutgers.edu!dartagnan.rutgers.edu!mcgrew From: mcgrew@dartagnan.rutgers.edu (Charles Mcgrew) Newsgroups: comp.sources.sun Subject: v01i070: hype - a SunView object-oriented window builder, Part10/11 Message-ID: Date: 15 Sep 89 02:52:55 GMT Organization: Rutgers Univ., New Brunswick, N.J. Lines: 2919 Approved: mcgrew@aramis.rutgers.edu Submitted-by: apctrc!zmls04@uunet.uu.net (Martin L. Smith) Posting-number: Volume 1, Issue 70 Archive-name: hype/part10 #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # src # This archive created: Thu Sep 14 21:00:08 1989 export PATH; PATH=/bin:$PATH if test ! -d 'src' then echo shar: creating directory "'src'" mkdir 'src' fi echo shar: entering directory "'src'" cd 'src' echo shar: extracting "'interface.c'" '(62000 characters)' if test -f 'interface.c' then echo shar: will not over-write existing file "'interface.c'" else sed 's/^ X//' << \SHAR_EOF > 'interface.c' X#include X#include X#include "util.h" X#include "tlmod.h" X#include "objmod.h" X#include "itemmod.h" X#include "../archives/hash/hash.h" X#include "visual.h" X#include "../archives/container/container.h" X#include "amcomp.h" X#include "fileio.h" X#include "pathname.h" X#include "info.h" X#include "clipboard.h" X#include X Xextern Notify_error notify_errno; X X#define TABLE_SIZE (100) X#define CMS_SIZE (4) X#define MAX_NUM_WINDOWS (20) X#define OBJECT (1) X#define BACKGROUND (0) X X#define CHECKPRIV(x) ((object_get_level(x) != WRITABLE) && (superuser != 1)) X X Xstatic short cursor_pixrect_data[] = { X#include "cicon" X}; X Xmpr_static(c_pixrect,16,16,1,cursor_pixrect_data); X Xextern int sigq_non_empty; X Xstatic Menu default_menu; X Xstatic OBPtr master; Xstatic OBPtr treeroot; X Xstatic Rect default_rect[1]; X Xstatic Window cur_window; Xstatic Panel cur_panel; XHashTPtr sv_to_hype; X Xstatic Container default_cont; Xstatic Frame base_frame = NULL; X X Xstatic int movingflag = 0; Xstatic int grid_size = 10; Xstatic ITPtr moving_item; Xstatic Panel_item moving_item_image; X X Xint superuser; Xint tab_length = 8; X X X/* MARTIN MARTIN MARTIN keep this variable as a tracelevel. */ X/* Write iam library routines to inc, dec, and set it to zero. */ X/* this is not part of the state. Write a menu notify proc */ X/* in here to set it to 1 or 0, use of these as an example. */ Xint trace_level = 0; X Xchar *glob_recognizer = "*&^%hypeglob"; X Xstatic char *init_obj_name = NULL; Xstatic char *public = NULL; Xstatic char *state = NULL; Xstatic char *user = NULL; Xstatic char *dpath = NULL; Xstatic char *init_script = NULL; Xstatic char *init_arg = NULL; Xstatic char *editor = NULL; X XOBPtr distinguished; X X X#define OBJECT_OF_MENU4(m) \ X ((OBPtr) menu_get(\ X menu_get(menu_get(\ X menu_get(menu_get(m,\ X MENU_PARENT),MENU_PARENT),MENU_PARENT),MENU_PARENT)\ X ,MENU_CLIENT_DATA)) X#define OBJECT_OF_MENU3(m) \ X ((OBPtr) menu_get(\ X menu_get(menu_get(menu_get(m,MENU_PARENT),MENU_PARENT),MENU_PARENT)\ X ,MENU_CLIENT_DATA)) X#define OBJECT_OF_MENU2(m) \ X ((OBPtr) menu_get(\ X menu_get(menu_get(m,MENU_PARENT),MENU_PARENT)\ X ,MENU_CLIENT_DATA)) X#define OBJECT_OF_MENU0(m) \ X ((OBPtr) menu_get(m,MENU_CLIENT_DATA)) X#define TL_OF_MENU4(m) \ X ((TLPtr) menu_get(\ X menu_get(menu_get(\ X menu_get(menu_get(m,\ X MENU_PARENT),MENU_PARENT),MENU_PARENT),MENU_PARENT)\ X ,MENU_CLIENT_DATA)) X#define TL_OF_MENU2(m)\ X ((TLPtr) menu_get(\ X menu_get(menu_get(m,MENU_PARENT),MENU_PARENT)\ X ,MENU_CLIENT_DATA)) X#define TL_OF_MENU1(m)\ X ((TLPtr) menu_get(\ X menu_get(m,MENU_PARENT)\ X ,MENU_CLIENT_DATA)) X#define TL_OF_MENU0(m)\ X ((TLPtr) menu_get(m,MENU_CLIENT_DATA)) X XOBPtr get_treeroot() X{ X return treeroot; X} XOBPtr get_master() X{ X return master; X} X Xvoid fmenu_quit(m, mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X if (superuser) { X save_public(master,public); X } X obj = distinguished; X if (obj != NULL) X save_obj(obj,state); X exit(0); X} Xvoid fmenu_quit_nosave(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X if (confirm_yes("Exit WITHOUT saving changes\n")) X exit(0); X else { X return; X } X} X Xvoid fmenu_savecurrent(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X if (superuser) { X save_public(master,public); X } X obj = distinguished; X if (obj != NULL) X save_obj(obj,state); X} Xvoid fmenu_savecurrentas(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X char *fname; X if (superuser) { X save_public(master,public); X } X fname = vis_dialogue("Save Current State to what file?"); X obj = distinguished; X if (obj != NULL) X save_obj(obj,fname); X} X Xvoid fmenu_save(m, mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X char *fname; X X obj = OBJECT_OF_MENU2(m); X if (fname = vis_dialogue("Save Subtree to what file?")) X save_obj(obj,mystrcpy(fname)); X} Xvoid fmenu_pretty(m, mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X char *fname; X X obj = OBJECT_OF_MENU2(m); X if (fname = vis_dialogue("Pretty Print Subtree to what file?")) X pretty_print(obj,fname); X} Xvoid fmenu_load(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X OBPtr lobj; X char *fname; X X obj = OBJECT_OF_MENU2(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X if (fname = vis_dialogue("Load Subtree from what file?")) X load_below(fname, obj, 0, WRITABLE); X /*load_over(fname,obj,WRITABLE);*/ X} Xvoid fmenu_openall(m, mi) X Menu m; X Menu_item mi; X{ X int n,i; X OBPtr cur; X OBPtr obj; X cur = OBJECT_OF_MENU2(m); X n = object_get_numchild(cur); X for (i = 0; i < n; i++) { X obj = object_get_nthobj(i,cur); X show_obj(obj); X } X} Xvoid objmenu_report(m, mi) X Menu m; X Menu_item mi; X{ X OBPtr cur; X X X cur = (OBPtr) OBJECT_OF_MENU2(m); X vis_info_box(cur); X X} Xvoid objmenu_new_object(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X OBPtr obj; X OBPtr father,cur; X int n; X X cur = OBJECT_OF_MENU2(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X father = object_get_owner(cur); X X obj = copy_object(cur); X show_obj(obj); X} Xvoid objmenu_ex_microscript(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X ObjectCode oc; X Container cont; X Container self; X char *x; X X obj = (OBPtr) menu_get(m,MENU_CLIENT_DATA); X if (x = vis_dialogue("Enter one line of script to test.")) X cont = cnew_constring(x); X else { X return; X } X oc = compile(cont,REPORT,0); X if (oc != NULL) { X x = gen_absolute_pname(obj); X self = cnew_constring(gen_absolute_pname(obj)); X execute_script(oc,obj,cnew_con(),x,self); X free(x); X cdestroy(self); X } X free_oc(oc); X cdestroy(cont); X} Xvoid mainmenu_show_clip(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X char x[128]; X obj = OBJECT_OF_MENU0(m); X switch (get_clipboard_type()) { X case NULL_TYPE: X sprintf(x,"Clipboard Is Empty."); X break; X case OBJECT_TYPE: X sprintf(x,"Object: %s\n",get_clipboard_name()); X break; X case TL_TYPE: X sprintf(x,"Template: %s\n",get_clipboard_name()); X break; X case ITEM_TYPE: X sprintf(x,"Item: %s\n",get_clipboard_name()); X break; X } X confirm_ok(x); X} Xvoid objmenu_show_clip(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X char x[128]; X obj = OBJECT_OF_MENU4(m); X switch (get_clipboard_type()) { X case NULL_TYPE: X sprintf(x,"Clipboard Is Empty."); X break; X case OBJECT_TYPE: X sprintf(x,"Object: %s\n",get_clipboard_name()); X break; X case TL_TYPE: X sprintf(x,"Template: %s\n",get_clipboard_name()); X break; X case ITEM_TYPE: X sprintf(x,"Item: %s\n",get_clipboard_name()); X break; X } X confirm_ok(x); X} X Xvoid mainmenu_windowfit(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X obj = OBJECT_OF_MENU2(m); X screen_fit(obj); X} Xvoid objmenu_edittextboard(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X obj = OBJECT_OF_MENU4(m); X edit_textboard(); X} Xvoid objmenu_wintogv(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X int scr; X obj = OBJECT_OF_MENU2(m); X scr = attr_get_scr(object_get_attr(obj)); X scr = (scr & ~HYPE_SCROLL_V) | (HYPE_SCROLL_V & (~scr)); X attr_set_scr(object_get_attr(obj),scr); X} Xvoid objmenu_wintogh(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X int scr; X obj = OBJECT_OF_MENU2(m); X scr = attr_get_scr(object_get_attr(obj)); X scr = (scr & ~HYPE_SCROLL_H) | (HYPE_SCROLL_H & (~scr)); X attr_set_scr(object_get_attr(obj),scr); X} Xvoid tlmenu2_show_clip(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X char x[128]; X tl = TL_OF_MENU2(m); X switch (get_clipboard_type()) { X case NULL_TYPE: X sprintf(x,"Clipboard Is Empty."); X break; X case OBJECT_TYPE: X sprintf(x,"Object: %s\n",get_clipboard_name()); X break; X case TL_TYPE: X sprintf(x,"Template: %s\n",get_clipboard_name()); X break; X case ITEM_TYPE: X sprintf(x,"Item: %s\n",get_clipboard_name()); X break; X } X confirm_ok(x); X} Xvoid tlmenu4_show_clip(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X char x[128]; X tl = TL_OF_MENU4(m); X switch (get_clipboard_type()) { X case NULL_TYPE: X sprintf(x,"Clipboard Is Empty."); X break; X case OBJECT_TYPE: X sprintf(x,"Object: %s\n",get_clipboard_name()); X break; X case TL_TYPE: X sprintf(x,"Template: %s\n",get_clipboard_name()); X break; X case ITEM_TYPE: X sprintf(x,"Item: %s\n",get_clipboard_name()); X break; X } X confirm_ok(x); X} X Xvoid tlmenu_refresh(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X tl = TL_OF_MENU2(m); X close_tl(tl); X open_tl(tl); X} X Xvoid layer_show_clip(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X char x[128]; X tl = TL_OF_MENU2(m); X switch (get_clipboard_type()) { X case NULL_TYPE: X sprintf(x,"Clipboard Is Empty."); X break; X case OBJECT_TYPE: X sprintf(x,"Object: %s\n",get_clipboard_name()); X break; X case TL_TYPE: X sprintf(x,"Template: %s\n",get_clipboard_name()); X break; X case ITEM_TYPE: X sprintf(x,"Item: %s\n",get_clipboard_name()); X break; X } X confirm_ok(x); X} X Xvoid tlmenu_edittextboard(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X tl = TL_OF_MENU2(m); X edit_textboard(); X} X Xvoid TLmenu_windowfit_tl(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X tl = TL_OF_MENU2(m); X screen_fit_tl(tl); X} Xvoid TLmenu_wintogh(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X int scr; X tl = TL_OF_MENU2(m); X scr = attr_get_scr(tl_get_attr(tl)); X scr = (scr & ~HYPE_SCROLL_H) | (HYPE_SCROLL_H & (~scr)); X attr_set_scr(tl_get_attr(tl),scr); X close_tl(tl); X open_tl(tl); X} Xvoid TLmenu_wintogv(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X int scr; X tl = TL_OF_MENU2(m); X scr = attr_get_scr(tl_get_attr(tl)); X scr = (scr & ~HYPE_SCROLL_V) | (HYPE_SCROLL_V & (~scr)); X attr_set_scr(tl_get_attr(tl),scr); X close_tl(tl); X open_tl(tl); X} X Xvoid script_menupre(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X X obj = OBJECT_OF_MENU4(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X prepend_textboard_to_cont(object_get_script(obj)); X compile_object_script(obj,REPORT); X} Xvoid script_menuapp(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X X obj = OBJECT_OF_MENU4(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X append_textboard_to_cont(object_get_script(obj)); X compile_object_script(obj,REPORT); X} Xvoid script_menucpy(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X X obj = OBJECT_OF_MENU4(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X load_textboard(object_get_script(obj)); X} X Xvoid script_menuedit(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X char *lab,*abs; X X obj = OBJECT_OF_MENU4(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X abs = gen_absolute_pname(obj); X lab = mystrcat(abs," - script"); X edit_cont(object_get_script(obj),lab); X free(lab); X free(abs); X compile_object_script(obj,REPORT); X} Xvoid tlscript_menupre(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X X tl = TL_OF_MENU2(m); X prepend_textboard_to_cont(tl_get_script(tl)); X compile_tl_script(tl,REPORT); X} Xvoid tlscript_menuapp(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X X tl = TL_OF_MENU2(m); X append_textboard_to_cont(tl_get_script(tl)); X compile_tl_script(tl,REPORT); X} Xvoid tlscript_menucpy(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X X tl = TL_OF_MENU2(m); X load_textboard(tl_get_script(tl)); X} X Xvoid tlscript_menuedit(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X char *lab,*abs; X X tl = TL_OF_MENU2(m); X abs = gen_absolute_tlpname(tl); X lab = mystrcat(abs," - script"); X edit_cont(tl_get_script(tl),lab); X free(lab); X free(abs); X compile_tl_script(tl,REPORT); X} Xvoid tlbgtext_menupre(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X X tl = TL_OF_MENU2(m); X prepend_textboard_to_cont(tl_get_bgtext(tl)); X} Xvoid tlbgtext_menuapp(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X X tl = TL_OF_MENU2(m); X append_textboard_to_cont(tl_get_bgtext(tl)); X} Xvoid tlbgtext_menucpy(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X X tl = TL_OF_MENU2(m); X load_textboard(tl_get_bgtext(tl)); X} X Xvoid tlbgtext_menuedit(m,mi) X Menu m; X Menu_item mi; X{ X char *lab,*abs; X TLPtr tl; X X tl = TL_OF_MENU2(m); X X abs = gen_absolute_tlpname(tl); X lab = mystrcat(abs," - bgtext"); X edit_cont(tl_get_bgtext(tl),lab); X free(abs); X free(lab); X} X Xvoid objmenu_add_temp(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X TLPtr tl; X char *x; X Rect *r; X X obj = OBJECT_OF_MENU2(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X tl = (get_tl_clipboard()); X if (tl == NULL) { X return; X } X tl = (tl); X object_add_temp(obj,tl,object_get_numtemps(obj)); X r = (Rect *) attr_get_rect(tl_get_attr(tl)); X r->r_left = 0; X r->r_top = 0; X object_set_tempcoords(obj,tl,r); X close_obj(obj); X show_obj(obj); X} X Xvoid objmenu_refresh(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X obj = OBJECT_OF_MENU2(m); X close_then_open(obj); X} Xvoid objmenu_open_parent(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X obj = OBJECT_OF_MENU2(m); X if (obj == get_master()) { X return; X } X obj = object_get_owner(obj); X show_obj(obj); X} Xvoid objmenu_new_child(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X OBPtr obj; X OBPtr father; X int n; X X father = OBJECT_OF_MENU2(m); X if (CHECKPRIV(father)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X obj = new_object(mystrcat("newobj",obj_number()),father); X n = object_get_numchild(obj); X object_add(obj,father,n); X show_obj(obj); X} Xvoid objmenu_copyCB(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X OBPtr obj; X OBPtr father; X int n; X X obj = OBJECT_OF_MENU4(m); X put_object_clipboard(obj,NOT_ONLY_REF); X} Xvoid objmenu_CBtreeaschild(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X OBPtr obj; X OBPtr father; X int n; X X father = OBJECT_OF_MENU4(m); X if (CHECKPRIV(father)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X obj = (get_object_clipboard()); X if (obj == NULL) { X return; X } X obj = copy_tree(obj); X n = object_get_numchild(father); X if (obj != NULL) { X object_add(obj,father,n); X show_obj(obj); X } X} Xvoid objmenu_CBaschild(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X OBPtr obj; X OBPtr father; X int n; X X father = OBJECT_OF_MENU4(m); X if (CHECKPRIV(father)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X obj = get_object_clipboard(); X if (obj == NULL) { X return; X } X obj = copy_object(obj); X n = object_get_numchild(father); X if (obj != NULL) { X object_add(obj,father,n); X show_obj(obj); X } X} X Xvoid objmenu_delete(m,mi) X Menu m; X Menu_item mi; X{ X int i,n; X OBPtr obj; X X obj = OBJECT_OF_MENU2(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X if (confirm_yes("Delete Object?")) { X delete_object(obj); X } X} X Xvoid main_menu_close_obj(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X obj = OBJECT_OF_MENU0(m); X close_obj(obj); X} Xvoid objmenu_close(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X obj = OBJECT_OF_MENU2(m); X/* if (obj != master) {*/ X close_obj(obj); X/* } else { X mywarning("can't close the master object right now\n"); X } X*/ X} Xvoid recur_close_obj(obj) XOBPtr obj; X{ X int n,i; X if (obj == NULL) { X return; X } X n = object_get_numchild(obj); X for (i = n -1; i >= 0; i--) { X recur_close_obj(object_get_nthobj(i,obj)); X } X close_obj(obj); X} X Xvoid objmenu_closedesc(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X int i,n; X X obj = OBJECT_OF_MENU2(m); X n = object_get_numchild(obj); X for (i = n -1; i >= 0; i--) { X recur_close_obj(object_get_nthobj(i,obj)); X } X} Xvoid tlmenu_closetls(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X TLPtr tl; X int n,i; X X obj = OBJECT_OF_MENU2(m); X n = object_get_numtls(obj); X for (i = 0; i < n; i++) { X tl = object_get_nthtl(i,obj); X close_tl(tl); X } X} X X X Xvoid tlmenu_addnull(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X void newlayer_aux(); X X obj = OBJECT_OF_MENU2(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X newlayer_aux(obj); X X} Xvoid tlmenu_addCB(m,mi) X Menu m; X Menu_item mi; X{ X OBPtr obj; X TLPtr tl; X void newlayer_aux(); X X obj = OBJECT_OF_MENU4(m); X if (CHECKPRIV(obj)) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X tl = (get_tl_clipboard()); X if (tl != NULL) { X tl = tl_copy(tl); X object_add_tl(object_get_numtls(obj),tl,obj); X } X} Xvoid TLmenu_quit(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X tl = TL_OF_MENU0(m); X close_tl(tl); X} Xvoid TLmenu_del(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X OBPtr obj; X if (!confirm_yes("Delete Template?")) { X return; X } X tl = TL_OF_MENU0(m); X close_tl(tl); X object_del_tl(tl); X} Xvoid TLmenu_info(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X tl = TL_OF_MENU0(m); X vis_info_tl(tl); X} Xvoid TLmenu_script(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X char *lab,*abs; X tl = TL_OF_MENU0(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X abs = gen_absolute_tlpname(tl); X lab = mystrcat(abs," - script"); X edit_cont(tl_get_script(tl),lab); X free(lab); X free(abs); X compile_tl_script(tl,REPORT); X} Xvoid TLmenu_grid(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X int i; X char *x, y[128]; X X tl = TL_OF_MENU0(m); X sprintf(y, "Enter New Grid Size. Old = %1d.", grid_size); X if( x = vis_dialogue( y ) ) { X i = atoi(x); X if ((i >0) && (i < 100)) { X grid_size = i; X } X } else { X return; X } X} X X Xvoid newlayer_aux(obj) XOBPtr obj; X{ X Frame new_window; X void assoc_layer_menu(); X TLPtr new; X Panel new_panel; X char name[256]; X name[0] = '\0'; X sprintf(name,"null%1d\0",object_get_numtl(obj)); X new = new_tl(name,obj); X object_add_tl(0,new,obj); X attr_set_type(tl_get_attr(new),1); X attr_set_rect(tl_get_attr(new),default_rect); X open_tl(new); X cur_window = (Window) cur_com_frame; X} Xvoid LAmenu_newtext(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X ITPtr it; X int n; X X tl = TL_OF_MENU0(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X it = new_item(HYPE_TEXT,default_cont,tl); X n = tl_get_numitems(tl); X tl_add_item(tl,it,n); X close_tl(tl); X open_tl(tl); X} Xvoid LAmenu_newbutton(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X ITPtr it; X int n; X X tl = TL_OF_MENU0(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X it = new_item(HYPE_BUTTON,default_cont,tl); X n = tl_get_numitems(tl); X tl_add_item(tl,it,n); X close_tl(tl); X open_tl(tl); X} Xvoid LAmenu_newslider(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X ITPtr it; X int n; X X tl = TL_OF_MENU0(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X it = new_item(HYPE_SLIDER,default_cont,tl); X n = tl_get_numitems(tl); X tl_add_item(tl,it,n); X close_tl(tl); X open_tl(tl); X} Xvoid LAmenu_newtoggle(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X ITPtr it; X int n; X X tl = TL_OF_MENU0(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X it = new_item(HYPE_TOGGLE,default_cont,tl); X n = tl_get_numitems(tl); X tl_add_item(tl,it,n); X close_tl(tl); X open_tl(tl); X} X Xvoid LAmenu_addCB(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X ITPtr it; X int n; X tl = TL_OF_MENU2(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X it = (get_item_clipboard()); X n = tl_get_numitems(tl); X if (it != NULL) { X it = item_copy(it); X attr_set_lux(item_get_attr(it),0); X attr_set_luy(item_get_attr(it),0); X tl_add_item(tl,it,n); X close_tl(tl); X open_tl(tl); X } X} X Xvoid LAmenu_newtextsw(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X ITPtr it; X int x,y; X tl = TL_OF_MENU0(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X it = new_item(HYPE_TEXTSW,default_cont,tl); X tl_add_item(tl,it,0); X close_tl(tl); X open_tl(tl); X} Xvoid LAmenu_owner(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X ITPtr it; X int x,y; X tl = TL_OF_MENU0(m); X show_obj(tl_get_owner(tl)); X} X Xvoid LAmenu_copyCB(m,mi) X Menu m; X Menu_item mi; X{ X TLPtr tl; X ITPtr it; X int x,y; X tl = TL_OF_MENU2(m); X put_tl_clipboard(tl,NOT_ONLY_REF); X} X X X Xvoid LAmenu_delitem(m,mi) X Menu m; X Menu_item mi; X{ X ITPtr it; X TLPtr tl; X Panel_item pitem; X int n; X X tl = TL_OF_MENU2(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X if (!confirm_yes("Delete Item?")) { X return; X } X n = (int) menu_get(mi,MENU_CLIENT_DATA); X it = tl_get_nthitem(n,tl); X tl_delete_item(tl,it); X close_tl(tl); X open_tl(tl); X} Xvoid LAmenu_infoitem(m,mi) X Menu m; X Menu_item mi; X{ X Panel_item pitem; X ITPtr it; X TLPtr tl; X int n; X tl = TL_OF_MENU2(m); X n = (int) menu_get(mi,MENU_CLIENT_DATA); X it = tl_get_nthitem(n,tl); X vis_info_item(it,tl); X close_tl(tl); X open_tl(tl); X} Xvoid LAmenu_script(m,mi) X Menu m; X Menu_item mi; X{ X Panel_item pitem; X TLPtr tl; X ITPtr it; X int n; X char *lab,*abs; X tl = TL_OF_MENU2(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X n = (int) menu_get(mi,MENU_CLIENT_DATA); X it = tl_get_nthitem(n,tl); X abs = gen_absolute_itempname(it); X lab = mystrcat(abs," - script"); X edit_cont(item_get_script(it),lab); X free(lab); X free(abs); X compile_item_script(it,REPORT); X} Xvoid LAmenu_cpyTB(m,mi) X Menu m; X Menu_item mi; X{ X Panel_item pitem; X TLPtr tl; X ITPtr it; X int n; X tl = TL_OF_MENU4(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X n = (int) menu_get(mi,MENU_CLIENT_DATA); X it = tl_get_nthitem(n,tl); X load_textboard(item_get_script(it)); X} Xvoid LAmenu_cpyCB(m,mi) X Menu m; X Menu_item mi; X{ X Panel_item pitem; X TLPtr tl; X ITPtr it; X int n; X tl = TL_OF_MENU4(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X n = (int) menu_get(mi,MENU_CLIENT_DATA); X it = tl_get_nthitem(n,tl); X put_item_clipboard(it,NOT_ONLY_REF); X} Xvoid LAmenu_pre(m,mi) X Menu m; X Menu_item mi; X{ X Panel_item pitem; X TLPtr tl; X ITPtr it; X int n; X tl = TL_OF_MENU4(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X n = (int) menu_get(mi,MENU_CLIENT_DATA); X it = tl_get_nthitem(n,tl); X prepend_textboard_to_cont(item_get_script(it)); X compile_item_script(it,REPORT); X} Xvoid LAmenu_app(m,mi) X Menu m; X Menu_item mi; X{ X Panel_item pitem; X TLPtr tl; X ITPtr it; X int n; X tl = TL_OF_MENU4(m); X if (CHECKPRIV(tl_get_owner(tl))) { X mywarning("Sorry, this object is write protected!\n"); X return; X } X n = (int) menu_get(mi,MENU_CLIENT_DATA); X it = tl_get_nthitem(n,tl); X append_textboard_to_cont(item_get_script(it)); X compile_item_script(it,REPORT); X X} X Xchild_open_proc(m,mi) XMenu m; XMenu_item mi; X{ X OBPtr obj; X obj = (OBPtr) menu_get(mi,MENU_CLIENT_DATA); X show_obj(obj); X} XMenu child_list(m,operation) XMenu m; XMenu_generate operation; X{ X OBPtr obj; X int i,n; X Menu_item mi; X obj = OBJECT_OF_MENU4(m); X if (obj == NULL) { X fprintf(stderr,"spurious call to child_list\n"); X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X if (menu_set(m,MENU_REMOVE,1,0) != 1) X ; X } X mi = menu_create_item(MENU_STRING, X mystrcpy("no subobjects"), X 0); X if (mi == NULL) { X exit(2); X } X if ( menu_set(m,MENU_APPEND_ITEM, X mi,0) != 1) X ; X return m; X } X switch (operation) { X case MENU_NOTIFY: X case MENU_DISPLAY: X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X if (menu_set(m,MENU_REMOVE,1,0) != 1) X ; X } X n = object_get_numchild(obj); X if (n == 0) { X mi = menu_create_item(MENU_STRING, X mystrcpy("no subobjects"), X 0); X if (mi == NULL) { X exit(5); X } X if (menu_set(m,MENU_APPEND_ITEM, X mi,0) != 1) X ; X menu_set(m,MENU_DEFAULT,1,0); X } else { X for (i = 0; i < n; i++ ) { X mi = menu_create_item(MENU_STRING, X mystrcpy(object_get_name( X object_get_nthobj(i,obj))), X MENU_NOTIFY_PROC,child_open_proc, X MENU_CLIENT_DATA,object_get_nthobj(i,obj), X 0); X if (mi == NULL) { X exit(7); X } X if (menu_set(m,MENU_APPEND_ITEM, X mi,0) != 1) X ; X } X menu_set(m,MENU_DEFAULT,1,0); X } X break; X X break; X case MENU_NOTIFY_DONE: X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X if (menu_set(m,MENU_REMOVE,1,0) != 1) X ; X } X/* menu_destroy(m); */ X m = menu_create(MENU_GEN_PROC,child_list,0); X if (m == NULL) { X exit(10); X } X break; X case MENU_DISPLAY_DONE: X break; X } X return m; X} Xmy_destroy_child_menu(menu_object,type) XMenu menu_object; XMenu_attribute type; X{ X/* fprintf(stderr,"destroy_child called\n");*/ X/* menu_destroy(menu_object);*/ X} Xdel_temp_proc(m,mi) XMenu m; XMenu_item mi; X{ X OBPtr obj; X int i; X if (!confirm_yes("Delete Pane?")) { X return; X } X obj = OBJECT_OF_MENU4(m); X i = (int) menu_get(mi,MENU_CLIENT_DATA); X object_del_temp(obj,i); X close_then_open(obj); X} Xadd_pane_proc(m,mi) XMenu m; XMenu_item mi; X{ X OBPtr obj; X TLPtr tl; X int i; X Rect *r; X obj = OBJECT_OF_MENU4(m); X i = (int) menu_get(mi,MENU_CLIENT_DATA); X tl = object_get_nthtl(i,obj); X object_add_temp(obj,tl,object_get_numtemps(obj)); X r = (Rect *) attr_get_rect(tl_get_attr(tl)); X r->r_left = 0; X r->r_top = 0; X object_set_tempcoords(obj,tl,r); X close_then_open(obj); X} XMenu delt_list(m,operation) XMenu m; XMenu_generate operation; X{ X OBPtr obj; X int i,n; X Menu_item mi; X obj = OBJECT_OF_MENU4(m); X if (obj == NULL) { X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X menu_set(m,MENU_REMOVE,1,0); X } X X mi = menu_create_item(MENU_STRING, X mystrcpy("no panes"), X 0); X menu_set(m,MENU_APPEND_ITEM, X mi,0); X return m; X } X switch (operation) { X case MENU_NOTIFY: X case MENU_DISPLAY: X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X menu_set(m,MENU_REMOVE,1,0); X } X n = object_get_numtemps(obj); X if (n == 0) { X mi = menu_create_item(MENU_STRING, X mystrcpy("no panes"), X 0); X menu_set(m,MENU_APPEND_ITEM, X mi,0); X } else { X for (i = 0; i < n; i++ ) { X mi = menu_create_item(MENU_STRING, X mystrcpy(tl_get_name( X object_get_nthtemptl(obj,i))), X MENU_ACTION_PROC,del_temp_proc, X MENU_CLIENT_DATA,i, X 0); X menu_set(m,MENU_APPEND_ITEM, mi, X 0); X } X } X break; X case MENU_DISPLAY_DONE: X break; X case MENU_NOTIFY_DONE: X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X menu_set(m,MENU_REMOVE,1,0); X } X/* menu_destroy(m); */ X m = menu_create(MENU_GEN_PROC,delt_list,0); X break; X default: X X break; X } X return m; X} XMenu addpane_list(m,operation) XMenu m; XMenu_generate operation; X{ X OBPtr obj; X int i,n,k; X Menu_item mi; X obj = OBJECT_OF_MENU4(m); X if (obj == NULL) { X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X menu_set(m,MENU_REMOVE,1,0); X } X X mi = menu_create_item(MENU_STRING, X mystrcpy("no templates"), X 0); X menu_set(m,MENU_APPEND_ITEM, X mi,0); X return m; X } X switch (operation) { X case MENU_NOTIFY: X break; X case MENU_DISPLAY: X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X menu_set(m,MENU_REMOVE,1,0); X } X n = object_get_numtls(obj); X k = 0; X for (i = 0; i < n; i++ ) { X if (!object_has_panetl(obj,object_get_nthtl(i,obj))) { X k = 1; X mi = menu_create_item(MENU_STRING, X mystrcpy(tl_get_name( X object_get_nthtl(i,obj))), X MENU_ACTION_PROC,add_pane_proc, X MENU_CLIENT_DATA,i, X 0); X menu_set(m,MENU_APPEND_ITEM, mi, X 0); X } X } X if (k == 0) { X mi = menu_create_item(MENU_STRING, X mystrcpy("no templates left to add"), X 0); X menu_set(m,MENU_APPEND_ITEM, X mi,0); X } X break; X case MENU_DISPLAY_DONE: X break; X case MENU_NOTIFY_DONE: X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X menu_set(m,MENU_REMOVE,1,0); X } X/* menu_destroy(m); */ X m = menu_create(MENU_GEN_PROC,addpane_list,0); X break; X default: X X break; X } X return m; X} Xdestroy_delt_menu(menu_object,type) XMenu menu_object; XMenu_attribute type; X{ X fprintf(stderr,"destroy_delt called\n"); X/* menu_destroy(menu_object);*/ X} Xtl_open_proc(m,mi) XMenu m; XMenu_item mi; X{ X TLPtr tl; X tl = (TLPtr) menu_get(mi,MENU_CLIENT_DATA); X open_tl(tl); X} X XMenu tl_list(m,operation) XMenu m; XMenu_generate operation; X{ X OBPtr obj; X int i,n; X Menu_item item; X obj = OBJECT_OF_MENU4(m); X X if (obj == NULL) { X fprintf(stderr, "spurrious call\n"); X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X menu_set(m,MENU_REMOVE,1,0); X } X item = menu_create_item(MENU_STRING, X mystrcpy("no templates"), X 0); X menu_set(m,MENU_APPEND_ITEM, X item,0); X return m; X } X X switch (operation) { X case MENU_NOTIFY: X case MENU_DISPLAY: X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X menu_set(m,MENU_REMOVE,1,0); X } X X n = object_get_numtl(obj); X if (n == 0) { X item = menu_create_item(MENU_STRING, X mystrcpy("no templates"), X 0); X menu_set(m,MENU_APPEND_ITEM, X item,0); X } else { X for (i = 0; i < n; i++ ) { X item = menu_create_item(MENU_STRING, X mystrcpy(tl_get_name( X object_get_nthtl(i,obj))), X MENU_NOTIFY_PROC,tl_open_proc, X MENU_CLIENT_DATA,object_get_nthtl(i,obj), X 0); X menu_set(m,MENU_APPEND_ITEM, X item,0); X } X } X break; X case MENU_DISPLAY_DONE: X break; X case MENU_NOTIFY_DONE: X n = (int) menu_get(m,MENU_NITEMS); X for (i = 0; i < n; i++) { X menu_set(m,MENU_REMOVE,1,0); X } X/* menu_destroy(m);*/ X m = menu_create(MENU_GEN_PROC,tl_list,0); X break; X default: X X break; X } X return m; X} Xdestroy_tl_menu(menu_object,type) XMenu menu_object; XMenu_attribute type; X{ X/* fprintf(stderr,"tl destroy called\n");*/ X/* menu_destroy(menu_object);*/ X} XMenu make_item_menu() X{ X Menu item_menu; X item_menu = menu_create( X 0); X return item_menu; X} XMenu make_multi_menu(tl,f) Xvoid *f; XTLPtr tl; X{ X Menu m; X Menu_item mi; X int i,n; X n = tl_get_numitems(tl); X m = menu_create(MENU_CLIENT_DATA,tl,0); X for (i = 0; i < n; i++) { X mi = menu_create_item(MENU_STRING,item_get_name(tl_get_nthitem(i,tl)), X MENU_NOTIFY_PROC, f, X MENU_CLIENT_DATA,i,0); X menu_set(m,MENU_INSERT,i,mi,0); X } X if (n == 0) { X mi = menu_create_item(MENU_STRING,"no items", X MENU_CLIENT_DATA,i,0); X menu_set(m,MENU_INSERT,i,mi,0); X } X return m; X} X Xedit_text_proc(m,mi) XMenu m; XMenu_item mi; X{ X Panel_item item; X Container c; X char *x1,*x2; X char *lab,*abs; X ITPtr it; X item = (Panel_item) menu_get(m,MENU_CLIENT_DATA); X it = (ITPtr) panel_get(item,PANEL_CLIENT_DATA); X x1 = escapesout(panel_get(item,PANEL_VALUE)); X c = cnew_constring(x1); X free(x1); X abs = gen_absolute_itempname(it); X lab = mystrcat(abs," - value"); X edit_cont(c,lab); X x1 = cflatten(c); X x2 = escapesin(x1); X while (strlen(x2) >= HYPE_TEXT_SIZE) { X vis_dialogue("Text item size limited to %d characters\n", X HYPE_TEXT_SIZE); X edit_cont(c,lab); X free(x1); X free(x2); X x1 = cflatten(c); X x2 = escapesin(x1); X } X panel_set(item,PANEL_VALUE,x2,0); X free(x1); X free(x2); X free(lab); X free(abs); X X} Xedit_textsw_proc(m,mi) XMenu m; XMenu_item mi; X{ X ITPtr item; X Container c; X OBPtr obj; X char *x; X char *lab,*abs; X item = (ITPtr) menu_get(mi,MENU_CLIENT_DATA); X obj = (OBPtr) menu_get(m,MENU_CLIENT_DATA); X c = info_look(object_get_info(obj),gen_absolute_itempname(item)); X if (c == NULL) { X c = cnew_con(); X } X abs = gen_absolute_itempname(item); X lab = mystrcat(abs," - value"); X edit_cont(c,lab); X free(lab); X free(abs); X object_set_info(obj, X info_add_data(object_get_info(obj),gen_absolute_itempname(item), X ccpy_con(c))); X} X XMenu make_textitem_menu(textit) XPanel_item textit; X{ X Menu m; X m = menu_create( X MENU_ITEM, X MENU_STRING, "Edit Text", X MENU_NOTIFY_PROC, edit_text_proc, X 0, X 0); X menu_set(m,MENU_CLIENT_DATA,textit,0); X return m; X} XMenu make_textswitem_menu(obj,item) XOBPtr obj; XITPtr item; X{ X Menu m; X m = menu_create( X MENU_ITEM, X MENU_STRING, "Edit Text", X MENU_NOTIFY_PROC, edit_textsw_proc, X MENU_CLIENT_DATA,item, X 0, X 0); X X menu_set(m,MENU_CLIENT_DATA,obj,0); X return m; X} XMenu make_layer_menu(tl) XTLPtr tl; X{ X int i; X Menu_item mi; X Menu layer_frame_menu; X Menu layer_CB_menu; X Menu layer_TB_menu; X X layer_TB_menu = menu_create( X MENU_PULLRIGHT_ITEM, X "Append TB to Script", X make_multi_menu(tl,LAmenu_app), X MENU_PULLRIGHT_ITEM, X "Prepend TB to Script", X make_multi_menu(tl,LAmenu_pre), X MENU_PULLRIGHT_ITEM, X "Copy Script to TB", X make_multi_menu(tl,LAmenu_cpyTB), X MENU_ITEM, X MENU_STRING, "Edit Textboard", X MENU_NOTIFY_PROC, tlmenu_edittextboard, X 0, X 0); X X layer_CB_menu = menu_create( X MENU_PULLRIGHT_ITEM, X "Copy Item to CB", X make_multi_menu(tl,LAmenu_cpyCB), X MENU_ITEM, X MENU_STRING, "Add Item From CB", X MENU_NOTIFY_PROC, LAmenu_addCB, X 0, X MENU_ITEM, X MENU_STRING, "Clipboard Holds ...", X MENU_NOTIFY_PROC, layer_show_clip, X 0, X 0); X X layer_frame_menu = menu_create( X MENU_PULLRIGHT_ITEM, X "Item Info", X make_multi_menu (tl,LAmenu_infoitem), X MENU_PULLRIGHT_ITEM, X "Edit Script", X make_multi_menu(tl,LAmenu_script), X MENU_PULLRIGHT_ITEM, X "Textboard", X layer_TB_menu, X MENU_PULLRIGHT_ITEM, X "Clipboard", X layer_CB_menu, X MENU_ITEM, X MENU_STRING, "Create Item", X MENU_NOTIFY_PROC, LAmenu_newbutton, X 0, X MENU_PULLRIGHT_ITEM, X "Delete Item", X make_multi_menu(tl,LAmenu_delitem), X 0); X menu_set(layer_frame_menu,MENU_CLIENT_DATA,tl,0); X return layer_frame_menu; X} X XMenu make_tl_menu(tl) XTLPtr tl; X{ X Menu tl_frame_menu; X Menu tlscript_menu; X Menu tlbgtext_menu; X Menu tl_CB_menu; X Menu scroll_bar_menu; X Menu_item fit; X Menu_item refresh; X tl_CB_menu = menu_create( X MENU_ITEM, X MENU_STRING, "Copy Template To CB", X MENU_NOTIFY_PROC, LAmenu_copyCB, X 0, X MENU_ITEM, X MENU_STRING, "Clipboard Holds ...", X MENU_NOTIFY_PROC, tlmenu2_show_clip, X 0, X 0); X tlscript_menu = menu_create( X MENU_ITEM, X MENU_STRING, "Edit Script", X MENU_NOTIFY_PROC, tlscript_menuedit, X 0, X MENU_ITEM, X MENU_STRING, "Append TB to Script", X MENU_NOTIFY_PROC, tlscript_menuapp, X 0, X MENU_ITEM, X MENU_STRING, "Prepend TB to Script", X MENU_NOTIFY_PROC, tlscript_menupre, X 0, X MENU_ITEM, X MENU_STRING, "Copy Script To TB", X MENU_NOTIFY_PROC, tlscript_menucpy, X 0, X MENU_ITEM, X MENU_STRING, "Edit Textboard", X MENU_NOTIFY_PROC, tlmenu_edittextboard, X 0, X 0); X tlbgtext_menu = menu_create( X MENU_ITEM, X MENU_STRING, "Edit BG Text", X MENU_NOTIFY_PROC, tlbgtext_menuedit, X 0, X MENU_ITEM, X MENU_STRING, "Append TB to BG Text", X MENU_NOTIFY_PROC, tlbgtext_menuapp, X 0, X MENU_ITEM, X MENU_STRING, "Prepend TB to BG Text", X MENU_NOTIFY_PROC, tlbgtext_menupre, X 0, X MENU_ITEM, X MENU_STRING, "Copy BG Text To TB", X MENU_NOTIFY_PROC, tlbgtext_menucpy, X 0, X 0); X X scroll_bar_menu = menu_create( X MENU_ITEM, X MENU_STRING, "Toggle Vert Bar", X MENU_NOTIFY_PROC, TLmenu_wintogv, X 0, X MENU_ITEM, X MENU_STRING, "Toggle Horiz Bar", X MENU_NOTIFY_PROC, TLmenu_wintogh, X 0, X 0); X X refresh = menu_create_item( X MENU_STRING, "Refresh", X MENU_NOTIFY_PROC, tlmenu_refresh, X 0); X fit = menu_create_item( X MENU_STRING, "Fit Window", X MENU_NOTIFY_PROC, TLmenu_windowfit_tl, X 0); X menu_set(default_menu, MENU_REPLACE, 7, refresh, 0); X menu_set(default_menu, MENU_REPLACE, 8, fit, 0); X menu_set(default_menu, MENU_REMOVE, 6, 0); X X tl_frame_menu = menu_create( X MENU_PULLRIGHT_ITEM, X "Window", X default_menu, X MENU_ITEM, X MENU_STRING, "Template Info", X MENU_NOTIFY_PROC, TLmenu_info, X 0, X MENU_PULLRIGHT_ITEM, X "Template Script", X tlscript_menu, X MENU_PULLRIGHT_ITEM, X "Background Text", X tlbgtext_menu, X MENU_PULLRIGHT_ITEM, X "Clipboard", X tl_CB_menu, X MENU_PULLRIGHT_ITEM, X "Scroll Bars", X scroll_bar_menu, X MENU_ITEM, X MENU_STRING, "Alter Grid Size", X MENU_NOTIFY_PROC, TLmenu_grid, X 0, X MENU_ITEM, X MENU_STRING, "Delete Template", X MENU_NOTIFY_PROC, TLmenu_del, X 0, X MENU_ITEM, X MENU_STRING, "Open Owner Obj", X MENU_NOTIFY_PROC, LAmenu_owner, X 0, X MENU_ITEM, X MENU_STRING, "Quit Template", X MENU_NOTIFY_PROC, TLmenu_quit, X 0, X 0); X menu_set(tl_frame_menu,MENU_CLIENT_DATA,tl,0); X return tl_frame_menu; X} Xnull_proc(m,mi) XMenu m; XMenu_item mi; X{ X fprintf(stderr,"NULL_PROC\n"); X menu_get(mi,MENU_VALUE); X menu_get(m,MENU_VALUE); X} X XMenu mondo_menu(obj) XOBPtr; X{ X Menu mspecial; X Menu fmain_menu; X Menu open_cmenu; X Menu open_bmenu; X Menu delt_menu; X Menu addpane_menu; X Menu object_menu; X Menu file_menu; X Menu tl_menu; X Menu script_menu; X Menu obj_CB_menu; X Menu tlmenu_CB_menu; X Menu pane_menu; X Menu_item refresh; X Menu_item fit; X obj_CB_menu = menu_create( X MENU_ITEM, X MENU_STRING, "Copy Object to CB", X MENU_NOTIFY_PROC, objmenu_copyCB, X 0, X MENU_ITEM, X MENU_STRING, "Add CB Object as Child", X MENU_NOTIFY_PROC, objmenu_CBaschild, X 0, X MENU_ITEM, X MENU_STRING, "Add CB Obj Tree as Child", X MENU_NOTIFY_PROC, objmenu_CBtreeaschild, X 0, X MENU_ITEM, X MENU_STRING, "Clipboard Holds ...", X MENU_NOTIFY_PROC, objmenu_show_clip, X 0, X 0); X file_menu = menu_create( X MENU_ITEM, X MENU_STRING, "Save State", X MENU_NOTIFY_PROC, fmenu_savecurrent, X 0, X MENU_ITEM, X MENU_STRING, "Save & Quit", X MENU_NOTIFY_PROC, fmenu_quit, X 0, X MENU_ITEM, X MENU_STRING, "File State", X MENU_NOTIFY_PROC, fmenu_savecurrentas, X 0, X MENU_ITEM, X MENU_STRING, "File Subtree", X MENU_NOTIFY_PROC, fmenu_save, X 0, X MENU_ITEM, X MENU_STRING, "Load Subtree", X MENU_NOTIFY_PROC, fmenu_load, X 0, X MENU_ITEM, X MENU_STRING, "Quit, No Save", X MENU_NOTIFY_PROC, fmenu_quit_nosave, X 0, X MENU_ITEM, X MENU_STRING, "Pretty Print", X MENU_NOTIFY_PROC, fmenu_pretty, X 0, X 0); X open_cmenu = menu_create( X MENU_GEN_PROC,child_list, X 0); X delt_menu = menu_create(MENU_GEN_PROC,delt_list,0); X addpane_menu = menu_create(MENU_GEN_PROC,addpane_list,0); X script_menu = menu_create( X MENU_ITEM, X MENU_STRING, "Edit Script", X MENU_NOTIFY_PROC, script_menuedit, X 0, X MENU_ITEM, X MENU_STRING, "Append TB to Script", X MENU_NOTIFY_PROC, script_menuapp, X 0, X MENU_ITEM, X MENU_STRING, "Prepend TB to Script", X MENU_NOTIFY_PROC, script_menupre, X 0, X MENU_ITEM, X MENU_STRING, "Copy Script to TB", X MENU_NOTIFY_PROC, script_menucpy, X 0, X MENU_ITEM, X MENU_STRING, "Edit Textboard", X MENU_NOTIFY_PROC, objmenu_edittextboard, X 0, X 0); X pane_menu = menu_create( X MENU_PULLRIGHT_ITEM, X "Add Pane", X addpane_menu, X MENU_PULLRIGHT_ITEM, X "Delete Pane", X delt_menu, X 0); X object_menu = menu_create( X MENU_ITEM, X MENU_STRING, "Object Info", X MENU_NOTIFY_PROC, objmenu_report, X 0, X MENU_PULLRIGHT_ITEM, X "Obj Script", X script_menu, X MENU_PULLRIGHT_ITEM, X "Clipboard", X obj_CB_menu, X MENU_ITEM, X MENU_STRING, "Create Child", X MENU_NOTIFY_PROC, objmenu_new_child, X 0, X MENU_PULLRIGHT_ITEM, X "Open Child", X open_cmenu, X MENU_ITEM, X MENU_STRING, "Open Parent", X MENU_NOTIFY_PROC, objmenu_open_parent, X 0, X MENU_ITEM, X MENU_STRING, "Delete Obj", X MENU_NOTIFY_PROC, objmenu_delete, X 0, X MENU_ITEM, X MENU_STRING, "Close Tree", X MENU_NOTIFY_PROC, objmenu_closedesc, X 0, X MENU_ITEM, X MENU_STRING, "Quit Object", X MENU_NOTIFY_PROC, objmenu_close, X 0, X 0); X open_bmenu = menu_create(MENU_GEN_PROC,tl_list,0); X tlmenu_CB_menu = menu_create( X MENU_ITEM, X MENU_STRING, "Add Template From CB", X MENU_NOTIFY_PROC, tlmenu_addCB, X 0, X MENU_ITEM, X MENU_STRING, "Clipboard Holds ...", X MENU_NOTIFY_PROC, tlmenu4_show_clip, X 0, X 0); X/* open_bmenu = make_tl_list_menu(obj);*/ X/* menu_destroy_with_proc(open_bmenu,destroy_tl_menu);*/ X tl_menu = menu_create( X MENU_PULLRIGHT_ITEM, X "Open Template", X open_bmenu, X MENU_PULLRIGHT_ITEM, X "Clipboard", X tlmenu_CB_menu, X MENU_ITEM, X MENU_STRING, "Create Template", X MENU_NOTIFY_PROC, tlmenu_addnull, X 0, X MENU_ITEM, X MENU_STRING, "Close All", X MENU_NOTIFY_PROC, tlmenu_closetls, X 0, X 0); X X refresh = menu_create_item( X MENU_STRING, "Refresh", X MENU_NOTIFY_PROC, objmenu_refresh, X 0); X fit = menu_create_item( X MENU_STRING, "Fit Window", X MENU_NOTIFY_PROC, mainmenu_windowfit, X 0); X menu_set(default_menu, MENU_REPLACE, 7, refresh, 0); X menu_set(default_menu, MENU_REPLACE, 8, fit, 0); X menu_set(default_menu,MENU_REMOVE,6,0); X fmain_menu = menu_create( X MENU_PULLRIGHT_ITEM, X "Window", X default_menu, X MENU_PULLRIGHT_ITEM, X "File", X file_menu, X MENU_PULLRIGHT_ITEM, X "Object", X object_menu, X MENU_PULLRIGHT_ITEM, X "Template", X tl_menu, X MENU_PULLRIGHT_ITEM, X "Pane", X pane_menu, X/* X MENU_ITEM, X MENU_STRING, "Clipboard Holds ...", X MENU_NOTIFY_PROC, mainmenu_show_clip, X 0, X*/ X MENU_ITEM, X MENU_STRING, "Test Script", X MENU_NOTIFY_PROC, objmenu_ex_microscript, X 0, X MENU_ITEM, X MENU_STRING, "Quit Object", X MENU_NOTIFY_PROC, main_menu_close_obj, X 0, X 0); X menu_set(fmain_menu,MENU_CLIENT_DATA,obj,0); X/* menu_destroy_with_proc(fmain_menu,my_destroy_child_menu);*/ X X return fmain_menu; X} XMenu make_frame_menu(obj) XOBPtr obj; X{ X return mondo_menu(obj); X} Xvoid test_event_proc(window,event,arg) X Window window; X Event *event; X caddr_t arg; X{ X OBPtr obj; X Menu m; X Rect *r; X obj = (OBPtr) menu_get(window_get(window,WIN_MENU),MENU_CLIENT_DATA); X SIGPROCESS; X set_alarm(); X if (event_id(event) != LOC_WINEXIT) { X cur_window = window; X } X if ((event_id(event) == MS_LEFT) && event_is_down(event)) { X close_then_open(obj); X return; X } X if ((event_id(event) == MS_RIGHT) && event_is_down(event)) { X default_menu = window_get(window,WIN_MENU); X/* m = mondo_menu(obj);*/ X menu_show(m,window,event,0); X/* menu_destroy(m);*/ X return; X } X if (event_id(event) == WIN_RESIZE) { X r = (Rect *) window_get(window,WIN_RECT); X attr_set_rect(object_get_attr(obj),r); X } X} Xvoid tl_test_event_proc(window,event,arg) X Window window; X Event *event; X caddr_t arg; X{ X TLPtr tl; X Rect *r; X tl = (TLPtr) menu_get(window_get(window,WIN_MENU),MENU_CLIENT_DATA); X SIGPROCESS; X set_alarm(); X if (event_id(event) != LOC_WINEXIT) { X cur_window = window; X } X if (event_id(event) == WIN_RESIZE) { X r = (Rect *) window_get(window,WIN_RECT); X attr_set_rect(tl_get_attr(tl),r); X } X} Xstatic Cursor orig_cursor; X Xvoid manual_panel_menu(panel,event) XPanel panel; XEvent *event; X{ X OBPtr refobj; X TLPtr reftl; X Menu m; X cur_panel = panel; X cur_window = window_get(cur_panel,WIN_OWNER); X if (event_id(event) == LOC_WINENTER) { X if (1) { X reftl = hlookup(cur_panel,sv_to_hype); X fill_panel_with_text(cur_panel,tl_get_bgtext(reftl),1); X } X return; X } X X if (event_id(event) == MS_RIGHT && event_is_down(event)) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X reftl = (TLPtr) hlookup(cur_panel,sv_to_hype); X m = make_layer_menu(reftl); X menu_show(m,panel,event,0); X menu_destroy(m); X } X if (movingflag) { X int mx,my; X if ((event_id(event) == MS_MIDDLE) && event_is_up(event)) { X mx = ((event_x(event) + (grid_size / 2)) / grid_size)*grid_size; X my = ((event_y(event) + (grid_size / 2)) / grid_size)*grid_size; X item_set_lux(moving_item,mx); X item_set_luy(moving_item,my); X movingflag = 0; X panel_set(moving_item_image,PANEL_ITEM_X,mx, X PANEL_ITEM_Y,my, X 0); X window_set(panel,WIN_CURSOR,orig_cursor,0); X cursor_destroy(orig_cursor); X panel_paint(panel,PANEL_CLEAR); X } X } X panel_text_notify(panel,event); X return; X} Xvoid obj_tl_proc(panel,event) XPanel panel; XEvent *event; X{ X OBPtr refobj; X TLPtr reftl; X TPPtr temp; X char *otarg; X Rect *r; X cur_panel = panel; X X if (event_id(event) == LOC_WINENTER) { X if (1) { X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X fill_panel_with_text(panel,tl_get_bgtext(reftl),1); X } X cur_window = window_get(cur_panel,WIN_OWNER); X return; X } X X if (event_id(event) == LOC_WINEXIT) { X if (1) { X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X get_values_tl(reftl); X } X } X cur_window = window_get(cur_panel,WIN_OWNER); X if (event_id(event) == MS_LEFT && event_is_down(event)) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X otarg = gen_tlpname((OBPtr) get_master(),reftl); X handler(refobj,reftl,NULL,"mouseDown",cnew_constring(""),otarg); X } X if (event_id(event) == MS_LEFT && event_is_up(event)) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X otarg = gen_tlpname((OBPtr) get_master(),reftl); X handler(refobj,reftl,NULL,"mouseUp",cnew_constring(""),otarg); X } X panel_text_notify(panel,event); X panel_default_handle_event(cur_panel,event); X return; X} Xvoid item_proc1(pitem,event) XPanel_item pitem; XEvent *event; X{ X OBPtr refobj; X TLPtr reftl; X ITPtr refitem; X char *otarg; X TPPtr temp; X cur_panel = panel_get(pitem,PANEL_PARENT_PANEL); X cur_window = window_get(cur_panel,WIN_OWNER); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X switch (item_get_type(refitem)) { X case HYPE_TEXT: X panel_text_notify(pitem,event); X panel_default_handle_event(pitem,event); X if (event_id(event) == MS_RIGHT && event_is_down(event)) { X menu_show(make_textitem_menu(pitem),cur_panel,event,0); X } else X if (event_id(event) == MS_LEFT && event_is_down(event)) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X otarg = gen_itempname(refitem,refobj,reftl); X handler(refobj,reftl,refitem, X "mouseDown",cnew_constring(""),otarg); X } else X if (event_id(event) == MS_LEFT && event_is_up(event)) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X otarg = gen_itempname(refitem,refobj,reftl); X handler(refobj,reftl,refitem, X "mouseUp",cnew_constring(""),otarg); X } else X if (event_is_ascii(event) || (event_id(event) == 10)) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X object_set_info(refobj,info_add_data(object_get_info(refobj), X gen_absolute_itempname(refitem), X cnew_constring( X panel_get(pitem,PANEL_VALUE)) X )); X } X break; X case HYPE_BUTTON: X panel_default_handle_event(pitem,event); X if (event_id(event) == MS_LEFT && event_is_down(event)) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X otarg = gen_itempname(refitem,refobj,reftl); X handler(refobj,reftl,refitem, X "mouseDown",cnew_constring(""),otarg); X } else X if (event_id(event) == MS_LEFT && event_is_up(event)) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X otarg = gen_itempname(refitem,refobj,reftl); X handler(refobj,reftl,refitem, X "mouseUp",cnew_constring(""),otarg); X } X break; X } X} Xvoid textsw_item_proc(pitem,event) XPanel_item pitem; XEvent *event; X{ X OBPtr refobj; X TLPtr reftl; X ITPtr refitem; X char *otarg; X TPPtr temp; X cur_panel = panel_get(pitem,PANEL_PARENT_PANEL); X cur_window = window_get(cur_panel,WIN_OWNER); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X switch (item_get_type(refitem)) { X case HYPE_TEXTSW: X if (event_id(event) == MS_RIGHT && event_is_down(event)) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X menu_show(make_textswitem_menu(refobj,refitem), X cur_panel,event,0); X } else X if (event_id(event) == MS_LEFT && (event_is_up(event) || X event_is_down(event))) { X panel_text_notify(pitem,event); X panel_default_handle_event(pitem,event); X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X otarg = gen_itempname(refitem,refobj,reftl); X if (event_is_up(event)) { X handler(refobj,reftl,refitem, X "mouseUp",cnew_constring(""),otarg); X } else X if (event_is_down(event)) { X handler(refobj,reftl,refitem, X "mouseDown",cnew_constring(""),otarg); X } X } X } X} X XContainer mask_to_cont(val,n) Xunsigned int val; Xint n; X{ X int i; X Container c; X c = cnew_con(); X for (i = 0; i < n; i++) { X if (get_bit(i,val)) { X mfputc(c,'1'); X } else { X mfputc(c,'0'); X } X mfputc(c,' '); X } X return c; X} Xvoid item_proc2(pitem,event,value) XPanel_item pitem; XEvent *event; Xunsigned int value; X{ X OBPtr refobj; X TLPtr reftl; X ITPtr refitem; X char *otarg; X TPPtr temp; X cur_panel = panel_get(pitem,PANEL_PARENT_PANEL); X cur_window = window_get(cur_panel,WIN_OWNER); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X switch (item_get_type(refitem)) { X case HYPE_SLIDER: X if (event_id(event) == MS_LEFT) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X panel_default_handle_event(pitem,event); X if (event_is_up(event)) { X object_set_info(refobj,info_add_data(object_get_info(refobj), X gen_absolute_itempname(refitem), X cnew_constring( X int_to_string(panel_get(pitem,PANEL_VALUE))) X )); X handler(refobj,reftl,refitem, X "mouseUp",cnew_constring(int_to_string(panel_get(pitem, X PANEL_VALUE))),otarg); X X } else { X object_set_info(refobj,info_add_data(object_get_info(refobj), X gen_absolute_itempname(refitem), X cnew_constring( X int_to_string(panel_get(pitem,PANEL_VALUE))) X )); X handler(refobj,reftl,refitem, X "mouseDown",cnew_constring(int_to_string(panel_get(pitem, X PANEL_VALUE))),otarg); X X } X X } else { X panel_default_handle_event(pitem,event); X X } X break; X case HYPE_TOGGLE: X if (event_id(event) == MS_LEFT) { X refobj = (OBPtr) hlookup(cur_window,sv_to_hype); X temp = (TPPtr) hlookup(cur_panel,sv_to_hype); X reftl = object_get_temp_tl(temp); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X otarg = gen_itempname(refitem,refobj,reftl); X panel_default_handle_event(pitem,event); X if (event_is_up(event)) { X object_set_info(refobj,info_add_data(object_get_info(refobj), X gen_absolute_itempname(refitem), X mask_to_cont(panel_get(pitem,PANEL_VALUE), X item_get_numc(refitem)) X )); X handler(refobj,reftl,refitem, X "mouseUp",cnew_constring(""),otarg); X } else { X object_set_info(refobj,info_add_data(object_get_info(refobj), X gen_absolute_itempname(refitem), X mask_to_cont(panel_get(pitem,PANEL_VALUE), X item_get_numc(refitem)) X )); X handler(refobj,reftl,refitem, X "mouseDown",cnew_constring(""),otarg); X } X } else { X panel_default_handle_event(pitem,event); X } X break; X } X} Xvoid tl_item_proc(pitem,event) XPanel_item pitem; XEvent *event; X{ X OBPtr refobj; X TLPtr reftl; X ITPtr refitem; X char *otarg; X TPPtr temp; X X Cursor new; X X cur_panel = panel_get(pitem,PANEL_PARENT_PANEL); X cur_window = window_get(cur_panel,WIN_OWNER); X refitem = (ITPtr) hlookup(pitem,sv_to_hype); X X if (event_id(event) == MS_MIDDLE && event_is_up(event)) { X if (movingflag == 1) { X manual_panel_menu(cur_panel,event); X return; X } X } X if (event_id(event) == MS_MIDDLE && event_is_down(event)) { X if (movingflag == 0) { X movingflag = 1; X moving_item = refitem; X moving_item_image = pitem; X orig_cursor = cursor_copy(window_get(cur_panel,WIN_CURSOR)); X new = cursor_create(CURSOR_IMAGE,&c_pixrect, X CURSOR_SHOW_CROSSHAIRS,TRUE, X CURSOR_OP,PIX_SRC^PIX_DST, X 0); X window_set(cur_panel,WIN_CURSOR,new,0); X } X } X} Xvoid disassoc_item(pitem) XPanel_item pitem; X{ X ITPtr item; X item = (ITPtr) hlookup(pitem,sv_to_hype); X delete_from_hash(pitem,sv_to_hype); X} Xvoid assoc_item(pitem,tl,item) XPanel_item pitem; XTLPtr tl; XITPtr item; X{ X add_to_hash(pitem,sv_to_hype,item); X X switch (item_get_type(item)) { X case HYPE_TEXT: X panel_set(pitem,PANEL_EVENT_PROC,item_proc1,0); X break; X case HYPE_BUTTON: X panel_set(pitem,PANEL_EVENT_PROC,item_proc1,0); X break; X case HYPE_SLIDER: X panel_set(pitem,PANEL_EVENT_PROC,item_proc2,0); X break; X case HYPE_TOGGLE: X panel_set(pitem,PANEL_EVENT_PROC,item_proc2,0); X break; X case HYPE_TEXTSW: X panel_set(pitem,PANEL_EVENT_PROC,textsw_item_proc,0); X break; X } X} Xvoid disassoc_tl_item(pitem) XPanel_item pitem; X{ X ITPtr item; X item = (ITPtr) hlookup(pitem,sv_to_hype); X delete_from_hash(pitem,sv_to_hype); X} Xvoid assoc_tl_item(pitem,tl,item) XPanel_item pitem; XTLPtr tl; XITPtr item; X{ X add_to_hash(pitem,sv_to_hype,item); X panel_set(pitem,PANEL_EVENT_PROC,tl_item_proc,0); X} Xdisassoc_layer_menu(panel,tl) XPanel panel; XTLPtr tl; X{ X delete_from_hash(panel,sv_to_hype); X} Xvoid assoc_layer_menu(pframe,tl) XPanel pframe; XTLPtr tl; X{ X add_to_hash(pframe,sv_to_hype,tl); X window_set(pframe,WIN_CONSUME_PICK_EVENTS, X WIN_NO_EVENTS, X LOC_MOVE,LOC_WINENTER,LOC_WINEXIT, X WIN_MOUSE_BUTTONS, X 0, X 0); X panel_set(pframe,PANEL_BACKGROUND_PROC,manual_panel_menu,0); X X} Xvoid disassoc_obj_tlmenu(panel) XPanel panel; X{ X TPPtr temp; X temp = (TPPtr) hlookup(panel,sv_to_hype); X delete_from_hash(panel,sv_to_hype); X} Xvoid assoc_obj_tlmenu(panel,temp) XPanel panel; XTPPtr temp; X{ X add_to_hash(panel,sv_to_hype,temp); X window_set(panel,WIN_CONSUME_PICK_EVENTS, X WIN_NO_EVENTS, X LOC_MOVE,LOC_WINENTER,LOC_WINEXIT, X WIN_MOUSE_BUTTONS, X 0, X 0); X panel_set(panel,PANEL_BACKGROUND_PROC,obj_tl_proc,0); X} Xvoid disassoc_tl_menu(frame,tl) XFrame frame; XTLPtr tl; X{ X tl = hlookup(frame,sv_to_hype); X delete_from_hash(frame,sv_to_hype); X} Xvoid assoc_tl_menu(frame,tl) XFrame frame; XTLPtr tl; X{ X add_to_hash(frame,sv_to_hype,tl); X default_menu = window_get(frame,WIN_MENU); X window_set(frame,WIN_MENU,make_tl_menu(tl),0); X window_set(frame,FRAME_NO_CONFIRM, TRUE, 0); X window_set(frame,WIN_EVENT_PROC,tl_test_event_proc,0); X window_set(frame,WIN_CONSUME_PICK_EVENTS, X WIN_MOUSE_BUTTONS, X LOC_MOVE,LOC_WINENTER,LOC_WINEXIT,0, X 0); X X} Xvoid disassoc_window_menu(window,obj) XFrame window; XOBPtr obj; X{ X obj = (OBPtr) hlookup(window,sv_to_hype); X delete_from_hash(window,sv_to_hype); X} Xvoid set_base(f) XFrame f; X{ X base_frame = f; X} XFrame get_base() X{ X return base_frame; X} X Xvoid assoc_window_menu(window,obj) XFrame window; XOBPtr obj; X{ X add_to_hash(window,sv_to_hype,obj); X window_set(window,FRAME_NO_CONFIRM, TRUE, 0); X window_set(window,WIN_EVENT_PROC,test_event_proc,0); X window_set(window,WIN_CONSUME_PICK_EVENTS, X MS_RIGHT, X MS_LEFT, X LOC_STILL, X LOC_MOVE, X LOC_WINENTER, X LOC_WINEXIT, X 0, X 0); X default_menu = window_get(window,WIN_MENU); X window_set(window,WIN_MENU,mondo_menu(obj),0); X if (get_master() == obj) { X set_base(window); X } X X} X Xvoid fire_it_up() X{ X cur_window = base_frame; X window_main_loop(base_frame); X} X Xvoid init_interface() X{ X OBPtr oldmaster; X OBPtr obj; X ObjectCode oc; X Container cont; X Container self; X char *x; X X X base_frame = NULL; X default_cont = cnew_con(); X default_rect[0].r_left = 400; X default_rect[0].r_top = 400; X default_rect[0].r_width = 200; X default_rect[0].r_height = 200; X crewind(default_cont); X if (editor == NULL) { X editor = "vi"; X } X sv_to_hype = make_hash(); X init_hash( TABLE_SIZE ,sv_to_hype); X X treeroot = oldmaster = create_master("treeroot"); X master = create_master("MASTER"); X object_set_name(oldmaster,"minmast"); X object_add(master,oldmaster,0); X if (dpath == NULL) { X dpath = gen_absolute_pname(master); X } X obj = obj_ofpname(dpath); X if ((obj == treeroot) || (obj == NULL)) { X dpath = gen_absolute_pname(master); X } X treeroot = oldmaster; X X if (public == NULL) { X distinguished = master; X if (state == NULL) { X distinguished = master; X state = "./hype.state"; X object_set_level(master,WRITABLE); X } else { X master = load_below(state,treeroot,0,WRITABLE); X if (master == NULL) { X fprintf(stderr,"unable to open file %s\n",state); X exit(0); X } X distinguished = master; X object_set_level(distinguished,WRITABLE); X } X } else { X X X master = load_over(public,master,READ_ONLY); X if (master == NULL) { X fprintf(stderr,"unable to open file %s\n",public); X exit(0); X } X X X if ((obj == treeroot) || (obj == NULL)) { X dpath = gen_absolute_pname(master); X } X if (state == NULL) { X distinguished = master; X obj = create_master(user); X object_add(obj,obj_ofpname(dpath),0); X object_set_name(obj,user); X object_set_level(obj,WRITABLE); X distinguished = obj; X state = "./hype.state"; X } else { X obj = obj_ofpname(dpath); X distinguished = load_below(state,obj,0,WRITABLE); X if (distinguished == NULL) { X fprintf(stderr,"unable to open file %s\n",state); X exit(0); X } X X object_set_level(distinguished,WRITABLE); X } X } X X X if (init_arg == NULL) { X cont = cnew_con(); X } else { X cont = cnew_constring(init_arg); X } X broadcast(get_master(),"initHype",cont); X cdestroy(cont); X X if (init_script != NULL) { X execute_hypefile(init_script,master,cnew_con(),"",cnew_constring("/")); X } X show_obj(master); X X} X X XOBPtr get_distinguished() X{ X return distinguished; X} X XOBPtr set_distinguished() X{ X return (distinguished = NULL); X} X Xchar *get_state_path() X{ X return state; X} Xvoid set_state_path(x) Xchar *x; X{ X state = x; X} Xvoid set_state(x) Xchar *x; X{ X state = x; X} Xchar *get_user() X{ X return user; X} Xvoid set_user(x) Xchar *x; X{ X user = x; X} XWindow interface_get_window() X{ X if (cur_window != NULL) { X return cur_window; X } X return (Window) hlookup(get_master(),sv_to_hype); X} Xchar *get_public() X{ X return public; X} Xvoid set_public(x) Xchar *x; X{ X public = x; X} Xchar *get_state() X{ X return state; X} Xvoid set_superuser(str) Xchar *str; X{ X if (str == NULL) { X superuser = 0; X } else { X superuser = 1; X } X} Xvoid set_init_script(str) Xchar *str; X{ X init_script = str; X} Xvoid set_init_arg(str) Xchar *str; X{ X init_arg = str; X} Xvoid set_dpath(str) Xchar *str; X{ X dpath = str; X} Xvoid set_editor(str) Xchar *str; X{ X editor = str; X} X Xchar *get_editor() X{ X return editor; X} SHAR_EOF if test 62000 -ne "`wc -c < 'interface.c'`" then echo shar: error transmitting "'interface.c'" '(should have been 62000 characters)' fi fi # end of overwriting check echo shar: extracting "'interface.h'" '(185 characters)' if test -f 'interface.h' then echo shar: will not over-write existing file "'interface.h'" else sed 's/^ X//' << \SHAR_EOF > 'interface.h' X Xvoid init_interface(); Xvoid assoc_window_menu(); Xvoid fire_it_up(); Xvoid *get_distinguished(); Xvoid *get_master(); Xvoid *get_public(); Xvoid *get_state(); Xvoid *interface_get_window(); SHAR_EOF if test 185 -ne "`wc -c < 'interface.h'`" then echo shar: error transmitting "'interface.h'" '(should have been 185 characters)' fi fi # end of overwriting check echo shar: done with directory "'src'" cd .. # End of shell archive exit 0