Files
Work/remotepsapp/Mainfrm.cpp
2024-08-07 09:16:27 -04:00

247 lines
6.8 KiB
C++

#include <remotepsapp/mainfrm.hpp>
#include <remotepsapp/remoteps.hpp>
#include <remotepsapp/connectiondialog.hpp>
#include <remotepsapp/processview.hpp>
#include <common/puremenu.hpp>
#include <statbar/statbarx.hpp>
MainFrame::MainFrame(void)
{
mQueryEndSessionHandler.setCallback(this,&MainFrame::queryEndSessionHandler);
mCloseHandler.setCallback(this,&MainFrame::closeHandler);
mSizeHandler.setCallback(this,&MainFrame::sizeHandler);
mCommandHandler.setCallback(this,&MainFrame::commandHandler);
mCreateHandler.setCallback(this,&MainFrame::createHandler);
mDestroyHandler.setCallback(this,&MainFrame::destroyHandler);
insertHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler);
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
}
MainFrame::~MainFrame()
{
removeHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler);
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
removeHandler(VectorHandler::SizeHandler,&mSizeHandler);
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
}
CallbackData::ReturnType MainFrame::queryEndSessionHandler(CallbackData &someCallbackData)
{
if(getClient().hasChildren())return (CallbackData::ReturnType)FALSE;
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainFrame::destroyHandler(CallbackData &someCallbackData)
{
postQuitMessage();
::WinHelp(*this,0,HELP_QUIT,0);
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainFrame::closeHandler(CallbackData &someCallbackData)
{
destroy();
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainFrame::createHandler(CallbackData &someCallbackData)
{
mStatusControl=::new StatusBarEx(*this,getClient(),StatusControlID);
mStatusControl.disposition(PointerDisposition::Delete);
setParts(SinglePart);
setText("Ready");
setCaption();
bringWindowToTop();
return (CallbackData::ReturnType)TRUE;
}
CallbackData::ReturnType MainFrame::sizeHandler(CallbackData &someCallbackData)
{
Rect statusRect;
Rect cRect;
mStatusControl->windowRect(statusRect);
cRect.right(someCallbackData.loWord());
cRect.bottom(someCallbackData.hiWord());
getClient().moveWindow(0,0,cRect.right(),cRect.bottom()-(statusRect.bottom()-statusRect.top()));
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainFrame::commandHandler(CallbackData &someCallbackData)
{
switch(someCallbackData.wParam())
{
case IDM_CASCADE :
cascade();
break;
case IDM_TILE :
tile();
break;
case IDM_ARRANGE :
arrange();
break;
case IDM_CLOSEALL :
closeAll();
break;
case IDM_MINIMIZEALL :
minimizeAll();
break;
case IDM_RESTOREALL :
restoreAll();
break;
case PSMENU_FILEOPEN :
handleFileOpen();
break;
case PSMENU_FILECLOSE :
handleFileClose();
break;
case PSMENU_FILESAVE :
handleFileSave();
break;
case PSMENU_FILESAVEAS :
handleFileSaveAs();
break;
case PSMENU_FILEPRINT :
handleFilePrint();
break;
case PSMENU_FILEQUIT :
handleFileQuit();
break;
case PSMENU_SINGLECONNECTION :
handleFileOpenSingleConnection();
break;
case PSMENU_SELECTGROUP :
handleFileSelectGroup();
break;
}
// if(someCallbackData.wParam()>=StartDynamicID)handleFileOpenEvent(someCallbackData);
return (CallbackData::ReturnType)FALSE;
}
void MainFrame::setParts(int numParts)
{
GlobalData<int> statParts;
if(1==numParts){statParts.size(1);*((int*)&statParts[0])=FirstPartWidth;}
else {statParts.size(2);*((int*)&statParts[0])=FirstPartWidth;*((int*)&statParts[0]+1)=SecondPartWidth;}
mStatusControl->setParts(statParts);
}
void MainFrame::setText(const String &strText)
{
if(!mStatusControl.isOkay())return;
mStatusControl->setText(strText);
mStatusControl->update();
}
void MainFrame::splash(void)
{
// SplashScreen splashScreen("APISPY","",3000);
// splashScreen.perform();
}
void MainFrame::setCaption(String strText)
{
String strCaption;
windowText(strCaption);
FrameWindow::setCaption(strCaption);
}
void MainFrame::handleFileOpen(void)
{
GDIPoint cursorPos;
cursorPos.x(0);
cursorPos.y(0);
PureMenu popupMenu(PureMenu::PopupMenu);
popupMenu.insertMenu(0,PureMenu::ItemString,PSMENU_SINGLECONNECTION,"Single &Connection...");
popupMenu.insertMenu(1,PureMenu::ItemString,PSMENU_SELECTGROUP,"Select &Group...");
popupMenu.trackPopupMenu(*this,cursorPos,PureMenu::CenterAlign|PureMenu::TopAlign);
}
void MainFrame::handleFileOpenSingleConnection(void)
{
SmartPointer<MDIWindow> mdiWindow;
ProcessView *processView;
ConnectionDialog connectionDialog;
String strComputerName;
if(!connectionDialog.perform(*this,strComputerName))return;
processView=::new ProcessView;
processView->createWindow(*this,String(STRING_PROCESSVIEWCLASSNAME),"ProcessView","viewMenu","psicon");
insert(*processView);
processView->connect(strComputerName);
}
void MainFrame::handleFileSelectGroup(void)
{
}
void MainFrame::handleFileClose(void)
{
}
void MainFrame::handleFileSave(void)
{
}
void MainFrame::handleFileSaveAs(void)
{
}
void MainFrame::handleFilePrint(void)
{
}
void MainFrame::handleFileQuit(void)
{
postMessage(*this,WM_CLOSE,0,0L);
}
// *** virtuals
void MainFrame::mdiDestroy(MDIWindow &mdiWindow)
{
}
void MainFrame::mdiActivate(MDIWindow &mdiWindow)
{
#if 0
String strWindowText;
mdiWindow.windowText(strWindowText);
if(strWindowText.betweenString(0,' ')==String("Definitions"))setParts(DoublePart);
*mStatusControl=mdiWindow.getMenu();
mStatusControl->setSequentialResourceDescriptors(SPYMENU_FILEOPEN,STRING_DESCRIPTORFILEOPEN,(STRING_DESCRIPTORHELPABOUT-STRING_DESCRIPTORFILEOPEN)+1);
removeHistory(mdiWindow.getMenu());
applyHistory(mdiWindow.getMenu());
if(mAPIDebug.isOkay()&&mAPIDebug->isDebugging())
{
enableMenuItems(0,SPYMENU_FILECLOSE,PureMenu::ByCommand,PureMenu::ItemEnabled);
enableMenuItems(0,SPYMENU_FILEOPEN,PureMenu::ByCommand,PureMenu::InsertFlags(PureMenu::ItemDisabled|PureMenu::ItemGrayed));
}
else if((mAPIDebug.isOkay()&&!mAPIDebug->isDebugging())||!mAPIDebug.isOkay())
{
enableMenuItems(0,SPYMENU_FILECLOSE,PureMenu::ByCommand,PureMenu::InsertFlags(PureMenu::ItemDisabled|PureMenu::ItemGrayed));
enableMenuItems(0,SPYMENU_FILEOPEN,PureMenu::ByCommand,PureMenu::ItemEnabled);
}
#endif
}
void MainFrame::mdiDeactivate(MDIWindow &mdiWindow)
{
// String strWindowText;
// mdiWindow.windowText(strWindowText);
// if(strWindowText.betweenString(0,' ')==String("Definitions"))setParts(SinglePart);
// mStatusControl->setText(" ");
}