Whats wrong with this MGR program?
Bradley E. Smith
brad at bradley.bradley.edu
Wed Apr 3 14:38:39 AEST 1991
Now I now this isn't the greatest program --- please no comments,
just helpful suggestions. If you run this program the menu works
but returns trash....but if you quit the program the menu sends
what one would think....what am I missing.....to quit put the mouse
in the upper left window and touch the middle button. The right
button does the menu.
Bradley Smith
Network & Technical Services @ Bradley University, Peoria, IL
brad at bradley.edu --- 309-677-2337
----------cut here, no shar-------------
#include <mgr/term.h>
#include <signal.h>
#define TRUE 1
#define X_RES 10
#define Y_RES 8
#define CMD_MENU 1
#define MAIN_MENU 2
#define FILE_MENU 3
#define DIR_MENU 4
#define STR_BUTTON1 "\0331\r" /* string for button 1 */
#define STR_BUTTON2 "\0332\r"
#define STR_ACTIVATE "\033a\r"
#define STR_RESHAPE "\033r\r"
#define STR_MOVE "\033m\r"
#define STR_DESTROY "\033d\r"
struct menu_entry main_menu[] = {
"Commands =>", "",
"Item 1(ls)", "ls\r",
"Item 2(date)", "date\r",
"Item 3(who)", "who\r",
"Item 4(df)", "df\r",
"Quit", "quit",
};
struct menu_entry cmd_menu[] = {
"ls", "1",
"pwd","2",
};
int orig_x, orig_y, orig_width, orig_height;
int host_x, host_y, host_border;
char host_name[32];
int mouse_x, mouse_y;
main()
{
int ten_percent;
char buf[128], buf2[128];
long t;
char *ctime();
m_setup(M_FLUSH);
m_push(P_POSITION|P_WINDOW|P_FLAGS|P_EVENT|P_CURSOR);
m_ttyset();
m_setnoecho();
m_setraw();
get_param(host_name, &host_x, &host_y, &host_border);
menu_load(MAIN_MENU,MENU_SIZE(main_menu),
(struct menu_entry *) &main_menu[0]);
menu_load(CMD_MENU,MENU_SIZE(cmd_menu),
(struct menu_entry *) &cmd_menu[0]);
m_selectmenu2(MAIN_MENU);
m_linkmenu(MAIN_MENU,0,1,0);
m_linkmenu(MAIN_MENU,1,CMD_MENU,0);
m_clear();
m_shapewindow(0, 0, host_x, host_y);
make_graphics_window();
make_status_window();
make_w_window();
m_font(3);
/* m_textregion(105,0,844,100); /* */
m_setevent(BUTTON_1, STR_BUTTON1);
m_setevent(BUTTON_2, STR_BUTTON2);
for(;;) {
#if 0
if(!m_gets(buf))
exit_clean();
#else
gets(buf);
#endif
printf("strlen=%d:%c,%c,%c,%c:%s", strlen(buf),buf[0],
buf[1], buf[2], buf[3],buf);
if(buf[0] == '\033') {
switch(buf[1]) {
case '1':
get_mouse(&mouse_x, &mouse_y);
whereis_mouse(1);
break;
case '2':
get_mouse(&mouse_x, &mouse_y);
whereis_mouse(2);
break;
default:
printf("default:%s", buf);
}
}
}
}
whereis_mouse(i)
int i;
{
if(mouse_x < 100) { /* in command window */
if(mouse_y < 100) {
m_printstr("\r\nW1");
if(i==2) exit_clean();
} else if(mouse_y < 200)
m_printstr("\r\nW2");
else if(mouse_y < 300)
m_printstr("\r\nW3");
else if(mouse_y < 400)
m_printstr("\r\nW4");
else if(mouse_y < 500)
m_printstr("\r\nW5");
else if(mouse_y < 600)
m_printstr("\r\nW6");
else if(mouse_y < 700)
m_printstr("\r\nW7");
else if(mouse_y < 800)
m_printstr("\r\nW8");
else if(mouse_y < 900)
m_printstr("\r\nW9");
else
m_printstr("\r\nW10");
}
/* is the boarder really 5 wide? */
else if((mouse_y > 105) &&(mouse_x < 945)) { /* in graphics window */
m_printstr("\r\nGRAPHICS WINDOW");
}
else if((mouse_y < 100) && (mouse_x < 999)) { /* status window */
m_printstr("\r\nSTATUS WINDOW");
}
else { /* not known yet */
m_printstr("\r\nUNKNOWN WINDOW");
}
m_flush();
}
exit_clean()
{
int i;
/* m_nomenu2(); /* */
m_textreset();
m_font(0);
m_ttyreset();
m_popall();
#if 0
printf("'%s': %d(x), %d(y), %d(border)\n", host_name,
host_x, host_y, host_border);
printf("graphics_x=%d,graphics_y=%d,graphics_w=%d,graphics_h=%d\n", graphics_x,graphics_y,graphics_w,graphics_h);
printf("graphics_win = %d\n", graphics_win);
printf("status_x=%d,status_y=%d,status_w=%d,status_h=%d\n", status_x,status_y,status_w,status_h);
printf("status_win = %d\n", status_win);
#endif
fflush(stdin);
fflush(stdout);
exit(0);
}
make_graphics_window()
{
m_go(100,100);
m_draw(950,100);
m_draw(950,950);
m_draw(100,950);
m_draw(100,100);
}
make_status_window()
{
m_go(100,100);
m_draw(100,0);
m_go(999,100);
m_draw(950,100);
}
make_w_window()
{
m_go(0,100); m_draw(100,100);
m_go(0,200); m_draw(100,200);
m_go(0,300); m_draw(100,300);
m_go(0,400); m_draw(100,400);
m_go(0,500); m_draw(100,500);
m_go(0,600); m_draw(100,600);
m_go(0,700); m_draw(100,700);
m_go(0,800); m_draw(100,800);
m_go(0,900); m_draw(100,900);
m_draw(100,999);
}
--
Bradley Smith
Network & Technical Services @ Bradley University, Peoria, IL
brad at bradley.edu --- 309-677-2337
More information about the Comp.sys.3b1
mailing list