247 lines
6.8 KiB
C++
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(" ");
|
|
}
|