]> Creatis software - bbtk.git/blobdiff - kernel/appli/bbStudio/bbStudio.cxx
*** empty log message ***
[bbtk.git] / kernel / appli / bbStudio / bbStudio.cxx
diff --git a/kernel/appli/bbStudio/bbStudio.cxx b/kernel/appli/bbStudio/bbStudio.cxx
new file mode 100644 (file)
index 0000000..b994e49
--- /dev/null
@@ -0,0 +1,119 @@
+#ifdef _USE_WXWIDGETS_
+
+//==========================================================================
+// WITH WX
+//==========================================================================
+#include "bbtkWxGUIScriptingInterface.h"
+
+#include <wx/cmdline.h> 
+#include <vector>
+
+
+static const wxCmdLineEntryDesc cmdLineDesc[] =
+{
+  { wxCMD_LINE_PARAM,  NULL, NULL, _T("file1 [file2 [...]]"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, 
+  { wxCMD_LINE_SWITCH, _T("h"), _T("help"),   _T("Prints this help") },
+  { wxCMD_LINE_NONE }
+};
+
+
+
+class wxBBIApp : public wxApp
+{
+public:
+  bool OnInit( );
+  int  OnExit() { return true; }
+  void OnInitCmdLine(wxCmdLineParser& parser);
+  bool OnCmdLineParsed(wxCmdLineParser& parser);
+
+  bool usage;
+  std::vector<std::string> input_file;
+};
+
+IMPLEMENT_APP(wxBBIApp);
+
+void wxBBIApp::OnInitCmdLine(wxCmdLineParser& parser)
+{
+  //    std::cout << "OnInitCmdLine"<<std::endl;
+  parser.SetDesc(cmdLineDesc);
+}
+
+bool wxBBIApp::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 << "bbStudio (The Black Box Development Studio) - bbtk "
+             << bbtk::GetVersion() << " - (c) Creatis 2007-2008"
+             << std::endl;
+    parser.Usage();
+  }
+
+  return true;
+}
+
+
+
+// ----------------------------------------------------------------------------
+// The `main program' equivalent, creating the windows and returning the
+// main frame
+bool wxBBIApp::OnInit( )
+{
+  //    std::cout << "OnInit"<<std::endl;
+  wxApp::OnInit();
+#ifdef __WXGTK__
+  //See http://www.wxwindows.org/faqgtk.htm#locale
+  setlocale(LC_NUMERIC, "C");
+#endif
+  if (usage) return false;
+  
+  bbtk::WxGUIScriptingInterface *I = 
+    new bbtk::WxGUIScriptingInterface(0,_T("bbStudio"),wxSize(800,600));
+  SetTopWindow(I);  
+  I->Show(true);
+
+  std::vector<std::string>::const_iterator i;
+  i=input_file.begin(); 
+  if (i!=input_file.end()) I->Open(*i);
+
+  return true;
+}
+
+
+#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, 
+//  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) 
+
+
+#else
+//==========================================================================
+// WITHOUT WX
+//==========================================================================
+int main(int argc, char* argv[])
+{  
+  std::cout << "bbStudio was not compiled with wxWidgets : ciao !" <<std::endl;
+  return 0;
+}
+
+// EOF
+#endif //#ifdef _USE_WXWIDGETS_
+
+
+