home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.3 Development Libraries / SGI IRIX 6.3 Development Libraries.iso / dist6.3 / ViewKit_dev.idb / usr / include / Vk / VkPrefItem.h.z / VkPrefItem.h
Encoding:
C/C++ Source or Header  |  1996-09-20  |  7.9 KB  |  325 lines

  1. ////////////////////////////////////////////////////////////////////////////////
  2. ///////   Copyright 1992, Silicon Graphics, Inc.  All Rights Reserved.   ///////
  3. //                                                                            //
  4. // This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;     //
  5. // the contents of this file may not be disclosed to third parties, copied    //
  6. // or duplicated in any form, in whole or in part, without the prior written  //
  7. // permission of Silicon Graphics, Inc.                                       //
  8. //                                                                            //
  9. // RESTRICTED RIGHTS LEGEND:                                                  //
  10. // Use,duplication or disclosure by the Government is subject to restrictions //
  11. // as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data     //
  12. // and Computer Software clause at DFARS 252.227-7013, and/or in similar or   //
  13. // successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -    //
  14. // rights reserved under the Copyright Laws of the United States.             //
  15. //                                                                            //
  16. ////////////////////////////////////////////////////////////////////////////////
  17. #ifndef VKPREFITEM_H
  18. #define VKPREFITEM_H
  19.  
  20. #include <Vk/VkComponent.h>
  21.  
  22. enum VkPrefItemType { PI_none, PI_group, PI_list, PI_radio, PI_text, PI_toggle,
  23.               PI_option, PI_custom, PI_empty, PI_label, PI_separator };
  24.  
  25. class VkPrefItem : public VkComponent {
  26.  
  27.    friend class VkPrefGroup;
  28.    friend class VkPrefList;
  29.    friend class VkPrefRadio;
  30.    friend class VkPrefDialog;
  31.    friend class VkPrefTabDialog;
  32.   
  33.   public:
  34.  
  35.      ~VkPrefItem();
  36.      virtual const char *className();
  37.      virtual VkPrefItemType type();
  38.  
  39.      void activate()    { setActivated(TRUE); }
  40.      void deactivate()  { setActivated(FALSE); }
  41.  
  42.      virtual Boolean changed();
  43.      virtual Boolean isContainer();
  44.      Dimension labelHeight();
  45.      Dimension baseHeight();
  46.      void setLabelHeight(Dimension h);
  47.      void setBaseHeight(Dimension h);
  48.      Widget labelWidget();
  49.  
  50.   protected:
  51.  
  52.     void buildLabel(Widget parent);
  53.     Dimension getHeight(Widget w);
  54.     void setHeight(Widget w, Dimension h);
  55.  
  56.     Widget   _labelWidget;
  57.     char    *_baseName, *_labelName;
  58.     Boolean  _activated, _homogeneous;
  59.    
  60.     VkPrefItem(const char *name);
  61.     virtual void build(Widget parent);
  62.     virtual void build(Widget labelParent, Widget baseParent) = 0;
  63.     void installDestroyHandlers();
  64.     virtual void updateValue() = 0;
  65.     virtual void revertValue() = 0;
  66.     virtual void setActivated(Boolean);
  67.     virtual void deleteChildren();
  68.     void    setHomogeneous(Boolean flag);
  69.  
  70.   private:
  71.  
  72.     static void labelDestroyedCallback(Widget, XtPointer, XtPointer);
  73. };
  74.  
  75.  
  76. class VkPrefGroup : public VkPrefItem {
  77.  
  78.   public:
  79.  
  80.             VkPrefGroup(const char *name, 
  81.                       Boolean horizOrientation = False,
  82.                Boolean noLabel = False);
  83.             ~VkPrefGroup();
  84.  
  85.     virtual void build(Widget parent);
  86.     virtual void show();
  87.     virtual void deleteChildren();
  88.             void addItem(VkPrefItem *item);
  89.     virtual Boolean okToQuit();
  90.     virtual Boolean isContainer();
  91.     virtual const char *className();
  92.     virtual VkPrefItemType type();
  93.     virtual Boolean changed();
  94.     virtual Dimension baseHeight();
  95.             VkPrefItem *item(int which);
  96.            int size();
  97.  
  98.     virtual void updateValue();
  99.     virtual void revertValue();
  100.  
  101.   protected:
  102.  
  103.     virtual void setActivated(Boolean v);
  104.  
  105.  
  106.     virtual void build(Widget labelParent, Widget baseParent);
  107.  
  108.     void checkHomogeneous();
  109.     virtual void buildVertical(Widget baseParent);
  110.     virtual void buildHorizontal(Widget baseParent);
  111.  
  112.     Widget _leftStuff, _rightStuff;
  113.     VkPrefItem **_itemList;
  114.     int _itemCount, _itemListSize;
  115.     Boolean _horiz, _noLabel;
  116.  
  117.   private:
  118.  
  119.     static void mapHandler(Widget w, XtPointer client_data, XEvent *event);
  120. };
  121.  
  122.  
  123. class VkPrefList : public VkPrefGroup {
  124.  
  125.   public:
  126.  
  127.     VkPrefList(const char *name);
  128.     ~VkPrefList();
  129.  
  130.     virtual void build(Widget parent);
  131.  
  132.     virtual const char *className();
  133.     virtual VkPrefItemType type();
  134.  
  135.   protected:
  136.  
  137.      virtual void build(Widget labelParent, Widget baseParent);
  138. };
  139.  
  140.  
  141. class VkPrefRadio : public VkPrefGroup {
  142.  
  143.   public:
  144.  
  145.     VkPrefRadio(const char *name, 
  146.         Boolean horizOrientation = False,
  147.                Boolean noLabel = False);
  148.     ~VkPrefRadio();
  149.  
  150.     virtual void build(Widget parent);
  151.     virtual const char *className();
  152.     virtual VkPrefItemType type();
  153.  
  154.   protected:
  155.  
  156.      virtual void build(Widget labelParent, Widget baseParent);
  157. };
  158.  
  159.  
  160. class VkPrefText : public VkPrefItem {
  161.  
  162.  
  163.   public:
  164.  
  165.      VkPrefText(const char *name, int columns = 5);
  166.      ~VkPrefText();
  167.       virtual const char *className();
  168.  
  169.       virtual VkPrefItemType type();
  170.  
  171.       virtual Boolean changed();
  172.  
  173.       void setValue(const char *str);
  174.       char *getValue();
  175.  
  176.   protected:
  177.  
  178.       int   _columns;
  179.       char *_value;
  180.  
  181.       virtual void build(Widget labelParent, Widget baseParent);
  182.       virtual void build(Widget parent);
  183.       virtual void updateValue();
  184.       virtual void revertValue();
  185.     
  186. };
  187.  
  188.  
  189. class VkPrefToggle : public VkPrefItem {
  190.  
  191.   public:
  192.  
  193.      VkPrefToggle(const char *name, Boolean forceLabelFormat = False);
  194.      ~VkPrefToggle();
  195.       virtual const char *className();
  196.       virtual VkPrefItemType type();
  197.       virtual Boolean changed();
  198.  
  199.       void setValue(Boolean v);
  200.       Boolean getValue();
  201.  
  202.   protected:
  203.  
  204.      Boolean _value, _forceLabel;
  205.      virtual void updateValue();
  206.      virtual void revertValue();
  207.      virtual void build(Widget labelParent, Widget baseParent);
  208.      virtual void build(Widget parent);
  209. };
  210.  
  211.  
  212. class VkPrefOption : public VkPrefItem {
  213.  
  214.   public:
  215.     
  216.     VkPrefOption(const char *name, int numEntries);
  217.     ~VkPrefOption();
  218.     
  219.     void setValue(int index);
  220.     int getValue();
  221.     
  222.     int size() { return _num; }
  223.     void setSize(int numEntries);
  224.     
  225.     void setLabel(int index, const char *label);
  226.     char *getLabel(int index);
  227.     Widget getButton(int index) { return _buttons[index]; }
  228.     
  229.     virtual const char *className();
  230.     virtual VkPrefItemType type();
  231.     virtual Boolean changed();
  232.     
  233.   protected:
  234.     
  235.     Widget _pulldown, *_buttons;
  236.     int _num, _size, _value;
  237.     char **_labels;
  238.     
  239.     virtual void build(Widget labelParent, Widget baseParent);
  240.     virtual void build(Widget parent);
  241.     virtual void updateValue();
  242.     virtual void revertValue();
  243.     
  244. };
  245.  
  246.  
  247. class VkPrefCustom : public VkPrefItem {
  248.  
  249.   public:
  250.  
  251.      VkPrefCustom(const char *name);
  252.     ~VkPrefCustom();
  253.      virtual const char *className();
  254.       virtual VkPrefItemType type();
  255.       virtual Boolean changed();
  256.  
  257.   protected:
  258.  
  259.     virtual void build(Widget labelParent, Widget baseParent);
  260.     virtual void build(Widget parent);
  261.  
  262.     virtual void updateValue();
  263.     virtual void revertValue();
  264. };
  265.  
  266.  
  267. class VkPrefEmpty : public VkPrefCustom {
  268.  
  269.   public:
  270.  
  271.     VkPrefEmpty();
  272.     ~VkPrefEmpty();
  273.      virtual const char *className();
  274.  
  275.     virtual VkPrefItemType type();
  276.     virtual Boolean changed();
  277.  
  278.   protected:
  279.  
  280.     virtual void build(Widget labelParent, Widget baseParent);
  281.     virtual void build(Widget parent);
  282. };
  283.  
  284.  
  285. class VkPrefLabel : public VkPrefItem {
  286.  
  287.   public:
  288.  
  289.     VkPrefLabel(const char *name);
  290.     ~VkPrefLabel();
  291.     virtual const char *className();
  292.  
  293.     virtual VkPrefItemType type();
  294.     virtual Boolean changed();
  295.  
  296.   protected:
  297.    
  298.      virtual void build(Widget labelParent, Widget baseParent);
  299.      virtual void build(Widget parent);
  300.      virtual void updateValue();
  301.      virtual void revertValue();
  302. };
  303.  
  304.  
  305. class VkPrefSeparator : public VkPrefItem {
  306.   
  307.    public:
  308.  
  309.      VkPrefSeparator(const char *name);
  310.      ~VkPrefSeparator();
  311.      virtual const char *className();
  312.      virtual VkPrefItemType type();
  313.      virtual Boolean changed();
  314.  
  315.    protected:
  316.  
  317.      virtual void build(Widget labelParent, Widget baseParent);
  318.      virtual void build(Widget parent);
  319.      virtual void updateValue();
  320.      virtual void revertValue();
  321. };
  322.  
  323.  
  324. #endif
  325.