home *** CD-ROM | disk | FTP | other *** search
/ The AGA Experience 2 / agavol2.iso / software / utilities / programmers / misc / guicreator / demos / videothek / videothek_temp.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-20  |  10.4 KB  |  271 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #include <exec/types.h>
  6. #include <graphics/gfxbase.h>
  7. #include <intuition/gadgetclass.h>
  8.  
  9. #include <clib/alib_protos.h>
  10. #include <clib/exec_protos.h>
  11. #include <clib/intuition_protos.h>
  12. #include <clib/gadtools_protos.h>
  13. #include <clib/graphics_protos.h>
  14. #include <clib/dos_protos.h>
  15.  
  16. #include "Videothek.h"
  17. #include "Videothek_AppStruct.h"
  18. #include "Videothek_MyFunctions.h"
  19.  
  20. /*************************************************************************/
  21. /*                                                                       */
  22. /*   Unterprogramme ListeAnzeigen()                                      */
  23. /*                                                                       */
  24. /*************************************************************************/
  25.  
  26. void ListeAnzeigen(struct Window *win,struct Gadget *wingads[],struct App *userdata)
  27. {
  28.    char string[80];
  29.    Eintrag *E;
  30.  
  31.    FreeNameNodes(userdata->Eintraege);
  32.    NewList(userdata->Eintraege);
  33.  
  34.    for (E=userdata->ListeEintraege.anfang;E;E=E->next)
  35.       {
  36.       sprintf(string,  "%4d %4d Minuten  %s",E->Kassette,E->Minuten,E->Filmtitel);
  37.       AddName(userdata->Eintraege,string);
  38.       }
  39.  
  40.    GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Labels,~0,TAG_END);
  41.    GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Labels,userdata->Eintraege,GTLV_Selected,userdata->EintragAKTUELL,TAG_END);
  42.    GT_RefreshWindow(win,NULL);
  43. }
  44.  
  45. /* Functions for Hauptfenster */
  46.  
  47. void UserSetupHauptfenster(struct Window *win,struct Gadget *wingads[],APTR userdata)
  48. {
  49.    ListeAnzeigen(win,wingads,userdata);
  50. }
  51.  
  52. void ListviewClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  53. {
  54.    ((struct App *)userdata)->EintragAKTUELL=messagecode;
  55. }
  56.  
  57. void NeuClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  58. {
  59.    SleepWindow(win);
  60.    ((struct App *)userdata)->Mode=Neu;
  61.    strcpy(((struct App *)userdata)->NeuerEintrag.Filmtitel,"");
  62.    ((struct App *)userdata)->NeuerEintrag.Minuten=0;
  63.    HandleEintrag(win->WScreen,-1,-1,userdata);
  64.    ListeAnzeigen(win,wingads,userdata);
  65.    WakenWindow(win);
  66. }
  67.  
  68. void AendernClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  69. {
  70.    if (((struct App *)userdata)->ListeEintraege.anfang!=NULL)
  71.       {
  72.       int i;
  73.       Eintrag *E=((struct App *)userdata)->ListeEintraege.anfang;
  74.       ((struct App *)userdata)->Mode=Aendern;
  75.       SleepWindow(win);
  76.  
  77.       for (i=0;i<((struct App *)userdata)->EintragAKTUELL;i++) E=E->next;
  78.  
  79.       strcpy(((struct App *)userdata)->NeuerEintrag.Filmtitel,E->Filmtitel);
  80.       ((struct App *)userdata)->NeuerEintrag.Kassette = E->Kassette;
  81.       ((struct App *)userdata)->NeuerEintrag.Minuten  = E->Minuten;
  82.       ((struct App *)userdata)->NeuerEintrag.Quelle   = E->Quelle;
  83.       ((struct App *)userdata)->NeuerEintrag.Art      = E->Art;
  84.  
  85.       HandleEintrag(win->WScreen,-1,-1,userdata);
  86.  
  87.       Loeschen(((struct App *)userdata)->ListeEintraege,E);
  88.  
  89.       ListeAnzeigen(win,wingads,userdata);
  90.       WakenWindow(win);
  91.       }
  92.    else DisplayBeep(NULL);
  93.  
  94. }
  95.  
  96. void LoeschenClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  97. {
  98.    if (((struct App *)userdata)->ListeEintraege.anfang!=NULL)
  99.       {
  100.       int i;
  101.       Eintrag *E=((struct App *)userdata)->ListeEintraege.anfang;
  102.       for (i=0;i<((struct App *)userdata)->EintragAKTUELL;i++) E=E->next;
  103.       Loeschen(((struct App *)userdata)->ListeEintraege,E);
  104.       ((struct App *)userdata)->EintragAKTUELL-=1;
  105.       if (((struct App *)userdata)->EintragAKTUELL<0) ((struct App *)userdata)->EintragAKTUELL=0;
  106.       ListeAnzeigen(win,wingads,userdata);
  107.       }
  108.    else DisplayBeep(NULL);
  109. }
  110.  
  111. void ListeLoeschenClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  112. {
  113.    if (((struct App *)userdata)->ListeEintraege.anfang!=NULL)
  114.       {
  115.       AllesLoeschen(((struct App *)userdata)->ListeEintraege);
  116.       Init(((struct App *)userdata)->ListeEintraege);
  117.       ((struct App *)userdata)->EintragAKTUELL=0;
  118.       ListeAnzeigen(win,wingads,userdata);
  119.       }
  120.    else DisplayBeep(NULL);
  121. }
  122.  
  123. void DruckenClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  124. {
  125.    char INITIALIZE[] = " #1";
  126.    char ITALIC_ON[]  = " [3m" ;
  127.    char ITALIC_OFF[] = " [23m";
  128.    char DOUBLE_ON[]  = " [4\"z" ;
  129.    char DOUBLE_OFF[] = " [3\"z" ;
  130.  
  131.    INITIALIZE[0]=27;
  132.    ITALIC_ON[0] =27;
  133.    ITALIC_OFF[0]=27;
  134.    DOUBLE_ON[0] =27;
  135.    DOUBLE_OFF[0]=27;
  136.  
  137.    SleepWindow(win);
  138.  
  139.    if (((struct App *)userdata)->ListeEintraege.anfang!=NULL)
  140.       {
  141.       int i=0,l=0,seite=0;
  142.       char string[20];
  143.       Eintrag *E=NULL;
  144.       BPTR fp=Open("PRT:",MODE_NEWFILE);
  145.       if (fp)
  146.          {
  147.          FPrintf(fp,"%s                      =====================================\n",DOUBLE_ON);
  148.          FPrintf(fp,"                      =  L I S T E   V I D E O F I L M E  =\n");
  149.          FPrintf(fp,"                      =====================================%s\n\n",DOUBLE_OFF);
  150.          FPrintf(fp," Kass. | Minuten |                 Filmtitel                  |       Art\n");
  151.          FPrintf(fp,"--------------------------------------------------------------------------------\n");
  152.  
  153.          for (E=((struct App *)userdata)->ListeEintraege.anfang;E;E=E->next)
  154.             {
  155.             FPrintf(fp," %4ld  |  %4ld   | %s",E->Kassette,E->Minuten,E->Filmtitel);
  156.             for (i=0;i<42-strlen(E->Filmtitel);i++) FPrintf(fp," ");
  157.             FPrintf(fp," | %15s\n","Art");
  158.             l+=1;
  159.             if (l==((struct App *)userdata)->SeitenLAENGE-8) // Seite ist zu Ende
  160.                {
  161.                seite+=1;
  162.                sprintf(string,"Seite: %d",seite);
  163.                FPrintf(fp,"--------------------------------------------------------------------------------\n");
  164.                FPrintf(fp,"%s%77s%s\n",ITALIC_ON,string,ITALIC_OFF);
  165.                FPrintf(fp,"%s                      =====================================\n",DOUBLE_ON);
  166.                FPrintf(fp,"                      =  L I S T E   V I D E O F I L M E  =\n");
  167.                FPrintf(fp,"                      =====================================%s\n\n",DOUBLE_OFF);
  168.                FPrintf(fp," Kass. | Minuten |                 Filmtitel                  |       Art\n");
  169.                FPrintf(fp,"--------------------------------------------------------------------------------\n");
  170.                l=0;
  171.                }
  172.             }
  173.          for (i=0;i<((struct App *)userdata)->SeitenLAENGE-8-l;i++) FPrintf(fp,"\n");
  174.          seite+=1;
  175.          sprintf(string,"Seite: %d",seite);
  176.          FPrintf(fp,"--------------------------------------------------------------------------------\n");
  177.          FPrintf(fp,"%s%77s%s\n",ITALIC_ON,string,ITALIC_OFF);
  178.          Close(fp);
  179.          }
  180.       else GUICreatorErrorReport(NULL,IoErr());
  181.       }
  182.    else DisplayBeep(NULL);
  183.    WakenWindow(win);
  184.  
  185. }
  186.  
  187. void SpeichernClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  188. {
  189.    SaveData(userdata);
  190.    Signal(FindTask(NULL),SIGBREAKF_CTRL_C);
  191. }
  192.  
  193.  
  194. /* Functions for Eintrag */
  195.  
  196. void UserSetupEintrag(struct Window *win,struct Gadget *wingads[],APTR userdata)
  197. {
  198.    struct Eintrag *E=userdata;
  199.  
  200.    if (((struct App *)userdata)->Mode==Neu)
  201.       {
  202.       GT_SetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,((struct App *)userdata)->QuelleAKTUELL,TAG_END);
  203.       GT_SetGadgetAttrs(wingads[CYID_Art   ],win,NULL,GTCY_Active,((struct App *)userdata)->ArtAKTUELL   ,TAG_END);
  204.       GT_RefreshWindow(win,NULL);
  205.       ActivateGadget(wingads[STID_Filmtitel],win,NULL);
  206.       }
  207.    else
  208.       {
  209.       GT_SetGadgetAttrs(wingads[STID_Filmtitel],win,NULL,GTST_String,((struct App *)userdata)->NeuerEintrag.Filmtitel,TAG_END);
  210.       GT_SetGadgetAttrs(wingads[INID_Kassette ],win,NULL,GTIN_Number,((struct App *)userdata)->NeuerEintrag.Kassette ,TAG_END);
  211.       GT_SetGadgetAttrs(wingads[INID_Minuten  ],win,NULL,GTIN_Number,((struct App *)userdata)->NeuerEintrag.Minuten  ,TAG_END);
  212.       GT_SetGadgetAttrs(wingads[CYID_Quelle   ],win,NULL,GTCY_Active,((struct App *)userdata)->NeuerEintrag.Quelle   ,TAG_END);
  213.       GT_SetGadgetAttrs(wingads[CYID_Art      ],win,NULL,GTCY_Active,((struct App *)userdata)->NeuerEintrag.Art      ,TAG_END);
  214.       GT_RefreshWindow(win,NULL);
  215.       ActivateGadget(wingads[STID_Filmtitel],win,NULL);
  216.       }
  217.  
  218. }
  219.  
  220. BOOL EintragCloseWindow(struct Window *win,struct Gadget *wingads[],APTR userdata)
  221. {
  222.    if (((struct App *)userdata)->Mode==Aendern) // gelöschten Eintrag wieder einfügen
  223.       {
  224.       Einfueg(((struct App *)userdata)->ListeEintraege,&((struct App *)userdata)->NeuerEintrag);
  225.       }
  226.    return TRUE;
  227. }
  228.  
  229. void FilmtitelClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  230. {
  231.    strcpy(((struct App *)userdata)->NeuerEintrag.Filmtitel,((struct StringInfo *)wingads[gadgetid]->SpecialInfo)->Buffer);
  232.    ActivateGadget(wingads[INID_Kassette],win,NULL);
  233. }
  234.  
  235. void KassetteClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  236. {
  237.    ((struct App *)userdata)->NeuerEintrag.Kassette=atoi(((struct StringInfo *)wingads[gadgetid]->SpecialInfo)->Buffer);
  238.    ActivateGadget(wingads[INID_Minuten],win,NULL);
  239. }
  240.  
  241. void MinutenClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  242. {
  243.    ((struct App *)userdata)->NeuerEintrag.Minuten=atoi(((struct StringInfo *)wingads[gadgetid]->SpecialInfo)->Buffer);
  244. }
  245.  
  246. void QuelleClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  247. {
  248.    ((struct App *)userdata)->QuelleAKTUELL=messagecode;
  249.    ((struct App *)userdata)->NeuerEintrag.Quelle=((struct App *)userdata)->QuelleAKTUELL;
  250. }
  251.  
  252. void ArtClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  253. {
  254.    ((struct App *)userdata)->ArtAKTUELL=messagecode;
  255.    ((struct App *)userdata)->NeuerEintrag.Art=((struct App *)userdata)->ArtAKTUELL;
  256. }
  257.  
  258. void WeiterClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
  259. {
  260.    if (strcmp(((struct App *)userdata)->NeuerEintrag.Filmtitel,"") && ((struct App *)userdata)->NeuerEintrag.Minuten>0)
  261.       {
  262.       Einfueg(((struct App *)userdata)->ListeEintraege,&((struct App *)userdata)->NeuerEintrag);
  263.       Signal(FindTask(NULL),SIGBREAKF_CTRL_C);
  264.       }
  265.    else
  266.       {
  267.       DisplayBeep(NULL);
  268.       ActivateGadget(wingads[STID_Filmtitel],win,NULL);
  269.       }
  270. }
  271.