home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 12 / MA_Cover_12.iso / libs / bgui / examples / source / viewgroup.c < prev   
Encoding:
C/C++ Source or Header  |  1999-02-19  |  12.4 KB  |  357 lines

  1. /*
  2.  * @(#) $Header: /cvsroot/bgui/examples/Attic/ViewGroup.c,v 1.1.2.3 1998/12/08 03:53:32 mlemos Exp $
  3.  *
  4.  * ViewGroup.c
  5.  *
  6.  * (C) Copyright 1998 Manuel Lemos.
  7.  * (C) Copyright 1994-1995 Jan van den Baard.
  8.  * (C) Copyright 1994-1995 Jaba Development.
  9.  * All Rights Reserved.
  10.  *
  11.  * Description: Test program for the clipped view groups.
  12.  *
  13.  * $Log: ViewGroup.c,v $
  14.  * Revision 1.1.2.3  1998/12/08 03:53:32  mlemos
  15.  * Added a few more entries to the listview in the nested clipped view object.
  16.  *
  17.  * Revision 1.1.2.2  1998/11/20 23:31:47  mlemos
  18.  * Added a page in the main View object with another view nested inside of it.
  19.  *
  20.  * Revision 1.1.2.1  1998/10/18 17:51:41  mlemos
  21.  * Ian sources.
  22.  *
  23.  *
  24.  *
  25.  */
  26.  
  27. /* Just execute to compile
  28. dcc test.c -l bgui -proto -ms -mi -s -v
  29. quit
  30. */
  31.  
  32. #include <libraries/bgui.h>
  33. #include <libraries/bgui_macros.h>
  34. #include <clib/alib_protos.h>
  35. #include <proto/bgui.h>
  36. #include <proto/exec.h>
  37. #include <proto/intuition.h>
  38. #include <proto/dos.h>
  39.  
  40. #include <dos/dos.h>
  41. #include <dos/dostags.h>
  42.  
  43. #include <stdio.h>
  44. #include <stdlib.h>
  45.  
  46. #define SYSBASE()   (*((ULONG *)4))
  47.  
  48. Object *TestWindow, *text, *GO_BottomProp, *GO_RightProp;
  49. struct Window *win;
  50. struct Library *BGUIBase;
  51.  
  52. /*
  53. ** Cycle and Mx labels.
  54. **/
  55. UBYTE *PageLab[] = { "Information", "Nested View", "Buttons", "Strings", "CheckBoxes", "Radio-Buttons", NULL };
  56. UBYTE *MxLab[]  = { "MX #1",   "MX #2",   "MX #3",      "MX #4",         NULL };
  57. UBYTE *ListViewLab[]  = { "Entry 1",   "Entry 2",   "Entry 3",  "Entry 4",  "Entry 5",  "Entry 6",  NULL };
  58.  
  59. /*
  60. ** Cycle to Page map-list.
  61. **/
  62. ULONG Cyc2Page[] = { MX_Active, PAGE_Active, TAG_END };
  63.  
  64. /*
  65. ** Tabs-key control of the tabs gadget.
  66. **/
  67. SAVEDS ASM VOID TabHookFunc( REG(a0) struct Hook *hook, REG(a2) Object *obj, REG(a1) struct IntuiMessage *msg )
  68. {
  69.    struct Window        *window;
  70.    Object            *mx_obj = ( Object * )hook->h_Data;
  71.    ULONG           pos;
  72.  
  73.    /*
  74.    ** Obtain window pointer and
  75.    ** current tab position.
  76.    **/
  77.    GetAttr( WINDOW_Window, obj,  ( ULONG * )&window );
  78.    GetAttr( MX_Active,  mx_obj, &pos );
  79.  
  80.    /*
  81.    ** What key is pressed?
  82.    **/
  83.    if ( msg->Code == 0x42 ) {
  84.       if ( msg->Qualifier & ( IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT )) pos--;
  85.       else                          pos++;
  86.       SetGadgetAttrs(( struct Gadget * )mx_obj, window, NULL, MX_Active, pos, TAG_END );
  87.    }
  88. }
  89.  
  90. struct Hook TabHook = { NULL, NULL, ( HOOKFUNC )TabHookFunc, NULL, NULL };
  91.  
  92.  
  93. int main(void)
  94. {
  95.    Object            *c, *p, *m, *v, *s1, *s2, *s3;
  96.  
  97.    BGUIBase = OpenLibrary("bgui.library",37);
  98.  
  99.    if(!BGUIBase) {
  100.        exit(20);
  101.    }
  102.  
  103.    /*
  104.    ** Create tabs-object.
  105.    **/
  106.    c = Tabs( NULL, PageLab, 0, 0 );
  107.  
  108.    /*
  109.    ** Put it in the hook data.
  110.    **/
  111.    TabHook.h_Data = (APTR)c;
  112.  
  113.    TestWindow = WindowObject,
  114.       WINDOW_Title,           "Border gadgets",
  115.       WINDOW_AutoKeyLabel,    TRUE,
  116.       WINDOW_AutoAspect,      TRUE,
  117.       WINDOW_IDCMPHookBits,   IDCMP_RAWKEY,
  118.       WINDOW_IDCMPHook,       &TabHook,
  119.  
  120.       WINDOW_TBorderGroup,
  121.           HGroupObject,
  122.              StartMember, ButtonObject, SYSIA_Which, DEPTHIMAGE, GA_ID, 30, EndObject, EndMember,
  123.              StartMember,
  124.                 ButtonObject,
  125.                    FRM_Type,            FRTYPE_BORDER,
  126.                    LAB_Label,           "Help...",
  127.                    BUTTON_EncloseImage, TRUE,
  128.                    FRM_InnerOffsetTop,  -1,
  129.                    GA_ID,               40,
  130.                 EndObject,
  131.              EndMember,
  132.           EndObject,
  133.       WINDOW_BBorderGroup,
  134.           HGroupObject,
  135.              StartMember,
  136.                 GO_BottomProp = PropObject,
  137.                    PGA_Top,        15,
  138.                    PGA_Total,      20,
  139.                    PGA_Visible,    10,
  140.                    PGA_Arrows,     TRUE,
  141.                    PGA_Freedom,    FREEHORIZ,
  142.                    PGA_NewLook,    TRUE,
  143.                    GA_ID,          101,
  144.                 EndObject,
  145.              EndMember,
  146.           EndObject,
  147.       WINDOW_RBorderGroup,
  148.           VGroupObject,
  149.              StartMember,
  150.                 GO_RightProp = PropObject,
  151.                    PGA_Top,        15,
  152.                    PGA_Total,      20,
  153.                    PGA_Visible,    10,
  154.                    PGA_Arrows,     TRUE,
  155.                    PGA_Freedom,    FREEVERT,
  156.                    PGA_NewLook,    TRUE,
  157.                    GA_ID,          102,
  158.                 EndObject,
  159.              EndMember,
  160.           EndObject,
  161.  
  162.       WINDOW_MasterGroup,
  163.          VGroupObject,
  164.             StartMember,
  165.          v = ViewObject, VIEW_ScaleMinWidth, 25, VIEW_ScaleMinHeight, 25, FRM_Type, FRTYPE_NONE, VIEW_Object,
  166.          VGroupObject, NormalOffset, NormalSpacing,
  167.             StartMember, c, FixMinHeight, EndMember,
  168.             StartMember,
  169.                p = PageObject,
  170.                   /*
  171.                   ** Info page.
  172.                   **/
  173.                   PageMember,
  174.                      VGroupObject, NormalSpacing,
  175.                         StartMember,
  176.                            text = InfoObject, ButtonFrame, FRM_Flags, FRF_RECESSED,
  177.                               INFO_TextFormat,   "This is also an updated example of how to manage border gadgets\n"
  178.                                                  "with BGUI.\n\n"
  179.                                                  "1. It is not necessary (or recommended) to add GA_#?Border\n"
  180.                                                  "tags anymore, BGUI now handles this automatically.\n\n"
  181.                                                  "2. You may use FRTYPE_BORDER for gadgets to get the proper\n"
  182.                                                  "fill colors.\n\n"
  183.                                                  "3. You do not need to specify any frames for prop gadgets,\n"
  184.                                                  "these are done automatically.\n\n"
  185.                                                  "4. Prop gadgets that are in borders now use sysiclass images\n"
  186.                                                  "for their arrows for a more conforming look.\n",
  187.                               INFO_FixTextWidth, TRUE,
  188.                               INFO_MinLines,     14,
  189.                               GA_ID,             50,
  190.                            EndObject,
  191.                         EndMember,
  192.                         StartMember,
  193.                         HGroupObject,
  194.                            VarSpace(50),
  195.                               StartMember,
  196.                                  ButtonObject, GA_ID, 1001,
  197.                                     Label( "_Quit" ),
  198.                                  EndObject,
  199.                               EndMember,
  200.                               VarSpace(50),
  201.                            EndObject, FixMinHeight,
  202.                         EndMember,
  203.                      EndObject,
  204.  
  205.                   /*
  206.                   ** Nested view page.
  207.                   **/
  208.                   PageMember,
  209.                      VGroupObject,
  210.                         VarSpace(DEFAULT_WEIGHT),
  211.                         StartMember,
  212.                            HGroupObject,
  213.                               VarSpace( DEFAULT_WEIGHT ),
  214.                               StartMember,
  215.                                  ViewObject, VIEW_ScaleMinWidth, 50, VIEW_ScaleMinHeight, 50, FRM_Type, FRTYPE_NONE, VIEW_Object,
  216.                                     VGroupObject, NormalHOffset, NormalSpacing,
  217.                                        StartMember,
  218.                                           InfoFixed(NULL, ISEQ_C "ListView Object\nwithin a view object", NULL, 2 ), FixMinHeight,
  219.                                        EndMember,
  220.                                        StartMember,
  221.                                           ListviewObject,
  222.                                              LISTV_EntryArray,        ListViewLab,
  223.                                           EndObject,
  224.                                        EndMember,
  225.                                     EndObject,
  226.                                  EndObject,
  227.                               EndMember,
  228.                               VarSpace( DEFAULT_WEIGHT ),
  229.                            EndObject, FixMinHeight,
  230.                         EndMember,
  231.                         VarSpace(DEFAULT_WEIGHT),
  232.                      EndObject,
  233.  
  234.                   /*
  235.                   ** Button page.
  236.                   **/
  237.                   PageMember,
  238.                      VGroupObject, NormalSpacing,
  239.                         VarSpace(DEFAULT_WEIGHT),
  240.                         StartMember, PrefButton("Button #_1", 21), FixMinHeight, EndMember,
  241.                         StartMember, PrefButton("Button #_2", 22), FixMinHeight, EndMember,
  242.                         StartMember, PrefButton("Button #_3", 23), FixMinHeight, EndMember,
  243.                         VarSpace(DEFAULT_WEIGHT),
  244.                      EndObject,
  245.                   /*
  246.                   ** String page.
  247.                   **/
  248.                   PageMember,
  249.                      VGroupObject, NormalSpacing,
  250.                         VarSpace(DEFAULT_WEIGHT),
  251.                         StartMember, s1 = PrefString("String #_1", "", 256, 31), FixMinHeight, EndMember,
  252.                         StartMember, s2 = PrefString("String #_2", "", 256, 32), FixMinHeight, EndMember,
  253.                         StartMember, s3 = PrefString("String #_3", "", 256, 33), FixMinHeight, EndMember,
  254.                         VarSpace(DEFAULT_WEIGHT),
  255.                      EndObject,
  256.                   /*
  257.                   ** CheckBox page.
  258.                   **/
  259.                   PageMember,
  260.                      VGroupObject, NormalSpacing,
  261.                         VarSpace(DEFAULT_WEIGHT),
  262.                         StartMember,
  263.                            HGroupObject,
  264.                               VarSpace(DEFAULT_WEIGHT),
  265.                               StartMember,
  266.                                  VGroupObject, NormalSpacing,
  267.                                     StartMember, PrefCheckBox("CheckBox #_1", FALSE, 41), EndMember,
  268.                                     StartMember, PrefCheckBox("CheckBox #_2", FALSE, 42), EndMember,
  269.                                     StartMember, PrefCheckBox("CheckBox #_3", FALSE, 43), EndMember,
  270.                                  EndObject, FixMinWidth,
  271.                               EndMember,
  272.                               VarSpace(DEFAULT_WEIGHT),
  273.                            EndObject,
  274.                         EndMember,
  275.                         VarSpace(DEFAULT_WEIGHT),
  276.                      EndObject,
  277.                   /*
  278.                   ** Mx page.
  279.                   **/
  280.                   PageMember,
  281.                      VGroupObject,
  282.                         VarSpace(DEFAULT_WEIGHT),
  283.                         StartMember,
  284.                            HGroupObject,
  285.                               VarSpace( DEFAULT_WEIGHT ),
  286.                               StartMember, m = PrefMx("_Mx Object", MxLab, 0, 51), EndMember,
  287.                               VarSpace( DEFAULT_WEIGHT ),
  288.                            EndObject, FixMinHeight,
  289.                         EndMember,
  290.                         VarSpace(DEFAULT_WEIGHT),
  291.                      EndObject,
  292.                EndObject,
  293.             EndMember,
  294.          EndObject,
  295.          EndObject,
  296.          EndMember, EndObject,
  297.    EndObject;
  298.  
  299.    if(!TestWindow) {
  300.        exit(5);
  301.    }
  302.  
  303.    /*
  304.    ** Connect the cycle to the page.
  305.    **/
  306.    AddMap( c, p, Cyc2Page );
  307.    /*
  308.    ** Set tab-cycling order.
  309.    **/
  310.    DoMethod( TestWindow, WM_TABCYCLE_ORDER, s1, s2, s3, NULL );
  311.  
  312.    /*
  313.     * We use these to supply our own scrollers.
  314.     * If we wanted to use default scrollers, we would not use these SetAttrs.
  315.     */
  316.    SetAttrs(v, VIEW_HScroller, GO_BottomProp, TAG_DONE);
  317.    SetAttrs(v, VIEW_VScroller, GO_RightProp,  TAG_DONE);
  318.  
  319.    win = WindowOpen( TestWindow );
  320.  
  321.     if(win) {
  322.         BOOL quit = FALSE;
  323.         ULONG rc, sigmask, sig;
  324.  
  325.         GetAttr( WINDOW_SigMask, TestWindow, &sigmask );
  326.  
  327.         while(!quit) {
  328.             sig = Wait(sigmask | SIGBREAKF_CTRL_C);
  329.  
  330.             if( sig & SIGBREAKF_CTRL_C )
  331.                 quit = TRUE;
  332.  
  333.             if( sig & sigmask ) {
  334.  
  335.                 while( (rc = HandleEvent( TestWindow )) != WMHI_NOMORE)
  336.                 {
  337.                     switch(rc)
  338.                     {
  339.                     case WMHI_CLOSEWINDOW:
  340.                     case 1001: /* Quit gadget. I am just lazy. */
  341.                         //BGUI_Request( NULL, &req, TAG_DONE );
  342.                         quit = TRUE;
  343.                         break;
  344.                     }
  345.                 }
  346.             }
  347.         }
  348.     }
  349.  
  350.     DisposeObject( TestWindow );
  351.  
  352.     CloseLibrary(BGUIBase);
  353.     return 0;
  354. }
  355.  
  356.  
  357.