1 // Created on: 2017-06-16
2 // Created by: Natalia ERMOLAEVA
3 // Copyright (c) 2017 OPEN CASCADE SAS
5 // This file is part of Open CASCADE Technology software library.
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
17 #include <OSD_Environment.hxx>
18 #include <TInspectorEXE_OpenFileDialog.hxx>
19 #include <TInspector_Communicator.hxx>
22 #include <QApplication>
24 #include <QMainWindow>
29 // =======================================================================
30 // function : fileNameInDataDir
32 // =======================================================================
33 TCollection_AsciiString fileNameInDataDir(const TCollection_AsciiString& theEnvironmentDir,
34 const TCollection_AsciiString& theName)
36 OSD_Environment anEnvironment(theEnvironmentDir);
38 TCollection_AsciiString aFileName = anEnvironment.Value();
39 aFileName += TCollection_AsciiString("/") + theName;
44 // =======================================================================
45 // function : setPluginSampleDirectory
47 // =======================================================================
48 void setPluginSampleDirectory (const TCollection_AsciiString& theName, TInspector_Communicator* theCommunicator,
49 TInspectorEXE_OpenButton* theButtonControl)
51 if (theName.IsEqual ("TKDFBrowser"))
53 theCommunicator->OpenFile (theName, fileNameInDataDir ("CSF_OCCTDataPath", "step/screw.step"));
54 theButtonControl->SetPluginDir (theName, fileNameInDataDir ("CSF_OCCTDataPath", "step"));
56 else if (theName.IsEqual ("TKShapeView"))
58 theCommunicator->OpenFile (theName, fileNameInDataDir ("CSF_OCCTDataPath", "occ/hammer.brep"));
59 theButtonControl->SetPluginDir (theName, fileNameInDataDir ("CSF_OCCTDataPath", "occ"));
61 else if (theName.IsEqual ("TKVInspector"))
63 theCommunicator->OpenFile (theName, fileNameInDataDir ("CSF_OCCTDataPath", "occ/face1.brep"));
64 theCommunicator->OpenFile (theName, fileNameInDataDir ("CSF_OCCTDataPath", "occ/face2.brep"));
65 theButtonControl->SetPluginDir (theName, fileNameInDataDir ("CSF_OCCTDataPath", "occ"));
69 // =======================================================================
72 // =======================================================================
73 int main (int argc, char** argv)
75 OSD_Environment anEnvironment ("QTDIR");
76 TCollection_AsciiString aPlugindsDirName = anEnvironment.Value();
77 if (aPlugindsDirName.IsEmpty())
79 std::cout << "QTDIR is not defined" << std::endl;
82 aPlugindsDirName += "/plugins";
83 QApplication::addLibraryPath (aPlugindsDirName.ToCString());
84 QApplication anApp (argc, argv);
86 std::set<TCollection_AsciiString> aPlugins;
87 for (int anArgId = 1; anArgId < argc; anArgId++ )
89 if (!strcmp (argv[anArgId], "dfbrowser"))
90 aPlugins.insert ("TKDFBrowser");
92 if (!strcmp (argv[anArgId], "shapeview"))
93 aPlugins.insert ("TKShapeView");
95 if (!strcmp (argv[anArgId], "vinspector"))
96 aPlugins.insert ("TKVInspector");
98 NCollection_List<Handle(Standard_Transient)> aParameters;
100 // Create tool communicator
101 TInspector_Communicator* aCommunicator = TInspectorEXE_OpenFileDialog::Communicator();
104 std::cout << "Communicator can not be created" << std::endl;
108 TInspectorEXE_OpenButton* aButtonControl = new TInspectorEXE_OpenButton (0);
109 TCollection_AsciiString anActivatedPluginName;
110 if (aPlugins.empty())
112 aPlugins.insert("TKDFBrowser");
113 aPlugins.insert("TKShapeView");
114 aPlugins.insert("TKVInspector");
116 anActivatedPluginName = "TKDFBrowser";
119 anActivatedPluginName = *aPlugins.rbegin();
121 for (std::set<TCollection_AsciiString>::const_iterator aPluginIt = aPlugins.begin(); aPluginIt != aPlugins.end(); aPluginIt++)
123 TCollection_AsciiString aName = *aPluginIt;
124 aCommunicator->RegisterPlugin (aName);
125 aCommunicator->Init (aName, aParameters);
126 setPluginSampleDirectory (aName, aCommunicator, aButtonControl);
128 aCommunicator->Activate (anActivatedPluginName);
130 aCommunicator->SetVisible (true);
131 aCommunicator->SetOpenButton (aButtonControl->StartButton());