home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / guicreator / demos / printer.c < prev    next >
C/C++ Source or Header  |  1977-12-31  |  39KB  |  587 lines

  1. /*************************************************************************/
  2. /*                                                                       */
  3. /*   Includes                                                            */
  4. /*                                                                       */
  5. /*************************************************************************/
  6.  
  7. #include "Printer_Includes.h"
  8. #include "Printer.h"
  9.  
  10. /*************************************************************************/
  11. /*                                                                       */
  12. /*   Variables and Structures                                            */
  13. /*                                                                       */
  14. /*************************************************************************/
  15.  
  16. extern struct IntuitionBase   *IntuitionBase;
  17. extern struct GfxBase         *GfxBase;
  18.  
  19. extern struct Library *GadToolsBase ;
  20. extern struct Library *AslBase      ;
  21. extern struct Library *DataTypesBase;
  22.  
  23. /*************************************************************************/
  24. /*                                                                       */
  25. /*   Defines                                                             */
  26. /*                                                                       */
  27. /*************************************************************************/
  28.  
  29. #define RASTERX (GfxBase->DefaultFont->tf_XSize)
  30. #define RASTERY (GfxBase->DefaultFont->tf_YSize/2+4)
  31.  
  32. #define XSIZE(x)  ((x)*RASTERX)
  33. #define YSIZE(x)  ((x)*RASTERY)
  34.  
  35. #define XPOS(x)   (XSIZE(x)+customscreen->WBorLeft)
  36. #define YPOS(x)   (YSIZE(x)+customscreen->BarHeight+1)
  37.  
  38. #define ERROR_NO_WINDOW_OPENED      1001L
  39. #define ERROR_NO_PUBSCREEN_LOCKED   1002L
  40. #define ERROR_NO_GADGETS_CREATED    1003L
  41. #define ERROR_NO_VISUALINFO         1004L
  42. #define ERROR_NO_PICTURE_LOADED     1005L
  43. #define ERROR_NO_GADGETLIST_CREATED 1006L
  44. #define ERROR_NO_WINDOW_MENU        1007L
  45.  
  46.  
  47. struct PrinterPrefsWindowData
  48.    {
  49.    BOOL    gd_Disabled_Gadget2;
  50.    struct List *gd_Labels_Gadget2;
  51.    UWORD   gd_Selected_Gadget2;
  52.    UWORD   gd_Top_Gadget2;
  53.    BOOL    gd_Disabled_Gadget3;
  54.    BOOL    gd_Disabled_Gadget5;
  55.    BOOL    gd_Disabled_Gadget4;
  56.    BOOL    gd_Disabled_Gadget6;
  57.    UWORD   gd_Active_Gadget6;
  58.    STRPTR *gd_Labels_Gadget6;
  59.    BOOL    gd_Disabled_Gadget7;
  60.    UWORD   gd_Active_Gadget7;
  61.    STRPTR *gd_Labels_Gadget7;
  62.    BOOL    gd_Disabled_Gadget8;
  63.    UWORD   gd_Active_Gadget8;
  64.    STRPTR *gd_Labels_Gadget8;
  65.    BOOL    gd_Disabled_Gadget9;
  66.    UWORD   gd_Active_Gadget9;
  67.    STRPTR *gd_Labels_Gadget9;
  68.    BOOL    gd_Disabled_Gadget10;
  69.    UWORD   gd_Active_Gadget10;
  70.    STRPTR *gd_Labels_Gadget10;
  71.    BOOL    gd_Disabled_Gadget11;
  72.    UWORD   gd_Active_Gadget11;
  73.    STRPTR *gd_Labels_Gadget11;
  74.    BOOL    gd_Disabled_Gadget12;
  75.    ULONG   gd_Number_Gadget12;
  76.    BOOL    gd_Disabled_Gadget13;
  77.    ULONG   gd_Number_Gadget13;
  78.    BOOL    gd_Disabled_Gadget14;
  79.    ULONG   gd_Number_Gadget14;
  80.    };
  81.  
  82. /*************************************************************************/
  83. /*                                                                       */
  84. /*   Routines to handle gadgets                                          */
  85. /*                                                                       */
  86. /*************************************************************************/
  87.  
  88.  
  89. void HandleGadgetsPrinterPrefsWindow(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct PrinterPrefsWindowData *gadgetdata,APTR userdata)
  90. {
  91.    switch(gadgetid)
  92.       {
  93.       case LVID_Gadget2:
  94.          Gadget2Clicked(win,wingads,gadgetid,messagecode,userdata);
  95.          break;
  96.       case BTID_Gadget3:
  97.          Gadget3Clicked(win,wingads,gadgetid,messagecode,userdata);
  98.          break;
  99.       case BTID_Gadget5:
  100.          Gadget5Clicked(win,wingads,gadgetid,messagecode,userdata);
  101.          break;
  102.       case BTID_Gadget4:
  103.          Gadget4Clicked(win,wingads,gadgetid,messagecode,userdata);
  104.          break;
  105.       case CYID_Gadget6:
  106.          Gadget6Clicked(win,wingads,gadgetid,messagecode,userdata);
  107.          break;
  108.       case CYID_Gadget7:
  109.          Gadget7Clicked(win,wingads,gadgetid,messagecode,userdata);
  110.          break;
  111.       case CYID_Gadget8:
  112.          Gadget8Clicked(win,wingads,gadgetid,messagecode,userdata);
  113.          break;
  114.       case CYID_Gadget9:
  115.          Gadget9Clicked(win,wingads,gadgetid,messagecode,userdata);
  116.          break;
  117.       case CYID_Gadget10:
  118.          Gadget10Clicked(win,wingads,gadgetid,messagecode,userdata);
  119.          break;
  120.       case CYID_Gadget11:
  121.          Gadget11Clicked(win,wingads,gadgetid,messagecode,userdata);
  122.          break;
  123.       case INID_Gadget12:
  124.          Gadget12Clicked(win,wingads,gadgetid,messagecode,userdata);
  125.          break;
  126.       case INID_Gadget13:
  127.          Gadget13Clicked(win,wingads,gadgetid,messagecode,userdata);
  128.          break;
  129.       case INID_Gadget14:
  130.          Gadget14Clicked(win,wingads,gadgetid,messagecode,userdata);
  131.          break;
  132.       };
  133. }
  134.  
  135.  
  136. /*************************************************************************/
  137. /*                                                                       */
  138. /*   Routines to create gadgets                                          */
  139. /*                                                                       */
  140. /*************************************************************************/
  141.  
  142.  
  143. struct Gadget *CreateGadgetsPrinterPrefsWindow(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct PrinterPrefsWindowData *gadgetdata)
  144. {
  145.    struct Gadget *gadget=CreateContext(gadgetlist);
  146.    if (gadget)
  147.       {
  148.       wingads[LAID_Gadget1]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget1],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  149.       wingads[LVID_Gadget2]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_Gadget2],GA_Disabled,gadgetdata->gd_Disabled_Gadget2,GTLV_Labels,gadgetdata->gd_Labels_Gadget2,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_Gadget2,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_Gadget2,LAYOUTA_Spacing,0,TAG_END);
  150.       wingads[BTID_Gadget3]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget3],GA_Disabled,gadgetdata->gd_Disabled_Gadget3,GT_Underscore,'_',TAG_END);
  151.       wingads[BTID_Gadget5]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget5],GA_Disabled,gadgetdata->gd_Disabled_Gadget5,GT_Underscore,'_',TAG_END);
  152.       wingads[BTID_Gadget4]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget4],GA_Disabled,gadgetdata->gd_Disabled_Gadget4,GT_Underscore,'_',TAG_END);
  153.       wingads[CYID_Gadget6]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Gadget6],GA_Disabled,gadgetdata->gd_Disabled_Gadget6,GTCY_Labels,gadgetdata->gd_Labels_Gadget6,GTCY_Active,gadgetdata->gd_Active_Gadget6,TAG_END);
  154.       wingads[CYID_Gadget7]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Gadget7],GA_Disabled,gadgetdata->gd_Disabled_Gadget7,GTCY_Labels,gadgetdata->gd_Labels_Gadget7,GTCY_Active,gadgetdata->gd_Active_Gadget7,TAG_END);
  155.       wingads[CYID_Gadget8]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Gadget8],GA_Disabled,gadgetdata->gd_Disabled_Gadget8,GTCY_Labels,gadgetdata->gd_Labels_Gadget8,GTCY_Active,gadgetdata->gd_Active_Gadget8,TAG_END);
  156.       wingads[CYID_Gadget9]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Gadget9],GA_Disabled,gadgetdata->gd_Disabled_Gadget9,GTCY_Labels,gadgetdata->gd_Labels_Gadget9,GTCY_Active,gadgetdata->gd_Active_Gadget9,TAG_END);
  157.       wingads[CYID_Gadget10]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Gadget10],GA_Disabled,gadgetdata->gd_Disabled_Gadget10,GTCY_Labels,gadgetdata->gd_Labels_Gadget10,GTCY_Active,gadgetdata->gd_Active_Gadget10,TAG_END);
  158.       wingads[CYID_Gadget11]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Gadget11],GA_Disabled,gadgetdata->gd_Disabled_Gadget11,GTCY_Labels,gadgetdata->gd_Labels_Gadget11,GTCY_Active,gadgetdata->gd_Active_Gadget11,TAG_END);
  159.       wingads[INID_Gadget12]=gadget=CreateGadget(INTEGER_KIND,gadget,&newgad[INID_Gadget12],GA_Disabled,gadgetdata->gd_Disabled_Gadget12,GA_TabCycle,TRUE,GTIN_MaxChars,2,GTIN_Number,gadgetdata->gd_Number_Gadget12,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGCENTER,STRINGA_ReplaceMode,FALSE,TAG_END);
  160.       wingads[INID_Gadget13]=gadget=CreateGadget(INTEGER_KIND,gadget,&newgad[INID_Gadget13],GA_Disabled,gadgetdata->gd_Disabled_Gadget13,GA_TabCycle,TRUE,GTIN_MaxChars,2,GTIN_Number,gadgetdata->gd_Number_Gadget13,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGCENTER,STRINGA_ReplaceMode,FALSE,TAG_END);
  161.       wingads[INID_Gadget14]=gadget=CreateGadget(INTEGER_KIND,gadget,&newgad[INID_Gadget14],GA_Disabled,gadgetdata->gd_Disabled_Gadget14,GA_TabCycle,TRUE,GTIN_MaxChars,3,GTIN_Number,gadgetdata->gd_Number_Gadget14,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGCENTER,STRINGA_ReplaceMode,FALSE,TAG_END);
  162.       wingads[LAID_Gadget15]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget15],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  163.       wingads[LAID_Gadget16]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget16],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  164.       wingads[LAID_Gadget18]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget18],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  165.       wingads[LAID_Gadget19]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget19],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  166.       wingads[LAID_Gadget20]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget20],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  167.       wingads[LAID_Gadget21]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget21],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  168.       wingads[LAID_Gadget22]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget22],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  169.       wingads[LAID_Gadget23]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget23],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  170.       wingads[LAID_Gadget24]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget24],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  171.       return gadget;
  172.       }
  173.    else return NULL;
  174. }
  175.  
  176.  
  177. /*************************************************************************/
  178. /*                                                                       */
  179. /*   Routines to handle windows                                          */
  180. /*                                                                       */
  181. /*************************************************************************/
  182.  
  183.  
  184. void HandlePrinterPrefsWindow(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
  185. {
  186.    APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
  187.    if (visualinfo)
  188.       {
  189.       struct Gadget  *gadgetlist = NULL;
  190.       struct Menu    *menustrip  = NULL;
  191.       ULONG height=26,width=63,maxheight=1024,maxwidth=1280;
  192.  
  193.       struct Gadget *wingads[23];
  194.  
  195.       STRPTR title                  = "Printer Preferences";
  196.       struct Window     *win        = NULL;
  197.  
  198.       struct TextAttr   textattr    = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
  199.  
  200.       struct NewGadget  newgad[]    = {
  201.                                         XPOS(1),YPOS(0),XSIZE(21),YSIZE(2),"_Printer Type:",&textattr,LAID_Gadget1,PLACETEXT_IN,visualinfo,NULL,
  202.                                         XPOS(1),YPOS(2),XSIZE(21),YSIZE(20),NULL,&textattr,LVID_Gadget2,PLACETEXT_ABOVE,visualinfo,NULL,
  203.                                         XPOS(1),YPOS(23),XSIZE(15),YSIZE(2),"_Save",&textattr,BTID_Gadget3,PLACETEXT_IN,visualinfo,NULL,
  204.                                         XPOS(24),YPOS(23),XSIZE(16),YSIZE(2),"_Use",&textattr,BTID_Gadget5,PLACETEXT_IN,visualinfo,NULL,
  205.                                         XPOS(47),YPOS(23),XSIZE(15),YSIZE(2),"_Cancel",&textattr,BTID_Gadget4,PLACETEXT_IN,visualinfo,NULL,
  206.                                         XPOS(41),YPOS(1),XSIZE(21),YSIZE(2),NULL,&textattr,CYID_Gadget6,PLACETEXT_ABOVE,visualinfo,NULL,
  207.                                         XPOS(41),YPOS(4),XSIZE(21),YSIZE(2),NULL,&textattr,CYID_Gadget7,PLACETEXT_ABOVE,visualinfo,NULL,
  208.                                         XPOS(41),YPOS(6),XSIZE(21),YSIZE(2),NULL,&textattr,CYID_Gadget8,PLACETEXT_ABOVE,visualinfo,NULL,
  209.                                         XPOS(41),YPOS(8),XSIZE(21),YSIZE(2),NULL,&textattr,CYID_Gadget9,PLACETEXT_ABOVE,visualinfo,NULL,
  210.                                         XPOS(41),YPOS(11),XSIZE(21),YSIZE(2),NULL,&textattr,CYID_Gadget10,PLACETEXT_ABOVE,visualinfo,NULL,
  211.                                         XPOS(41),YPOS(13),XSIZE(21),YSIZE(2),NULL,&textattr,CYID_Gadget11,PLACETEXT_ABOVE,visualinfo,NULL,
  212.                                         XPOS(52),YPOS(16),XSIZE(10),YSIZE(2),NULL,&textattr,INID_Gadget12,PLACETEXT_LEFT,visualinfo,NULL,
  213.                                         XPOS(52),YPOS(18),XSIZE(10),YSIZE(2),NULL,&textattr,INID_Gadget13,PLACETEXT_LEFT,visualinfo,NULL,
  214.                                         XPOS(52),YPOS(20),XSIZE(10),YSIZE(2),NULL,&textattr,INID_Gadget14,PLACETEXT_LEFT,visualinfo,NULL,
  215.                                         XPOS(24),YPOS(1),XSIZE(16),YSIZE(2),"Printer P_ort   :",&textattr,LAID_Gadget15,PLACETEXT_IN,visualinfo,NULL,
  216.                                         XPOS(24),YPOS(4),XSIZE(16),YSIZE(2),"Print P_itch    :",&textattr,LAID_Gadget16,PLACETEXT_IN,visualinfo,NULL,
  217.                                         XPOS(24),YPOS(6),XSIZE(16),YSIZE(2),"Print Sp_acing  :",&textattr,LAID_Gadget18,PLACETEXT_IN,visualinfo,NULL,
  218.                                         XPOS(24),YPOS(8),XSIZE(16),YSIZE(2),"Print _Quality  :",&textattr,LAID_Gadget19,PLACETEXT_IN,visualinfo,NULL,
  219.                                         XPOS(24),YPOS(11),XSIZE(16),YSIZE(2),"Paper Typ_e     :",&textattr,LAID_Gadget20,PLACETEXT_IN,visualinfo,NULL,
  220.                                         XPOS(24),YPOS(13),XSIZE(16),YSIZE(2),"Paper _Format   :",&textattr,LAID_Gadget21,PLACETEXT_IN,visualinfo,NULL,
  221.                                         XPOS(24),YPOS(16),XSIZE(27),YSIZE(2),"Paper _Length (lines)      :",&textattr,LAID_Gadget22,PLACETEXT_IN,visualinfo,NULL,
  222.                                         XPOS(24),YPOS(18),XSIZE(27),YSIZE(2),"Left  Ma_rgin (characters) :",&textattr,LAID_Gadget23,PLACETEXT_IN,visualinfo,NULL,
  223.                                         XPOS(24),YPOS(20),XSIZE(27),YSIZE(2),"Right Margi_n (characters) :",&textattr,LAID_Gadget24,PLACETEXT_IN,visualinfo,NULL,
  224.                                       };
  225.       STRPTR            LA_Gadget6[]  = { "Parallel","Serial",NULL };
  226.       STRPTR            LA_Gadget7[]  = { "Pica (10 cpi)","Elite (12 cpi)","Fine (15-17 cpi)",NULL };
  227.       STRPTR            LA_Gadget8[]  = { "6 Lines Per Inch","8 Lines Per Inch",NULL };
  228.       STRPTR            LA_Gadget9[]  = { "Letter","Draft",NULL };
  229.       STRPTR            LA_Gadget10[]  = { "Single","Continuous",NULL };
  230.       STRPTR            LA_Gadget11[]  = { "U.S. Letter","U.S. Legal","Narrow Tractor","Wide Tractor","DIN A4",NULL };
  231.  
  232.  
  233.       struct PrinterPrefsWindowData gadgetdata = {
  234.                                         /* belongs to a listview gadget */
  235.                                         FALSE,
  236.                                         (struct List *)~0,
  237.                                         0,
  238.                                         0,
  239.                                         /* belongs to a button */
  240.                                         FALSE,
  241.                                         /* belongs to a button */
  242.                                         FALSE,
  243.                                         /* belongs to a button */
  244.                                         FALSE,
  245.                                         /* belongs to a cycle gadget */
  246.                                         FALSE,
  247.                                         0,
  248.                                         (STRPTR *)&LA_Gadget6[0],
  249.                                         /* belongs to a cycle gadget */
  250.                                         FALSE,
  251.                                         0,
  252.                                         (STRPTR *)&LA_Gadget7[0],
  253.                                         /* belongs to a cycle gadget */
  254.                                         FALSE,
  255.                                         0,
  256.                                         (STRPTR *)&LA_Gadget8[0],
  257.                                         /* belongs to a cycle gadget */
  258.                                         FALSE,
  259.                                         0,
  260.                                         (STRPTR *)&LA_Gadget9[0],
  261.                                         /* belongs to a cycle gadget */
  262.                                         FALSE,
  263.                                         0,
  264.                                         (STRPTR *)&LA_Gadget10[0],
  265.                                         /* belongs to a cycle gadget */
  266.                                         FALSE,
  267.                                         0,
  268.                                         (STRPTR *)&LA_Gadget11[0],
  269.                                         /* belongs to an integer gadget */
  270.                                         FALSE,
  271.                                         64,
  272.                                         /* belongs to an integer gadget */
  273.                                         FALSE,
  274.                                         8,
  275.                                         /* belongs to an integer gadget */
  276.                                         FALSE,
  277.                                         100,
  278.                                       };
  279.  
  280.  
  281.       struct NewMenu    menu[]      = { NM_TITLE, "Program"    , 0 ,0,0,0,
  282.                                         NM_ITEM , "About"      ,"A",0,0,0,
  283.                                         NM_END  , NULL         , 0 ,0,0,0 };
  284.  
  285.       height= YSIZE(height);
  286.       width = XSIZE(width) ;
  287.       if (left==-1) left  = (customscreen->Width-width)/2;
  288.       if (top ==-1) top   = (customscreen->Height-height)/2;
  289.  
  290.       if (CreateGadgetsPrinterPrefsWindow(&gadgetlist,newgad,wingads,&gadgetdata)!=NULL)
  291.          {
  292.          if (height>customscreen->Height || width>customscreen->Width) GUICreatorErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
  293.          win=OpenWindowTags(NULL,WA_Activate,         TRUE,
  294.                                  WA_CloseGadget,      TRUE,
  295.                                  WA_DepthGadget,      TRUE,
  296.                                  WA_SizeGadget,       FALSE,
  297.                                  WA_DragBar,          TRUE,
  298.                                  WA_Gadgets,          gadgetlist,
  299.                                  WA_InnerHeight,      height,
  300.                                  WA_InnerWidth,       width,
  301.                                  WA_IDCMP,            IDCMP_CLOSEWINDOW|IDCMP_MENUPICK|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|BUTTONIDCMP|INTEGERIDCMP|CYCLEIDCMP|LISTVIEWIDCMP,
  302.                                  WA_Left,             left,
  303.                                  WA_Top,              top,
  304.                                  WA_MaxHeight,        maxheight,
  305.                                  WA_MinHeight,        height,
  306.                                  WA_MaxWidth,         maxwidth,
  307.                                  WA_MinWidth,         width,
  308.                                  WA_SizeBRight,       FALSE,
  309.                                  WA_SizeBBottom,      FALSE,
  310.                                  WA_SmartRefresh,     TRUE,
  311.                                  WA_CustomScreen,     customscreen,
  312.                                  WA_Title,            title,
  313.                                  WA_NewLookMenus,     TRUE,
  314.                                  TAG_END);
  315.          if (win)
  316.             {
  317.             menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
  318.             if (menustrip)
  319.                {
  320.                if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
  321.                   {
  322.                   if (SetMenuStrip(win,menustrip))
  323.                      {
  324.                      struct IntuiMessage  *imessage   = NULL;
  325.                      struct Gadget        *idcmpgad   = NULL;
  326.                      ULONG  idcmpclass                = 0;
  327.                      UWORD  messagecode               = 0;
  328.                      BOOL   running                   = TRUE;
  329.                      ULONG  signal                    = 0;
  330.                      ULONG  longpointer1              = 0;
  331.                      ULONG  longpointer2              = 0;
  332.  
  333.                      SetFont(win->RPort,GfxBase->DefaultFont);
  334.  
  335.                      GT_RefreshWindow(win,NULL);
  336.  
  337.                      /* User-Setup */
  338.                      UserSetupPrinterPrefsWindow(win,wingads,userdata);
  339.                      do
  340.                         {
  341.                         if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
  342.                         if (signal & SIGBREAKF_CTRL_C) running=FALSE;
  343.                         while (running && (imessage=GT_GetIMsg(win->UserPort)))
  344.                            {
  345.                            idcmpgad=(struct Gadget *)imessage->IAddress;
  346.                            idcmpclass=imessage->Class;
  347.                            messagecode =imessage->Code;
  348.  
  349.                            GT_ReplyIMsg(imessage);
  350.  
  351.                            switch(idcmpclass)
  352.                               {
  353.                               case IDCMP_REFRESHWINDOW:
  354.                                    GT_BeginRefresh(win);
  355.                                    GT_EndRefresh(win,TRUE);
  356.                                    break;
  357.                               case IDCMP_MENUPICK:
  358.                                    switch(MENUNUM(messagecode))
  359.                                       {
  360.                                       case 0:
  361.                                          switch (ITEMNUM(messagecode))
  362.                                             {
  363.                                             case 0:
  364.                                                About(win);
  365.                                                break;
  366.                                             }
  367.                                          /* end-switch */
  368.                                          break;
  369.                                       }
  370.                                    /* end-switch */
  371.                                    break;
  372.                               case IDCMP_VANILLAKEY:
  373.                                    switch(messagecode)
  374.                                       {
  375.                                       case 'p':
  376.                                            GT_GetGadgetAttrs(wingads[LVID_Gadget2],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  377.                                            if (longpointer1==0)
  378.                                               {
  379.                                               GT_GetGadgetAttrs(wingads[LVID_Gadget2],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  380.                                               GT_SetGadgetAttrs(wingads[LVID_Gadget2],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
  381.                                               GT_GetGadgetAttrs(wingads[LVID_Gadget2],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
  382.                                               if (longpointer2!=longpointer1)
  383.                                                  {
  384.                                                  HandleGadgetsPrinterPrefsWindow(win,wingads,LVID_Gadget2,longpointer2,&gadgetdata,userdata);
  385.                                                  }
  386.                                               }
  387.                                            break;
  388.                                       case 'P':
  389.                                            GT_GetGadgetAttrs(wingads[LVID_Gadget2],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  390.                                            if (longpointer1==0)
  391.                                               {
  392.                                               GT_GetGadgetAttrs(wingads[LVID_Gadget2],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  393.                                               if (longpointer1!=0)
  394.                                                  {
  395.                                                  GT_SetGadgetAttrs(wingads[LVID_Gadget2],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
  396.                                                  HandleGadgetsPrinterPrefsWindow(win,wingads,LVID_Gadget2,longpointer1-1,&gadgetdata,userdata);
  397.                                                  }
  398.                                               }
  399.                                            break;
  400.                                       case 's':
  401.                                            GT_GetGadgetAttrs(wingads[BTID_Gadget3],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  402.                                            if (longpointer1==0) HandleGadgetsPrinterPrefsWindow(win,wingads,BTID_Gadget3,messagecode,&gadgetdata,userdata);
  403.                                            break;
  404.                                       case 'u':
  405.                                            GT_GetGadgetAttrs(wingads[BTID_Gadget5],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  406.                                            if (longpointer1==0) HandleGadgetsPrinterPrefsWindow(win,wingads,BTID_Gadget5,messagecode,&gadgetdata,userdata);
  407.                                            break;
  408.                                       case 'c':
  409.                                            GT_GetGadgetAttrs(wingads[BTID_Gadget4],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  410.                                            if (longpointer1==0) HandleGadgetsPrinterPrefsWindow(win,wingads,BTID_Gadget4,messagecode,&gadgetdata,userdata);
  411.                                            break;
  412.                                       case 'o':
  413.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget6],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  414.                                            if (longpointer1==0)
  415.                                               {
  416.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget6],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  417.                                               if (++longpointer1==2) longpointer1=0;
  418.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget6],win,NULL,GTCY_Active,longpointer1,TAG_END);
  419.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget6,longpointer1,&gadgetdata,userdata);
  420.                                               }
  421.                                            break;
  422.                                       case 'O':
  423.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget6],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  424.                                            if (longpointer1==0)
  425.                                               {
  426.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget6],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  427.                                               if (longpointer1==0) longpointer1=2;
  428.                                               longpointer1--;
  429.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget6],win,NULL,GTCY_Active,longpointer1,TAG_END);
  430.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget6,longpointer1,&gadgetdata,userdata);
  431.                                               }
  432.                                            break;
  433.                                       case 'i':
  434.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget7],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  435.                                            if (longpointer1==0)
  436.                                               {
  437.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget7],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  438.                                               if (++longpointer1==3) longpointer1=0;
  439.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget7],win,NULL,GTCY_Active,longpointer1,TAG_END);
  440.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget7,longpointer1,&gadgetdata,userdata);
  441.                                               }
  442.                                            break;
  443.                                       case 'I':
  444.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget7],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  445.                                            if (longpointer1==0)
  446.                                               {
  447.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget7],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  448.                                               if (longpointer1==0) longpointer1=3;
  449.                                               longpointer1--;
  450.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget7],win,NULL,GTCY_Active,longpointer1,TAG_END);
  451.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget7,longpointer1,&gadgetdata,userdata);
  452.                                               }
  453.                                            break;
  454.                                       case 'a':
  455.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget8],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  456.                                            if (longpointer1==0)
  457.                                               {
  458.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget8],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  459.                                               if (++longpointer1==2) longpointer1=0;
  460.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget8],win,NULL,GTCY_Active,longpointer1,TAG_END);
  461.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget8,longpointer1,&gadgetdata,userdata);
  462.                                               }
  463.                                            break;
  464.                                       case 'A':
  465.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget8],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  466.                                            if (longpointer1==0)
  467.                                               {
  468.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget8],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  469.                                               if (longpointer1==0) longpointer1=2;
  470.                                               longpointer1--;
  471.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget8],win,NULL,GTCY_Active,longpointer1,TAG_END);
  472.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget8,longpointer1,&gadgetdata,userdata);
  473.                                               }
  474.                                            break;
  475.                                       case 'q':
  476.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget9],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  477.                                            if (longpointer1==0)
  478.                                               {
  479.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget9],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  480.                                               if (++longpointer1==2) longpointer1=0;
  481.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget9],win,NULL,GTCY_Active,longpointer1,TAG_END);
  482.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget9,longpointer1,&gadgetdata,userdata);
  483.                                               }
  484.                                            break;
  485.                                       case 'Q':
  486.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget9],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  487.                                            if (longpointer1==0)
  488.                                               {
  489.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget9],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  490.                                               if (longpointer1==0) longpointer1=2;
  491.                                               longpointer1--;
  492.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget9],win,NULL,GTCY_Active,longpointer1,TAG_END);
  493.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget9,longpointer1,&gadgetdata,userdata);
  494.                                               }
  495.                                            break;
  496.                                       case 'e':
  497.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget10],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  498.                                            if (longpointer1==0)
  499.                                               {
  500.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget10],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  501.                                               if (++longpointer1==2) longpointer1=0;
  502.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget10],win,NULL,GTCY_Active,longpointer1,TAG_END);
  503.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget10,longpointer1,&gadgetdata,userdata);
  504.                                               }
  505.                                            break;
  506.                                       case 'E':
  507.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget10],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  508.                                            if (longpointer1==0)
  509.                                               {
  510.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget10],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  511.                                               if (longpointer1==0) longpointer1=2;
  512.                                               longpointer1--;
  513.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget10],win,NULL,GTCY_Active,longpointer1,TAG_END);
  514.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget10,longpointer1,&gadgetdata,userdata);
  515.                                               }
  516.                                            break;
  517.                                       case 'f':
  518.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget11],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  519.                                            if (longpointer1==0)
  520.                                               {
  521.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget11],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  522.                                               if (++longpointer1==5) longpointer1=0;
  523.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget11],win,NULL,GTCY_Active,longpointer1,TAG_END);
  524.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget11,longpointer1,&gadgetdata,userdata);
  525.                                               }
  526.                                            break;
  527.                                       case 'F':
  528.                                            GT_GetGadgetAttrs(wingads[CYID_Gadget11],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  529.                                            if (longpointer1==0)
  530.                                               {
  531.                                               GT_GetGadgetAttrs(wingads[CYID_Gadget11],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  532.                                               if (longpointer1==0) longpointer1=5;
  533.                                               longpointer1--;
  534.                                               GT_SetGadgetAttrs(wingads[CYID_Gadget11],win,NULL,GTCY_Active,longpointer1,TAG_END);
  535.                                               HandleGadgetsPrinterPrefsWindow(win,wingads,CYID_Gadget11,longpointer1,&gadgetdata,userdata);
  536.                                               }
  537.                                            break;
  538.                                       case 'l':
  539.                                            GT_GetGadgetAttrs(wingads[INID_Gadget12],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  540.                                            if (longpointer1==0) ActivateGadget(wingads[INID_Gadget12],win,NULL);
  541.                                            break;
  542.                                       case 'r':
  543.                                            GT_GetGadgetAttrs(wingads[INID_Gadget13],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  544.                                            if (longpointer1==0) ActivateGadget(wingads[INID_Gadget13],win,NULL);
  545.                                            break;
  546.                                       case 'n':
  547.                                            GT_GetGadgetAttrs(wingads[INID_Gadget14],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  548.                                            if (longpointer1==0) ActivateGadget(wingads[INID_Gadget14],win,NULL);
  549.                                            break;
  550.                                       case 27:
  551.                                          running=FALSE;
  552.                                          break;
  553.                                       }
  554.                                    break;
  555.                               case IDCMP_CLOSEWINDOW:
  556.                                    running=FALSE;
  557.                                    break;
  558.                                 case IDCMP_GADGETUP:
  559.                                 case MXIDCMP:
  560.                                    HandleGadgetsPrinterPrefsWindow(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
  561.                                    break;
  562.                               }
  563.                            /* end-switch */
  564.                            }
  565.                         /* end-while */
  566.                         }
  567.                      while (running);
  568.                      ClearMenuStrip(win);
  569.                      }
  570.                   else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  571.                   }
  572.                else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  573.                FreeMenus(menustrip);
  574.                }
  575.             else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  576.             if (win) CloseWindow(win);
  577.             }
  578.          else GUICreatorErrorReport(win,ERROR_NO_WINDOW_OPENED);
  579.          if (gadgetlist) FreeGadgets(gadgetlist);
  580.          }
  581.       else GUICreatorErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
  582.       if (visualinfo) FreeVisualInfo(visualinfo);
  583.       }
  584.    else GUICreatorErrorReport(NULL,ERROR_NO_VISUALINFO);
  585. }
  586.  
  587.