Browse Source

Support for Qt translation files in plugins.

Sascha Zelzer 14 years ago
parent
commit
abba6beb6b
2 changed files with 38 additions and 8 deletions
  1. 24 3
      CMake/ctkMacroBuildPlugin.cmake
  2. 14 5
      CMake/ctkMacroGeneratePluginResourceFile.cmake

+ 24 - 3
CMake/ctkMacroBuildPlugin.cmake

@@ -47,7 +47,7 @@
 #
 MACRO(ctkMacroBuildPlugin)
   CtkMacroParseArguments(MY
-    "EXPORT_DIRECTIVE;SRCS;MOC_SRCS;UI_FORMS;INCLUDE_DIRECTORIES;TARGET_LIBRARIES;RESOURCES;CACHED_RESOURCEFILES;LIBRARY_TYPE"
+    "EXPORT_DIRECTIVE;SRCS;MOC_SRCS;UI_FORMS;INCLUDE_DIRECTORIES;TARGET_LIBRARIES;RESOURCES;CACHED_RESOURCEFILES;TRANSLATIONS;LIBRARY_TYPE"
     "TEST_PLUGIN"
     ${ARGN}
     )
@@ -161,24 +161,44 @@ MACRO(ctkMacroBuildPlugin)
   ENDIF()
   LIST(APPEND MY_QRC_SRCS ${manifest_qrc_src})
 
+  # Create translation files (.ts and .qm)
+  SET(_plugin_qm_files )
+  SET(_plugin_relative_qm_files )
+  SET(_translations_dir "${CMAKE_CURRENT_BINARY_DIR}/CTK-INF/l10n")
+  IF(MY_TRANSLATIONS)
+    SET_SOURCE_FILES_PROPERTIES(${MY_TRANSLATIONS}
+                                PROPERTIES OUTPUT_LOCATION ${_translations_dir})
+    QT4_CREATE_TRANSLATION(_plugin_qm_files ${MY_SRCS} ${MY_UI_FORMS} ${MY_TRANSLATIONS})
+  ENDIF()
+
+  IF(_plugin_qm_files)
+    FOREACH(_qm_file ${_plugin_qm_files})
+      FILE(RELATIVE_PATH _relative_qm_file ${CMAKE_CURRENT_BINARY_DIR} ${_qm_file})
+      LIST(APPEND _plugin_relative_qm_files ${_relative_qm_file})
+    ENDFOREACH()
+  ENDIF()
+
   # Add any other additional resource files
-  IF(MY_CACHED_RESOURCEFILES)
+  IF(MY_CACHED_RESOURCEFILES OR _plugin_relative_qm_files)
     STRING(REPLACE "." "_" _plugin_symbolicname ${Plugin-SymbolicName})
     ctkMacroGeneratePluginResourceFile(MY_QRC_SRCS
       NAME ${_plugin_symbolicname}_cached.qrc
       PREFIX ${Plugin-SymbolicName}
-      RESOURCES ${MY_CACHED_RESOURCEFILES})
+      RESOURCES ${MY_CACHED_RESOURCEFILES}
+      BINARY_RESOURCES ${_plugin_relative_qm_files})
   ENDIF()
 
   SOURCE_GROUP("Resources" FILES
     ${MY_RESOURCES}
     ${MY_UI_FORMS}
+    ${MY_TRANSLATIONS}
     )
 
   SOURCE_GROUP("Generated" FILES
     ${MY_QRC_SRCS}
     ${MY_MOC_CPP}
     ${MY_UI_CPP}
+    ${_plugin_qm_files}
     )
   
   ADD_LIBRARY(${lib_name} ${MY_LIBRARY_TYPE}
@@ -186,6 +206,7 @@ MACRO(ctkMacroBuildPlugin)
     ${MY_MOC_CPP}
     ${MY_UI_CPP}
     ${MY_QRC_SRCS}
+    ${_plugin_qm_files}
     )
 
   # Set the output directory for the plugin

+ 14 - 5
CMake/ctkMacroGeneratePluginResourceFile.cmake

@@ -6,7 +6,7 @@
 MACRO(ctkMacroGeneratePluginResourceFile QRC_SRCS)
 
   CtkMacroParseArguments(MY
-    "NAME;PREFIX;RESOURCES"
+    "NAME;PREFIX;RESOURCES;BINARY_RESOURCES"
     ""
     ${ARGN}
     )
@@ -18,11 +18,20 @@ MACRO(ctkMacroGeneratePluginResourceFile QRC_SRCS)
 <qresource prefix=\"/${MY_PREFIX}\">
 ")
 
-  FOREACH(_resource_file ${MY_RESOURCES})
-    CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/${_resource_file}" "${CMAKE_CURRENT_BINARY_DIR}/${_resource_file}" COPYONLY)
-    SET(_qrc_content "${_qrc_content}<file>${_resource_file}</file>
+  IF(MY_RESOURCES)
+    FOREACH(_resource_file ${MY_RESOURCES})
+      CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/${_resource_file}" "${CMAKE_CURRENT_BINARY_DIR}/${_resource_file}" COPYONLY)
+      SET(_qrc_content "${_qrc_content}<file>${_resource_file}</file>
 ")
-  ENDFOREACH()
+    ENDFOREACH()
+  ENDIF()
+
+  IF(MY_BINARY_RESOURCES)
+    FOREACH(_resource_file ${MY_BINARY_RESOURCES})
+      SET(_qrc_content "${_qrc_content}<file>${_resource_file}</file>
+")
+    ENDFOREACH()
+  ENDIF()
 
   SET(_qrc_content "${_qrc_content}</qresource>
 </RCC>