Changeset aa117c for molecuilder


Ignore:
Timestamp:
Dec 29, 2009, 12:20:20 PM (16 years ago)
Author:
Tillmann Crueger <crueger@…>
Children:
077f6e
Parents:
fab853
Message:

Added possibility to add default Items to textMenus

Location:
molecuilder/src/Menu
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/Menu/DisplayMenuItem.cpp

    rfab853 raa117c  
    3636
    3737void DisplayMenuItem::doTrigger(){}
    38 void DisplayMenuItem::checkTrigger(char c){}
     38bool DisplayMenuItem::checkTrigger(char c){
     39  return false;
     40}
    3941
    4042const string DisplayMenuItem::formatEntry(){
  • molecuilder/src/Menu/DisplayMenuItem.hpp

    rfab853 raa117c  
    2828
    2929  virtual void doTrigger();
    30   virtual void checkTrigger(char);
     30  virtual bool checkTrigger(char);
    3131
    3232  virtual const string formatEntry();
  • molecuilder/src/Menu/MenuItem.cpp

    rfab853 raa117c  
    3333 * check if the trigger matches and call doTrigger if it does.
    3434 */
    35 void MenuItem::checkTrigger(char key) {
    36   if(key == trigger)
     35bool MenuItem::checkTrigger(char key) {
     36  if(key == trigger) {
    3737    doTrigger();
     38    return true;
     39  }
     40  else
     41    return false;
     42
    3843}
    3944
  • molecuilder/src/Menu/MenuItem.hpp

    rfab853 raa117c  
    3131
    3232  virtual void doTrigger()=0;
    33   virtual void checkTrigger(char);
     33  virtual bool checkTrigger(char);
    3434
    3535  virtual const string formatEntry();
  • molecuilder/src/Menu/SeperatorItem.cpp

    rfab853 raa117c  
    3838
    3939void SeperatorItem::doTrigger(){}
    40 void SeperatorItem::checkTrigger(char){}
     40bool SeperatorItem::checkTrigger(char){
     41  return false;
     42}
    4143
    4244const string SeperatorItem::getDescription() {
  • molecuilder/src/Menu/SeperatorItem.hpp

    rfab853 raa117c  
    2424
    2525  virtual void doTrigger();
    26   virtual void checkTrigger(char);
     26  virtual bool checkTrigger(char);
    2727
    2828  virtual const string getDescription();
  • molecuilder/src/Menu/TextMenu.cpp

    rfab853 raa117c  
    2222spacer(_spacer),
    2323length(_length),
    24 quit(false)
     24quit(false),
     25defaultItem(0)
    2526{
    2627}
     
    5556void TextMenu::display() {
    5657  char choice;
     58  bool somethingChosen = false;
    5759  do {
    5860    int pre = floor((length - title.length()) /2.0);
     
    6971    cin >> choice;
    7072
    71     for_each(items.begin(), items.end(), boost::bind(&MenuItem::checkTrigger,_1,choice));
     73    list<MenuItem*>::iterator iter;
     74    for(iter = items.begin(); iter!=items.end();iter++){
     75      somethingChosen |= (*iter)->checkTrigger(choice);
     76    }
     77    // see if something was chosen and call default Item if not
     78    if(!somethingChosen) {
     79      if(defaultItem){
     80        defaultItem->doTrigger();
     81      }
     82      else{
     83        outputter << "Invalid Choice!" <<  endl;
     84      }
     85    }
    7286  }while (!hasQuit());
    7387}
     88
     89void TextMenu::addDefault(MenuItem* _defaultItem) {
     90  defaultItem = _defaultItem;
     91}
  • molecuilder/src/Menu/TextMenu.hpp

    rfab853 raa117c  
    3838  virtual void doQuit();
    3939  /**
    40    * Check wether someone has chosen to quit
     40   * Check whether someone has chosen to quit
    4141   */
    4242  virtual bool hasQuit();
     43
     44  virtual void addDefault(MenuItem*);
    4345
    4446protected:
     
    4749private:
    4850  list<MenuItem*> items;
     51
     52  MenuItem* defaultItem;
     53
    4954  ostream& outputter;
    5055  string title;
Note: See TracChangeset for help on using the changeset viewer.