#include #include #include #include #include #include #include #include #include MainFrame::MainFrame(void) { mPaintHandler.setCallback(this,&MainFrame::paintHandler); mCloseHandler.setCallback(this,&MainFrame::closeHandler); mQueryEndSessionHandler.setCallback(this,&MainFrame::queryEndSessionHandler); mDestroyHandler.setCallback(this,&MainFrame::destroyHandler); mCommandHandler.setCallback(this,&MainFrame::commandHandler); mKeyDownHandler.setCallback(this,&MainFrame::keyDownHandler); mSizeHandler.setCallback(this,&MainFrame::sizeHandler); mCreateHandler.setCallback(this,&MainFrame::createHandler); insertHandlers(); } MainFrame::~MainFrame() { removeHandlers(); } void MainFrame::insertHandlers(void) { FrameWindow::insertHandler(MainFrame::DestroyHandler,&mDestroyHandler); FrameWindow::insertHandler(VectorHandler::PaintHandler,&mPaintHandler); FrameWindow::insertHandler(VectorHandler::CommandHandler,&mCommandHandler); FrameWindow::insertHandler(VectorHandler::SizeHandler,&mSizeHandler); FrameWindow::insertHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler); FrameWindow::insertHandler(VectorHandler::CloseHandler,&mCloseHandler); FrameWindow::insertHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler); FrameWindow::insertHandler(VectorHandler::CreateHandler,&mCreateHandler); } void MainFrame::removeHandlers(void) { FrameWindow::removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); FrameWindow::removeHandler(VectorHandler::PaintHandler,&mPaintHandler); FrameWindow::removeHandler(VectorHandler::CommandHandler,&mCommandHandler); FrameWindow::removeHandler(VectorHandler::SizeHandler,&mSizeHandler); FrameWindow::removeHandler(VectorHandler::KeyDownHandler,&mKeyDownHandler); FrameWindow::removeHandler(VectorHandler::CreateHandler,&mCreateHandler); FrameWindow::removeHandler(VectorHandler::CloseHandler,&mCloseHandler); FrameWindow::removeHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler); } 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 MENU_FILE_OPEN : handleFileOpen(); break; case MENU_FILE_SAVEBITMAP : handleSaveBitmap(); break; case MENU_FILE_EXIT : handleExit(); break; case MENU_SLIDE_SELECT : handleSlideSelect(); break; case MENU_TBMESH : handleMesh(); break; case MENU_TBNOMESH : handleNoMesh(); break; case MENU_TBSIGMA : handleSigma(); break; case MENU_TBTRANSFORMA : handleTransforma(); break; case MENU_TBTRANSFORMB : handleTransformb(); break; case MENU_TBDISSOLVE : handleCrossDissolve(); break; case MENU_RESIZE : handleResize(); break; case MENU_WARP_CONVEX : handleWarpConvex(); break; /* case NNTP_FILE_OPEN : handleFileOpen(); break; case NNTP_FILE_BROWSE : handleFileBrowse(); break; case NNTP_FILE_EXIT : FrameWindow::postMessage(*this,WM_CLOSE,0,0L); break; case NNTP_NEWS_GETNEWS : mNewsOption.option((NewsOption::Option)someCallbackData.wParam()); handleRetrieve(); break; case NNTP_NEWS_GETGROUPS : mNewsOption.option((NewsOption::Option)someCallbackData.wParam()); handleRetrieve(); break; case NNTP_NEWSGROUPS_SUBSCRIBE : handleSubscribe(); break; case NNTP_IMAGE_FITTOWINDOW : handleImageFitToWindow(); break; case NNTP_OPTIONS_NEWSSERVER : handleNewsServer(); break; case NNTP_OPTIONS_GENERALOPTIONS : handleGeneralOptions(); break; case NNTP_OPTIONS_RASSETTINGS : handleRasSettings(); break; case NNTP_OPTIONS_CLEARLOG : handleClearLog(); break; case NNTP_NEWS_CANCEL : handleCancelNews(); break; case NNTP_VIEW_LOG : handleViewLog(); break; */ default : break; } return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::keyDownHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::paintHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::createHandler(CallbackData &/*someCallbackData*/) { createControls(); show(SW_SHOW); update(); mStatusControl->setText("Ready."); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::queryEndSessionHandler(CallbackData &someCallbackData) { if(getClient().hasChildren())return (CallbackData::ReturnType)FALSE; return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::closeHandler(CallbackData &someCallbackData) { destroy(); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::destroyHandler(CallbackData &/*someCallbackData*/) { // cancel(); removeHandlers(); ::PostQuitMessage(0); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MainFrame::sizeHandler(CallbackData &someCallbackData) { Rect statusRect; Rect toolRect; Rect cRect; mToolControl->windowRect(toolRect); mStatusControl->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; } // ************************************************************************************************** void MainFrame::handleSlideSelect() { } void MainFrame::handleSaveBitmap() { } void MainFrame::handleExit() { close(); } void MainFrame::createControls(void) { Rect controlRect; Rect statusRect; createToolBar(); mStatusControl=::new StatusBarEx(*this,StatusBarID); mStatusControl.disposition(PointerDisposition::Delete); mStatusControl->clientRect(statusRect); controlRect.bottom(height()/2-statusRect.bottom()); } void MainFrame::handleFileOpen(void) { String strCurrentDirectory; DiskInfo diskInfo; BOOL openResult(FALSE); OpenDialog openFileName; diskInfo.getCurrentDirectory(strCurrentDirectory); openFileName.owner(*this); openFileName.instance(processInstance()); openFileName.filter("Jpg;Gif;Bmp"); openFileName.filterPattern("*.jpg"); openFileName.fileName("*.JPG"); openFileName.fileTitle(""); openFileName.initialDirectory(mLastOpenDirectory.isNull()?strCurrentDirectory:mLastOpenDirectory); openFileName.title("Open File"); openFileName.creationFlags(OpenDialog::EXPLORER|OpenDialog::FILEMUSTEXIST); openResult=openFileName.getOpenFileName(); diskInfo.getCurrentDirectory(mLastOpenDirectory); diskInfo.setCurrentDirectory(strCurrentDirectory); if(!openResult)return; openDocument(openFileName.fileName()); } bool MainFrame::openDocument(const String &strPathFileName) { ImageView &imageView=createDocumentView(); imageView.open(strPathFileName); return false; } ImageView &MainFrame::createDocumentView(void) { SmartPointer mdiWindow; ImageView *pImageView; pImageView=::new ImageView; pImageView->createWindow(*this,String(STRING_DOCUMENTVIEWCLASSNAME),"ImageView","viewMenu","PAINT"); insert(*pImageView); return *pImageView; } void MainFrame::createToolBar(void) { mBitmaps.size(10); mBitmaps[0].loadBitmap("MESH"); mBitmaps[1].loadBitmap("NOMESH"); mBitmaps[2].loadBitmap("SIGMA"); mBitmaps[3].loadBitmap("TRANSFORMA"); mBitmaps[4].loadBitmap("TRANSFORMB"); mBitmaps[5].loadBitmap("XDISSOLVE"); mBitmaps[6].loadBitmap("FILENEW"); mBitmaps[7].loadBitmap("FILEOPEN"); mBitmaps[8].loadBitmap("FILESAVE"); mBitmaps[9].loadBitmap("FILEHELP"); mToolControl=::new ToolBar(); mToolControl.disposition(PointerDisposition::Delete); mToolControl->create(*this,ToolBarID); mToolControl->setButtonSize(24,24); mToolControl->setBitmapSize(22,24); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[0].getHBITMAP(),0)); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[1].getHBITMAP(),0)); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[2].getHBITMAP(),0)); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[3].getHBITMAP(),0)); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[4].getHBITMAP(),0)); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[5].getHBITMAP(),0)); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[6].getHBITMAP(),0)); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[7].getHBITMAP(),0)); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[8].getHBITMAP(),0)); mToolControl->addBitmap(AddBitmap((UINT)mBitmaps[9].getHBITMAP(),0)); mToolControl->addButton(ToolBarButton(6,0,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->addButton(ToolBarButton(7,MENU_FILE_OPEN,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->addButton(ToolBarButton(8,MENU_FILE_SAVEBITMAP,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->addButton(ToolBarButton(9,0,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->addButton(ToolBarButton(0,MENU_TBMESH,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->addButton(ToolBarButton(1,MENU_TBNOMESH,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->addButton(ToolBarButton(2,MENU_TBSIGMA,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->addButton(ToolBarButton(3,MENU_TBTRANSFORMA,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->addButton(ToolBarButton(4,MENU_TBTRANSFORMB,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->addButton(ToolBarButton(5,MENU_TBDISSOLVE,ToolBarButton::StateEnabled,ToolBarButton::StyleButton)); mToolControl->enableButton(MENU_TBMESH,false); mToolControl->enableButton(MENU_TBNOMESH,false); mToolControl->enableButton(MENU_TBSIGMA,false); mToolControl->enableButton(MENU_TBTRANSFORMA,false); mToolControl->enableButton(MENU_TBTRANSFORMB,false); mToolControl->enableButton(MENU_TBDISSOLVE,false); } void MainFrame::handleResize() { SmartPointer imageView; getActive(imageView); if(!imageView.isOkay())return; ((ImageView&)*imageView).resizeImage(); } void MainFrame::handleMesh() { SmartPointer imageView; getActive(imageView); if(!imageView.isOkay())return; ((ImageView&)*imageView).showMesh(); } void MainFrame::handleNoMesh() { SmartPointer imageView; getActive(imageView); if(!imageView.isOkay())return; ((ImageView&)*imageView).noMesh(); } void MainFrame::handleTransforma() { SmartPointer imageView; getActive(imageView); if(!imageView.isOkay())return; ((ImageView&)*imageView).meshWarp(); } void MainFrame::handleTransformb() { } void MainFrame::handleSigma() { SmartPointer imageView; getActive(imageView); if(!imageView.isOkay())return; ((ImageView&)*imageView).handleFrames(); } void MainFrame::handleCrossDissolve() { } void MainFrame::handleWarpConvex(void) { PMDIWindow imageView; getActive(imageView); if(!imageView.isOkay())return; ((ImageView&)*imageView).handleWarpConvex(); } // ** virtuals void MainFrame::mdiDestroy(MDIWindow &mdiWindow) { // if(mLogViewWinCache.isOkay()&&*mLogViewWinCache==mdiWindow)mLogViewWinCache.destroy(); } void MainFrame::mdiActivate(MDIWindow &mdiWindow) { mToolControl->enableButton(MENU_TBMESH,true); mToolControl->enableButton(MENU_TBNOMESH,true); mToolControl->enableButton(MENU_TBSIGMA,true); mToolControl->enableButton(MENU_TBTRANSFORMA,true); mToolControl->enableButton(MENU_TBTRANSFORMB,true); mToolControl->enableButton(MENU_TBDISSOLVE,true); } void MainFrame::mdiDeactivate(MDIWindow &mdiWindow) { if(1==size()) { mToolControl->enableButton(MENU_TBMESH,false); mToolControl->enableButton(MENU_TBNOMESH,false); mToolControl->enableButton(MENU_TBSIGMA,false); mToolControl->enableButton(MENU_TBTRANSFORMA,false); mToolControl->enableButton(MENU_TBTRANSFORMB,false); mToolControl->enableButton(MENU_TBDISSOLVE,false); } }