115 lines
3.5 KiB
C++
115 lines
3.5 KiB
C++
#include <statbar/statbarx.hpp>
|
|
|
|
StatusBarEx::StatusBarEx(GUIWindow &frameWindow,GUIWindow &clientWindow,UINT controlID)
|
|
: StatusBarMenu(frameWindow), mParentWindow(&frameWindow), mClientWindow(&clientWindow)
|
|
{
|
|
mMenuSelectHandler.setCallback(this,&StatusBarEx::menuSelectHandler);
|
|
mSizeHandler.setCallback(this,&StatusBarEx::sizeHandler);
|
|
mParentWindow->insertHandler(VectorHandler::MenuSelectHandler,&mMenuSelectHandler);
|
|
mParentWindow->insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
|
createControl("",*mParentWindow,controlID);
|
|
}
|
|
|
|
StatusBarEx::StatusBarEx(GUIWindow &parentWindow,UINT controlID)
|
|
: StatusBarMenu(parentWindow), mParentWindow(&parentWindow)
|
|
{
|
|
mMenuSelectHandler.setCallback(this,&StatusBarEx::menuSelectHandler);
|
|
mSizeHandler.setCallback(this,&StatusBarEx::sizeHandler);
|
|
mParentWindow->insertHandler(VectorHandler::MenuSelectHandler,&mMenuSelectHandler);
|
|
mParentWindow->insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
|
createControl("",*mParentWindow,controlID);
|
|
}
|
|
|
|
StatusBarEx::~StatusBarEx()
|
|
{
|
|
mParentWindow->removeHandler(VectorHandler::MenuSelectHandler,&mMenuSelectHandler);
|
|
mParentWindow->removeHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
|
}
|
|
|
|
StatusBarEx &StatusBarEx::operator=(const StatusBarEx &someStatusBarEx)
|
|
{ // private implementation
|
|
return *this;
|
|
}
|
|
|
|
StatusBarEx &StatusBarEx::operator=(const GUIWindow &someGUIWindow)
|
|
{
|
|
(StatusBarMenu&)*this=someGUIWindow;
|
|
return *this;
|
|
}
|
|
|
|
StatusBarEx &StatusBarEx::operator=(const PureMenu &somePureMenu)
|
|
{
|
|
(StatusBarMenu&)*this=somePureMenu;
|
|
return *this;
|
|
}
|
|
|
|
CallbackData::ReturnType StatusBarEx::sizeHandler(CallbackData &someCallbackData)
|
|
{
|
|
moveWindow(0,0,0,0);
|
|
return (CallbackData::ReturnType)TRUE;
|
|
}
|
|
|
|
CallbackData::ReturnType StatusBarEx::menuSelectHandler(CallbackData &someCallbackData)
|
|
{
|
|
UINT itemID(someCallbackData.menuSelectID());
|
|
WORD menuFlags(someCallbackData.menuSelectFlags());
|
|
HMENU hMenu(someCallbackData.menuSelectMenu());
|
|
|
|
if((0==hMenu&&0xFFFF==menuFlags)||!itemID){setText(" ");return (CallbackData::ReturnType)0;}
|
|
if(menuFlags&MF_POPUP)setStatBarText(PureMenu(someCallbackData.menuSelectIDPopup()),TRUE);
|
|
else if(!setStatBarText(itemID,TRUE))
|
|
{
|
|
PureMenu pureMenu(hMenu);
|
|
setText(pureMenu.menuItemString(itemID,PureMenu::ByCommand));
|
|
}
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
BOOL StatusBarEx::setSequentialResourceDescriptors(UINT menuID,UINT stringID,WORD itemCount)
|
|
{
|
|
for(int i=0;i<itemCount;i++)setMenuItemDescriptor(MenuItem(String((int)(stringID+i)),menuID+i));
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL StatusBarEx::setSequentialResourceLabels(UINT stringID,WORD itemCount)
|
|
{
|
|
Block<String> menuLabels;
|
|
|
|
for(int itemIndex=0;itemIndex<itemCount;itemIndex++)menuLabels.insert(&String((int)stringID+itemIndex));
|
|
setMenuLabelDescriptors(menuLabels);
|
|
return TRUE;
|
|
}
|
|
|
|
void StatusBarEx::setText(const String &strText)
|
|
{
|
|
StatusControl::setText(strText,0);
|
|
update();
|
|
}
|
|
|
|
void StatusBarEx::setText(const String &strText,UINT partIndex)
|
|
{
|
|
StatusControl::setText(strText,partIndex);
|
|
update();
|
|
}
|
|
|
|
BOOL StatusBarEx::setStatBarText(PureMenu &somePureMenu,WORD redrawFlag)
|
|
{
|
|
MenuItem menuItem;
|
|
|
|
if(!getMenuItemDescriptor(somePureMenu,menuItem))return FALSE;
|
|
if(!redrawFlag)return TRUE;
|
|
setText(menuItem.itemString());
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL StatusBarEx::setStatBarText(int itemID,WORD redrawFlag)
|
|
{
|
|
MenuItem menuItem;
|
|
|
|
menuItem.itemID(itemID);
|
|
if(-1!=itemID)if(!getMenuItemDescriptor(menuItem))return FALSE;
|
|
if(!redrawFlag)return TRUE;
|
|
setText(menuItem.itemString());
|
|
return TRUE;
|
|
}
|