home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
230.lha
/
QuickMenu
/
mtst.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-04-04
|
6KB
|
290 lines
/*
* Example program for using quick menu package. Contains the necessary
* declarations for a simple menu strip which it creates and destroys after
* letting the user play with it.
*/
#include <intuition/intuition.h>
#include "qmenu.h"
#define NILSUB {NULL,NULL}
/*
* String arrays get defined in sort-of reverse order.
* I.e. the subitems get defined before the parent items.
* (One rule is that menu items that cause a Requester to
* appear are followed by "...".)
* The string arrays themselves are terminated by a null
* string pointer.
*/
char *mpo_str[] = {
"!=ORaw Text...",
"Processed Text...",
"Drawing...",
"Picture...",
"Old Settings...",
NULL };
char *mps_str[] = {
"!=TText...",
"!=DDrawing...",
"Picture...",
NULL };
char *mp_str[] = {
"!=NNew...",
"Open",
"!=SSave...",
"Save as",
"Print...",
"Save Settings",
"About...",
"-",
"!bQuit...",
NULL };
/* Array of NewMenu structs to go with the above text items.
* Needs to be a one-to-one correspondence between text items
* (not rules) and NewMenu structs.
*/
struct NewMenu mp_sub[] = {
NILSUB,
{ mpo_str, NULL },
NILSUB,
{ mps_str, NULL },
NILSUB,
NILSUB,
NILSUB,
NILSUB
};
char *mes_str[] = {
"!+!0111!=PPlain",
"!c!1!=BBold",
"!c!1!=IItalic",
"!c!1!=UUnderline",
NULL };
char *me_str[] = {
"!=QUndo",
"-",
"!=ZDelete",
"!=XCut",
"!=CCopy",
"!=VPaste",
"-",
"Set Font...",
"Set Style",
NULL };
struct NewMenu me_sub[] = {
NILSUB,
NILSUB,
NILSUB,
NILSUB,
NILSUB,
NILSUB,
{ mes_str, NULL }
};
char *mdz_str[] = {
"!=>In",
"!=<Out",
"!=MManual",
NULL };
char *mdv_str[] = {
"!+!tText",
"!+!tLines",
"!+!tImages",
"!+!tBoxes",
"!+!tLabels",
NULL };
char *mds_str[] = {
"Interlace",
"Non-interlace",
"Workbench",
NULL };
char *md_str[] = {
"Zoom",
"!=AAuto Scale",
"-",
"!c!tCoordinates",
"Visible",
"-",
"Screen Colors...",
"Screen Type",
NULL };
struct NewMenu md_sub[] = {
{ mdz_str, NULL },
NILSUB,
NILSUB,
{ mdv_str, NULL },
NILSUB,
{ mds_str, NULL }
};
char *mhc_str[] = {
"Plot...",
"Set...",
"Lay in...",
NULL };
char *mhw_str[] = {
"!+!0111111Full Impulse",
"!c!1011111!=1Warp 1",
"!c!1101111!=2Warp 2",
"!c!1110111!=3Warp 3",
"!c!1111011!=4Warp 4",
"!c!1111101!=5Warp 5",
"!c!1111110Space Normal",
NULL };
char *mhp_str[] = {
"Stun",
"Kill",
"Maim",
"Burn",
"Overload",
"Ineffective",
"Burn Out",
NULL };
char *mh_str[] = {
"New Course",
"Speed",
"Standard Orbit",
"Tractor Beam...",
"Lock Phasers",
"-",
"\"Make It So.\"",
NULL };
struct NewMenu mh_sub[] = {
{ mhc_str, NULL },
{ mhw_str, NULL },
NILSUB,
NILSUB,
{ mhp_str, NULL },
NILSUB
};
char *mt_str[] = {
"Hammer",
"Screwdriver",
"Chisel",
"Knife",
"Felt Pen",
"Air Freshener",
"-",
"Hammer Size...",
"Screw Type...",
"Pine Scent...",
NULL };
char *mm_str[] = {
"Rotate...",
"Spin...",
"Turn Around...",
"Flip Out...",
"Randomize...",
"Energize...",
"Simplify",
"Complexify",
NULL };
char *main_str[] = {
"Project",
"Edit",
"Display",
"Tools",
"Helm",
"Modify",
NULL };
struct NewMenu main_sub[] = {
{ mp_str, mp_sub },
{ me_str, me_sub },
{ md_str, md_sub },
{ mt_str, NULL },
{ mh_str, mh_sub },
{ mm_str, NULL }
};
struct NewMenu main_menu = { main_str, main_sub };
struct TextAttr ta = { (UBYTE*) "topaz.font", 8,0,0 };
/* Basic stuff for the test program.
*/
struct NewWindow nwin = {
50,20, 200,100, -1,-1, CLOSEWINDOW,
WINDOWCLOSE|WINDOWDRAG|ACTIVATE,
NULL,NULL, (UBYTE*) "Test the Menus", NULL,NULL,
0,0,0,0, WBENCHSCREEN
};
#define OLIB(var,nam) (var=OpenLibrary(nam,33L))
struct IntuitionBase *IntuitionBase;
struct Window *mywin;
struct Window *OpenWindow();
void *OpenLibrary();
void *GetMsg();
main ()
{
if (OLIB(IntuitionBase,"intuition.library")) {
if (mywin = OpenWindow (&nwin)) {
Body ();
CloseWindow (mywin);
}
CloseLibrary (IntuitionBase);
}
}
Body ()
{
struct IntuiMessage *im;
struct Menu *m;
if (!(m = GenMenu (&main_menu))) return;
SetMenuStrip (mywin, m);
/* Wait for the close window message.
*/
while (!(im = (struct IntuiMessage *) GetMsg (mywin->UserPort)))
WaitPort (mywin->UserPort);
ReplyMsg (im);
ReadMenuState (m);
ClearMenuStrip (mywin);
FreeMenu (m);
}
ReadMenuState (m)
struct Menu *m;
{
struct MenuItem *mi;
/* Get the text style menu array and test for checkmarks.
*/
mi = m[1].FirstItem[8].SubItem;
printf ("Text Style: ");
if (mi[0].Flags & CHECKED) printf ("Plain");
if (mi[1].Flags & CHECKED) printf ("Bold ");
if (mi[2].Flags & CHECKED) printf ("Italic ");
if (mi[3].Flags & CHECKED) printf ("Underline");
printf ("\n");
}