home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************************/
- /* */
- /* Includes */
- /* */
- /*************************************************************************/
-
- #include "Videothek_Includes.h"
- #include "Videothek.h"
-
- /*************************************************************************/
- /* */
- /* Variables and Structures */
- /* */
- /*************************************************************************/
-
- extern struct IntuitionBase *IntuitionBase;
- extern struct GfxBase *GfxBase;
-
- extern struct Library *GadToolsBase ;
- extern struct Library *AslBase ;
- extern struct Library *DataTypesBase;
-
- /*************************************************************************/
- /* */
- /* Defines */
- /* */
- /*************************************************************************/
-
- #define RASTERX (GfxBase->DefaultFont->tf_XSize)
- #define RASTERY (GfxBase->DefaultFont->tf_YSize/2+4)
-
- #define XSIZE(x) ((x)*RASTERX)
- #define YSIZE(x) ((x)*RASTERY)
-
- #define XPOS(x) (XSIZE(x)+customscreen->WBorLeft)
- #define YPOS(x) (YSIZE(x)+customscreen->BarHeight+1)
-
- #define ERROR_NO_WINDOW_OPENED 1001L
- #define ERROR_NO_PUBSCREEN_LOCKED 1002L
- #define ERROR_NO_GADGETS_CREATED 1003L
- #define ERROR_NO_VISUALINFO 1004L
- #define ERROR_NO_PICTURE_LOADED 1005L
- #define ERROR_NO_GADGETLIST_CREATED 1006L
- #define ERROR_NO_WINDOW_MENU 1007L
-
-
- struct HauptfensterData
- {
- BOOL gd_Disabled_Listview;
- struct List *gd_Labels_Listview;
- UWORD gd_Selected_Listview;
- UWORD gd_Top_Listview;
- BOOL gd_Disabled_Neu;
- BOOL gd_Disabled_Aendern;
- BOOL gd_Disabled_Loeschen;
- BOOL gd_Disabled_ListeLoeschen;
- BOOL gd_Disabled_Drucken;
- BOOL gd_Disabled_Speichern;
- };
-
-
- struct EintragData
- {
- BOOL gd_Disabled_Filmtitel;
- char gd_String_Filmtitel[40];
- BOOL gd_Disabled_Kassette;
- ULONG gd_Number_Kassette;
- BOOL gd_Disabled_Minuten;
- ULONG gd_Number_Minuten;
- BOOL gd_Disabled_Quelle;
- UWORD gd_Active_Quelle;
- STRPTR *gd_Labels_Quelle;
- BOOL gd_Disabled_Art;
- UWORD gd_Active_Art;
- STRPTR *gd_Labels_Art;
- BOOL gd_Disabled_Weiter;
- };
-
- /*************************************************************************/
- /* */
- /* Routines to handle gadgets */
- /* */
- /*************************************************************************/
-
-
- void HandleGadgetsHauptfenster(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct HauptfensterData *gadgetdata,APTR userdata)
- {
- switch(gadgetid)
- {
- case LVID_Listview:
- ListviewClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case BTID_Neu:
- NeuClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case BTID_Aendern:
- AendernClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case BTID_Loeschen:
- LoeschenClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case BTID_ListeLoeschen:
- ListeLoeschenClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case BTID_Drucken:
- DruckenClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case BTID_Speichern:
- SpeichernClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- };
- }
-
- void HandleGadgetsEintrag(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct EintragData *gadgetdata,APTR userdata)
- {
- switch(gadgetid)
- {
- case STID_Filmtitel:
- FilmtitelClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case INID_Kassette:
- KassetteClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case INID_Minuten:
- MinutenClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case CYID_Quelle:
- QuelleClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case CYID_Art:
- ArtClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- case BTID_Weiter:
- WeiterClicked(win,wingads,gadgetid,messagecode,userdata);
- break;
- };
- }
-
-
- /*************************************************************************/
- /* */
- /* Routines to create gadgets */
- /* */
- /*************************************************************************/
-
-
- struct Gadget *CreateGadgetsHauptfenster(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct HauptfensterData *gadgetdata)
- {
- struct Gadget *gadget=CreateContext(gadgetlist);
- if (gadget)
- {
- wingads[LVID_Listview]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_Listview],GA_Disabled,gadgetdata->gd_Disabled_Listview,GTLV_Labels,gadgetdata->gd_Labels_Listview,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_Listview,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_Listview,LAYOUTA_Spacing,0,TAG_END);
- wingads[LAID_Gadget2]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget2],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
- wingads[BTID_Neu]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Neu],GA_Disabled,gadgetdata->gd_Disabled_Neu,GT_Underscore,'_',TAG_END);
- wingads[BTID_Aendern]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Aendern],GA_Disabled,gadgetdata->gd_Disabled_Aendern,GT_Underscore,'_',TAG_END);
- wingads[BTID_Loeschen]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Loeschen],GA_Disabled,gadgetdata->gd_Disabled_Loeschen,GT_Underscore,'_',TAG_END);
- wingads[BTID_ListeLoeschen]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_ListeLoeschen],GA_Disabled,gadgetdata->gd_Disabled_ListeLoeschen,GT_Underscore,'_',TAG_END);
- wingads[BTID_Drucken]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Drucken],GA_Disabled,gadgetdata->gd_Disabled_Drucken,GT_Underscore,'_',TAG_END);
- wingads[BTID_Speichern]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Speichern],GA_Disabled,gadgetdata->gd_Disabled_Speichern,GT_Underscore,'_',TAG_END);
- return gadget;
- }
- else return NULL;
- }
-
- struct Gadget *CreateGadgetsEintrag(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct EintragData *gadgetdata)
- {
- struct Gadget *gadget=CreateContext(gadgetlist);
- if (gadget)
- {
- wingads[LAID_Gadget9]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget9],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
- wingads[LAID_Gadget10]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget10],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
- wingads[LAID_Gadget11]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget11],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
- wingads[STID_Filmtitel]=gadget=CreateGadget(STRING_KIND,gadget,&newgad[STID_Filmtitel],GA_Disabled,gadgetdata->gd_Disabled_Filmtitel,GA_TabCycle,TRUE,GTST_MaxChars,40,GTST_String,gadgetdata->gd_String_Filmtitel,GA_TabCycle,TRUE,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGLEFT,STRINGA_ReplaceMode,FALSE,TAG_END);
- wingads[INID_Kassette]=gadget=CreateGadget(INTEGER_KIND,gadget,&newgad[INID_Kassette],GA_Disabled,gadgetdata->gd_Disabled_Kassette,GA_TabCycle,TRUE,GTIN_MaxChars,4,GTIN_Number,gadgetdata->gd_Number_Kassette,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGCENTER,STRINGA_ReplaceMode,TRUE,TAG_END);
- wingads[INID_Minuten]=gadget=CreateGadget(INTEGER_KIND,gadget,&newgad[INID_Minuten],GA_Disabled,gadgetdata->gd_Disabled_Minuten,GA_TabCycle,TRUE,GTIN_MaxChars,3,GTIN_Number,gadgetdata->gd_Number_Minuten,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGCENTER,STRINGA_ReplaceMode,TRUE,TAG_END);
- wingads[CYID_Quelle]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Quelle],GA_Disabled,gadgetdata->gd_Disabled_Quelle,GTCY_Labels,gadgetdata->gd_Labels_Quelle,GTCY_Active,gadgetdata->gd_Active_Quelle,TAG_END);
- wingads[CYID_Art]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Art],GA_Disabled,gadgetdata->gd_Disabled_Art,GTCY_Labels,gadgetdata->gd_Labels_Art,GTCY_Active,gadgetdata->gd_Active_Art,TAG_END);
- wingads[LAID_Gadget17]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget17],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
- wingads[LAID_Gadget18]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget18],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
- wingads[BTID_Weiter]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Weiter],GA_Disabled,gadgetdata->gd_Disabled_Weiter,GT_Underscore,'_',TAG_END);
- return gadget;
- }
- else return NULL;
- }
-
-
- /*************************************************************************/
- /* */
- /* Routines to handle windows */
- /* */
- /*************************************************************************/
-
-
- void HandleHauptfenster(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
- {
- APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
- if (visualinfo)
- {
- struct Gadget *gadgetlist = NULL;
- struct Menu *menustrip = NULL;
- ULONG height=34,width=66,maxheight=1024,maxwidth=1280;
-
- struct Gadget *wingads[8];
-
- STRPTR title = "Videothek - © 1993-95 by Markus Hillenbrand";
- struct Window *win = NULL;
-
- struct TextAttr textattr = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
-
- struct NewGadget newgad[] = {
- XPOS(1),YPOS(2),XSIZE(64),YSIZE(25),NULL,&textattr,LVID_Listview,PLACETEXT_ABOVE,visualinfo,NULL,
- XPOS(1),YPOS(0),XSIZE(64),YSIZE(2),"_Filme:",&textattr,LAID_Gadget2,PLACETEXT_IN,visualinfo,NULL,
- XPOS(1),YPOS(27),XSIZE(16),YSIZE(2),"_Neu",&textattr,BTID_Neu,PLACETEXT_IN,visualinfo,NULL,
- XPOS(17),YPOS(27),XSIZE(16),YSIZE(2),"Änd_ern",&textattr,BTID_Aendern,PLACETEXT_IN,visualinfo,NULL,
- XPOS(33),YPOS(27),XSIZE(16),YSIZE(2),"_Löschen",&textattr,BTID_Loeschen,PLACETEXT_IN,visualinfo,NULL,
- XPOS(49),YPOS(27),XSIZE(16),YSIZE(2),"L_iste löschen",&textattr,BTID_ListeLoeschen,PLACETEXT_IN,visualinfo,NULL,
- XPOS(1),YPOS(31),XSIZE(25),YSIZE(2),"_Drucken auf Drucker",&textattr,BTID_Drucken,PLACETEXT_IN,visualinfo,NULL,
- XPOS(40),YPOS(31),XSIZE(25),YSIZE(2),"_Speichern & Ende",&textattr,BTID_Speichern,PLACETEXT_IN,visualinfo,NULL,
- };
-
-
- struct HauptfensterData gadgetdata = {
- /* belongs to a listview gadget */
- FALSE,
- (struct List *)~0,
- 0,
- 0,
- /* belongs to a button */
- FALSE,
- /* belongs to a button */
- FALSE,
- /* belongs to a button */
- FALSE,
- /* belongs to a button */
- FALSE,
- /* belongs to a button */
- FALSE,
- /* belongs to a button */
- FALSE,
- };
-
-
- struct NewMenu menu[] = { NM_TITLE, "Program" , 0 ,0,0,0,
- NM_ITEM , "About" ,"A",0,0,0,
- NM_END , NULL , 0 ,0,0,0 };
-
- height= YSIZE(height);
- width = XSIZE(width) ;
- if (left==-1) left = (customscreen->Width-width)/2;
- if (top ==-1) top = (customscreen->Height-height)/2;
-
- if (CreateGadgetsHauptfenster(&gadgetlist,newgad,wingads,&gadgetdata)!=NULL)
- {
- if (height>customscreen->Height || width>customscreen->Width) GUICreatorErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
- win=OpenWindowTags(NULL,WA_Activate, TRUE,
- WA_CloseGadget, TRUE,
- WA_DepthGadget, TRUE,
- WA_SizeGadget, TRUE,
- WA_DragBar, TRUE,
- WA_Gadgets, gadgetlist,
- WA_InnerHeight, height,
- WA_InnerWidth, width,
- WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_MENUPICK|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|BUTTONIDCMP|LISTVIEWIDCMP,
- WA_Left, left,
- WA_Top, top,
- WA_MaxHeight, maxheight,
- WA_MinHeight, height,
- WA_MaxWidth, maxwidth,
- WA_MinWidth, width,
- WA_SizeBRight, FALSE,
- WA_SizeBBottom, TRUE,
- WA_SmartRefresh, TRUE,
- WA_CustomScreen, customscreen,
- WA_Title, title,
- WA_NewLookMenus, TRUE,
- TAG_END);
- if (win)
- {
- menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
- if (menustrip)
- {
- if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
- {
- if (SetMenuStrip(win,menustrip))
- {
- struct IntuiMessage *imessage = NULL;
- struct Gadget *idcmpgad = NULL;
- struct NewGadget ngcopy[] = newgad;
- long double xscale = 1.0;
- long double yscale = 1.0;
- STRPTR stringpointer = NULL;
- ULONG i = 0;
- ULONG gadgetcount = 8;
- ULONG idcmpclass = 0;
- UWORD messagecode = 0;
- BOOL running = TRUE;
- ULONG signal = 0;
- ULONG longpointer1 = 0;
- ULONG longpointer2 = 0;
-
- SetFont(win->RPort,GfxBase->DefaultFont);
-
- GT_RefreshWindow(win,NULL);
-
- /* User-Setup */
- UserSetupHauptfenster(win,wingads,userdata);
- do
- {
- WindowLimits(win,width+win->BorderLeft+win->BorderRight,height+win->BorderTop+win->BorderBottom,maxwidth,maxheight);
- if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
- if (signal & SIGBREAKF_CTRL_C) running=FALSE;
- WindowLimits(win,win->Width,win->Height,win->Width,win->Height);
- while (running && (imessage=GT_GetIMsg(win->UserPort)))
- {
- idcmpgad=(struct Gadget *)imessage->IAddress;
- idcmpclass=imessage->Class;
- messagecode =imessage->Code;
-
- GT_ReplyIMsg(imessage);
-
- switch(idcmpclass)
- {
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh(win);
- GT_EndRefresh(win,TRUE);
- break;
- case IDCMP_MENUPICK:
- switch(MENUNUM(messagecode))
- {
- case 0:
- switch (ITEMNUM(messagecode))
- {
- case 0:
- About(win);
- break;
- }
- /* end-switch */
- break;
- }
- /* end-switch */
- break;
- case IDCMP_NEWSIZE:
- GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GA_Disabled,&longpointer1,GTLV_Labels,&longpointer2,TAG_END);
- gadgetdata.gd_Disabled_Listview=(longpointer1==0)?FALSE:TRUE;
- gadgetdata.gd_Labels_Listview=(struct List *)longpointer2;
- GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Top,&longpointer1,GTLV_Selected,&longpointer2,TAG_END);
- gadgetdata.gd_Top_Listview=longpointer1;
- gadgetdata.gd_Selected_Listview=longpointer2;
- GT_GetGadgetAttrs(wingads[BTID_Neu],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- gadgetdata.gd_Disabled_Neu=(longpointer1==0)?FALSE:TRUE;
- GT_GetGadgetAttrs(wingads[BTID_Aendern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- gadgetdata.gd_Disabled_Aendern=(longpointer1==0)?FALSE:TRUE;
- GT_GetGadgetAttrs(wingads[BTID_Loeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- gadgetdata.gd_Disabled_Loeschen=(longpointer1==0)?FALSE:TRUE;
- GT_GetGadgetAttrs(wingads[BTID_ListeLoeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- gadgetdata.gd_Disabled_ListeLoeschen=(longpointer1==0)?FALSE:TRUE;
- GT_GetGadgetAttrs(wingads[BTID_Drucken],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- gadgetdata.gd_Disabled_Drucken=(longpointer1==0)?FALSE:TRUE;
- GT_GetGadgetAttrs(wingads[BTID_Speichern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- gadgetdata.gd_Disabled_Speichern=(longpointer1==0)?FALSE:TRUE;
-
- RemoveGList(win,gadgetlist,-1);
- SetAPen(win->RPort,0L);
- RectFill(win->RPort,win->BorderLeft,win->BorderTop,win->Width-win->BorderRight-1,win->Height-win->BorderBottom-1);
- RefreshWindowFrame(win);
-
- xscale=(long double)win->Width /(long double)(width+win->BorderLeft+win->BorderRight);
- yscale=(long double)win->Height/(long double)(height+win->BorderTop+win->BorderBottom);
- for (i=0;i<gadgetcount;i++)
- {
- ngcopy[i].ng_LeftEdge=(WORD)((long double)newgad[i].ng_LeftEdge*xscale);
- ngcopy[i].ng_TopEdge =(WORD)((long double)newgad[i].ng_TopEdge *yscale);
- ngcopy[i].ng_Width =(WORD)((long double)newgad[i].ng_Width *xscale);
- ngcopy[i].ng_Height =(WORD)((long double)newgad[i].ng_Height *yscale);
- }
-
- FreeGadgets(gadgetlist);
- gadgetlist=NULL;
-
- CreateGadgetsHauptfenster(&gadgetlist,ngcopy,wingads,&gadgetdata);
- AddGList(win,gadgetlist,-1,-1,NULL);
- RefreshGList(gadgetlist,win,NULL,-1);
- GT_RefreshWindow(win,NULL);
-
- break;
- case IDCMP_VANILLAKEY:
- switch(messagecode)
- {
- case 'f':
- GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0)
- {
- GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
- GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
- GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
- if (longpointer2!=longpointer1)
- {
- HandleGadgetsHauptfenster(win,wingads,LVID_Listview,longpointer2,&gadgetdata,userdata);
- }
- }
- break;
- case 'F':
- GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0)
- {
- GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
- if (longpointer1!=0)
- {
- GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
- HandleGadgetsHauptfenster(win,wingads,LVID_Listview,longpointer1-1,&gadgetdata,userdata);
- }
- }
- break;
- case 'n':
- GT_GetGadgetAttrs(wingads[BTID_Neu],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Neu,messagecode,&gadgetdata,userdata);
- break;
- case 'e':
- GT_GetGadgetAttrs(wingads[BTID_Aendern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Aendern,messagecode,&gadgetdata,userdata);
- break;
- case 'l':
- GT_GetGadgetAttrs(wingads[BTID_Loeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Loeschen,messagecode,&gadgetdata,userdata);
- break;
- case 'i':
- GT_GetGadgetAttrs(wingads[BTID_ListeLoeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_ListeLoeschen,messagecode,&gadgetdata,userdata);
- break;
- case 'd':
- GT_GetGadgetAttrs(wingads[BTID_Drucken],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Drucken,messagecode,&gadgetdata,userdata);
- break;
- case 's':
- GT_GetGadgetAttrs(wingads[BTID_Speichern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Speichern,messagecode,&gadgetdata,userdata);
- break;
- case 27:
- running=FALSE;
- break;
- }
- break;
- case IDCMP_CLOSEWINDOW:
- running=FALSE;
- break;
- case IDCMP_GADGETUP:
- case MXIDCMP:
- HandleGadgetsHauptfenster(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
- break;
- }
- /* end-switch */
- }
- /* end-while */
- }
- while (running);
- ClearMenuStrip(win);
- }
- else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
- }
- else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
- FreeMenus(menustrip);
- }
- else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
- if (win) CloseWindow(win);
- }
- else GUICreatorErrorReport(win,ERROR_NO_WINDOW_OPENED);
- if (gadgetlist) FreeGadgets(gadgetlist);
- }
- else GUICreatorErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
- if (visualinfo) FreeVisualInfo(visualinfo);
- }
- else GUICreatorErrorReport(NULL,ERROR_NO_VISUALINFO);
- }
-
- void HandleEintrag(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
- {
- APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
- if (visualinfo)
- {
- struct Gadget *gadgetlist = NULL;
- struct Menu *menustrip = NULL;
- ULONG height=13,width=53,maxheight=1024,maxwidth=1280;
-
- struct Gadget *wingads[11];
-
- STRPTR title = "Eintrag";
- struct Window *win = NULL;
-
- struct TextAttr textattr = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
-
- struct NewGadget newgad[] = {
- XPOS(1),YPOS(1),XSIZE(10),YSIZE(2),"_Filmtitel:",&textattr,LAID_Gadget9,PLACETEXT_IN,visualinfo,NULL,
- XPOS(1),YPOS(4),XSIZE(10),YSIZE(2)," _Kassette:",&textattr,LAID_Gadget10,PLACETEXT_IN,visualinfo,NULL,
- XPOS(1),YPOS(7),XSIZE(10),YSIZE(2)," _Minuten:",&textattr,LAID_Gadget11,PLACETEXT_IN,visualinfo,NULL,
- XPOS(12),YPOS(1),XSIZE(40),YSIZE(2),NULL,&textattr,STID_Filmtitel,PLACETEXT_LEFT,visualinfo,NULL,
- XPOS(12),YPOS(4),XSIZE(8),YSIZE(2),NULL,&textattr,INID_Kassette,PLACETEXT_LEFT,visualinfo,NULL,
- XPOS(12),YPOS(7),XSIZE(8),YSIZE(2),NULL,&textattr,INID_Minuten,PLACETEXT_LEFT,visualinfo,NULL,
- XPOS(30),YPOS(4),XSIZE(22),YSIZE(2),NULL,&textattr,CYID_Quelle,PLACETEXT_ABOVE,visualinfo,NULL,
- XPOS(30),YPOS(7),XSIZE(22),YSIZE(2),NULL,&textattr,CYID_Art,PLACETEXT_ABOVE,visualinfo,NULL,
- XPOS(22),YPOS(4),XSIZE(7),YSIZE(2),"_Quelle:",&textattr,LAID_Gadget17,PLACETEXT_IN,visualinfo,NULL,
- XPOS(22),YPOS(7),XSIZE(7),YSIZE(2)," _Art:",&textattr,LAID_Gadget18,PLACETEXT_IN,visualinfo,NULL,
- XPOS(1),YPOS(10),XSIZE(51),YSIZE(2),"_Weiter",&textattr,BTID_Weiter,PLACETEXT_IN,visualinfo,NULL,
- };
- STRPTR LA_Quelle[] = { "Fernsehen","Videothek","selbst gedreht",NULL };
- STRPTR LA_Art[] = { "Science-Fiction","Karate","Western","Krimi","Action","Heimatfilm","Epos","Dokumentation","Zeichentrick","Abenteuer","Theater","Werbung","Horror","TV-Movie","Komödie","Liebesfilm","Sonstiges",NULL };
-
-
- struct EintragData gadgetdata = {
- /* belongs to a string gadget */
- FALSE,
- (char *)"",
- /* belongs to an integer gadget */
- FALSE,
- 0,
- /* belongs to an integer gadget */
- FALSE,
- 0,
- /* belongs to a cycle gadget */
- FALSE,
- 0,
- (STRPTR *)&LA_Quelle[0],
- /* belongs to a cycle gadget */
- FALSE,
- 0,
- (STRPTR *)&LA_Art[0],
- /* belongs to a button */
- FALSE,
- };
-
-
- struct NewMenu menu[] = { NM_TITLE, "Program" , 0 ,0,0,0,
- NM_ITEM , "About" ,"A",0,0,0,
- NM_END , NULL , 0 ,0,0,0 };
-
- height= YSIZE(height);
- width = XSIZE(width) ;
- if (left==-1) left = (customscreen->Width-width)/2;
- if (top ==-1) top = (customscreen->Height-height)/2;
-
- if (CreateGadgetsEintrag(&gadgetlist,newgad,wingads,&gadgetdata)!=NULL)
- {
- if (height>customscreen->Height || width>customscreen->Width) GUICreatorErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
- win=OpenWindowTags(NULL,WA_Activate, TRUE,
- WA_CloseGadget, TRUE,
- WA_DepthGadget, TRUE,
- WA_SizeGadget, TRUE,
- WA_DragBar, TRUE,
- WA_Gadgets, gadgetlist,
- WA_InnerHeight, height,
- WA_InnerWidth, width,
- WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_MENUPICK|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|BUTTONIDCMP|STRINGIDCMP|INTEGERIDCMP|CYCLEIDCMP,
- WA_Left, left,
- WA_Top, top,
- WA_MaxHeight, maxheight,
- WA_MinHeight, height,
- WA_MaxWidth, maxwidth,
- WA_MinWidth, width,
- WA_SizeBRight, FALSE,
- WA_SizeBBottom, TRUE,
- WA_SmartRefresh, TRUE,
- WA_CustomScreen, customscreen,
- WA_Title, title,
- WA_NewLookMenus, TRUE,
- TAG_END);
- if (win)
- {
- menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
- if (menustrip)
- {
- if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
- {
- if (SetMenuStrip(win,menustrip))
- {
- struct IntuiMessage *imessage = NULL;
- struct Gadget *idcmpgad = NULL;
- struct NewGadget ngcopy[] = newgad;
- long double xscale = 1.0;
- long double yscale = 1.0;
- STRPTR stringpointer = NULL;
- ULONG i = 0;
- ULONG gadgetcount = 11;
- ULONG idcmpclass = 0;
- UWORD messagecode = 0;
- BOOL running = TRUE;
- ULONG signal = 0;
- ULONG longpointer1 = 0;
- ULONG longpointer2 = 0;
-
- SetFont(win->RPort,GfxBase->DefaultFont);
-
- GT_RefreshWindow(win,NULL);
-
- /* User-Setup */
- UserSetupEintrag(win,wingads,userdata);
- do
- {
- WindowLimits(win,width+win->BorderLeft+win->BorderRight,height+win->BorderTop+win->BorderBottom,maxwidth,maxheight);
- if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
- if (signal & SIGBREAKF_CTRL_C) running=FALSE;
- WindowLimits(win,win->Width,win->Height,win->Width,win->Height);
- while (running && (imessage=GT_GetIMsg(win->UserPort)))
- {
- idcmpgad=(struct Gadget *)imessage->IAddress;
- idcmpclass=imessage->Class;
- messagecode =imessage->Code;
-
- GT_ReplyIMsg(imessage);
-
- switch(idcmpclass)
- {
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh(win);
- GT_EndRefresh(win,TRUE);
- break;
- case IDCMP_MENUPICK:
- switch(MENUNUM(messagecode))
- {
- case 0:
- switch (ITEMNUM(messagecode))
- {
- case 0:
- About(win);
- break;
- }
- /* end-switch */
- break;
- }
- /* end-switch */
- break;
- case IDCMP_NEWSIZE:
- GT_GetGadgetAttrs(wingads[STID_Filmtitel],win,NULL,GA_Disabled,&longpointer1,GTST_String,&stringpointer,TAG_END);
- gadgetdata.gd_Disabled_Filmtitel=(longpointer1==0)?FALSE:TRUE;
- strcpy(gadgetdata.gd_String_Filmtitel,stringpointer);
- GT_GetGadgetAttrs(wingads[INID_Kassette],win,NULL,GA_Disabled,&longpointer1,GTIN_Number,&longpointer2,TAG_END);
- gadgetdata.gd_Disabled_Kassette=(longpointer1==0)?FALSE:TRUE;
- gadgetdata.gd_Number_Kassette=longpointer2;
- GT_GetGadgetAttrs(wingads[INID_Minuten],win,NULL,GA_Disabled,&longpointer1,GTIN_Number,&longpointer2,TAG_END);
- gadgetdata.gd_Disabled_Minuten=(longpointer1==0)?FALSE:TRUE;
- gadgetdata.gd_Number_Minuten=longpointer2;
- GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GA_Disabled,&longpointer1,GTCY_Active,&longpointer2,TAG_END);
- gadgetdata.gd_Disabled_Quelle=(longpointer1==0)?FALSE:TRUE;
- gadgetdata.gd_Active_Quelle=longpointer2;
- GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Labels,&longpointer1,TAG_END);
- gadgetdata.gd_Labels_Quelle=(STRPTR *)longpointer1;
- GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GA_Disabled,&longpointer1,GTCY_Active,&longpointer2,TAG_END);
- gadgetdata.gd_Disabled_Art=(longpointer1==0)?FALSE:TRUE;
- gadgetdata.gd_Active_Art=longpointer2;
- GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Labels,&longpointer1,TAG_END);
- gadgetdata.gd_Labels_Art=(STRPTR *)longpointer1;
- GT_GetGadgetAttrs(wingads[BTID_Weiter],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- gadgetdata.gd_Disabled_Weiter=(longpointer1==0)?FALSE:TRUE;
-
- RemoveGList(win,gadgetlist,-1);
- SetAPen(win->RPort,0L);
- RectFill(win->RPort,win->BorderLeft,win->BorderTop,win->Width-win->BorderRight-1,win->Height-win->BorderBottom-1);
- RefreshWindowFrame(win);
-
- xscale=(long double)win->Width /(long double)(width+win->BorderLeft+win->BorderRight);
- yscale=(long double)win->Height/(long double)(height+win->BorderTop+win->BorderBottom);
- for (i=0;i<gadgetcount;i++)
- {
- ngcopy[i].ng_LeftEdge=(WORD)((long double)newgad[i].ng_LeftEdge*xscale);
- ngcopy[i].ng_TopEdge =(WORD)((long double)newgad[i].ng_TopEdge *yscale);
- ngcopy[i].ng_Width =(WORD)((long double)newgad[i].ng_Width *xscale);
- ngcopy[i].ng_Height =(WORD)((long double)newgad[i].ng_Height *yscale);
- }
-
- FreeGadgets(gadgetlist);
- gadgetlist=NULL;
-
- CreateGadgetsEintrag(&gadgetlist,ngcopy,wingads,&gadgetdata);
- AddGList(win,gadgetlist,-1,-1,NULL);
- RefreshGList(gadgetlist,win,NULL,-1);
- GT_RefreshWindow(win,NULL);
-
- break;
- case IDCMP_VANILLAKEY:
- switch(messagecode)
- {
- case 'f':
- GT_GetGadgetAttrs(wingads[STID_Filmtitel],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) ActivateGadget(wingads[STID_Filmtitel],win,NULL);
- break;
- case 'k':
- GT_GetGadgetAttrs(wingads[INID_Kassette],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) ActivateGadget(wingads[INID_Kassette],win,NULL);
- break;
- case 'm':
- GT_GetGadgetAttrs(wingads[INID_Minuten],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) ActivateGadget(wingads[INID_Minuten],win,NULL);
- break;
- case 'q':
- GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0)
- {
- GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,&longpointer1,TAG_END);
- if (++longpointer1==3) longpointer1=0;
- GT_SetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,longpointer1,TAG_END);
- HandleGadgetsEintrag(win,wingads,CYID_Quelle,longpointer1,&gadgetdata,userdata);
- }
- break;
- case 'Q':
- GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0)
- {
- GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,&longpointer1,TAG_END);
- if (longpointer1==0) longpointer1=3;
- longpointer1--;
- GT_SetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,longpointer1,TAG_END);
- HandleGadgetsEintrag(win,wingads,CYID_Quelle,longpointer1,&gadgetdata,userdata);
- }
- break;
- case 'a':
- GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0)
- {
- GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,&longpointer1,TAG_END);
- if (++longpointer1==17) longpointer1=0;
- GT_SetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,longpointer1,TAG_END);
- HandleGadgetsEintrag(win,wingads,CYID_Art,longpointer1,&gadgetdata,userdata);
- }
- break;
- case 'A':
- GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0)
- {
- GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,&longpointer1,TAG_END);
- if (longpointer1==0) longpointer1=17;
- longpointer1--;
- GT_SetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,longpointer1,TAG_END);
- HandleGadgetsEintrag(win,wingads,CYID_Art,longpointer1,&gadgetdata,userdata);
- }
- break;
- case 'w':
- GT_GetGadgetAttrs(wingads[BTID_Weiter],win,NULL,GA_Disabled,&longpointer1,TAG_END);
- if (longpointer1==0) HandleGadgetsEintrag(win,wingads,BTID_Weiter,messagecode,&gadgetdata,userdata);
- break;
- case 27:
- running=!EintragCloseWindow(win,wingads,userdata);
- break;
- }
- break;
- case IDCMP_CLOSEWINDOW:
- running=!EintragCloseWindow(win,wingads,userdata);
- break;
- case IDCMP_GADGETUP:
- case MXIDCMP:
- HandleGadgetsEintrag(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
- break;
- }
- /* end-switch */
- }
- /* end-while */
- }
- while (running);
- ClearMenuStrip(win);
- }
- else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
- }
- else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
- FreeMenus(menustrip);
- }
- else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
- if (win) CloseWindow(win);
- }
- else GUICreatorErrorReport(win,ERROR_NO_WINDOW_OPENED);
- if (gadgetlist) FreeGadgets(gadgetlist);
- }
- else GUICreatorErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
- if (visualinfo) FreeVisualInfo(visualinfo);
- }
- else GUICreatorErrorReport(NULL,ERROR_NO_VISUALINFO);
- }
-
-