]> Creatis software - crea.git/commitdiff
* creaNewProject executable
authorguigues <guigues>
Tue, 30 Sep 2008 09:47:51 +0000 (09:47 +0000)
committerguigues <guigues>
Tue, 30 Sep 2008 09:47:51 +0000 (09:47 +0000)
* new cmake macros : CREA_ADD_EXECUTABLE  and CREA_ADD_WX_EXECUTABLE
* patched creaWx.h : macro CREA_WXMAIN_WITH_CONSOLE

CMakeLists.txt
appli/creaNewProject/CMakeLists.txt
appli/creaNewProject/creaNewProject.cpp [new file with mode: 0644]
appli/creaNewProject/creaNewProject.sh.in
cmake/CREAMacro_AddExecutable.cmake [new file with mode: 0644]
cmake/CREAMacro_AddWxExecutable.cmake [new file with mode: 0644]
cmake/CREAMacro_mkdir.cmake [new file with mode: 0644]
cmake/CREAMacros.cmake
src/creaWx.h

index 85de6e08a54fb13218fb412ff13f812da740f390..a87f8ec1dd87bfc63a042916a304d25b6db8305a 100644 (file)
@@ -1,7 +1,7 @@
 PROJECT(CREA)
 
 INCLUDE(Version.cmake)
-
+SET(CREA_VERBOSE_CMAKE TRUE)
 SET(CREA_CMAKE_REL_PATH cmake)
 SET(CREA_CMAKE_DIR ${PROJECT_SOURCE_DIR}/${CREA_CMAKE_REL_PATH})
 INCLUDE(${CREA_CMAKE_DIR}/CREAMacros.cmake)
index a9a08abff409e29a24c199490374974577406cf4..a63b05e653dbe8d953095798f914078f5f991fdd 100644 (file)
@@ -1,7 +1,27 @@
+
+#============================================================================
+# Builds and install the executable creaNewProject
+
+SET(EXE_NAME creaNewProject)
+SET(${EXE_NAME}_SOURCES creaNewProject.cpp)
+SET(${EXE_NAME}_CONSOLE FALSE)
+SET(${EXE_NAME}_LINK_LIBRARIES crea)
+
+CREA_ADD_WX_EXECUTABLE( ${EXE_NAME} )
+#============================================================================
+
+
+
+
+
+
+
+
+
+#============================================================================
 # Installs creaNewProject.bat/.sh  
 # used to creates the file architecture for a new project
 # and configures/installs the empty project structure used by creaNewProject
-
 SET(INPUT_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/NewProject)
 FILE(GLOB_RECURSE NAMES RELATIVE ${INPUT_PROJECT_DIR} *.txt *.in *.cmake )
 
@@ -59,7 +79,7 @@ ELSE(WIN32)
   # Build tree 
   CONFIGURE_FILE(
     ${CMAKE_CURRENT_SOURCE_DIR}/creaNewProject.sh.in
-    ${EXECUTABLE_OUTPUT_PATH}/creaNewProject
+    ${EXECUTABLE_OUTPUT_PATH}/creaNewProject.sh
     @ONLY IMMEDIATE
     )
   CREA_MKDIR(${EXECUTABLE_OUTPUT_PATH}/creaNewProject_data)
@@ -74,7 +94,7 @@ ELSE(WIN32)
   
   # Install tree
   INSTALL(
-    FILES ${EXECUTABLE_OUTPUT_PATH}/creaNewProject
+    FILES ${EXECUTABLE_OUTPUT_PATH}/creaNewProject.sh
     DESTINATION bin
     PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
     )
diff --git a/appli/creaNewProject/creaNewProject.cpp b/appli/creaNewProject/creaNewProject.cpp
new file mode 100644 (file)
index 0000000..c2c9065
--- /dev/null
@@ -0,0 +1,52 @@
+#include <creaWx.h>
+#include <wx/dirdlg.h>
+class myApp : public wxApp
+{
+public:
+  bool OnInit( );
+  int  OnExit() { return true; }
+};
+
+IMPLEMENT_APP(myApp);
+CREA_WXMAIN_WITH_CONSOLE
+
+bool myApp::OnInit( )
+{       
+  wxApp::OnInit();
+#ifdef __WXGTK__
+  //See http://www.wxwindows.org/faqgtk.htm#locale
+  setlocale(LC_NUMERIC, "C");
+#endif
+   wxInitAllImageHandlers();
+
+   wxString dir = wxDirSelector(_T("Select directory in which to create the project"), _T(""), wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST );
+                               
+   if (dir.IsEmpty()) return false;
+
+   wxString name = wxGetTextFromUser(_T("Enter project name"),
+                                    _T("creaNewProject"),
+                                    _T("New"));
+   if (name.IsEmpty()) return false;
+   
+#if(_WIN32)
+   std::string command("creaNewProject.bat ");
+#else
+   std::string command("creaNewProject.sh ");
+#endif
+   command += crea::wx2std(dir) + " " + crea::wx2std(name);
+
+   if ( ! system ( command.c_str() ) )
+     {
+       wxMessageBox(_T("Done !"),_T("creaNewProject"),
+                   wxOK | wxICON_INFORMATION);
+     }
+   else 
+     {
+       wxString err("An error occured while running '");
+       err +=  crea::std2wx(command) + _T("'");
+       wxMessageBox(err,_T("creaNewProject"),wxOK | wxICON_ERROR);      
+     }
+
+   return false;
+}
+
index e2d12b67d02535e59c4d952c3891cd3ff46c8e0c..c74f844c84c929e54f0ad646d9e110238b946641 100755 (executable)
@@ -24,7 +24,7 @@ PROJECT=$2
 if [ -d $OUTPUT/${PROJECT} ] 
     then 
     echo "ERROR : Directory '$OUTPUT/${PROJECT}' already exists !"  
-    exit
+    exit 1
 fi
 
 echo "** Creating new project '$PROJECT' in folder '$OUTPUT'"
@@ -32,7 +32,7 @@ echo "** Creating new project '$PROJECT' in folder '$OUTPUT'"
 if [ ! -d $OUTPUT ] 
     then 
     echo "ERROR : Directory '$OUTPUT' does not exist !"  
-    exit
+    exit 1
 fi
 
 cp -R ${INPUT} "$OUTPUT/$PROJECT"
diff --git a/cmake/CREAMacro_AddExecutable.cmake b/cmake/CREAMacro_AddExecutable.cmake
new file mode 100644 (file)
index 0000000..53c6e0f
--- /dev/null
@@ -0,0 +1,21 @@
+MACRO(CREA_ADD_EXECUTABLE EXE_NAME)
+
+  IF(CREA_VERBOSE_CMAKE)
+    MESSAGE(STATUS "** Creating executable ${EXE_NAME}")
+    MESSAGE(STATUS "   Sources  : ${${EXE_NAME}_SOURCES}")
+    MESSAGE(STATUS "   Link libs: ${${EXE_NAME}_LINK_LIBRARIES}")
+  ENDIF(CREA_VERBOSE_CMAKE)
+
+  IF(WIN32)
+    ADD_EXECUTABLE(${EXE_NAME} WIN32 ${${EXE_NAME}_SOURCES})  
+  ELSE(WIN32)
+    ADD_EXECUTABLE(${EXE_NAME} ${${EXE_NAME}_SOURCES})
+  ENDIF(WIN32)
+  
+  TARGET_LINK_LIBRARIES(${EXE_NAME} ${${EXE_NAME}_LINK_LIBRARIES})
+
+  INSTALL_TARGETS(/bin/ ${EXE_NAME})
+
+ENDMACRO(CREA_ADD_EXECUTABLE)
+
+
diff --git a/cmake/CREAMacro_AddWxExecutable.cmake b/cmake/CREAMacro_AddWxExecutable.cmake
new file mode 100644 (file)
index 0000000..4fdd9eb
--- /dev/null
@@ -0,0 +1,32 @@
+MACRO(CREA_ADD_WX_EXECUTABLE EXE_NAME)
+
+
+  IF(USE_WXWIDGETS)
+    IF(CREA_VERBOSE_CMAKE)
+      MESSAGE(STATUS "** Creating wx executable ${EXE_NAME}")
+      MESSAGE(STATUS "   Sources  : ${${EXE_NAME}_SOURCES}")
+      MESSAGE(STATUS "   Link libs: ${${EXE_NAME}_LINK_LIBRARIES}")
+      IF(WIN32)
+       MESSAGE(STATUS "   Console  : ${${EXE_NAME}_CONSOLE}")
+      ENDIF(WIN32)
+    ENDIF(CREA_VERBOSE_CMAKE)
+
+
+    IF(WIN32)
+      ADD_EXECUTABLE(${EXE_NAME} WIN32 ${${EXE_NAME}_SOURCES})  
+      IF( ${${EXE_NAME}_CONSOLE} )
+       SET_TARGET_PROPERTIES(${EXE_NAME} PROPERTIES LINK_FLAGS /subsystem:console )
+      ENDIF( ${${EXE_NAME}_CONSOLE} )
+    ELSE(WIN32)
+      ADD_EXECUTABLE(${EXE_NAME} ${${EXE_NAME}_SOURCES})
+    ENDIF(WIN32)
+    
+    TARGET_LINK_LIBRARIES(${EXE_NAME} ${${EXE_NAME}_LINK_LIBRARIES})
+    INSTALL_TARGETS(/bin/ ${EXE_NAME})
+  ENDIF(USE_WXWIDGETS)
+
+
+ENDMACRO(CREA_ADD_WX_EXECUTABLE)
+
+
diff --git a/cmake/CREAMacro_mkdir.cmake b/cmake/CREAMacro_mkdir.cmake
new file mode 100644 (file)
index 0000000..84e7784
--- /dev/null
@@ -0,0 +1,10 @@
+
+#========================================================================
+# Creates a directory if it does not exist
+MACRO(CREA_MKDIR DIR)
+  IF(NOT IS_DIRECTORY ${DIR})
+    MESSAGE(STATUS "* Creating directory '${DIR}'")
+    FILE(MAKE_DIRECTORY ${DIR})
+  ENDIF(NOT IS_DIRECTORY ${DIR})
+ENDMACRO(CREA_MKDIR)
+#========================================================================
index f0cc2e191e47fcb006432af75c09abf2f95220c2..0a11ab114ffdacd29c6a5a46e32350c71c139117 100644 (file)
@@ -19,17 +19,17 @@ INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_AddLibrary.cmake )
 #========================================================================
 
 #========================================================================
-INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_PreventInSourceBuild.cmake )
+INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_AddExecutable.cmake )
 #========================================================================
 
+#========================================================================
+INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_AddWxExecutable.cmake )
+#========================================================================
 
+#========================================================================
+INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_PreventInSourceBuild.cmake )
+#========================================================================
 
 #========================================================================
-# Creates a directory if it does not exist
-MACRO(CREA_MKDIR DIR)
-  IF(NOT IS_DIRECTORY ${DIR})
-    MESSAGE(STATUS "* Creating directory '${DIR}'")
-    FILE(MAKE_DIRECTORY ${DIR})
-  ENDIF(NOT IS_DIRECTORY ${DIR})
-ENDMACRO(CREA_MKDIR)
+INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_mkdir.cmake )
 #========================================================================
index 3a7d6bbd3edccfdbc0da4516c41deac232c8fc70..29fb0619f09ec2c72aafe29335bd9f42a5a95eaa 100644 (file)
@@ -37,6 +37,27 @@ typedef void wxWindow;
 //===========================================================================
 #ifdef USE_WXWIDGETS
 
+
+
+#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:
+#define CREA_WXMAIN_WITH_CONSOLE                                       \
+  int main(int argc, char* argv[])                                     \
+  {                                                                    \
+    return WinMain(::GetModuleHandle(NULL), NULL,                      \
+                  ::GetCommandLine(), SW_SHOWNORMAL);                  \
+  }                                                                    
+#else // defined(_WIN32) 
+#define CREA_WXMAIN_WITH_CONSOLE
+#endif // defined(_WIN32) 
+
+
+
+
 namespace crea
 {
   //==================================================================