Files
Work/statbar/statbarx.cpp
2024-08-07 09:16:27 -04:00

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;
}