]> Creatis software - crea.git/blob - appli/creaNewProject/creaNewProject.cpp
d12400d4218ffdcad9accd6019fec309a8ba799f
[crea.git] / appli / creaNewProject / creaNewProject.cpp
1 #include <creaWx.h>
2 #include <wx/dirdlg.h>
3 #include <stdlib.h> // for getenv
4
5 class myApp : public wxApp
6 {
7 public:
8   bool OnInit( );
9   int  OnExit() { return true; }
10 };
11
12 IMPLEMENT_APP(myApp);
13 CREA_WXMAIN_WITH_CONSOLE
14
15 bool myApp::OnInit( )
16 {
17   wxApp::OnInit();
18 #ifdef __WXGTK__
19   //See http://www.wxwindows.org/faqgtk.htm#locale
20   setlocale(LC_NUMERIC, "C");
21 #endif
22    wxInitAllImageHandlers();
23
24    wxString dir = wxDirSelector(_T("Select directory in which to create the project"), _T(""), wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST );
25
26    if (dir.IsEmpty()) return false;
27
28    wxString name = wxGetTextFromUser(_T("Enter project name"),
29                                      _T("creaNewProject"),
30                                      _T("New"));
31    if (name.IsEmpty()) return false;
32    
33    wxString description = wxGetTextFromUser(_T("Enter Package Description (html format)"),
34                                      _T("create New Package"),
35                                      _T("NO_DESCRIPTION"));
36    if (description.IsEmpty()) return false;                                    
37
38 char * install_Dir = getenv("bbtk_DIR");
39 std::string execGUICreateNewPackage(install_Dir);
40 execGUICreateNewPackage = "bbi " + execGUICreateNewPackage;
41
42 #if(_WIN32)
43         std::string command("creaNewProject.bat ");
44         std::string command1("creaSed.exe ");
45         std::string command2("del ");
46
47         command  += "\"" + crea::wx2std(dir) + "\" \"" + crea::wx2std(name) + "\"";
48         command1 += "\"" + crea::wx2std(dir)+"\\"+crea::wx2std(name)+"\\CMakeLists.txt.in\" " + "NameOfTheProject " + crea::wx2std(name) + "> \"" + crea::wx2std(dir)+"\\"+crea::wx2std(name)+"\\CMakeLists.txt\"";
49         command2 += "\"" + crea::wx2std(dir)+"\\"+crea::wx2std(name)+"\\CMakeLists.txt.in\"";
50         if ( ! system ( command.c_str() ) )
51         {
52                 system ( command1.c_str() );
53                 system ( command2.c_str() );
54                 wxMessageBox(_T("New Project created !"),_T("creaNewProject"),
55                                 wxOK | wxICON_INFORMATION);
56                 // Create a Package at the same time.   JPR
57                 
58                 /// \TODO rewrite, according to new trick
59                 execGUICreateNewPackage += "\..\..\..\share\bbtk\bbs\toolsbbtk\appli\GUICreatePackage.bbs";
60                 system(execGUICreateNewPackage.c_str());
61         }
62         else 
63         {
64                 wxString err(_T("An error occured while running '"));
65                 err +=  crea::std2wx(command) + _T("'");
66                 wxMessageBox(err,_T("creaNewProject"),wxOK | wxICON_ERROR);
67         }
68
69 // ------ LINUX / MacOS
70
71 #else
72         std::string command("creaNewProject.sh ");
73         command += "\"" + crea::wx2std(dir) + "\"" +" " + crea::wx2std(name);
74         
75         if ( ! system ( command.c_str() ) )
76         {
77                 wxMessageBox(_T("New Project created !"),_T("creaNewProject"),
78                                         wxOK | wxICON_INFORMATION);
79
80                 // Create a Package at the same time.   JPR
81                 
82                 //execGUICreateNewPackage += "/../../../share/bbtk/bbs/toolsbbtk/appli/GUICreatePackage.bbs";
83                 //system(execGUICreateNewPackage.c_str());
84                 
85                 // or, better, new trick :
86                 // bbCreatePackage nomDirectory nomPackage author Description
87    
88                 char *author = getenv("USER");
89                 std::string nomDirectory = crea::wx2std(dir) + "/" + crea::wx2std(name);
90                 std::string nomPackageDirectory = nomDirectory + "/" + "bbtk_" + crea::wx2std(name) + "_PKG";
91
92                 std::string bbCreatePackage("bbCreatePackage ");
93                 bbCreatePackage += nomDirectory + " " + crea::wx2std(name) + " " + author + " " + crea::wx2std(description);
94                 system (bbCreatePackage.c_str());
95         }
96         else
97         {
98                 wxString err(_T("An error occured while running '"));
99                 err +=  crea::std2wx(command) + _T("'");
100                 wxMessageBox(err,_T("creaNewProject"),wxOK | wxICON_ERROR);
101         }
102
103 #endif
104
105    return false;
106 }
107