home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC5.DMS / in.adf / EO-Demos.lha / EasyObjects-Demos / Gadgetspalte / Gadgetspalte.c < prev   
Encoding:
C/C++ Source or Header  |  1994-10-24  |  4.0 KB  |  160 lines

  1.  
  2. #include <classes/layouter/windows.h>
  3. #include <classes/layouter/boopsigadgets.h>
  4. #include <classes/layouter/decorgadgets.h>
  5. #include <classes/exec/libraries.h>
  6.  
  7. class GadgetColumnC : public GeometryGroupC {
  8. public:
  9.     GadgetColumnC(
  10.         GroupLayoutC &frame,
  11.         ULONG topRelation, GeometryC *topObject, WORD topOffset,
  12.         ULONG bottomRelation, GeometryC *bottomObject, WORD bottomOffset,
  13.         ULONG leftRelation, GeometryC *leftObject, WORD leftOffset,
  14.         ULONG rightRelation, GeometryC *rightObject, WORD rightOffset);
  15.     ~GadgetColumnC();
  16.     VOID add(GeometryC &);
  17. private:
  18.     TransparentLayoutC left, right;
  19.     GeometryC leftG, rightG;
  20.     GeometryC *lastG;
  21. };
  22.  
  23. GadgetColumnC::GadgetColumnC(
  24.         GroupLayoutC &frame,
  25.         ULONG topRelation, GeometryC *topObject, WORD topOffset,
  26.         ULONG bottomRelation, GeometryC *bottomObject, WORD bottomOffset,
  27.         ULONG leftRelation, GeometryC *leftObject, WORD leftOffset,
  28.         ULONG rightRelation, GeometryC *rightObject, WORD rightOffset)
  29.     : GeometryGroupC(frame,
  30.        topRelation,topObject,topOffset,
  31.        bottomRelation,bottomObject,bottomOffset,
  32.        leftRelation,leftObject,leftOffset,
  33.        rightRelation,rightObject,rightOffset),
  34.       left(),
  35.       right(),
  36.       leftG(left,
  37.        LAYOUT_SIZE,NULL,0,LAYOUT_GROUP,NULL,0,
  38.        LAYOUT_GROUP,NULL,0,LAYOUT_MAXOPPBORDER,NULL,0),
  39.       rightG(right,
  40.        LAYOUT_SIZE,NULL,0,LAYOUT_GROUP,NULL,0,
  41.        LAYOUT_MAXOPPBORDER,NULL,0,LAYOUT_GROUP,NULL,0),
  42.       lastG(NULL)
  43. {
  44.     GeometryGroupC::add(leftG);
  45.     GeometryGroupC::add(rightG);
  46. }
  47.  
  48. GadgetColumnC::~GadgetColumnC()
  49. {
  50. }
  51.  
  52. VOID GadgetColumnC::add(GeometryC &g)
  53. {
  54.     if (lastG)
  55.         g.setTopRule(LAYOUT_OPPBORDER,lastG,2)
  56.     else
  57.         g.setTopRule(LAYOUT_GROUP,NULL,0);
  58.     g.setBottomRule(LAYOUT_SIZE,NULL,0);
  59.     g.setLeftRule(LAYOUT_OPP,&leftG,0);
  60.     g.setRightRule(LAYOUT_OPP,&rightG,0);
  61.     GeometryGroupC::add(g);
  62.     lastG = &g;
  63. }
  64.  
  65. class TestWindowC : public StandardWindowC {
  66. public:
  67.     TestWindowC(GTIDCMPortC &, ScreenC &);
  68.     ~TestWindowC();
  69. private:
  70.     LBBevelboxC columnFrame;
  71.     LBStringC string1, string2, string3;
  72.     GeometryC string1G, string2G, string3G;
  73.     GadgetColumnC columnG;
  74.     WindowCloseHandlerC wch;
  75. };
  76.  
  77. TestWindowC::TestWindowC(GTIDCMPortC &p, ScreenC &s)
  78.     : StandardWindowC(p,s,NULL,
  79.         TAG_END),
  80.       columnFrame(*this),
  81.       string1(NULL,*this,LAYOUT_AUTOSIZE,LAYOUT_AUTOSIZE,
  82.        GA_Text,"Name",
  83.        STRINGA_MaxChars,20,
  84.        TAG_END),
  85.       string2(NULL,*this,LAYOUT_AUTOSIZE,LAYOUT_AUTOSIZE,
  86.        GA_Text,"Vorname",
  87.        STRINGA_MaxChars,20,
  88.        TAG_END),
  89.       string3(NULL,*this,LAYOUT_AUTOSIZE,LAYOUT_AUTOSIZE,
  90.        GA_Text,"Straße",
  91.        STRINGA_MaxChars,20,
  92.        TAG_END),
  93.       string1G(string1,
  94.        LAYOUT_GROUP,NULL,0,LAYOUT_GROUP,NULL,0,
  95.        LAYOUT_SIZE,NULL,0,LAYOUT_SIZE,NULL,0),
  96.       string2G(string2,
  97.        LAYOUT_GROUP,NULL,0,LAYOUT_GROUP,NULL,0,
  98.        LAYOUT_SIZE,NULL,0,LAYOUT_SIZE,NULL,0),
  99.       string3G(string3,
  100.        LAYOUT_GROUP,NULL,0,LAYOUT_GROUP,NULL,0,
  101.        LAYOUT_SIZE,NULL,0,LAYOUT_SIZE,NULL,0),
  102.       columnG(columnFrame,
  103.        LAYOUT_GROUP,NULL,2,LAYOUT_GROUP,NULL,-2,
  104.        LAYOUT_GROUP,NULL,2,LAYOUT_GROUP,NULL,-2),
  105.       wch(*this)
  106. {
  107.     titlegadgets.add(columnFrame);
  108.     gadgets.add(string1);
  109.     gadgets.add(string2);
  110.     gadgets.add(string3);
  111.     columnG.add(string1G);
  112.     columnG.add(string2G);
  113.     columnG.add(string3G);
  114.     innerGeo.add(columnG);
  115. }
  116.  
  117. TestWindowC::~TestWindowC()
  118. {
  119.     close();
  120. }
  121.  
  122. LibraryBaseErrC GadToolsBase("gadtools.library",37);
  123. LibraryBaseErrC UtilityBase("utility.library",37);
  124. LibraryBaseErrC CxBase("commodities.library",37);
  125. LibraryBaseErrC LayersBase("layers.library",37);
  126. LibraryBaseErrC WorkbenchBase("workbench.library",37);
  127.  
  128. int main()
  129. {
  130.     if (!LibraryBaseC::areAllOpen())
  131.         return 20;
  132.  
  133.     // diese Klasse empfängt und verarbeitet alle Signale
  134.     SignalsC sc;
  135.  
  136.     // öffentlichen Standardbildschirm sperren
  137.     PublicScreenC screen();
  138.     if (!screen.lock(NULL))
  139.         return 100;
  140.  
  141.     // der IDCMPort (in der GadTools Version) für die Fenster
  142.     GTIDCMPortC port;
  143.     sc.add(port);
  144.  
  145.     // Das Fenster
  146.     TestWindowC window(port,screen);
  147.  
  148.     // noch einen Ctrl C HandlerC zur Sicherheit einhängen
  149.     CtrlCHandlerC ctrlchandler;
  150.     sc.add(ctrlchandler);
  151.  
  152.     // Fenster öffnen
  153.     window.open();
  154.  
  155.     // THE BIG AND EASY ONE!
  156.     sc.loop();
  157.  
  158.     return 0;
  159. }
  160.