Initial
This commit is contained in:
424
meshwrp/mainfrm.cpp
Normal file
424
meshwrp/mainfrm.cpp
Normal file
@@ -0,0 +1,424 @@
|
||||
#include <meshwrp/mainfrm.hpp>
|
||||
#include <meshwrp/resource.hpp>
|
||||
#include <meshwrp/imageview.hpp>
|
||||
#include <common/stdio.hpp>
|
||||
#include <common/diskinfo.hpp>
|
||||
#include <common/openfile.hpp>
|
||||
#include <common/opendlg.hpp>
|
||||
#include <statbar/statbarx.hpp>
|
||||
#include <tooltip/toolinfo.hpp>
|
||||
|
||||
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> 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<MDIWindow> imageView;
|
||||
|
||||
getActive(imageView);
|
||||
if(!imageView.isOkay())return;
|
||||
((ImageView&)*imageView).resizeImage();
|
||||
}
|
||||
|
||||
void MainFrame::handleMesh()
|
||||
{
|
||||
SmartPointer<MDIWindow> imageView;
|
||||
|
||||
getActive(imageView);
|
||||
if(!imageView.isOkay())return;
|
||||
((ImageView&)*imageView).showMesh();
|
||||
}
|
||||
|
||||
void MainFrame::handleNoMesh()
|
||||
{
|
||||
SmartPointer<MDIWindow> imageView;
|
||||
|
||||
getActive(imageView);
|
||||
if(!imageView.isOkay())return;
|
||||
((ImageView&)*imageView).noMesh();
|
||||
}
|
||||
|
||||
void MainFrame::handleTransforma()
|
||||
{
|
||||
SmartPointer<MDIWindow> imageView;
|
||||
|
||||
getActive(imageView);
|
||||
if(!imageView.isOkay())return;
|
||||
((ImageView&)*imageView).meshWarp();
|
||||
}
|
||||
|
||||
void MainFrame::handleTransformb()
|
||||
{
|
||||
}
|
||||
|
||||
void MainFrame::handleSigma()
|
||||
{
|
||||
SmartPointer<MDIWindow> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user