1 // $Id: constraintmenus.h,v 1.8 2012/02/29 00:29:58 ewalkup Exp $ 2 3 /* 4 Copyright 2002 Peter Beerli, Mary Kuhner, Jon Yamato and Joseph Felsenstein 5 6 This software is distributed free of charge for non-commercial use 7 and is copyrighted. Of course, we do not guarantee that the software 8 works, and are not responsible for any damage you may cause or have. 9 */ 10 11 #ifndef CONSTRAINTMENUS_H 12 #define CONSTRAINTMENUS_H 13 14 #include <string> 15 #include "forcesmenus.h" 16 #include "newmenuitems.h" 17 #include "setmenuitem.h" 18 #include "togglemenuitem.h" 19 20 class UIInterface; 21 22 class ConstraintMenuForOneForce : public NewMenu 23 { 24 public: 25 ConstraintMenuForOneForce(UIInterface &ui,UIId id); 26 virtual ~ConstraintMenuForOneForce(); 27 }; 28 29 //These two classes are used for the individual forces' menus. 30 class SubMenuConstraintsForOneForce : public ForceSubMenuItem 31 { 32 private: 33 SubMenuConstraintsForOneForce(); //undefined 34 UIId id; 35 public: 36 SubMenuConstraintsForOneForce(std::string key, UIInterface& ui, UIId id); 37 virtual ~SubMenuConstraintsForOneForce(); 38 }; 39 40 class ConstraintsMenuForOneForceCreator : public NewMenuCreator 41 { 42 private: 43 ConstraintsMenuForOneForceCreator(); //undefined 44 UIInterface& ui; 45 UIId id; 46 public: ConstraintsMenuForOneForceCreator(UIInterface & myui,UIId myid)47 ConstraintsMenuForOneForceCreator(UIInterface& myui, UIId myid) : 48 ui(myui), id(myid) {}; ~ConstraintsMenuForOneForceCreator()49 virtual ~ConstraintsMenuForOneForceCreator() {}; Create()50 virtual NewMenu_ptr Create() { return NewMenu_ptr(new ConstraintMenuForOneForce(ui, id));}; 51 }; 52 53 class AddToGroupedConstraintsMenuItem : public SetMenuItemId 54 { 55 public: 56 AddToGroupedConstraintsMenuItem(std::string key, UIInterface& ui, 57 UIId id); 58 virtual ~AddToGroupedConstraintsMenuItem(); 59 virtual MenuInteraction_ptr GetHandler(std::string input); 60 }; 61 62 class GetIdAndAddDialog : public SetDialog 63 { 64 private: 65 UIId outputId; 66 protected: 67 virtual void stuffValIntoUI(std::string val); 68 virtual void stuffVal2IntoUI(std::string val); 69 public: 70 GetIdAndAddDialog(UIInterface& ui, string menuKey, UIId id); 71 virtual ~GetIdAndAddDialog(); 72 virtual menu_return_type InvokeMe(Display& display); 73 virtual bool handleInput2(std::string input); 74 virtual string inLoopOutputString(); 75 virtual string inLoopOutputString2(); 76 77 }; 78 79 class RemoveFromGroupedConstraintsMenuItem : public SetMenuItemId 80 { 81 public: 82 RemoveFromGroupedConstraintsMenuItem(std::string key, UIInterface& ui, 83 UIId id); 84 virtual ~RemoveFromGroupedConstraintsMenuItem(); 85 virtual MenuInteraction_ptr GetHandler(std::string input); 86 }; 87 88 class GetIdAndRemoveDialog : public SetDialog 89 { 90 protected: 91 virtual void stuffValIntoUI(std::string val); 92 public: 93 GetIdAndRemoveDialog(UIInterface& ui, string menuKey, UIId id); 94 virtual ~GetIdAndRemoveDialog(); 95 virtual string inLoopOutputString(); 96 97 }; 98 99 class ToggleMenuItemUngroupedConstraints : public ToggleMenuItemGroup 100 { 101 private: 102 UIId m_id; 103 public: 104 ToggleMenuItemUngroupedConstraints(UIInterface & ui,UIId id); 105 virtual ~ToggleMenuItemUngroupedConstraints(); 106 virtual std::string GetGroupDescription(); 107 virtual std::string GetEmptyDescription(); 108 virtual UIIdVec1d GetVisibleIds(); 109 }; 110 111 class ToggleMenuItem2dGroup : public MenuDisplayQuantaWithHandler 112 { 113 private: 114 ToggleMenuItem2dGroup(); //undefined 115 protected: 116 UIInterface & ui; 117 std::string menuKey; 118 virtual UIId GetIdFromKey(std::string key); 119 virtual MenuInteraction_ptr MakeOneHandler(UIId id); 120 virtual UIId GetGroupIdFromLocalId(UIId localId); 121 public: 122 ToggleMenuItem2dGroup(UIInterface& ui, string menuKey); ~ToggleMenuItem2dGroup()123 virtual ~ToggleMenuItem2dGroup() {}; 124 virtual UIIdVec2d GetVisibleIds() = 0; 125 // single alphanumeric to invoke this line 126 virtual std::string GetKey(UIId id); 127 // description of this item 128 virtual std::string GetText(UIId id); 129 // current value of this item if any 130 virtual std::string GetVariableText(UIId id); GetGroupDescription()131 virtual std::string GetGroupDescription() {return "\n";}; 132 virtual std::string GetGroupDescription(long groupId); GetEmptyDescription()133 virtual std::string GetEmptyDescription() {return "\n";}; 134 virtual std::string GetEmptyDescription(long groupId); 135 virtual bool Handles(std::string input); 136 virtual MenuInteraction_ptr GetHandler(std::string input); 137 // not virtual because we're assuming all inheritors should 138 // use the canned routine given in class Display 139 void DisplayItemOn(Display & display); 140 141 // stuff for multi-line items HasMultiLineItems()142 virtual bool HasMultiLineItems() {return false;}; GetExtraText(UIId id)143 virtual std::vector<std::string> GetExtraText(UIId id) {return std::vector<std::string>();}; GetExtraVariableText(UIId id)144 virtual std::vector<std::string> GetExtraVariableText(UIId id) {return std::vector<std::string>();}; 145 146 }; 147 148 class ToggleMenuItemGroupedConstraints : public ToggleMenuItem2dGroup 149 { 150 private: 151 UIId m_id; 152 public: 153 ToggleMenuItemGroupedConstraints(UIInterface & ui,UIId id); 154 virtual ~ToggleMenuItemGroupedConstraints(); 155 virtual UIIdVec2d GetVisibleIds(); 156 // description of the group 157 virtual std::string GetGroupDescription(long groupId); 158 virtual std::string GetEmptyDescription(long groupId); 159 }; 160 161 #endif // CONSTRAINTMENUS_H 162 163 //____________________________________________________________________________________ 164