// fmenuitem.cpp // class FMenuItem #include "fmenuitem.h" #include "fmenulist.h" //---------------------------------------------------------------------- // class FMenuItem //---------------------------------------------------------------------- // constructor and destructor //---------------------------------------------------------------------- FMenuItem::FMenuItem (FWidget* parent) : FWidget(parent) { init (parent); } //---------------------------------------------------------------------- FMenuItem::FMenuItem (FString& txt, FWidget* parent) { setText(txt); init (parent); } //---------------------------------------------------------------------- FMenuItem::FMenuItem (const std::string& txt, FWidget* parent) : FWidget(parent) { setText(txt); init (parent); } //---------------------------------------------------------------------- FMenuItem::FMenuItem (const char* txt, FWidget* parent) : FWidget(parent) { setText(txt); init (parent); } //---------------------------------------------------------------------- FMenuItem::~FMenuItem() // destructor { } // private methods of FMenuItem //---------------------------------------------------------------------- void FMenuItem::init (FWidget* parent) { active = true; selected = false; separator = false; checked = false; //menu = 0 setGeometry (1,1,1,1); if ( parent && isMenuBar(parent) ) { setSuperMenu( dynamic_cast(parent) ); superMenu()->insert(this); } } //---------------------------------------------------------------------- bool FMenuItem::isMenuBar (FWidget* w) const { return bool ( strcmp ( w->getClassName(), const_cast("FMenuBar") ) == 0 ); } // protected methods of FMenuItem //---------------------------------------------------------------------- void FMenuItem::processActivate() { } // public methods of FMenuItem //---------------------------------------------------------------------- void FMenuItem::onAccel (FAccelEvent* event) { if ( isSelected() ) { unsetSelected(); FWidget* w = reinterpret_cast(superMenu()); if ( isMenuBar(w) ) w->redraw(); event->accept(); } } //---------------------------------------------------------------------- FMenuList* FMenuItem::superMenu() const { return super_menu; } //---------------------------------------------------------------------- void FMenuItem::setSuperMenu (FMenuList* smenu) { super_menu = smenu; } //---------------------------------------------------------------------- inline void FMenuItem::setActive() { this->active = true; processActivate(); }