void CSeriousSkaStudioApp::OnFileOpen() { CTFileName fnSim; // get file name fnSim = _EngineGUI.FileRequester( "Select existing Smc file", "ASCII model files (*.smc)\0*.smc\0" "All files (*.*)\0*.*\0\0", "Open directory", "Models\\", ""); if (fnSim=="") return; CTFileName fnFull; fnFull = _fnmApplicationPath + fnSim; CModelInstance *pmi = OnOpenExistingInstance(fnSim); if(pmi == NULL) { // if faile to open smc theApp.ErrorMessage("Failed to open model instance '%s'",(const char*)fnSim); return; } // create new document CDocument* pDocument = m_pdtDocTemplate->CreateNewDocument(); if (pDocument == NULL) { TRACE0("CDocTemplate::CreateNewDocument returned NULL.\n"); AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); return; } ASSERT_VALID(pDocument); // View creation CFrameWnd* pFrame = m_pdtDocTemplate->CreateNewFrame(pDocument, NULL); if (pFrame == NULL) { AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); delete pDocument; // explicit delete on error return; } ASSERT_VALID(pFrame); pDocument->SetModifiedFlag( FALSE); // add file to mru CTString strFileName = pmi->mi_fnSourceFile.FileName() + pmi->mi_fnSourceFile.FileExt(); CString strOpenPath; strOpenPath = theApp.GetProfileString(L"SeriousSkaStudio", L"Open directory", L""); strOpenPath += pmi->mi_fnSourceFile; pDocument->SetPathName(CString(strFileName), TRUE); pDocument->SetTitle(CString(strFileName)); pDocument->SetModifiedFlag( FALSE); m_pdtDocTemplate->InitialUpdateFrame(pFrame, pDocument, TRUE); // set root model instance theApp.GetDocument()->m_ModelInstance = pmi; // fill tree view with new model insntance ReloadRootModelInstance(); }
int OpenPocket( const vector<CRossPocketItem>& UnitNos, CString Title) { CDocTemplate* tmpl = GetRossPocketTemplate();; CDocument* pDocument = tmpl->CreateNewDocument(); if (pDocument == NULL) { TRACE0("CDocTemplate::CreateNewDocument returned NULL.\n"); AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); return false; } ASSERT_VALID(pDocument); pDocument->m_bAutoDelete = FALSE; // don't destroy if something goes wrong CFrameWnd* pFrame = tmpl->CreateNewFrame(pDocument, NULL); pDocument->m_bAutoDelete = TRUE; if (pFrame == NULL) { AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); delete pDocument; // explicit delete on error return FALSE; }; ASSERT_VALID(pFrame); pDocument->SetPathName(CString("An entry subset by ")+Title); // open an existing document tmpl->InitialUpdateFrame(pFrame, pDocument, TRUE); POSITION pos = pDocument->GetFirstViewPosition(); CPocketForm* V = (CPocketForm*)(pDocument->GetNextView(pos)); V->m_PocketItems = UnitNos; V->m_WordList.InsertColumn(1,"Словарный вход", LVCFMT_LEFT, 200); V->m_WordList.InsertColumn(2,"Номер значения", LVCFMT_LEFT, 60); V->m_WordList.InsertColumn(2,"Название словаря", LVCFMT_LEFT, 60); V->m_WordList.SetItemCountEx(UnitNos.size()); V->m_UnitsSize.Format ("Число словарных входов : %i", V->m_WordList.GetItemCount()); V->UpdateData(FALSE); V->m_WordList.UpdateData(FALSE); V->m_WordList.Invalidate(); V->m_Title = Title; // установка размеров V->GetParent()->SetWindowPos(NULL, 0,0, 535 , 500, SWP_SHOWWINDOW|SWP_NOZORDER|SWP_NOMOVE); return true; };
void CSeriousSkaStudioApp::OnFileNew() { // add new model instance CModelInstance *pmi = OnAddNewModelInstance(); if(pmi == NULL) { //delete pDocument; theApp.ErrorMessage("Failed to create model instance"); return; } CDocument* pDocument = m_pdtDocTemplate->CreateNewDocument(); if (pDocument == NULL) { TRACE0("CDocTemplate::CreateNewDocument returned NULL.\n"); AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); return; } ASSERT_VALID(pDocument); // View creation CFrameWnd* pFrame = m_pdtDocTemplate->CreateNewFrame(pDocument, NULL); if (pFrame == NULL) { AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); delete pDocument; // explicit delete on error return; } ASSERT_VALID(pFrame); // add file to mru CTString strFileName = pmi->mi_fnSourceFile.FileName() + pmi->mi_fnSourceFile.FileExt(); CString strOpenPath; strOpenPath = theApp.GetProfileString(L"SeriousSkaStudio", L"Open directory", L""); strOpenPath += pmi->mi_fnSourceFile; pDocument->SetPathName(CString(strFileName), TRUE); pDocument->SetTitle(CString(strFileName)); pDocument->SetModifiedFlag( FALSE); m_pdtDocTemplate->InitialUpdateFrame(pFrame, pDocument, TRUE); // set root model instance theApp.GetDocument()->m_ModelInstance = pmi; // theApp.SaveRootModel(); // fill tree view with new model instance // ReloadRootModelInstance(); UpdateRootModelInstance(); }
CDocument* CMyDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName, BOOL bMakeVisible) { if (lpszPathName == NULL) { TRACE(_T("Creating new documents is disabled.\n")); return NULL; } CWaitCursor wait; CDocument* pDocument = CreateNewDocument(); if (pDocument == NULL) { TRACE(_T("CDocTemplate::CreateNewDocument returned NULL.\n")); AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); return NULL; } ASSERT_VALID(pDocument); BOOL bAutoDelete = pDocument->m_bAutoDelete; pDocument->m_bAutoDelete = false; // don't destroy if something goes wrong CWnd* pMDIChild = CreateNewMDIChild(pDocument); pDocument->m_bAutoDelete = bAutoDelete; if (pMDIChild == NULL) { AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); delete pDocument; // explicit delete on error return NULL; } ASSERT_VALID(pMDIChild); // open an existing document if (!pDocument->OnOpenDocument(lpszPathName)) { // user has be alerted to what failed in OnOpenDocument TRACE(_T("CDocument::OnOpenDocument returned FALSE.\n")); pMDIChild->DestroyWindow(); return NULL; } pDocument->SetPathName(lpszPathName); InitialUpdateMDIChild(pMDIChild, pDocument, bMakeVisible); return pDocument; }
// @pymethod |PyCDocument|SetPathName|Set the full path name for the document. PyObject * ui_doc_set_path_name(PyObject *self, PyObject *args) { TCHAR *path; PyObject *obpath; if (!PyArg_ParseTuple(args, "O:SetPathName", &obpath)) // @pyparm string|path||The full path of the file. return NULL; CDocument *pDoc; if (!(pDoc=PyCDocument::GetDoc(self))) return NULL; if (!PyWinObject_AsTCHAR(obpath, &path, FALSE)) return NULL; GUI_BGN_SAVE; pDoc->SetPathName(path); // @pyseemfc CDocument|SetPathName GUI_END_SAVE; PyWinObject_FreeTCHAR(path); RETURN_NONE; }
CDocument* CDocTemplateEx::OpenDocumentFile(LPCTSTR lpszPathName, BOOL bMakeVisible) { CAIPIApp* pApp = (CAIPIApp*)AfxGetApp(); if (m_docList.GetCount() == 1) { CDocument* pDocument = (CDocument*)m_docList.GetHead(); BOOL e = pDocument->GetPathName().IsEmpty(); BOOL m = pDocument->IsModified(); if (lpszPathName != NULL && pDocument->GetPathName().IsEmpty() && pDocument->IsModified()) { pApp->AipiOpenDocumentFile(lpszPathName); CWaitCursor wait; if (!pDocument->OnOpenDocument(lpszPathName)) { // user has be alerted to what failed in OnOpenDocument TRACE0("CDocument::OnOpenDocument returned FALSE.\n"); return NULL; } pDocument->SetPathName(lpszPathName); POSITION pos = pDocument->GetFirstViewPosition(); CView* pView = pDocument->GetNextView(pos); CFrameWnd* pFrame = pView->GetParentFrame(); InitialUpdateFrame(pFrame, pDocument); return pDocument; } } pApp->AipiOpenDocumentFile(lpszPathName); return CMultiDocTemplate::OpenDocumentFile(lpszPathName, bMakeVisible); }
CDocument* CSingleDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName, BOOL bMakeVisible) // if lpszPathName == NULL => create new file of this type { CDocument* pDocument = NULL; CFrameWnd* pFrame = NULL; BOOL bCreated = FALSE; // => doc and frame created BOOL bWasModified = FALSE; if (m_pOnlyDoc != NULL) { // already have a document - reinit it pDocument = m_pOnlyDoc; if (!pDocument->SaveModified()) return NULL; // leave the original one pFrame = (CFrameWnd*)AfxGetMainWnd(); ASSERT(pFrame != NULL); ASSERT(pFrame->IsKindOf(RUNTIME_CLASS(CFrameWnd))); ASSERT_VALID(pFrame); } else { // create a new document pDocument = CreateNewDocument(); ASSERT(pFrame == NULL); // will be created below bCreated = TRUE; } if (pDocument == NULL) { AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); return NULL; } ASSERT(pDocument == m_pOnlyDoc); if (pFrame == NULL) { ASSERT(bCreated); // create frame - set as main document frame BOOL bAutoDelete = pDocument->m_bAutoDelete; pDocument->m_bAutoDelete = FALSE; // don't destroy if something goes wrong pFrame = CreateNewFrame(pDocument, NULL); pDocument->m_bAutoDelete = bAutoDelete; if (pFrame == NULL) { AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); delete pDocument; // explicit delete on error return NULL; } } if (lpszPathName == NULL) { // create a new document SetDefaultTitle(pDocument); // avoid creating temporary compound file when starting up invisible if (!bMakeVisible) pDocument->m_bEmbedded = TRUE; if (!pDocument->OnNewDocument()) { // user has been alerted to what failed in OnNewDocument TRACE0("CDocument::OnNewDocument returned FALSE.\n"); if (bCreated) pFrame->DestroyWindow(); // will destroy document return NULL; } } else { BeginWaitCursor(); // open an existing document bWasModified = pDocument->IsModified(); pDocument->SetModifiedFlag(FALSE); // not dirty for open if (!pDocument->OnOpenDocument(lpszPathName)) { // user has been alerted to what failed in OnOpenDocument TRACE0("CDocument::OnOpenDocument returned FALSE.\n"); if (bCreated) { pFrame->DestroyWindow(); // will destroy document } else if (!pDocument->IsModified()) { // original document is untouched pDocument->SetModifiedFlag(bWasModified); } else { // we corrupted the original document SetDefaultTitle(pDocument); if (!pDocument->OnNewDocument()) { TRACE0("Error: OnNewDocument failed after trying to open a document - trying to continue.\n"); // assume we can continue } } EndWaitCursor(); return NULL; // open failed } #ifdef _MAC // if the document is dirty, we must have opened a stationery pad - don't // change the pathname because we want to treat the document as untitled if (!pDocument->IsModified()) #endif pDocument->SetPathName(lpszPathName); EndWaitCursor(); } if (bCreated && AfxGetMainWnd() == NULL) { // set as main frame (InitialUpdateFrame will show the window) AfxGetThread()->m_pMainWnd = pFrame; } InitialUpdateFrame(pFrame, pDocument, bMakeVisible); return pDocument; }
void CScriptView::OnScriptMakeModel() { // First we save script file CModelerDoc *pDoc = (CModelerDoc *) GetDocument(); CTFileName fnScriptName = CTString(pDoc->GetPathName()); CTFileName fnModelName = fnScriptName.FileDir() + fnScriptName.FileName() + ".mdl"; try { fnScriptName.RemoveApplicationPath_t(); } catch( char *err_str) { AfxMessageBox( err_str); return; } pDoc->OnSaveDocument( pDoc->GetPathName()); // close mdl document with same name POSITION pos = theApp.m_pdtModelDocTemplate->GetFirstDocPosition(); while (pos!=NULL) { CModelerDoc *pmdCurrent = (CModelerDoc *)theApp.m_pdtModelDocTemplate->GetNextDoc(pos); if( CTFileName( CTString(pmdCurrent->GetPathName())) == fnModelName) { pmdCurrent->OnCloseDocument(); break; } } // Now we will create one instance of new document of type CModelerDoc CDocument* pDocument = theApp.m_pdtModelDocTemplate->CreateNewDocument(); if (pDocument == NULL) { TRACE0("CDocTemplate::CreateNewDocument returned NULL.\n"); AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); return; } ASSERT_VALID(pDocument); BOOL bAutoDelete = pDocument->m_bAutoDelete; pDocument->m_bAutoDelete = FALSE; // don't destroy if something goes wrong CFrameWnd* pFrame = theApp.m_pdtModelDocTemplate->CreateNewFrame(pDocument, NULL); pDocument->m_bAutoDelete = bAutoDelete; if (pFrame == NULL) { AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); delete pDocument; // explicit delete on error return; } ASSERT_VALID(pFrame); pDocument->SetPathName( fnModelName, FALSE); pDocument->SetTitle( fnModelName.FileName() + fnModelName.FileExt()); char strError[ 256]; if( !((CModelerDoc *)pDocument)->CreateModelFromScriptFile( fnScriptName, strError)) { pDocument->OnCloseDocument(); AfxMessageBox( strError); return; } theApp.m_pdtModelDocTemplate->InitialUpdateFrame(pFrame, pDocument, TRUE); ((CModelerDoc *)pDocument)->m_emEditModel.edm_md.md_bPreparedForRendering = FALSE; pDocument->SetModifiedFlag(); // add textures from .ini file CTFileName fnIniFileName = fnScriptName.NoExt() + ".ini"; try { ((CModelerDoc *)pDocument)->m_emEditModel.CSerial::Load_t(fnIniFileName); } catch( char *strError) { // ignore errors (void) strError; } }