Просмотр исходного кода

Merge branch '15.06'

* 15.06:
  Install the entire plugins directory into $prefix/lib/cura instead of just the contents
  Install the right source files
  Rename cura.py to cura_app.py to prevent conflicts with "cura" directory
  Set default brim size to 10 lines
  Fix context menu entries
  Move src to cura so we can use the same package for installed and source
  Add standard Cura install directories to resource and plugin paths
  Set default engine location to unix standard bin dir
  Make it possible to ignore translation targets and add install target
  Add support for loading files from command line
  Set version to 15.05.90 to indicate first beta release of 15.06
  Add __init__ file or else py2exe fails.
Arjen Hiemstra 9 лет назад
Родитель
Сommit
4f6c8df224

+ 52 - 39
CMakeLists.txt

@@ -4,45 +4,58 @@ cmake_minimum_required(VERSION 2.8.12)
 
 set(URANIUM_SCRIPTS_DIR "${CMAKE_SOURCE_DIR}/../uranium/scripts" CACHE DIRECTORY "The location of the scripts directory of the Uranium repository")
 
-# Extract Strings
-add_custom_target(extract-messages ${URANIUM_SCRIPTS_DIR}/extract-messages ${CMAKE_SOURCE_DIR} cura)
-
-# Build Translations
-find_package(Gettext)
-include(${URANIUM_SCRIPTS_DIR}/ECMPoQmTools.cmake)
-
-if(GETTEXT_FOUND)
-    # translations target will convert .po files into .mo and .qm as needed.
-    # The files are checked for a _qt suffix and if it is found, converted to
-    # qm, otherwise they are converted to .po.
-    add_custom_target(translations)
-    # copy-translations can be used to copy the built translation files from the
-    # build directory to the source resources directory. This is mostly a convenience
-    # during development, normally you want to simply use the install target to install
-    # the files along side the rest of the application.
-    add_custom_target(copy-translations)
-
-    #TODO: Properly install the built files. This should be done after we move the applications out of the Uranium repo.
-    set(languages
-        en
-        x-test
-    )
-    foreach(lang ${languages})
-        file(GLOB po_files resources/i18n/${lang}/*.po)
-        foreach(file ${po_files})
-            string(REGEX MATCH "qt\\.po$" match "${file}")
-            if(match)
-                ecm_process_po_files_as_qm(${lang} PO_FILES ${file})
-            else()
-                string(REGEX REPLACE ".*/(.*).po" "${lang}/\\1.mo" mofile ${file})
-                add_custom_command(TARGET translations POST_BUILD COMMAND mkdir ARGS -p ${lang} COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} ARGS ${file} -o ${mofile})
-            endif()
-        endforeach()
+if(${URANIUM_SCRIPTS_DIR})
+    # Extract Strings
+    add_custom_target(extract-messages ${URANIUM_SCRIPTS_DIR}/extract-messages ${CMAKE_SOURCE_DIR} cura)
+
+    # Build Translations
+    find_package(Gettext)
+    include(${URANIUM_SCRIPTS_DIR}/ECMPoQmTools.cmake)
+
+    if(GETTEXT_FOUND)
+        # translations target will convert .po files into .mo and .qm as needed.
+        # The files are checked for a _qt suffix and if it is found, converted to
+        # qm, otherwise they are converted to .po.
+        add_custom_target(translations)
+        # copy-translations can be used to copy the built translation files from the
+        # build directory to the source resources directory. This is mostly a convenience
+        # during development, normally you want to simply use the install target to install
+        # the files along side the rest of the application.
+        add_custom_target(copy-translations)
+
+        #TODO: Properly install the built files. This should be done after we move the applications out of the Uranium repo.
+        set(languages
+            en
+            x-test
+        )
+        foreach(lang ${languages})
+            file(GLOB po_files resources/i18n/${lang}/*.po)
+            foreach(file ${po_files})
+                string(REGEX MATCH "qt\\.po$" match "${file}")
+                if(match)
+                    ecm_process_po_files_as_qm(${lang} PO_FILES ${file})
+                else()
+                    string(REGEX REPLACE ".*/(.*).po" "${lang}/\\1.mo" mofile ${file})
+                    add_custom_command(TARGET translations POST_BUILD COMMAND mkdir ARGS -p ${lang} COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} ARGS ${file} -o ${mofile})
+                endif()
+            endforeach()
 
-        file(GLOB qm_files ${CMAKE_BINARY_DIR}/${lang}/*.qm)
-        file(GLOB mo_files ${CMAKE_BINARY_DIR}/${lang}/*.mo)
-        foreach(file ${qm_files} ${mo_files})
-            add_custom_command(TARGET copy-translations POST_BUILD COMMAND mkdir ARGS -p ${CMAKE_SOURCE_DIR}/resources/i18n/${lang}/LC_MESSAGES/ COMMAND cp ARGS ${file} ${CMAKE_SOURCE_DIR}/resources/i18n/${lang}/LC_MESSAGES/ COMMENT "Copying ${file}...")
+            file(GLOB qm_files ${CMAKE_BINARY_DIR}/${lang}/*.qm)
+            file(GLOB mo_files ${CMAKE_BINARY_DIR}/${lang}/*.mo)
+            foreach(file ${qm_files} ${mo_files})
+                add_custom_command(TARGET copy-translations POST_BUILD COMMAND mkdir ARGS -p ${CMAKE_SOURCE_DIR}/resources/i18n/${lang}/LC_MESSAGES/ COMMAND cp ARGS ${file} ${CMAKE_SOURCE_DIR}/resources/i18n/${lang}/LC_MESSAGES/ COMMENT "Copying ${file}...")
+            endforeach()
         endforeach()
-    endforeach()
+    endif()
 endif()
+
+include(GNUInstallDirs)
+find_package(PythonInterp 3.4.0 REQUIRED)
+
+set(PYTHON_SITE_PACKAGES_DIR ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages CACHE PATH "Install location of Python package")
+install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
+install(DIRECTORY plugins DESTINATION ${CMAKE_INSTALL_LIBDIR}/cura)
+file(GLOB cura_SRCS cura/*)
+install(FILES ${cura_SRCS} DESTINATION ${PYTHON_SITE_PACKAGES_DIR}/cura)
+install(FILES cura_app.py DESTINATION ${CMAKE_INSTALL_BINDIR})
+

+ 0 - 0
src/BuildVolume.py → cura/BuildVolume.py


+ 0 - 0
src/CameraAnimation.py → cura/CameraAnimation.py


+ 0 - 0
src/ConvexHullJob.py → cura/ConvexHullJob.py


+ 0 - 0
src/ConvexHullNode.py → cura/ConvexHullNode.py


+ 26 - 14
src/CuraApplication.py → cura/CuraApplication.py

@@ -7,6 +7,7 @@ from UM.Scene.Camera import Camera
 from UM.Scene.Platform import Platform
 from UM.Math.Vector import Vector
 from UM.Math.Matrix import Matrix
+from UM.Math.Quaternion import Quaternion
 from UM.Resources import Resources
 from UM.Scene.ToolHandle import ToolHandle
 from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
@@ -35,6 +36,7 @@ from . import PrintInformation
 from PyQt5.QtCore import pyqtSlot, QUrl, Qt, pyqtSignal, pyqtProperty
 from PyQt5.QtGui import QColor
 
+import platform
 import sys
 import os.path
 import numpy
@@ -42,10 +44,11 @@ numpy.seterr(all="ignore")
 
 class CuraApplication(QtApplication):
     def __init__(self):
+        Resources.addResourcePath(os.path.join(QtApplication.getInstallPrefix(), "share", "cura"))
         if not hasattr(sys, "frozen"):
             Resources.addResourcePath(os.path.join(os.path.abspath(os.path.dirname(__file__)), ".."))
 
-        super().__init__(name = "cura", version = "master")
+        super().__init__(name = "cura", version = "15.05.90")
 
         self.setRequiredPlugins([
             "CuraEngineBackend",
@@ -72,6 +75,7 @@ class CuraApplication(QtApplication):
     ##  Handle loading of all plugin types (and the backend explicitly)
     #   \sa PluginRegistery
     def _loadPlugins(self):
+        self._plugin_registry.addPluginLocation(os.path.join(QtApplication.getInstallPrefix(), "lib", "cura"))
         if not hasattr(sys, "frozen"):
             self._plugin_registry.addPluginLocation(os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "plugins"))
 
@@ -85,6 +89,9 @@ class CuraApplication(QtApplication):
 
         self._plugin_registry.loadPlugin("CuraEngineBackend")
 
+    def addCommandLineOptions(self, parser):
+        parser.add_argument("file", nargs="*", help="Files to load after starting the application.")
+
     def run(self):
         self._i18n_catalog = i18nCatalog("cura");
 
@@ -153,6 +160,10 @@ class CuraApplication(QtApplication):
         if self._engine.rootObjects:
             self.closeSplash()
 
+            for file in self.getCommandLineOption("file", []):
+                job = ReadMeshJob(os.path.abspath(file))
+                job.start()
+
             self.exec_()
 
     def registerObjects(self, engine):
@@ -205,9 +216,7 @@ class CuraApplication(QtApplication):
         node = self.getController().getScene().findObject(object_id)
 
         if node:
-            transform = node.getLocalTransformation()
-            transform.setTranslation(Vector(0, 0, 0))
-            op = SetTransformOperation(node, transform)
+            op = SetTransformOperation(node, Vector())
             op.push()
     
     ##  Delete all mesh data on the scene.
@@ -240,9 +249,7 @@ class CuraApplication(QtApplication):
             op = GroupedOperation()
 
             for node in nodes:
-                transform = node.getLocalTransformation()
-                transform.setTranslation(Vector(0, 0, 0))
-                op.addOperation(SetTransformOperation(node, transform))
+                op.addOperation(SetTransformOperation(node, Vector()))
 
             op.push()
     
@@ -259,8 +266,7 @@ class CuraApplication(QtApplication):
             op = GroupedOperation()
 
             for node in nodes:
-                transform = Matrix()
-                op.addOperation(SetTransformOperation(node, transform))
+                op.addOperation(SetTransformOperation(node, Vector(), Quaternion(), Vector(1, 1, 1)))
 
             op.push()
             
@@ -274,12 +280,18 @@ class CuraApplication(QtApplication):
 
             nodes.append(node)
 
-        if nodes:
-            file_name = node.getMeshData().getFileName()
+        if not nodes:
+            return
 
-            job = ReadMeshJob(file_name)
-            job.finished.connect(lambda j: node.setMeshData(j.getResult()))
-            job.start()
+        for node in nodes:
+            if not node.getMeshData():
+                continue
+
+            file_name = node.getMeshData().getFileName()
+            if file_name:
+                job = ReadMeshJob(file_name)
+                job.finished.connect(lambda j: node.setMeshData(j.getResult()))
+                job.start()
     
     ##  Get logging data of the backend engine
     #   \returns \type{string} Logging data

+ 0 - 0
src/PlatformPhysics.py → cura/PlatformPhysics.py


+ 0 - 0
src/PlatformPhysicsOperation.py → cura/PlatformPhysicsOperation.py


+ 0 - 0
src/PrintInformation.py → cura/PrintInformation.py


+ 0 - 0
cura/__init__.py


Некоторые файлы не были показаны из-за большого количества измененных файлов