v01i070: hype - a SunView object-oriented window builder, Part10/11
Charles Mcgrew
mcgrew at dartagnan.rutgers.edu
Fri Sep 15 12:52:55 AEST 1989
Submitted-by: apctrc!zmls04 at 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 <suntool/sunview.h>
X#include <suntool/panel.h>
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 <suntool/walkmenu.h>
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
More information about the Comp.sources.sun
mailing list