home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / islider.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-22  |  12.1 KB  |  380 lines

  1. #ifndef _ISLIDER_
  2. #define _ISLIDER_
  3. /*******************************************************************************
  4. * FILE NAME: islider.hpp                                                       *
  5. *                                                                              *
  6. * DESCRIPTION:                                                                 *
  7. *   Declaration of the classes:                                                *
  8. *     ISlider                                                                  *
  9. *     IProgressIndicator                                                       *
  10. *                                                                              *
  11. * COPYRIGHT:                                                                   *
  12. *   IBM Open Class Library                                                     *
  13. *   (C) Copyright International Business Machines Corporation 1992, 1996       *
  14. *   Licensed Material - Program-Property of IBM - All Rights Reserved.         *
  15. *   US Government Users Restricted Rights - Use, duplication, or disclosure    *
  16. *   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
  17. *                                                                              *
  18. *******************************************************************************/
  19. #include <icontrol.hpp>
  20.  
  21. class IPoint;
  22. class ISize;
  23. class IString;
  24. class IRectangle;
  25. class IColor;
  26. class IWindowHandle;
  27. class IResourceId;
  28. class IProgressIndicatorData;
  29. class ISliderData;
  30.  
  31. #pragma pack(4)
  32.  
  33. class IProgressIndicator : public IControl  {
  34. typedef IControl
  35.   Inherited;
  36.  
  37. public:
  38. class Style;
  39.  
  40. /*------------------------------ Constructors --------------------------------*/
  41.   IProgressIndicator  ( unsigned long        windowId,
  42.                         IWindow*             parent,
  43.                         IWindow*             owner,
  44.                         const IRectangle&    initial,
  45.                         unsigned long        numberOfTicks,
  46.                         unsigned long        tickSpacing = 0,
  47.                         const Style&         style = defaultStyle() );
  48.   IProgressIndicator  ( unsigned long        windowId,
  49.                         IWindow*             parent,
  50.                         IWindow*             owner,
  51.                         const IRectangle&    initial,
  52.                         unsigned long        scale1NumberOfTicks,
  53.                         unsigned long        scale1TickSpacing,
  54.                         unsigned long        scale2NumberOfTicks,
  55.                         unsigned long        scale2TickSpacing = 0,
  56.                         const Style&         style = defaultStyle() );
  57.   IProgressIndicator  ( unsigned long        windowId,
  58.                         IWindow*             parent );
  59.   IProgressIndicator  ( const IWindowHandle& handle );
  60.  
  61. virtual
  62.  ~IProgressIndicator  ( );
  63.  
  64. /*---------------------------------- Styles ----------------------------------*/
  65. INESTEDBITFLAGCLASSDEF2(Style, IProgressIndicator, IWindow, IControl);
  66.  
  67. static const Style
  68.   IC_IMPORTU classDefaultStyle,
  69.   IC_IMPORTU pmCompatible,
  70.   IC_IMPORTU horizontal,
  71.   IC_IMPORTU vertical,
  72.   IC_IMPORTU alignCentered,
  73.   IC_IMPORTU alignTop,
  74.   IC_IMPORTU alignBottom,
  75.   IC_IMPORTU alignLeft,
  76.   IC_IMPORTU alignRight,
  77.   IC_IMPORTU homeTop,
  78.   IC_IMPORTU homeBottom,
  79.   IC_IMPORTU homeLeft,
  80.   IC_IMPORTU homeRight,
  81.   IC_IMPORTU primaryScale1,
  82.   IC_IMPORTU primaryScale2,
  83.   IC_IMPORTU snapToTickMark,
  84.   IC_IMPORTU ribbonStrip;
  85. static const Style
  86.   IC_IMPORTU handleDrawItem;
  87. #ifndef IC_MOTIFPM_FLAGNOP
  88. static const Style
  89.   IC_IMPORTU border3D;
  90. #endif
  91.  
  92. static Style
  93.   defaultStyle      ( );
  94.  
  95. static void
  96.   setDefaultStyle   ( const Style&    style );
  97.  
  98. virtual unsigned long
  99.   convertToGUIStyle ( const IBitFlag& style,
  100.                       Boolean         extendedOnly = false ) const;
  101.  
  102. /*------------------------------ Related Types -------------------------------*/
  103. enum Alignment {
  104.   topRight,
  105.   bottomLeft,
  106.   centered };
  107. enum HomePosition {
  108.   homeTopRight,
  109.   homeBottomLeft };
  110. enum Scale {
  111.   scale1,
  112.   scale2 };
  113.  
  114. /*----------------------------- Style Functions ------------------------------*/
  115. Alignment
  116.   alignment ( ) const;
  117.  
  118. HomePosition
  119.   homePosition ( ) const;
  120.  
  121. Scale
  122.   primaryScale ( ) const;
  123.  
  124. Boolean
  125.   isVertical           ( ) const,
  126.   isRibbonStripEnabled ( ) const,
  127.   isSnapToTickEnabled  ( ) const;
  128. Boolean
  129.   isDrawItemEnabled    ( ) const,
  130.   isPMCompatible       ( ) const;
  131.  
  132. virtual IProgressIndicator
  133.  &setHomePosition    ( HomePosition home = homeBottomLeft ),
  134.  &setPrimaryScale    ( Scale        primaryScale = scale1 ),
  135.  &enableSnapToTick   ( Boolean      enableSnapToTick = true ),
  136.  &disableSnapToTick  ( ),
  137.  &enableRibbonStrip  ( Boolean      enableRibbonStrip = true ),
  138.  &disableRibbonStrip ( );
  139. virtual IProgressIndicator
  140.  &enableDrawItem     ( Boolean      enableDrawItem = true ),
  141.  &disableDrawItem    ( );
  142.  
  143. /*----------------------------- Tick Operations ------------------------------*/
  144. IString
  145.   tickText ( unsigned long tickNumber ) const;
  146.  
  147. IPoint
  148.   tickPosition ( unsigned long tickNumber ) const;
  149.  
  150. unsigned long
  151.   tickLength    ( unsigned long tickNumber ) const,
  152.   tickSpacing   ( Scale         scale ) const,
  153.   numberOfTicks ( Scale         scale ) const;
  154.  
  155. virtual IProgressIndicator
  156.  &setTickLength ( unsigned long      tickNumber,
  157.                   unsigned long      length ),
  158.  &setTickLength ( unsigned long      length ),
  159.  &setTicks      ( unsigned long      scale1NumberOfTicks,
  160.                   unsigned long      scale2NumberOfTicks,
  161.                   unsigned long      scale1TickSpacing = 0,
  162.                   unsigned long      scale2TickSpacing = 0 ),
  163.  &setTicks      ( Scale              scale,
  164.                   unsigned long      numberOfTicks,
  165.                   unsigned long      tickSpacing = 0 ),
  166.  &setTickText   ( unsigned long      tickNumber,
  167.                   const char*        text ),
  168.  &setTickText   ( unsigned long      tickNumber,
  169.                   const IResourceId& text );
  170.  
  171. /*----------------------------- Shaft Operations -----------------------------*/
  172. virtual IPoint
  173.   shaftPosition ( ) const;
  174.  
  175. virtual ISize
  176.   shaftSize ( ) const;
  177.  
  178. virtual IProgressIndicator
  179.  &setShaftPosition ( const IPoint& position );
  180. virtual IProgressIndicator
  181.  &setShaftBreadth  ( unsigned long breadth );
  182.  
  183. /*------------------------------ Arm Operations ------------------------------*/
  184. virtual unsigned long
  185.   armRange       ( ) const,
  186.   armPixelOffset ( ) const,
  187.   armTickOffset  ( ) const;
  188.  
  189. virtual IProgressIndicator
  190.  &moveArmToTick  ( unsigned long tickNumber ),
  191.  &moveArmToPixel ( unsigned long armOffset );
  192.  
  193. /*---------------------------- Color Functions -------------------------------*/
  194. virtual IColor
  195.   backgroundColor ( ) const;
  196.  
  197.  
  198. /*-------------------------------- Overrides ---------------------------------*/
  199.  
  200. /*----------------------- Notification Event Descriptions --------------------*/
  201. static INotificationId const
  202.   IC_IMPORTU scaleId,
  203.   IC_IMPORTU armChangeId;
  204.  
  205. /*----------------------- Observer Notification ------------------------------*/
  206. virtual IProgressIndicator
  207.  &enableNotification ( Boolean enable=true );
  208.  
  209.  
  210. protected:
  211. /*------------------------------ Implementation ------------------------------*/
  212. virtual ISize
  213.   calcMinimumSize ( ) const;
  214.  
  215. void
  216.   initialize ( unsigned long     windowId,
  217.                unsigned long     parent,
  218.                unsigned long     owner,
  219.                unsigned long     style,
  220.                const IRectangle& initial,
  221.                void*             sliderData );
  222.  
  223.  
  224. /*-------------------------- Protected Constructors --------------------------*/
  225.   IProgressIndicator ( );
  226.  
  227.  
  228. /*-------------------------- Event Handling Implementation -------------------*/
  229.  
  230.  
  231. private:
  232. /*------------------------------ Hidden Members ------------------------------*/
  233.   IProgressIndicator ( const IProgressIndicator& progIndicator );
  234. IProgressIndicator
  235.  &operator=          ( const IProgressIndicator& progIndicator );
  236.  
  237. /*--------------------------------- Private ----------------------------------*/
  238. char*
  239.   getTickText ( unsigned long tickNumber,
  240.                 char*         buffer = 0,
  241.                 unsigned long bufferLength = 0 ) const;
  242. unsigned long
  243.   tickTextLength ( unsigned long tickNumber ) const;
  244.  
  245. IProgressIndicatorData
  246.  *fProgressIndicatorData;
  247.  
  248. static Style
  249.   currentDefaultStyle;
  250.  
  251. friend class INativeSliderHandler;
  252. friend long  __stdcall
  253.    isliderTrackbarWinProc( void*         hwnd,
  254.                            unsigned int  msg,
  255.                            unsigned int  mp1,
  256.                            long          mp2 );
  257.  
  258. /*--------------------------Obsolete Data and Functions ----------------------*/
  259. #if (IC_OBSOLETE <= IC_OBSOLETE_2)
  260. public:
  261. static INotificationId const
  262.   IC_IMPORTU armTickOffsetId,
  263.   IC_IMPORTU armPixelOffsetId;
  264. #endif
  265. };  // IProgressIndicator
  266.  
  267. INESTEDBITFLAGCLASSFUNCS(Style, IProgressIndicator);
  268.  
  269.  
  270. class ISlider : public IProgressIndicator  {
  271. typedef IProgressIndicator
  272.   Inherited;
  273.  
  274. public:
  275. class Style;
  276.  
  277. /*------------------------------ Constructors --------------------------------*/
  278.   ISlider  ( unsigned long         windowId,
  279.              IWindow*              parent,
  280.              IWindow*              owner,
  281.              const IRectangle&     initial,
  282.              unsigned long         numberOfTicks,
  283.              unsigned long         tickSpacing = 0,
  284.              const Style&          style = defaultStyle() );
  285.   ISlider  ( unsigned long         windowId,
  286.              IWindow*              parent,
  287.              IWindow*              owner,
  288.              const IRectangle&     initial,
  289.              unsigned long         scale1NumberOfTicks,
  290.              unsigned long         scale1TickSpacing,
  291.              unsigned long         scale2NumberOfTicks,
  292.              unsigned long         scale2TickSpacing = 0,
  293.              const Style&          style = defaultStyle() );
  294.   ISlider  ( unsigned long         windowId,
  295.              IWindow*              parent );
  296.   ISlider  ( const IWindowHandle&  handle );
  297.  
  298. virtual
  299.   ~ISlider ( );
  300.  
  301. /*---------------------------------- Styles ----------------------------------*/
  302. INESTEDBITFLAGCLASSDEF3(Style, ISlider, IWindow, IControl, IProgressIndicator);
  303.  
  304. static const Style
  305.   IC_IMPORTU classDefaultStyle,
  306.   IC_IMPORTU buttonsTop,
  307.   IC_IMPORTU buttonsBottom,
  308.   IC_IMPORTU buttonsLeft,
  309.   IC_IMPORTU buttonsRight;
  310.  
  311. /*----------------------------- Style Members --------------------------------*/
  312. static Style
  313.   defaultStyle      ( );
  314.  
  315. static void
  316.   setDefaultStyle   ( const Style&    style );
  317.  
  318. virtual unsigned long
  319.   convertToGUIStyle ( const IBitFlag& style,
  320.                       Boolean         extendedOnly = false ) const;
  321.  
  322. enum ButtonsPosition {
  323.   top,
  324.   bottom,
  325.   left,
  326.   right,
  327.   none
  328. };
  329.  
  330. ButtonsPosition
  331.   buttonsPosition ( ) const;
  332.  
  333. /*---------------------------- Detent Operations -----------------------------*/
  334. virtual unsigned long
  335.   detentPosition ( unsigned long detentId ) const,  // in pixels
  336.   addDetent      ( unsigned long offset );
  337.  
  338. virtual ISlider
  339.  &removeDetent ( unsigned long detentId );
  340.  
  341. /*------------------------------ Arm Operations ------------------------------*/
  342. ISize
  343.   armSize   ( ) const;
  344.  
  345. virtual ISlider
  346.  &setArmSize ( const ISize&  sliderArm );
  347.  
  348. /*-------------------------------- Attributes --------------------------------*/
  349. virtual Boolean
  350.   hasFocus ( ) const;
  351.  
  352. /*----------------------- Notification Event Descriptions --------------------*/
  353. static INotificationId const
  354.   IC_IMPORTU armTrackId;
  355.  
  356.  
  357. private:
  358. /*------------------------------ Hidden Members ------------------------------*/
  359.   ISlider   ( const ISlider& slider );
  360. ISlider
  361.  &operator= ( const ISlider& slider );
  362.  
  363. /*--------------------------------- Private ----------------------------------*/
  364. ISliderData
  365.  *fSliderData;
  366.  
  367. static Style
  368.   currentDefaultStyle;
  369.  
  370. friend IProgressIndicatorData;
  371. }; // ISlider
  372.  
  373. INESTEDBITFLAGCLASSFUNCS(Style, ISlider);
  374.  
  375. #pragma pack()
  376.  
  377.   #include <islider.inl>
  378.  
  379. #endif /* _ISLIDER_ */
  380.