home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC5.DMS / in.adf / EO-Demos.lha / EasyObjects-Demos / Knopfzeile / Knopfzeile.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-04  |  4.2 KB  |  156 lines

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