Initial
This commit is contained in:
529
m68hc11/Mainfrm.cpp
Normal file
529
m68hc11/Mainfrm.cpp
Normal file
@@ -0,0 +1,529 @@
|
||||
#include <m68hc11/mainfrm.hpp>
|
||||
#include <m68hc11/serdlg.hpp>
|
||||
#include <m68hc11/codeview.hpp>
|
||||
#include <m68hc11/mcuview.hpp>
|
||||
#include <m68hc11/cmpdlg.hpp>
|
||||
#include <m68hc11/m68reg.hpp>
|
||||
#include <m68hc11/splash.hpp>
|
||||
#include <printman/printman.hpp>
|
||||
#include <common/assert.hpp>
|
||||
#include <common/opendlg.hpp>
|
||||
#include <common/gdata.hpp>
|
||||
#include <common/crsctrl.hpp>
|
||||
#include <common/diskinfo.hpp>
|
||||
|
||||
char MainFrame::szClassName[]="M68HC11";
|
||||
char MainFrame::szMenuName[]="mainMenu";
|
||||
|
||||
MainFrame::MainFrame(void)
|
||||
{
|
||||
mQueryEndSessionHandler.setCallback(this,&MainFrame::queryEndSessionHandler);
|
||||
mPaintHandler.setCallback(this,&MainFrame::paintHandler);
|
||||
mDestroyHandler.setCallback(this,&MainFrame::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&MainFrame::commandHandler);
|
||||
mSizeHandler.setCallback(this,&MainFrame::sizeHandler);
|
||||
mCreateHandler.setCallback(this,&MainFrame::createHandler);
|
||||
mLineHandler.setCallback(this,&MainFrame::lineHandler);
|
||||
insertHandlers();
|
||||
}
|
||||
|
||||
MainFrame::~MainFrame()
|
||||
{
|
||||
destroy();
|
||||
}
|
||||
|
||||
void MainFrame::insertHandlers(void)
|
||||
{
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler);
|
||||
}
|
||||
|
||||
void MainFrame::removeHandlers(void)
|
||||
{
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
removeHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::createHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
GlobalData<int> statParts;
|
||||
|
||||
createToolBar();
|
||||
mStatusBar=::new StatusBarEx(*this,StatusBarID);
|
||||
mStatusBar.disposition(PointerDisposition::Delete);
|
||||
statParts.size(2);
|
||||
*((int*)&statParts[0])=300;
|
||||
*((int*)&statParts[1])=400;
|
||||
mStatusBar->setParts(statParts);
|
||||
mStatusBar->setText("Ready");
|
||||
applyHistory(getFrameMenu());
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::destroyHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
removeHandlers();
|
||||
::PostQuitMessage(0);
|
||||
::WinHelp(*this,0,HELP_QUIT,0);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::queryEndSessionHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(getClient().hasChildren())return (CallbackData::ReturnType)FALSE;
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::sizeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
Rect statusRect;
|
||||
Rect toolRect;
|
||||
Rect cRect;
|
||||
|
||||
mToolBar.windowRect(toolRect);
|
||||
mStatusBar->windowRect(statusRect);
|
||||
cRect.right(someCallbackData.loWord());
|
||||
cRect.bottom(someCallbackData.hiWord());
|
||||
getClient().moveWindow(0,toolRect.bottom()-toolRect.top(),cRect.right(),cRect.bottom()-((statusRect.bottom()-statusRect.top())+(toolRect.bottom()-toolRect.top())));
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::lineHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
String msg;
|
||||
::sprintf(msg,"Ln %d, Col %d",someCallbackData.loWord(),someCallbackData.hiWord());
|
||||
mStatusBar->setText(msg,1);
|
||||
mStatusBar->update();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::paintHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wmCommandID())
|
||||
{
|
||||
case MenuCodeCompile :
|
||||
handleCodeCompile();
|
||||
break;
|
||||
case MenuCodeCompileAndLoad :
|
||||
handleCodeCompileAndLoad();
|
||||
break;
|
||||
case MenuEditCut :
|
||||
handleEditCut();
|
||||
break;
|
||||
case MenuEditCopy :
|
||||
handleEditCopy();
|
||||
break;
|
||||
case MenuEditPaste :
|
||||
handleEditPaste();
|
||||
break;
|
||||
case MenuEditFind :
|
||||
handleEditFind();
|
||||
break;
|
||||
case MenuCascade :
|
||||
cascade();
|
||||
break;
|
||||
case MenuTile :
|
||||
tile();
|
||||
break;
|
||||
case MenuArrange :
|
||||
arrange();
|
||||
break;
|
||||
case MenuCloseAll :
|
||||
closeAll();
|
||||
break;
|
||||
case MenuMinimizeAll :
|
||||
minimizeAll();
|
||||
break;
|
||||
case MenuRestoreAll :
|
||||
restoreAll();
|
||||
break;
|
||||
case MenuFileNew :
|
||||
handleFileNew();
|
||||
break;
|
||||
case MenuFileOpen :
|
||||
handleFileOpen();
|
||||
break;
|
||||
case MenuFileSave :
|
||||
handleFileSave();
|
||||
break;
|
||||
case MenuFilePrint :
|
||||
handleFilePrint();
|
||||
break;
|
||||
case MenuFileSaveAs :
|
||||
handleFileSaveAs();
|
||||
break;
|
||||
case MenuFileClose :
|
||||
handleFileClose();
|
||||
break;
|
||||
case MenuCompiler :
|
||||
handleMenuCompiler();
|
||||
break;
|
||||
case MenuFileQuit :
|
||||
handleQuit();
|
||||
break;
|
||||
case MenuSettingsSerial :
|
||||
handleCommunications();
|
||||
break;
|
||||
case MenuHelpContents :
|
||||
handleHelp();
|
||||
break;
|
||||
case MenuHelpSearch :
|
||||
handleHelp();
|
||||
break;
|
||||
case MenuRegistration :
|
||||
break;
|
||||
case MenuHelpAbout :
|
||||
break;
|
||||
}
|
||||
if(someCallbackData.wParam()>=StartDynamicID)handleFileOpen(someCallbackData);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
// handlers
|
||||
|
||||
void MainFrame::handleCodeCompile(void)
|
||||
{
|
||||
CursorControl cursorControl;
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
Block<String> includePath;
|
||||
String strMessage;
|
||||
M68Reg m68Reg;
|
||||
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
CodeView &codeView=(CodeView&)*mdiWindow;
|
||||
if(codeView.isDirty()&&IDYES==::MessageBox(*this,(LPSTR)"Save Changes?",(LPSTR)"M68HC11",MB_YESNO))if(!handleFileSave())return;
|
||||
mStatusBar->setText("compiling...");
|
||||
cursorControl.waitCursor(TRUE);
|
||||
m68Reg.getIncludePath(includePath);
|
||||
m68Assembler.assemble(codeView.getTitle(),includePath);
|
||||
cursorControl.waitCursor(FALSE);
|
||||
strMessage=m68Assembler.strLastMessage()+String(", code size is ")+String().fromInt(m68Assembler.codeSize())+String(" byte(s).");
|
||||
mStatusBar->setText(strMessage);
|
||||
}
|
||||
|
||||
void MainFrame::handleCodeCompileAndLoad(void)
|
||||
{
|
||||
CursorControl cursorControl;
|
||||
Block<String> includePath;
|
||||
bool assembleResult;
|
||||
String strPathBinary;
|
||||
String strMessage;
|
||||
M68Reg m68Reg;
|
||||
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
CodeView &codeView=(CodeView&)*mdiWindow;
|
||||
if(codeView.isDirty()&&IDYES==::MessageBox(*this,(LPSTR)"Save Changes?",(LPSTR)"M68HC11",MB_YESNO))if(!handleFileSave())return;
|
||||
mStatusBar->setText("compiling...");
|
||||
cursorControl.waitCursor(TRUE);
|
||||
m68Reg.getIncludePath(includePath);
|
||||
assembleResult=m68Assembler.assemble(codeView.getTitle(),includePath);
|
||||
cursorControl.waitCursor(FALSE);
|
||||
strMessage=m68Assembler.strLastMessage()+String(", code size is ")+String().fromInt(m68Assembler.codeSize())+String(" byte(s).");
|
||||
mStatusBar->setText(strMessage);
|
||||
if(!assembleResult)return;
|
||||
strPathBinary=codeView.getTitle().betweenString(0,'.');
|
||||
strPathBinary+=".bin";
|
||||
codeLoad(strPathBinary);
|
||||
}
|
||||
|
||||
void MainFrame::handleEditCut(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).cut();
|
||||
}
|
||||
|
||||
void MainFrame::handleEditCopy(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).copy();
|
||||
}
|
||||
|
||||
void MainFrame::handleEditPaste(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).paste();
|
||||
}
|
||||
|
||||
void MainFrame::handleEditFind(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).find();
|
||||
}
|
||||
|
||||
void MainFrame::handleFileNew(void)
|
||||
{
|
||||
CodeView *pCodeView;
|
||||
|
||||
pCodeView=::new CodeView;
|
||||
pCodeView->setLineHandler(&mLineHandler);
|
||||
pCodeView->createWindow(*this,STRING_CODEVIEWCLASSNAME,STRING_CODEVIEWCLASSNAME,"codeMenu","Doc");
|
||||
insert(*pCodeView);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileOpen(CallbackData &someCallbackData)
|
||||
{
|
||||
PureMenu fileMenu;
|
||||
String menuItemString;
|
||||
|
||||
getFrameMenu().getSubMenu(0,fileMenu);
|
||||
menuItemString=fileMenu.menuItemString(someCallbackData.wParam(),PureMenu::ByCommand);
|
||||
if(menuItemString.isNull())return;
|
||||
menuItemString=menuItemString.betweenString(')',0);
|
||||
menuItemString.trimLeft();
|
||||
handleFileOpen(menuItemString);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileOpen(void)
|
||||
{
|
||||
OpenDialog openDialog;
|
||||
String strPathFileName;
|
||||
|
||||
if(!openDialog.getOpenFileName(*this,"*.asm","Open File","*.asm",strPathFileName))return;
|
||||
handleFileOpen(strPathFileName);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileOpen(const String &strPathFileName)
|
||||
{
|
||||
CodeView *pCodeView;
|
||||
CursorControl cursorControl;
|
||||
|
||||
if(bringDocumentToFront(strPathFileName))return;
|
||||
mStatusBar->setText("Loading...");
|
||||
cursorControl.waitCursor(TRUE);
|
||||
|
||||
pCodeView=::new CodeView;
|
||||
insert(*pCodeView); // insert the pointer before creating/activating the window
|
||||
pCodeView->createWindow(*this,STRING_CODEVIEWCLASSNAME,STRING_CODEVIEWCLASSNAME,"codeMenu","Doc");
|
||||
pCodeView->setLineHandler(&mLineHandler);
|
||||
pCodeView->open(strPathFileName);
|
||||
mStatusBar->setText("Ready");
|
||||
cursorControl.waitCursor(FALSE);
|
||||
updateHistory(strPathFileName);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileClose(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
mdiWindow->close();
|
||||
}
|
||||
|
||||
void MainFrame::handleFilePrint(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).print();
|
||||
}
|
||||
|
||||
BOOL MainFrame::handleFileSave(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return FALSE;
|
||||
CodeView &codeView=(CodeView&)*mdiWindow;
|
||||
if(codeView.getTitle()==String(STRING_UNTITLED))return handleFileSaveAs();
|
||||
if(!codeView.save())return mStatusBar->setText(codeView.getTitle()+String(" save failed.")),FALSE;
|
||||
return mStatusBar->setText(codeView.getTitle()+String(" saved.")),TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL MainFrame::handleFileSaveAs(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
OpenDialog openDialog;
|
||||
String strPathFileName;
|
||||
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return FALSE;
|
||||
if(!openDialog.getSaveFileName(*this,"Assembly Files","File Save","*.asm",strPathFileName))return FALSE;
|
||||
if(!strPathFileName.strstr(".asm"))strPathFileName+=".asm";
|
||||
if(!((CodeView&)*mdiWindow).save(strPathFileName))return mStatusBar->setText(strPathFileName+String(" save failed!.")),FALSE;
|
||||
return mStatusBar->setText(strPathFileName+String(" saved.")),TRUE;
|
||||
}
|
||||
|
||||
void MainFrame::handleCommunications(void)
|
||||
{
|
||||
SerialDlg serDlg;
|
||||
serDlg.perform(*this);
|
||||
}
|
||||
|
||||
void MainFrame::handleHelp(void)
|
||||
{
|
||||
String strPathHelpFileName;
|
||||
DiskInfo diskInfo;
|
||||
|
||||
diskInfo.getCurrentDirectory(strPathHelpFileName);
|
||||
strPathHelpFileName+=String(STRING_HELPFILENAME);
|
||||
::WinHelp(*this,strPathHelpFileName,HELP_CONTENTS,0);
|
||||
}
|
||||
|
||||
void MainFrame::handleMenuCompiler()
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
CMPDlg cmpDlg;
|
||||
Block<String> pathDirList;
|
||||
|
||||
m68Reg.getIncludePath(pathDirList);
|
||||
cmpDlg.setIncludePath(pathDirList);
|
||||
if(cmpDlg.perform(*this))
|
||||
{
|
||||
cmpDlg.getIncludePath(pathDirList);
|
||||
m68Reg.setIncludePath(pathDirList);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void MainFrame::handleQuit()
|
||||
{
|
||||
postMessage(*this,WM_CLOSE,0,0L);
|
||||
}
|
||||
|
||||
// support & testing
|
||||
BOOL MainFrame::codeLoad(const String &strPathBinary)
|
||||
{
|
||||
MCUView *pMCUView;
|
||||
|
||||
pMCUView=::new MCUView;
|
||||
pMCUView->createWindow(*this,STRING_MCUVIEWCLASSNAME,STRING_MCUVIEWCLASSNAME,"mcuMenu","Doc");
|
||||
insert(*pMCUView);
|
||||
pMCUView->setCode(strPathBinary);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
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;}
|
||||
mStatusBar->setParts(statParts);
|
||||
}
|
||||
|
||||
void MainFrame::updateHistory(const String &pathFileName)
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
Array<SmartPointer<MDIWindow> >mdiWindows;
|
||||
|
||||
if(!m68Reg.insertHistory(pathFileName))return;
|
||||
removeHistory(getFrameMenu());
|
||||
applyHistory(getFrameMenu());
|
||||
getDocuments(mdiWindows);
|
||||
for(int index=0;index<mdiWindows.size();index++)
|
||||
{
|
||||
SmartPointer<MDIWindow> &mdiWindow=mdiWindows[index];
|
||||
removeHistory(mdiWindow->getMenu());
|
||||
applyHistory(mdiWindow->getMenu());
|
||||
}
|
||||
}
|
||||
|
||||
void MainFrame::removeHistory(PureMenu &pureMenu)
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
UINT startID(StartDynamicID);
|
||||
Block<String> nameList;
|
||||
PureMenu fileMenu;
|
||||
|
||||
m68Reg.getHistory(nameList);
|
||||
if(!nameList.size())return;
|
||||
pureMenu.getSubMenu(0,fileMenu);
|
||||
for(int itemIndex=0;itemIndex<nameList.size();itemIndex++)fileMenu.removeMenu(startID++,PureMenu::ByCommand);
|
||||
int entries(fileMenu.size());
|
||||
if((int)PureMenu::TypeSeparator&(int)fileMenu.getMenuItemType(entries-1,PureMenu::ByPosition))fileMenu.removeMenu(entries-1,PureMenu::ByPosition);
|
||||
}
|
||||
|
||||
void MainFrame::applyHistory(PureMenu &pureMenu)
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
Block<String> nameList;
|
||||
PureMenu fileMenu;
|
||||
String strItem;
|
||||
|
||||
m68Reg.getHistory(nameList);
|
||||
if(!nameList.size())return;
|
||||
pureMenu.getSubMenu(0,fileMenu);
|
||||
fileMenu.appendSeparator();
|
||||
for(int itemIndex=0;itemIndex<nameList.size();itemIndex++)
|
||||
{
|
||||
::sprintf(strItem,"%d) %s",itemIndex+1,(char*)nameList[itemIndex]);
|
||||
fileMenu.appendMenu(StartDynamicID+itemIndex,strItem);
|
||||
}
|
||||
}
|
||||
|
||||
void MainFrame::createToolBar(void)
|
||||
{
|
||||
Block<AddBitmap> addBitmaps;
|
||||
|
||||
mToolBar.create(*this,ToolBarID);
|
||||
addBitmaps.insert(&AddBitmap(0,HINST_COMMCTRL));
|
||||
if(!mToolBar.addBitmaps(addBitmaps))return;
|
||||
mToolBar.addButton(ToolBarButton(STD_FILENEW,MenuFileNew,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FILEOPEN,MenuFileOpen,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FILESAVE,MenuFileSave,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PRINT,MenuFilePrint,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_CUT,MenuEditCut,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_COPY,MenuEditCopy,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PASTE,MenuEditPaste,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FIND,MenuEditFind,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PRINT,MenuFilePrint,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
}
|
||||
|
||||
BOOL MainFrame::bringDocumentToFront(const String &strTitle)
|
||||
{
|
||||
Array<SmartPointer<MDIWindow> >mdiWindows;
|
||||
|
||||
getDocuments(mdiWindows);
|
||||
for(int index=0;index<mdiWindows.size();index++)
|
||||
{
|
||||
SmartPointer<MDIWindow> &mdiWindow=mdiWindows[index];
|
||||
if(((CodeView&)*mdiWindow).getTitle()==strTitle){mdiWindow->bringWindowToTop();return TRUE;}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void MainFrame::splash(void)
|
||||
{
|
||||
SplashScreen splashScreen("SPLASH","M68HC11");
|
||||
splashScreen.perform();
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
void MainFrame::mdiDestroy(MDIWindow &mdiWindow)
|
||||
{
|
||||
Array<SmartPointer<MDIWindow> >mdiWindows;
|
||||
WORD winCount(0);
|
||||
|
||||
getDocuments(mdiWindows);
|
||||
for(int index=0;index<mdiWindows.size();index++)
|
||||
{
|
||||
SmartPointer<MDIWindow> &mdiWindowPtr=mdiWindows[index];
|
||||
if(mdiWindowPtr->className()==String(STRING_CODEVIEWCLASSNAME)&&((MDIWindow*)mdiWindowPtr!=&mdiWindow))winCount++;
|
||||
}
|
||||
if(!winCount)setParts(SinglePart);
|
||||
}
|
||||
|
||||
void MainFrame::mdiActivate(MDIWindow &mdiWindow)
|
||||
{
|
||||
if(mdiWindow.className()==String(STRING_CODEVIEWCLASSNAME))setParts(DoublePart);
|
||||
removeHistory(mdiWindow.getMenu());
|
||||
applyHistory(mdiWindow.getMenu());
|
||||
}
|
||||
|
||||
void MainFrame::mdiDeactivate(MDIWindow &/*mdiWindow*/)
|
||||
{
|
||||
}
|
||||
Reference in New Issue
Block a user