00001 #ifdef WIN32 00002 #pragma warning(disable : 4786 ) 00003 #endif 00004 00005 #include "CSMenuBar.h" 00006 #include "CSLAF.h" 00007 #include "CSDesktop.h" 00008 #include "CSMenu.h" 00009 #include "CSMessage.h" 00010 #include "CSFont.h" 00011 00012 const char *CSMenuBar::CLASS = "CSMenuBar"; 00013 00014 CSMenuBar::CSMenuBar(void) : CSBar(TYPE_HORIZONTAL) 00015 { 00016 static char *functionName="CSMenuBar"; 00017 LOG_ENTER 00018 initMenuBar(); 00019 LOG_EXIT 00020 } 00021 00022 CSMenuBar::~CSMenuBar() 00023 { 00024 static char *functionName="~CSMenuBar"; 00025 } 00026 00027 void CSMenuBar::initMenuBar() 00028 { 00029 static char *functionName="initMenuBar"; 00030 LOG_ENTER 00031 mMenuState = BUTTON_DEFAULT; 00032 mActiveMenu = 0; 00033 mLastActiveMenu = 0; 00034 LOG_EXIT 00035 } 00036 00037 void CSMenuBar::resetMenu() 00038 { 00039 closeLastMenu(); 00040 if (mActiveMenu != 0) 00041 { 00042 mActiveMenu->closeMenu(); 00043 } 00044 mLastActiveMenu = 0; 00045 mActiveMenu = 0; 00046 mMenuState = BUTTON_DEFAULT; 00047 } 00048 00049 void CSMenuBar::setActiveMenu(CSMenu *menu) 00050 { 00051 if (menu == 0) 00052 { 00053 return; 00054 } 00055 if (mActiveMenu != menu) 00056 { 00057 mLastActiveMenu = mActiveMenu; 00058 mActiveMenu = menu; 00059 } 00060 } 00061 int CSMenuBar::getMenuState(CSMenu *menu) 00062 { 00063 // if (menu == mActiveMenu) 00064 { 00065 return mMenuState; 00066 } 00067 return BUTTON_DEFAULT; // only if enabled! 00068 } 00069 00070 void CSMenuBar::closeLastMenu() 00071 { 00072 if (mLastActiveMenu != 0) 00073 { 00074 mLastActiveMenu->closeMenu(); 00075 } 00076 } 00077 00078 void CSMenuBar::layoutSetupMenuBar() 00079 { 00080 static char *functionName="layoutSetupMenuBar"; 00081 LOG_ENTER 00082 layoutSetupBar(); 00083 LOG_EXIT 00084 }