home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 18 / amigaformatcd18.iso / -readerstuff- / steve_boxall / contact97gui.c < prev    next >
C/C++ Source or Header  |  1997-07-18  |  21KB  |  732 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Steve Boxall
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/utility_protos.h>
  22. #include <string.h>
  23. #include <clib/diskfont_protos.h>
  24.  
  25. #include "contact97Gui.h"
  26.  
  27. struct Screen         *Scr = NULL;
  28. UBYTE                 *PubScreenName = NULL;
  29. APTR                   VisualInfo = NULL;
  30. struct Window         *Project0Wnd = NULL;
  31. struct Window         *Project1Wnd = NULL;
  32. struct Window         *Project2Wnd = NULL;
  33. struct Window         *Project3Wnd = NULL;
  34. struct Gadget         *Project0GList = NULL;
  35. struct Gadget         *Project1GList = NULL;
  36. struct Gadget         *Project2GList = NULL;
  37. struct Gadget         *Project3GList = NULL;
  38. struct Menu           *Project0Menus = NULL;
  39. struct IntuiMessage    Project0Msg;
  40. struct IntuiMessage    Project1Msg;
  41. struct IntuiMessage    Project2Msg;
  42. struct IntuiMessage    Project3Msg;
  43. struct TextFont       *Font       = NULL;
  44. struct Gadget         *Project0Gadgets[7];
  45. struct Gadget         *Project1Gadgets[18];
  46. struct Gadget         *Project2Gadgets[13];
  47. struct Gadget         *Project3Gadgets[1];
  48. UWORD                  Project0Left = 136;
  49. UWORD                  Project0Top = 36;
  50. UWORD                  Project0Width = 406;
  51. UWORD                  Project0Height = 177;
  52. UWORD                  Project1Left = 62;
  53. UWORD                  Project1Top = 16;
  54. UWORD                  Project1Width = 559;
  55. UWORD                  Project1Height = 220;
  56. UWORD                  Project2Left = 97;
  57. UWORD                  Project2Top = 26;
  58. UWORD                  Project2Width = 523;
  59. UWORD                  Project2Height = 208;
  60. UWORD                  Project3Left = 139;
  61. UWORD                  Project3Top = 27;
  62. UWORD                  Project3Width = 405;
  63. UWORD                  Project3Height = 195;
  64. UBYTE                 *Project0Wdt = (UBYTE *)"Contact Name";
  65. UBYTE                 *Project1Wdt = (UBYTE *)"Contact Details";
  66. UBYTE                 *Project2Wdt = (UBYTE *)"Find Contact";
  67. UBYTE                 *Project3Wdt = (UBYTE *)"About";
  68.  
  69. struct TextAttr XHelvetica11 = {
  70.     ( STRPTR )"XHelvetica.font", 11, 0x00, 0x62 };
  71.  
  72. struct IntuiText Project3IText[] = {
  73.     1, 22, JAM2,155, 38, &XHelvetica11, (UBYTE *)"  Contact 97  ", &Project3IText[1],
  74.     1, 19, JAM2,118, 77, &XHelvetica11, (UBYTE *)" Giftware (c) 1997 Steve Boxall  ", &Project3IText[2],
  75.     1, 3, JAM2,100, 119, &XHelvetica11, (UBYTE *)"  Written Using GadToolsBox & Dice 'C'  ", NULL };
  76.  
  77. struct NewMenu Project0NewMenu[] = {
  78.     NM_TITLE, (STRPTR)"Contact", NULL, 0, NULL, NULL,
  79.     NM_ITEM, (STRPTR)"Add Name", (STRPTR)"a", 0, 0L, (APTR)Project0Item0,
  80.     NM_ITEM, (STRPTR)"Edit Name", (STRPTR)"e", 0, 0L, (APTR)Project0Edit01,
  81.     NM_ITEM, (STRPTR)"Delete Name", NULL, 0, 0L, (APTR)Project0Delete01,
  82.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  83.     NM_ITEM, (STRPTR)"Find", (STRPTR)"f", 0, 0L, (APTR)Project0Find01,
  84.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  85.     NM_ITEM, (STRPTR)"About", NULL, 0, 0L, (APTR)Project0About01,
  86.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  87.     NM_ITEM, (STRPTR)"Quit", NULL, 0, 0L, (APTR)Project0Quit01,
  88.     NM_TITLE, (STRPTR)"Print", NULL, 0, NULL, NULL,
  89.     NM_ITEM, (STRPTR)"Names + Numbers", NULL, 0, 0L, (APTR)Project0Item1,
  90.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  91.     NM_ITEM, (STRPTR)"Names + Addresses", NULL, 0, 0L, (APTR)Project0Item2,
  92.     NM_END, NULL, NULL, 0, 0L, NULL };
  93.  
  94. UWORD Project0GTypes[] = {
  95.     BUTTON_KIND,
  96.     BUTTON_KIND,
  97.     BUTTON_KIND,
  98.     STRING_KIND,
  99.     LISTVIEW_KIND,
  100.     BUTTON_KIND,
  101.     BUTTON_KIND
  102. };
  103.  
  104. UWORD Project1GTypes[] = {
  105.     TEXT_KIND,
  106.     TEXT_KIND,
  107.     TEXT_KIND,
  108.     TEXT_KIND,
  109.     TEXT_KIND,
  110.     BUTTON_KIND,
  111.     BUTTON_KIND,
  112.     TEXT_KIND,
  113.     BUTTON_KIND,
  114.     BUTTON_KIND,
  115.     STRING_KIND,
  116.     STRING_KIND,
  117.     STRING_KIND,
  118.     LISTVIEW_KIND,
  119.     STRING_KIND,
  120.     STRING_KIND,
  121.     STRING_KIND,
  122.     BUTTON_KIND
  123. };
  124.  
  125. UWORD Project2GTypes[] = {
  126.     BUTTON_KIND,
  127.     BUTTON_KIND,
  128.     LISTVIEW_KIND,
  129.     TEXT_KIND,
  130.     STRING_KIND,
  131.     TEXT_KIND,
  132.     CHECKBOX_KIND,
  133.     CHECKBOX_KIND,
  134.     CHECKBOX_KIND,
  135.     CHECKBOX_KIND,
  136.     CHECKBOX_KIND,
  137.     TEXT_KIND,
  138.     CHECKBOX_KIND
  139. };
  140.  
  141. UWORD Project3GTypes[] = {
  142.     BUTTON_KIND
  143. };
  144.  
  145. struct NewGadget Project0NGad[] = {
  146.     9, 138, 69, 20, (UBYTE *)"Add", NULL, GD_Add01, PLACETEXT_IN, NULL, (APTR)Add01Clicked,
  147.     87, 138, 69, 20, (UBYTE *)"Edit", NULL, GD_Edit01, PLACETEXT_IN, NULL, (APTR)Edit01Clicked,
  148.     321, 138, 69, 20, (UBYTE *)"Quit", NULL, GD_Quit01, PLACETEXT_IN, NULL, (APTR)Quit01Clicked,
  149.     26, 116, 342, 15, NULL, NULL, GD_Name01, 0, NULL, (APTR)Name01Clicked,
  150.     26, 16, 342, 99, NULL, NULL, GD_NameList01, 0, NULL, (APTR)NameList01Clicked,
  151.     165, 138, 69, 20, (UBYTE *)"Find", NULL, GD_Find01, PLACETEXT_IN, NULL, (APTR)Find01Clicked,
  152.     243, 138, 69, 20, (UBYTE *)"Delete", NULL, GD_Delete01, PLACETEXT_IN, NULL, (APTR)Delete01Clicked
  153. };
  154.  
  155. struct NewGadget Project1NGad[] = {
  156.     37, 6, 123, 18, NULL, NULL, GD_ContactText01, 0, NULL, NULL,
  157.     37, 29, 123, 18, NULL, NULL, GD_CompanyName01, 0, NULL, NULL,
  158.     37, 127, 123, 18, NULL, NULL, GD_Email01, 0, NULL, NULL,
  159.     37, 150, 123, 18, NULL, NULL, GD_Phone01, 0, NULL, NULL,
  160.     38, 57, 123, 18, NULL, NULL, GD_Address, 0, NULL, NULL,
  161.     196, 107, 150, 14, (UBYTE *)"+", NULL, GD_AddAddress01, PLACETEXT_IN, NULL, (APTR)AddAddress01Clicked,
  162.     345, 107, 154, 14, (UBYTE *)"-", NULL, GD_DelAddress01, PLACETEXT_IN, NULL, (APTR)DelAddress01Clicked,
  163.     38, 173, 123, 18, NULL, NULL, GD_FaxNo01, 0, NULL, NULL,
  164.     23, 199, 144, 14, (UBYTE *)"Ok", NULL, GD_OkNew01, PLACETEXT_IN, NULL, (APTR)OkNew01Clicked,
  165.     389, 199, 144, 14, (UBYTE *)"Cancel", NULL, GD_AddCancel01, PLACETEXT_IN, NULL, (APTR)AddCancel01Clicked,
  166.     196, 7, 306, 15, NULL, NULL, GD_ContactName01, 0, NULL, (APTR)ContactName01Clicked,
  167.     196, 31, 306, 15, NULL, NULL, GD_CompanyName01, 0, NULL, (APTR)CompanyName01Clicked,
  168.     197, 91, 303, 15, NULL, NULL, GD_AddressText01, 0, NULL, (APTR)AddressText01Clicked,
  169.     197, 54, 303, 55, NULL, NULL, GD_Address01, 0, NULL, (APTR)Address01Clicked,
  170.     196, 128, 185, 15, NULL, NULL, GD_EmailEntry01, 0, NULL, (APTR)EmailEntry01Clicked,
  171.     196, 151, 185, 15, NULL, NULL, GD_PhoneEntry01, 0, NULL, (APTR)PhoneEntry01Clicked,
  172.     196, 174, 185, 15, NULL, NULL, GD_FaxEntry01, 0, NULL, (APTR)FaxEntry01Clicked,
  173.     206, 199, 144, 14, (UBYTE *)"Print", NULL, GD_PrintIt01, PLACETEXT_IN, NULL, (APTR)PrintIt01Clicked
  174. };
  175.  
  176. struct NewGadget Project2NGad[] = {
  177.     57, 179, 169, 16, (UBYTE *)"Find", NULL, GD_FindContact01, PLACETEXT_IN, NULL, (APTR)FindContact01Clicked,
  178.     287, 179, 169, 16, (UBYTE *)"Cancel", NULL, GD_CancelFind01, PLACETEXT_IN, NULL, (APTR)CancelFind01Clicked,
  179.     174, 94, 282, 66, NULL, NULL, GD_FindResult01, 0, NULL, (APTR)FindResult01Clicked,
  180.     56, 5, 99, 18, NULL, NULL, GD_SearchText01, 0, NULL, NULL,
  181.     175, 6, 284, 16, NULL, NULL, GD_FindEdit01, 0, NULL, (APTR)FindEdit01Clicked,
  182.     57, 94, 99, 18, NULL, NULL, GD_ResultTitle01, 0, NULL, NULL,
  183.     231, 55, 26, 11, (UBYTE *)"Company", NULL, GD_fndchk01, PLACETEXT_ABOVE, NULL, (APTR)fndchk01Clicked,
  184.     278, 55, 26, 11, (UBYTE *)"Address", NULL, GD_fndchk02, PLACETEXT_ABOVE, NULL, (APTR)fndchk02Clicked,
  185.     325, 55, 26, 11, (UBYTE *)"Email", NULL, GD_fndchk03, PLACETEXT_ABOVE, NULL, (APTR)fndchk03Clicked,
  186.     372, 55, 26, 11, (UBYTE *)"Phone", NULL, GD_fndchk04, PLACETEXT_ABOVE, NULL, (APTR)fndchk04Clicked,
  187.     422, 55, 26, 11, (UBYTE *)"Fax", NULL, GD_fndchk05, PLACETEXT_ABOVE, NULL, (APTR)fndchk05Clicked,
  188.     56, 32, 99, 18, NULL, NULL, GD_fndchktext, 0, NULL, NULL,
  189.     184, 55, 26, 11, (UBYTE *)"Name", NULL, GD_fndchk06, PLACETEXT_ABOVE, NULL, (APTR)fndchk06Clicked
  190. };
  191.  
  192. struct NewGadget Project3NGad[] = {
  193.     94, 157, 204, 21, (UBYTE *)"Continue", NULL, GD_AboutOk1, PLACETEXT_IN, NULL, (APTR)AboutOk1Clicked
  194. };
  195.  
  196. ULONG Project0GTags[] = {
  197.     (TAG_DONE),
  198.     (TAG_DONE),
  199.     (TAG_DONE),
  200.     (STRINGA_ExitHelp), TRUE, (GTST_MaxChars), 29, (TAG_DONE),
  201.     (GTLV_ShowSelected), 1L, (TAG_DONE),
  202.     (TAG_DONE),
  203.     (TAG_DONE)
  204. };
  205.  
  206. ULONG Project1GTags[] = {
  207.     (GTTX_Text), (ULONG)"Contact Name", (GTTX_Border), TRUE, (TAG_DONE),
  208.     (GTTX_Text), (ULONG)"Company Name", (GTTX_Border), TRUE, (TAG_DONE),
  209.     (GTTX_Text), (ULONG)"Email", (GTTX_Border), TRUE, (TAG_DONE),
  210.     (GTTX_Text), (ULONG)"Telephone No", (GTTX_Border), TRUE, (TAG_DONE),
  211.     (GTTX_Text), (ULONG)"Company Address", (GTTX_Border), TRUE, (TAG_DONE),
  212.     (TAG_DONE),
  213.     (TAG_DONE),
  214.     (GTTX_Text), (ULONG)"Fax No", (GTTX_Border), TRUE, (TAG_DONE),
  215.     (TAG_DONE),
  216.     (TAG_DONE),
  217.     (STRINGA_ExitHelp), TRUE, (GTST_MaxChars), 29, (TAG_DONE),
  218.     (STRINGA_ExitHelp), TRUE, (GTST_String), (ULONG)" ", (GTST_MaxChars), 29, (TAG_DONE),
  219.     (STRINGA_ExitHelp), TRUE, (GTST_MaxChars), 29, (TAG_DONE),
  220.     (GTLV_ShowSelected), 1L, (TAG_DONE),
  221.     (STRINGA_ExitHelp), TRUE, (GTST_String), (ULONG)" ", (GTST_MaxChars), 29, (TAG_DONE),
  222.     (STRINGA_ExitHelp), TRUE, (GTST_String), (ULONG)" ", (GTST_MaxChars), 19, (TAG_DONE),
  223.     (STRINGA_ExitHelp), TRUE, (GTST_String), (ULONG)" ", (GTST_MaxChars), 19, (TAG_DONE),
  224.     (TAG_DONE)
  225. };
  226.  
  227. ULONG Project2GTags[] = {
  228.     (TAG_DONE),
  229.     (TAG_DONE),
  230.     (GTLV_ShowSelected), NULL, (TAG_DONE),
  231.     (GTTX_Text), (ULONG)"Find Text", (GTTX_Border), TRUE, (TAG_DONE),
  232.     (STRINGA_ExitHelp), TRUE, (GTST_MaxChars), 29, (TAG_DONE),
  233.     (GTTX_Text), (ULONG)"Find Result", (GTTX_Border), TRUE, (TAG_DONE),
  234.     (GTCB_Checked), TRUE, (TAG_DONE),
  235.     (GTCB_Checked), TRUE, (TAG_DONE),
  236.     (GTCB_Checked), TRUE, (TAG_DONE),
  237.     (GTCB_Checked), TRUE, (TAG_DONE),
  238.     (GTCB_Checked), TRUE, (TAG_DONE),
  239.     (GTTX_Text), (ULONG)"Check Fields", (GTTX_Border), TRUE, (TAG_DONE),
  240.     (GTCB_Checked), TRUE, (TAG_DONE)
  241. };
  242.  
  243. ULONG Project3GTags[] = {
  244.     (TAG_DONE)
  245. };
  246.  
  247. int SetupScreen( void )
  248. {
  249.     if ( ! ( Font = OpenDiskFont( &XHelvetica11 )))
  250.         return( 5L );
  251.  
  252.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  253.         return( 1L );
  254.  
  255.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  256.         return( 2L );
  257.  
  258.     return( 0L );
  259. }
  260.  
  261. void CloseDownScreen( void )
  262. {
  263.     if ( VisualInfo ) {
  264.         FreeVisualInfo( VisualInfo );
  265.         VisualInfo = NULL;
  266.     }
  267.  
  268.     if ( Scr        ) {
  269.         UnlockPubScreen( NULL, Scr );
  270.         Scr = NULL;
  271.     }
  272.  
  273.     if ( Font       ) {
  274.         CloseFont( Font );
  275.         Font = NULL;
  276.     }
  277. }
  278.  
  279. int HandleProject0IDCMP( void )
  280. {
  281.     struct IntuiMessage    *m;
  282.     struct MenuItem        *n;
  283.     int            (*func)();
  284.     BOOL            running = TRUE;
  285.  
  286.     while( m = GT_GetIMsg( Project0Wnd->UserPort )) {
  287.  
  288.         CopyMem(( char * )m, ( char * )&Project0Msg, (long)sizeof( struct IntuiMessage ));
  289.  
  290.         GT_ReplyIMsg( m );
  291.  
  292.         switch ( Project0Msg.Class ) {
  293.  
  294.             case    IDCMP_REFRESHWINDOW:
  295.                 GT_BeginRefresh( Project0Wnd );
  296.                 GT_EndRefresh( Project0Wnd, TRUE );
  297.                 break;
  298.  
  299.             case    IDCMP_CLOSEWINDOW:
  300.                 running = Project0CloseWindow();
  301.                 break;
  302.  
  303.             case    IDCMP_RAWKEY:
  304.                 running = Project0RawKey();
  305.                 break;
  306.  
  307.             case    IDCMP_GADGETUP:
  308.             case    IDCMP_GADGETDOWN:
  309.                 func = ( void * )(( struct Gadget * )Project0Msg.IAddress )->UserData;
  310.                 running = func();
  311.                 break;
  312.  
  313.             case    IDCMP_MENUPICK:
  314.                 while( Project0Msg.Code != MENUNULL ) {
  315.                     n = ItemAddress( Project0Menus, Project0Msg.Code );
  316.                     func = (void *)(GTMENUITEM_USERDATA( n ));
  317.                     running = func();
  318.                     Project0Msg.Code = n->NextSelect;
  319.                 }
  320.                 break;
  321.         }
  322.     }
  323.     return( running );
  324. }
  325.  
  326. int OpenProject0Window( void )
  327. {
  328.     struct NewGadget    ng;
  329.     struct Gadget    *g;
  330.     struct TagItem    *tmp;
  331.     UWORD        lc, tc;
  332.     UWORD        offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  333.  
  334.     if ( ! ( g = CreateContext( &Project0GList )))
  335.         return( 1L );
  336.  
  337.     for( lc = 0, tc = 0; lc < Project0_CNT; lc++ ) {
  338.  
  339.         CopyMem((char * )&Project0NGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  340.  
  341.         ng.ng_VisualInfo = VisualInfo;
  342.         ng.ng_TextAttr   = &XHelvetica11;
  343.         ng.ng_LeftEdge  += offx;
  344.         ng.ng_TopEdge   += offy;
  345.  
  346.         if ( Project0GTypes[ lc ] == LISTVIEW_KIND ) {
  347.             if ( tmp = FindTagItem( GTLV_ShowSelected, ( struct TagItem * )&Project0GTags[ tc ] )) {
  348.                 if ( tmp->ti_Data ) tmp->ti_Data = (ULONG)g;
  349.             }
  350.         }
  351.  
  352.         Project0Gadgets[ lc ] = g = CreateGadgetA((ULONG)Project0GTypes[ lc ], g, &ng, ( struct TagItem * )&Project0GTags[ tc ] );
  353.  
  354.         while( Project0GTags[ tc ] ) tc += 2;
  355.         tc++;
  356.  
  357.         if ( NOT g )
  358.             return( 2L );
  359.     }
  360.  
  361.     if ( ! ( Project0Menus = CreateMenus( Project0NewMenu, GTMN_FrontPen, 0L, TAG_DONE )))
  362.         return( 3L );
  363.  
  364.     LayoutMenus( Project0Menus, VisualInfo, GTMN_TextAttr, &XHelvetica11, TAG_DONE );
  365.  
  366.     if ( ! ( Project0Wnd = OpenWindowTags( NULL,
  367.                 WA_Left,    Project0Left,
  368.                 WA_Top,        Project0Top,
  369.                 WA_Width,    Project0Width,
  370.                 WA_Height,    Project0Height + offy,
  371.                 WA_IDCMP,    BUTTONIDCMP|STRINGIDCMP|LISTVIEWIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_REFRESHWINDOW,
  372.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  373.                 WA_Gadgets,    Project0GList,
  374.                 WA_Title,    Project0Wdt,
  375.                 WA_ScreenTitle,    "Contact 97",
  376.                 WA_PubScreen,    Scr,
  377.                 TAG_DONE )))
  378.     return( 4L );
  379.  
  380.     SetMenuStrip( Project0Wnd, Project0Menus );
  381.     GT_RefreshWindow( Project0Wnd, NULL );
  382.  
  383.     return( 0L );
  384. }
  385.  
  386. void CloseProject0Window( void )
  387. {
  388.     if ( Project0Menus      ) {
  389.         ClearMenuStrip( Project0Wnd );
  390.         FreeMenus( Project0Menus );
  391.         Project0Menus = NULL;    }
  392.  
  393.     if ( Project0Wnd        ) {
  394.         CloseWindow( Project0Wnd );
  395.         Project0Wnd = NULL;
  396.     }
  397.  
  398.     if ( Project0GList      ) {
  399.         FreeGadgets( Project0GList );
  400.         Project0GList = NULL;
  401.     }
  402. }
  403.  
  404. int HandleProject1IDCMP( void )
  405. {
  406.     struct IntuiMessage    *m;
  407.     int            (*func)();
  408.     BOOL            running = TRUE;
  409.  
  410.     while( m = GT_GetIMsg( Project1Wnd->UserPort )) {
  411.  
  412.         CopyMem(( char * )m, ( char * )&Project1Msg, (long)sizeof( struct IntuiMessage ));
  413.  
  414.         GT_ReplyIMsg( m );
  415.  
  416.         switch ( Project1Msg.Class ) {
  417.  
  418.             case    IDCMP_REFRESHWINDOW:
  419.                 GT_BeginRefresh( Project1Wnd );
  420.                 GT_EndRefresh( Project1Wnd, TRUE );
  421.                 break;
  422.  
  423.             case    IDCMP_CLOSEWINDOW:
  424.                 running = Project1CloseWindow();
  425.                 break;
  426.  
  427.             case    IDCMP_RAWKEY:
  428.                 running = Project1RawKey();
  429.                 break;
  430.  
  431.             case    IDCMP_GADGETUP:
  432.             case    IDCMP_GADGETDOWN:
  433.                 func = ( void * )(( struct Gadget * )Project1Msg.IAddress )->UserData;
  434.                 running = func();
  435.                 break;
  436.         }
  437.     }
  438.     return( running );
  439. }
  440.  
  441. int OpenProject1Window( void )
  442. {
  443.     struct NewGadget    ng;
  444.     struct Gadget    *g;
  445.     struct TagItem    *tmp;
  446.     UWORD        lc, tc;
  447.     UWORD        offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  448.  
  449.     if ( ! ( g = CreateContext( &Project1GList )))
  450.         return( 1L );
  451.  
  452.     for( lc = 0, tc = 0; lc < Project1_CNT; lc++ ) {
  453.  
  454.         CopyMem((char * )&Project1NGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  455.  
  456.         ng.ng_VisualInfo = VisualInfo;
  457.         ng.ng_TextAttr   = &XHelvetica11;
  458.         ng.ng_LeftEdge  += offx;
  459.         ng.ng_TopEdge   += offy;
  460.  
  461.         if ( Project1GTypes[ lc ] == LISTVIEW_KIND ) {
  462.             if ( tmp = FindTagItem( GTLV_ShowSelected, ( struct TagItem * )&Project1GTags[ tc ] )) {
  463.                 if ( tmp->ti_Data ) tmp->ti_Data = (ULONG)g;
  464.             }
  465.         }
  466.  
  467.         Project1Gadgets[ lc ] = g = CreateGadgetA((ULONG)Project1GTypes[ lc ], g, &ng, ( struct TagItem * )&Project1GTags[ tc ] );
  468.  
  469.         while( Project1GTags[ tc ] ) tc += 2;
  470.         tc++;
  471.  
  472.         if ( NOT g )
  473.             return( 2L );
  474.     }
  475.  
  476.     if ( ! ( Project1Wnd = OpenWindowTags( NULL,
  477.                 WA_Left,    Project1Left,
  478.                 WA_Top,        Project1Top,
  479.                 WA_Width,    Project1Width,
  480.                 WA_Height,    Project1Height + offy,
  481.                 WA_IDCMP,    TEXTIDCMP|BUTTONIDCMP|STRINGIDCMP|LISTVIEWIDCMP|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_REFRESHWINDOW,
  482.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  483.                 WA_Gadgets,    Project1GList,
  484.                 WA_Title,    Project1Wdt,
  485.                 WA_ScreenTitle,    "Contact 97",
  486.                 WA_PubScreen,    Scr,
  487.                 TAG_DONE )))
  488.     return( 4L );
  489.  
  490.     GT_RefreshWindow( Project1Wnd, NULL );
  491.  
  492.     return( 0L );
  493. }
  494.  
  495. void CloseProject1Window( void )
  496. {
  497.     if ( Project1Wnd        ) {
  498.         CloseWindow( Project1Wnd );
  499.         Project1Wnd = NULL;
  500.     }
  501.  
  502.     if ( Project1GList      ) {
  503.         FreeGadgets( Project1GList );
  504.         Project1GList = NULL;
  505.     }
  506. }
  507.  
  508. void Project2Render( void )
  509. {
  510.     UWORD        offx, offy;
  511.  
  512.     offx = Project2Wnd->BorderLeft;
  513.     offy = Project2Wnd->BorderTop;
  514.  
  515.  
  516.     DrawBevelBox( Project2Wnd->RPort, offx + 175, offy + 32, 282, 45, GT_VisualInfo, VisualInfo, TAG_DONE );
  517. }
  518.  
  519. int HandleProject2IDCMP( void )
  520. {
  521.     struct IntuiMessage    *m;
  522.     int            (*func)();
  523.     BOOL            running = TRUE;
  524.  
  525.     while( m = GT_GetIMsg( Project2Wnd->UserPort )) {
  526.  
  527.         CopyMem(( char * )m, ( char * )&Project2Msg, (long)sizeof( struct IntuiMessage ));
  528.  
  529.         GT_ReplyIMsg( m );
  530.  
  531.         switch ( Project2Msg.Class ) {
  532.  
  533.             case    IDCMP_REFRESHWINDOW:
  534.                 GT_BeginRefresh( Project2Wnd );
  535.                 Project2Render();
  536.                 GT_EndRefresh( Project2Wnd, TRUE );
  537.                 break;
  538.  
  539.             case    IDCMP_CLOSEWINDOW:
  540.                 running = Project2CloseWindow();
  541.                 break;
  542.  
  543.             case    IDCMP_RAWKEY:
  544.                 running = Project2RawKey();
  545.                 break;
  546.  
  547.             case    IDCMP_GADGETUP:
  548.             case    IDCMP_GADGETDOWN:
  549.                 func = ( void * )(( struct Gadget * )Project2Msg.IAddress )->UserData;
  550.                 running = func();
  551.                 break;
  552.         }
  553.     }
  554.     return( running );
  555. }
  556.  
  557. int OpenProject2Window( void )
  558. {
  559.     struct NewGadget    ng;
  560.     struct Gadget    *g;
  561. /*    struct TagItem    *tmp;*/
  562.     UWORD        lc, tc;
  563.     UWORD        offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  564.  
  565.     if ( ! ( g = CreateContext( &Project2GList )))
  566.         return( 1L );
  567.  
  568.     for( lc = 0, tc = 0; lc < Project2_CNT; lc++ ) {
  569.  
  570.         CopyMem((char * )&Project2NGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  571.  
  572.         ng.ng_VisualInfo = VisualInfo;
  573.         ng.ng_TextAttr   = &XHelvetica11;
  574.         ng.ng_LeftEdge  += offx;
  575.         ng.ng_TopEdge   += offy;
  576.  
  577.         Project2Gadgets[ lc ] = g = CreateGadgetA((ULONG)Project2GTypes[ lc ], g, &ng, ( struct TagItem * )&Project2GTags[ tc ] );
  578.  
  579.         while( Project2GTags[ tc ] ) tc += 2;
  580.         tc++;
  581.  
  582.         if ( NOT g )
  583.             return( 2L );
  584.     }
  585.  
  586.     if ( ! ( Project2Wnd = OpenWindowTags( NULL,
  587.                 WA_Left,    Project2Left,
  588.                 WA_Top,        Project2Top,
  589.                 WA_Width,    Project2Width,
  590.                 WA_Height,    Project2Height + offy,
  591.                 WA_IDCMP,    BUTTONIDCMP|LISTVIEWIDCMP|TEXTIDCMP|STRINGIDCMP|CHECKBOXIDCMP|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_REFRESHWINDOW,
  592.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  593.                 WA_Gadgets,    Project2GList,
  594.                 WA_Title,    Project2Wdt,
  595.                 WA_ScreenTitle,    "Contact 97",
  596.                 WA_PubScreen,    Scr,
  597.                 TAG_DONE )))
  598.     return( 4L );
  599.  
  600.     GT_RefreshWindow( Project2Wnd, NULL );
  601.  
  602.     Project2Render();
  603.  
  604.     return( 0L );
  605. }
  606.  
  607. void CloseProject2Window( void )
  608. {
  609.     if ( Project2Wnd        ) {
  610.         CloseWindow( Project2Wnd );
  611.         Project2Wnd = NULL;
  612.     }
  613.  
  614.     if ( Project2GList      ) {
  615.         FreeGadgets( Project2GList );
  616.         Project2GList = NULL;
  617.     }
  618. }
  619.  
  620. void Project3Render( void )
  621. {
  622.     UWORD        offx, offy;
  623.  
  624.     offx = Project3Wnd->BorderLeft;
  625.     offy = Project3Wnd->BorderTop;
  626.  
  627.  
  628.     DrawBevelBox( Project3Wnd->RPort, offx + 30, offy + 13, 332, 136, GT_VisualInfo, VisualInfo, TAG_DONE );
  629.     PrintIText( Project3Wnd->RPort, Project3IText, offx, offy );
  630. }
  631.  
  632. int HandleProject3IDCMP( void )
  633. {
  634.     struct IntuiMessage    *m;
  635.     int            (*func)();
  636.     BOOL            running = TRUE;
  637.  
  638.     while( m = GT_GetIMsg( Project3Wnd->UserPort )) {
  639.  
  640.         CopyMem(( char * )m, ( char * )&Project3Msg, (long)sizeof( struct IntuiMessage ));
  641.  
  642.         GT_ReplyIMsg( m );
  643.  
  644.         switch ( Project3Msg.Class ) {
  645.  
  646.             case    IDCMP_REFRESHWINDOW:
  647.                 GT_BeginRefresh( Project3Wnd );
  648.                 Project3Render();
  649.                 GT_EndRefresh( Project3Wnd, TRUE );
  650.                 break;
  651.  
  652.             case    IDCMP_CLOSEWINDOW:
  653.                 running = Project3CloseWindow();
  654.                 break;
  655.  
  656.             case    IDCMP_RAWKEY:
  657.                 running = Project3RawKey();
  658.                 break;
  659.  
  660.             case    IDCMP_GADGETUP:
  661.                 func = ( void * )(( struct Gadget * )Project3Msg.IAddress )->UserData;
  662.                 running = func();
  663.                 break;
  664.         }
  665.     }
  666.     return( running );
  667. }
  668.  
  669. int OpenProject3Window( void )
  670. {
  671.     struct NewGadget    ng;
  672.     struct Gadget    *g;
  673. /*    struct TagItem    *tmp;*/
  674.     UWORD        lc, tc;
  675.     UWORD        offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  676.  
  677.     if ( ! ( g = CreateContext( &Project3GList )))
  678.         return( 1L );
  679.  
  680.     for( lc = 0, tc = 0; lc < Project3_CNT; lc++ ) {
  681.  
  682.         CopyMem((char * )&Project3NGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  683.  
  684.         ng.ng_VisualInfo = VisualInfo;
  685.         ng.ng_TextAttr   = &XHelvetica11;
  686.         ng.ng_LeftEdge  += offx;
  687.         ng.ng_TopEdge   += offy;
  688.  
  689.         Project3Gadgets[ lc ] = g = CreateGadgetA((ULONG)Project3GTypes[ lc ], g, &ng, ( struct TagItem * )&Project3GTags[ tc ] );
  690.  
  691.         while( Project3GTags[ tc ] ) tc += 2;
  692.         tc++;
  693.  
  694.         if ( NOT g )
  695.             return( 2L );
  696.     }
  697.  
  698.     if ( ! ( Project3Wnd = OpenWindowTags( NULL,
  699.                 WA_Left,    Project3Left,
  700.                 WA_Top,        Project3Top,
  701.                 WA_Width,    Project3Width,
  702.                 WA_Height,    Project3Height + offy,
  703.                 WA_IDCMP,    BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_REFRESHWINDOW,
  704.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  705.                 WA_Gadgets,    Project3GList,
  706.                 WA_Title,    Project3Wdt,
  707.                 WA_ScreenTitle,    "Contact 97",
  708.                 WA_PubScreen,    Scr,
  709.                 TAG_DONE )))
  710.     return( 4L );
  711.  
  712.     GT_RefreshWindow( Project3Wnd, NULL );
  713.  
  714.     Project3Render();
  715.  
  716.     return( 0L );
  717. }
  718.  
  719. void CloseProject3Window( void )
  720. {
  721.     if ( Project3Wnd        ) {
  722.         CloseWindow( Project3Wnd );
  723.         Project3Wnd = NULL;
  724.     }
  725.  
  726.     if ( Project3GList      ) {
  727.         FreeGadgets( Project3GList );
  728.         Project3GList = NULL;
  729.     }
  730. }
  731.  
  732.