home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
m
/
master12.zip
/
mastering
/
Newapp
/
MenuCB.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-08-19
|
4KB
|
173 lines
/* MenuCB.c -- This file contains MenuCB(), a general-purpose callback
routine used for processing menu commands. */
#include "Global.h"
#include "Menu.h"
void MenuCB (w, client_data, call_data)
Widget w; /* widget id */
XtPointer client_data; /* data from application */
XtPointer call_data; /* data from widget class */
{
Widget button;
int i;
/* Some menu commands may not return immediately, so update
the display to prevent the application from looking dead. */
XmUpdateDisplay(topLevel);
switch ((int)client_data)
{
case MENU_File_Open:
printf("File: Open!\n");
break;
case MENU_File_New:
printf("File: New!\n");
break;
case MENU_File_Print:
printf("File: Print!\n");
break;
case MENU_File_Save:
printf("File: Save!\n");
break;
case MENU_File_SaveAs:
printf("File: Save As!\n");
break;
case MENU_File_Exit:
XtManageChild (exitDialog);
break;
case MENU_Edit_Undo:
printf("Edit: Undo!\n");
break;
case MENU_Edit_Cut:
printf("Edit: Cut!\n");
break;
case MENU_Edit_Copy:
printf("Edit: Copy!\n");
break;
case MENU_Edit_Paste:
printf("Edit: Paste!\n");
break;
case MENU_Edit_Clear:
printf("Edit: Clear!\n");
break;
case MENU_Edit_Delete:
printf("Edit: Delete!\n");
break;
case MENU_Printer_Switch:
printf("Printer switch\n");
break;
case MENU_View_AsOne:
case MENU_View_AsTwo:
case MENU_View_AsThree:
/* This MenuCB() routine is called twice each time a choice is
made from the View menu: First for the toggle being unset, then
for the toggle being set. Therefore, a response is needed only
if the toggle is set and it isn't already the current view. */
if (XmToggleButtonGadgetGetState(w) && (int)client_data != currentView)
{
switch ((int)client_data)
{
case MENU_View_AsOne:
printf("View: As One!\n");
break;
case MENU_View_AsTwo:
printf("View: As Two!\n");
break;
case MENU_View_AsThree:
printf("View: As Three!\n");
break;
}
currentView = (int)client_data;
}
break;
case MENU_checkbox_A:
case MENU_checkbox_B:
case MENU_checkbox_C:
printf("Enhancement: ");
switch ((int)client_data)
{
case MENU_checkbox_A:
printf("Underline");
break;
case MENU_checkbox_B:
printf("Bold");
break;
case MENU_checkbox_C:
printf("Italic");
break;
}
if (XmToggleButtonGadgetGetState(w))
printf(" on");
else
printf(" off");
printf("!\n");
break;
case MENU_radio_1:
case MENU_radio_2:
case MENU_radio_3:
/* Enforce radio behavior by clearing all three toggles,
then setting the toggle just chosen (w). */
XmToggleButtonGadgetSetState (opt1Toggle, False, False);
XmToggleButtonGadgetSetState (opt2Toggle, False, False);
XmToggleButtonGadgetSetState (opt3Toggle, False, False);
XmToggleButtonGadgetSetState (w, True, False);
/* Behavior for the current choice goes here. If the option
was already selected, nothing happens. */
if (currentOption != (int)client_data)
{
currentOption = (int)client_data;
switch (currentOption)
{
case MENU_radio_1:
printf("Enhancements: Switched to 8-point font!\n");
break;
case MENU_radio_2:
printf("Enhancements: Switched to 12-point font!\n");
break;
case MENU_radio_3:
printf("Enhancements: Switched to 16-point font!\n");
break;
}
}
break;
case MENU_Help_OnItem:
printf("Help: On Item!\n");
break;
case MENU_Help_OnApplication:
printf("Help: On Application!\n");
break;
case MENU_Help_OnHelp:
printf("Help: On Help!\n");
break;
case MENU_Help_Index:
printf("Help: Index!\n");
break;
case MENU_Help_Tutorial:
printf("Help: Tutorial!\n");
break;
case MENU_Help_OnVersion:
printf("Help: On Version!\n");
break;
default:
/* A client_data was received for which
there is no case setup to handle */
printf ("Unknown client_data in MenuCB(): %d\n",client_data);
break;
}
}