home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / powergui / buttons / radio / radio.cpp < prev    next >
Text File  |  1996-10-29  |  4KB  |  146 lines

  1. //************************************************************
  2. // Button Controls - Radio Button Select Handler                 
  3. //
  4. // Copyright (C) 1994, Law, Leong, Love, Olson, Tsuji.
  5. // Copyright (c) 1997 John Wiley & Sons, Inc. 
  6. // All Rights Reserved.
  7. //************************************************************
  8. #include <iframe.hpp>
  9. #include <iradiobt.hpp>
  10. #include <imcelcv.hpp>
  11. #include <istattxt.hpp>
  12. #include <icombobx.hpp>
  13. #include <ipushbut.hpp>
  14. #include <isetcv.hpp>
  15. #include <iapp.hpp>
  16. #include <iselhdr.hpp>
  17. #include <icconst.h>
  18. #include "radio.h"
  19.  
  20. // Declare the radio button select handler
  21. class SelectHandler : public ISelectHandler
  22. {
  23. public:
  24.   SelectHandler ( ISetCanvas& canvas)
  25.       : _canvas(canvas)  {}
  26.  
  27. protected:
  28. virtual Boolean
  29.   selected   ( IControlEvent& event );
  30.  
  31. private:
  32. ISetCanvas
  33.  &_canvas;
  34. SelectHandler& operator=(const SelectHandler&);
  35. };
  36.  
  37. void main()
  38. {
  39. IFrameWindow
  40.   frame ("Radio Button Select Handler Example");
  41. IMultiCellCanvas 
  42.   client(IC_FRAME_CLIENT_ID, &frame, &frame);
  43.  
  44. // Set 1 for radio buttons; set 2 for bitmap name.
  45. ISetCanvas 
  46.   set1(ID_SET1, &client, &client),
  47.   set2(ID_SET2, &client, &client);
  48.  
  49. // Add the set 1 buttons
  50. IRadioButton
  51.   image(ID_IMAGE, &set1, &set1),
  52.   color(ID_COLOR, &set1, &set1);
  53. IPushButton
  54.   changeColor(ID_CHANGECOLOR, &set1, &set2);
  55.  
  56. set1.setText("Background type");
  57. set2.setText("Image");
  58.  
  59. // Add text to the buttons.  Note that
  60. // mnemonics are platform-sensitive.
  61. #ifdef IC_PM
  62.   image.setText("~Image");
  63.   color.setText("C~olor");
  64.   changeColor.setText("C~hange Color...");
  65. #else
  66.   image.setText("&Image");
  67.   color.setText("C&olor");
  68.   changeColor.setText("C&hange Color...");
  69. #endif
  70.  
  71. // Add the set 2 text and combination box.
  72. IStaticText
  73.   fileLeader (ID_FILESTATIC, &set2, &set2);
  74. IComboBox
  75.   fileName   (ID_FILENAME, &set2, &set2, IRectangle(0,0,0,0),
  76.               IComboBox::dropDownType | IWindow::visible);
  77.  
  78. fileLeader.setText("File:");
  79. fileName.setText("os2.bmp");
  80.  
  81. // Enable tab stops.
  82. image.enableTabStop();
  83. fileName.enableTabStop();
  84.  
  85. // Select the color choice.
  86. image.select();
  87.  
  88. // Add the sets to the client canvas.
  89. client
  90.  .addToCell(&set1, 2, 2)
  91.  .addToCell(&set2, 2, 3);
  92.  
  93. // Allow for some growth in the canvas.
  94. client
  95.  .setRowHeight   (4, 10, true);
  96.  
  97. // Create and add select handler.
  98. SelectHandler selectHandler(set2);
  99. selectHandler.handleEventsFor(&set1);
  100.  
  101. // Put the canvas in the client and show the application.
  102. frame
  103.   .setClient(&client)
  104.   .setFocus()
  105.   .show();
  106.  
  107. IApplication::current().run();
  108. }
  109.  
  110. IBase::Boolean SelectHandler::selected ( IControlEvent& event )
  111. {
  112.  
  113.    switch(event.controlId())
  114.    {
  115.      case ID_IMAGE :
  116.      case ID_COLOR :
  117.      {
  118.         // Test to see if we should enable or disable
  119.         Boolean enable =  (event.controlId() == ID_IMAGE);
  120.  
  121.         // If image button is selected, Enable the canvas and  
  122.         // its children; otherwise, disable the canvas and its 
  123.         // children.  Although disabling the canvas disables
  124.         // the children, they don't look disabled unless 
  125.         // we explicitly disable them.
  126.         IRadioButton* button = 
  127.                        (IRadioButton*)event.controlWindow();
  128.         if (button && button->isSelected())
  129.         {
  130.           _canvas.enable(enable);
  131.           IWindow::ChildCursor cursor(_canvas);
  132.           for(cursor.setToFirst(); 
  133.               cursor.isValid(); 
  134.               cursor.setToNext())
  135.           {
  136.              IWindow* child = IWindow::windowWithHandle(
  137.                                _canvas.childAt(cursor));
  138.              child->enable(enable);
  139.           }
  140.         }
  141.         break;
  142.      }
  143.    }
  144.    return false;
  145. }
  146.