/*
* Project: MoleCuilder
* Description: creates and alters molecular systems
* Copyright (C) 2010-2012 University of Bonn. All rights reserved.
*
*
* This file is part of MoleCuilder.
*
* MoleCuilder is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* MoleCuilder is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with MoleCuilder. If not, see .
*/
/*
* MenuItem.cpp
*
* Created on: Dec 10, 2009
* Author: crueger
*/
// include config.h
#ifdef HAVE_CONFIG_H
#include
#endif
#include "CodePatterns/MemDebug.hpp"
#include "Menu/TextMenu/MenuItem.hpp"
#include "Menu/TextMenu/TxMenu.hpp"
#include "Menu/Menu.hpp"
#include
/**
* produce a new MenuItem using with a description and a trigger.
* The MenuItem is then added to the menu passed to it.
*/
MenuItem::MenuItem(char _trigger, const std::string &_description,TxMenu* const menu) :
trigger(_trigger),
description(_description),
added(false)
{
add_to_menu(menu);
}
MenuItem::~MenuItem()
{}
/**
* check if the trigger matches and call doTrigger if it does.
*/
bool MenuItem::checkTrigger(char key) {
if(key == trigger) {
doTrigger();
return true;
}
else
return false;
}
char MenuItem::getTrigger() {
return trigger;
}
const std::string MenuItem::getDescription() {
return description;
}
/**
* Produce a formated output of this item containing trigger and description
* Normal format is: " - "
*/
const std::string MenuItem::formatEntry(){
std::stringstream s;
s << getTrigger() << " - " << getDescription();
return s.str();
}
/**
* check if this item is within a menu and add to menu if it is not yet contained anywhere
*
* TODO: include funtionality to move Items from one menu to another
*/
void MenuItem::add_to_menu(TxMenu* const menu) {
if(!wasAdded()) {
menu->addItem(this);
added=true;
}
}
bool MenuItem::wasAdded(){
return added;
}
bool MenuItem::isActive(){
return true;
}