]> Creatis software - bbtkGEditor.git/blobdiff - appli/bbEditor/bbEditor.cxx
2114 bbGEditor Feature New Normal Open bbg/bbs with command line
[bbtkGEditor.git] / appli / bbEditor / bbEditor.cxx
index c135924ee6b14052b3fb89fa773aca60a240ba43..a54c317866873917dfa1a4c35694517103c7271a 100644 (file)
@@ -1,3 +1,28 @@
+/*
+# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
+#                        pour la Santé)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+#
+#  This software is governed by the CeCILL-B license under French law and 
+#  abiding by the rules of distribution of free software. You can  use, 
+#  modify and/ or redistribute the software under the terms of the CeCILL-B 
+#  license as circulated by CEA, CNRS and INRIA at the following URL 
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability. 
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------   
+*/
+
 #ifdef _USE_WXWIDGETS_
 
 //==========================================================================
@@ -6,8 +31,18 @@
 
 #include "bbtkwxGUIEditorGraphicBBS.h"
 
-#include <wx/cmdline.h> 
+#include <wx/cmdline.h>
 #include <wx/app.h>
+#include <wx/sysopt.h>
+
+
+static const wxCmdLineEntryDesc cmdLineDesc[] =
+{
+{ wxCMD_LINE_PARAM,  NULL, NULL, _T("file"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, 
+{ wxCMD_LINE_SWITCH, _T("h"), _T("help"),   _T("Prints this help") },
+//{ wxCMD_LINE_SWITCH, _T("d"), _T("debug"),   _T("Message all 9") },
+{ wxCMD_LINE_NONE }
+};
 
 
 class wxBBEditorApp : public wxApp
@@ -16,46 +51,106 @@ public:
   bool OnInit( );
   int  OnExit() { return true; }
 
+        bool usage;
+       bool OnCmdLineParsed(wxCmdLineParser& parser);
+       void OnInitCmdLine(wxCmdLineParser& parser);
+private:
+        std::vector<std::string> input_file;
+
 };
 
 IMPLEMENT_APP(wxBBEditorApp);
 
 
 
+void wxBBEditorApp::OnInitCmdLine(wxCmdLineParser& parser)
+{
+       //    std::cout << "wxBBEditorApp::OnInitCmdLine"<<std::endl;
+       parser.SetDesc(cmdLineDesc);
+}
+
+
+bool wxBBEditorApp::OnCmdLineParsed(wxCmdLineParser& parser)
+{
+       int argc = parser.GetParamCount();
+       for (int i=0; i<argc; ++i) 
+    {
+               std::string s = bbtk::wx2std(parser.GetParam(i));
+               input_file.push_back(s);
+    }
+       
+       bool help = ( parser.Found(_T("h")) );
+       usage = (help && (input_file.size()==0));
+       if (usage) {
+               std::cout << "bbEditor (The Black Box Development Graphic Editor) - bbtk "
+               << bbtk::GetVersion() << " - (c) Creatis 2013"
+               << std::endl;
+               parser.Usage();
+       }
+       return true;
+}
+
+
+
 
 // ----------------------------------------------------------------------------
 // The `main program' equivalent, creating the windows and returning the
 // main frame
 bool wxBBEditorApp::OnInit( )
 {
-  wxApp::OnInit();
+#ifdef MACOSX
+       /* assume this is OSX */
+       wxSystemOptions::SetOption("mac.listctrl.always_use_generic", 1);
+#endif
+
+       wxApp::OnInit();
 #ifdef __WXGTK__
   //See http://www.wxwindows.org/faqgtk.htm#locale
   setlocale(LC_NUMERIC, "C");
 #endif
 
-       bbtk::wxGUIEditorGraphicBBS *iegbbs; 
+       bbtk::wxGUIEditorGraphicBBS *iegbbs;
        iegbbs = new bbtk::wxGUIEditorGraphicBBS(NULL);
-       SetTopWindow(iegbbs);  
+       SetTopWindow(iegbbs);
        iegbbs->Show(true);
 
+
+       // EED  ..To Do..
+       // 1. This block have to be mooved to the library
+       // 2. We have to verifiy if the file is a good bbg  or a good bbs
+       // 3. Clean the path to pout just the name of the file in the second parameter (information of the tabPanel)
+       //      OpenDiagram(<PATH+Filename>, <Filena>); 
+        for(int i=0;i<input_file.size();i++)
+       {
+               int strsize=input_file[i].size()-1;
+               if ((input_file[i])[strsize]=='g')
+               {
+                       iegbbs->OpenDiagram(input_file[i], input_file[i]); 
+               } 
+               if ((input_file[i])[strsize]=='s')
+               {
+                       iegbbs->OpenBBS(input_file[i], input_file[i]); 
+               } 
+       }
+
+
        return true;
 }
 
 
-#if defined(_WIN32) 
+#if defined(_WIN32)
 
 //  How to have a Console and wxWidgets
 //  http://www.wxwidgets.org/wiki/index.php/MSVC_Setup_Guide
-//   In Visual C++ 6 (7 should be similar), to create an application that is both a console application 
-//  (cout's to the console are visible) and has a wxWidgets GUI, 
+//   In Visual C++ 6 (7 should be similar), to create an application that is both a console application
+//  (cout's to the console are visible) and has a wxWidgets GUI,
 //  you need to use the linker option "/subsystem:console" and the following code:
 int main(int argc, char* argv[])
 {
        return WinMain(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), SW_SHOWNORMAL);
 }
 
-#endif // defined(_WIN32) 
+#endif // defined(_WIN32)
 
 
 #else
@@ -64,7 +159,7 @@ int main(int argc, char* argv[])
 //==========================================================================
 #include <iostream>
 int main(int argc, char* argv[])
-{  
+{
   std::cout << "bbStudio was not compiled with wxWidgets : ciao !" <<std::endl;
   return 0;
 }