0021189: Clean up KAS:dev:ros and Products
[occt.git] / samples / mfc / standard / 06_Ocaf / src / OcafApp.cpp
1 // OcafApp.cpp : Defines the class behaviors for the application.
2 //
3
4 #include "StdAfx.h"
5
6 #include "OcafApp.h"
7
8 #include "OcafMainFrm.h"
9 #include <OCC_3dChildFrame.h>
10 #include "OcafDoc.h"
11 #include <OCC_3dView.h>
12
13 #include "direct.h"
14 #include <OSD_Environment.hxx>
15
16 /////////////////////////////////////////////////////////////////////////////
17 // COcafApp
18
19 BEGIN_MESSAGE_MAP(COcafApp, CWinApp)
20         //{{AFX_MSG_MAP(COcafApp)
21         ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
22                 // NOTE - the ClassWizard will add and remove mapping macros here.
23                 //    DO NOT EDIT what you see in these blocks of generated code!
24         //}}AFX_MSG_MAP
25         // Standard file based document commands
26         ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
27     ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
28 //      ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
29 END_MESSAGE_MAP()
30
31 /////////////////////////////////////////////////////////////////////////////
32
33 /////////////////////////////////////////////////////////////////////////////
34 // COcafApp construction
35
36 COcafApp::COcafApp()
37 {
38 // CasCade :
39         SetSamplePath("06_Ocaf");
40         myApp = new TOcaf_Application();
41 // End CasCade
42         SampleName = "OCAF";    //for about dialog
43
44     try
45     {  UnitsAPI::SetLocalSystem(UnitsAPI_MDTV); }
46     catch (Standard_Failure)
47     {
48     AfxMessageBox("Fatal Error in units initialisation");
49     }
50 }
51
52 COcafApp::~COcafApp()
53 {
54 // Warning : delete only template you don't declare by AddDocTemplate
55 //    if( pDocTemplateForView3d) delete pDocTemplateForView3d;
56 }
57
58 /////////////////////////////////////////////////////////////////////////////
59 // The one and only COcafApp object
60
61 COcafApp theApp;
62
63 /////////////////////////////////////////////////////////////////////////////
64 // COcafApp initialization
65
66 BOOL COcafApp::InitInstance()
67 {
68         AfxEnableControlContainer();
69
70         // Standard initialization
71         // If you are not using these features and wish to reduce the size
72         //  of your final executable, you should remove from the following
73         //  the specific initialization routines you do not need.
74
75         // Change the registry key under which our settings are stored.
76         // You should modify this string to be something appropriate
77         // such as the name of your company or organization.
78         // Modified by CasCade :
79         SetRegistryKey(_T("Local CasCade Applications"));
80
81         LoadStdProfileSettings();  // Load standard INI file options (including MRU)
82
83         // Register the application's document templates.  Document templates
84         //  serve as the connection between documents, frame windows and views.
85
86     pDocTemplateForView3d  = new CMultiDocTemplate(
87                 IDR_3DTYPE,
88                 RUNTIME_CLASS(COcafDoc),
89                 RUNTIME_CLASS(OCC_3dChildFrame), 
90                 RUNTIME_CLASS(OCC_3dView));
91         AddDocTemplate(pDocTemplateForView3d);
92
93         // create main MDI Frame window
94         OcafMainFrame* pMainFrame = new OcafMainFrame;
95         if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
96                 return FALSE;
97         m_pMainWnd = pMainFrame;
98
99         // Parse command line for standard shell commands, DDE, file open
100         CCommandLineInfo cmdInfo;
101         ParseCommandLine(cmdInfo);
102
103         // Dispatch commands specified on the command line
104         if (!ProcessShellCommand(cmdInfo))
105                 return FALSE;
106
107         // The main window has been initialized, so show and update it.
108         pMainFrame->ShowWindow(m_nCmdShow);
109         pMainFrame->UpdateWindow();
110
111         return TRUE;
112 }
113
114 /////////////////////////////////////////////////////////////////////////////
115 // COcafApp commands
116
117 BOOL COcafApp::IsViewExisting(CDocument * pDoc, CRuntimeClass * pViewClass, CView * & pView)
118 {
119   ASSERT_VALID(pDoc);
120   ASSERT(pViewClass != (CRuntimeClass *)NULL );
121
122   POSITION position = pDoc->GetFirstViewPosition();
123   while (position != (POSITION)NULL)
124   {
125     CView* pCurrentView = pDoc->GetNextView(position);
126     ASSERT_VALID(pCurrentView);
127     if (pCurrentView->IsKindOf(pViewClass))
128         {
129       pView = pCurrentView;
130           return TRUE;
131         }
132   }
133   return FALSE;
134 }
135
136 /////////////////////////////////////////////////////////////////////////////
137 // COCcafApp message handlers
138
139 //================================================================
140 // Function : COcafApp::OnFileOpen()
141 ///Purpose  : 
142 //================================================================
143 void COcafApp::OnFileOpen() 
144 {
145         CFileDialog aDlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,
146            "OCAFSample(STD) (*.std)|*.std|OCAFSample(XML) (*.xml)|*.xml|OCAFSample(Binary) (*.cbf)|*.cbf||");
147
148         if (aDlg.DoModal() != IDOK) 
149         return;
150
151     int strLength = aDlg.GetFileName().GetLength()+1;
152         LPTSTR lpszFileName = new TCHAR[strLength];
153         strcpy_s(lpszFileName, strLength, aDlg.GetFileName());
154         
155         OpenDocumentFile(lpszFileName);
156 }