#include #include #include #include #include #include #include #include #define WIDTH 120 #define HEIGHT 20 #define OFFSET 5 /* Menų progetto */ #define PROGETTO_NUOVO FULLMENUNUM(0,0,NOSUB) #define PROGETTO_CARICA FULLMENUNUM(0,1,NOSUB) /* La barlabel */ #define PROGETTO_SALVA FULLMENUNUM(0,3,NOSUB) #define PROGETTO_SALVACOME FULLMENUNUM(0,4,NOSUB) /* La barlabel */ #define PROGETTO_INFO FULLMENUNUM(0,6,NOSUB) #define PROGETTO_FINE FULLMENUNUM(0,7,NOSUB) /* Menų editor */ #define EDITOR_TAGLIA FULLMENUNUM(1,0,NOSUB) #define EDITOR_COPIA FULLMENUNUM(1,1,NOSUB) #define EDITOR_INCOLLA FULLMENUNUM(1,2,NOSUB) #define EDITOR_CANCELLA FULLMENUNUM(1,3,NOSUB) /* La barlabel */ #define EDITOR_IFF FULLMENUNUM(1,5,NOSUB) #define EDITOR_TESTO FULLMENUNUM(1,6,NOSUB) #define EDITOR_8SVX FULLMENUNUM(1,7,NOSUB) /* Menų preferenze */ #define PREFERENZE_CARICA FULLMENUNUM(2,0,NOSUB) #define PREFERENZE_SALVA FULLMENUNUM(2,1,NOSUB) #define PREFERENZE_IMPOSTA FULLMENUNUM(2,2,NOSUB) struct NewGadget ngad = {OFFSET,OFFSET,WIDTH,HEIGHT,"Premi quė",NULL,1, PLACETEXT_IN,NULL,NULL}; struct Gadget *gad = NULL; /* Definizione dei menu del programma */ struct NewMenu nmenu[] = { {NM_TITLE,"Progetto",0,0,0,NULL,}, {NM_ITEM,"Nuovo","N",0,0,NULL}, {NM_ITEM,"Carica...","O",0,0,NULL,}, {NM_ITEM,NM_BARLABEL,0,0,0,NULL,}, {NM_ITEM,"Salva","S",0,0,NULL,}, {NM_ITEM,"Salva come...",0,0,0,NULL,}, {NM_ITEM,NM_BARLABEL,0,0,0,NULL,}, {NM_ITEM,"Informazioni...","?",0,0,NULL,}, {NM_ITEM,"Fine","F",0,0,NULL,}, {NM_TITLE,"Editor",0,0,0,NULL,}, {NM_ITEM,"Taglia","X",0,0,NULL,}, {NM_ITEM,"Copia","C",0,0,NULL,}, {NM_ITEM,"Incolla","V",0,0,NULL,}, {NM_ITEM,"Cancella","E",0,0,NULL,}, {NM_ITEM,NM_BARLABEL,0,0,0,NULL,}, {NM_ITEM,"IFF",0,MENUTOGGLE | CHECKIT,~(1<<5),NULL,}, {NM_ITEM,"Testo",0,MENUTOGGLE | CHECKIT,~(1<<6),NULL,}, {NM_ITEM,"8SVX",0,MENUTOGGLE | CHECKIT|CHECKED,~(1<<7),NULL,}, {NM_TITLE,"Preferenze",0,0,0,NULL,}, {NM_ITEM,"Carica...",0,0,0,NULL,}, {NM_ITEM,"Salva",0,0,0,NULL,}, {NM_ITEM,"Imposta",0,0,0,NULL,}, {NM_END,0,0,0,0,0}, }; void main(void) { struct Screen *scr; struct Window *win; struct Menu *menu; struct IntuiMessage *msg; struct BitScaleArgs bsa; BOOL finito = FALSE; APTR vinfo; if((scr = OpenScreenTags(NULL, SA_LikeWorkbench, TRUE, SA_Title, "Schermo di prova", TAG_DONE))) { if((vinfo = GetVisualInfoA(scr,NULL))) { ngad.ng_VisualInfo = vinfo; if((menu = CreateMenusA(nmenu,NULL))) { LayoutMenus(menu,vinfo,GTMN_NewLookMenus,TRUE,TAG_DONE); if((win = OpenWindowTags(NULL, WA_Top, scr -> BarHeight + scr -> BarVBorder, WA_Height, scr -> Height - scr -> BarHeight - scr -> BarVBorder, WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_GADGETUP | IDCMP_REFRESHWINDOW | IDCMP_MENUPICK, WA_Flags, WFLG_CLOSEGADGET | WFLG_SIZEGADGET | WFLG_DRAGBAR | WFLG_DEPTHGADGET | WFLG_NEWLOOKMENUS, WA_Title, "Finestra di prova", WA_PubScreen, scr, TAG_DONE))) { /* Collego i menų */ SetMenuStrip(win,menu); /* Aggiusto in base alla dimensione del font */ ngad.ng_LeftEdge += win -> BorderLeft; ngad.ng_TopEdge += win -> BorderTop; /* Pių piccola di cosė no */ WindowLimits(win, ngad.ng_LeftEdge + ngad.ng_Width + win -> BorderRight + OFFSET, ngad.ng_TopEdge + ngad.ng_Height + win -> BorderBottom + OFFSET,0,0); if((gad = CreateGadget(BUTTON_KIND,CreateContext(&gad),&ngad,TAG_DONE))) { ULONG style; /* Aggiungo il bottone alla finestra */ AddGList(win,gad,0,1,NULL); /* Rinfresco i bottoni */ RefreshGList(gad,win,NULL,1); /* Rinfresco i bottoni della finestra */ GT_RefreshWindow(win,NULL); style = AskSoftStyle(win -> RPort); SetSoftStyle(win -> RPort,FSF_BOLD,style); /* Creo un immagine ingrandita del bottone */ bsa.bsa_SrcX = bsa.bsa_DestX = win -> LeftEdge + gad -> LeftEdge; bsa.bsa_SrcY = win -> TopEdge + gad -> TopEdge; bsa.bsa_SrcWidth = gad -> Width; bsa.bsa_SrcHeight = gad -> Height; bsa.bsa_XSrcFactor = bsa.bsa_YSrcFactor = 1; bsa.bsa_XDestFactor = bsa.bsa_YDestFactor = 2; bsa.bsa_SrcBitMap = bsa.bsa_DestBitMap = win -> RPort -> BitMap; bsa.bsa_Flags = 0; bsa.bsa_DestY = bsa.bsa_SrcY + bsa.bsa_SrcHeight + win -> RPort -> Font -> tf_YSize + 5; BitMapScale(&bsa); while(!finito) { WaitPort(win -> UserPort); while((msg = GT_GetIMsg(win -> UserPort))) { switch(msg -> Class) { case IDCMP_CLOSEWINDOW: finito = TRUE; break; case IDCMP_GADGETUP: Move(win -> RPort,ngad.ng_LeftEdge, ngad.ng_TopEdge + ngad.ng_Height + win -> RPort -> Font -> tf_YSize); Text(win -> RPort,"Bottone premuto!",16); Printf("Bottone premuto!\n"); ScrollRaster(win -> RPort,-4,0, bsa.bsa_DestX,win -> TopEdge + gad -> TopEdge + gad -> Height, bsa.bsa_DestX + bsa.bsa_DestWidth, bsa.bsa_DestY + bsa.bsa_DestHeight); break; case IDCMP_MENUPICK: { UWORD code = msg -> Code; do { struct MenuItem *item; switch(code) { case PROGETTO_NUOVO: Printf("Nuovo progetto!\n"); break; case PROGETTO_CARICA: Printf("Carica progetto!\n"); break; case PROGETTO_SALVA: Printf("Salva progetto!\n"); break; case PROGETTO_SALVACOME: Printf("Salva progetto come!\n"); break; case PROGETTO_INFO: Printf("Informazioni progetto!\n"); break; case PROGETTO_FINE: Printf("Fine progetto!\n"); finito = TRUE; break; case EDITOR_TAGLIA: Printf("Taglia!\n"); OffMenu(win,PROGETTO_NUOVO); break; case EDITOR_COPIA: Printf("Copia!\n"); OffMenu(win,PROGETTO_SALVA); break; case EDITOR_INCOLLA: Printf("Incolla!\n"); OnMenu(win,PROGETTO_NUOVO); break; case EDITOR_CANCELLA: Printf("Cancella!\n"); OnMenu(win,PROGETTO_SALVA); break; case EDITOR_IFF: Printf("Editor IFF!\n"); break; case EDITOR_TESTO: Printf("Editor testo!\n"); break; case EDITOR_8SVX: Printf("Editor suoni!\n"); break; case PREFERENZE_CARICA: Printf("Carica preferenze!\n"); break; case PREFERENZE_SALVA: Printf("Salva preferenze!\n"); break; case PREFERENZE_IMPOSTA: Printf("Imposta preferenze!\n"); break; } item = ItemAddress(win -> MenuStrip,code); code = item -> NextSelect; } while(code != MENUNULL); } break; case IDCMP_REFRESHWINDOW: GT_BeginRefresh(win); GT_EndRefresh(win,TRUE); break; } GT_ReplyIMsg(msg); } } } ClearMenuStrip(win); CloseWindow(win); } FreeMenus(menu); } FreeGadgets(gad); FreeVisualInfo(vinfo); } CloseScreen(scr); } }