Hello community,
here is the log from the commit of package uranium-lulzbot for openSUSE:Factory checked in at 2019-02-25 17:52:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/uranium-lulzbot (Old)
and /work/SRC/openSUSE:Factory/.uranium-lulzbot.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "uranium-lulzbot"
Mon Feb 25 17:52:18 2019 rev:7 rq:677901 version:3.6.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/uranium-lulzbot/uranium-lulzbot.changes 2018-09-26 14:23:49.133883889 +0200
+++ /work/SRC/openSUSE:Factory/.uranium-lulzbot.new.28833/uranium-lulzbot.changes 2019-02-25 17:52:20.414721000 +0100
@@ -1,0 +2,34 @@
+Wed Feb 20 09:34:05 UTC 2019 - Adrian Schröter
+
+- update to version 3.6.4
+
+-------------------------------------------------------------------
+Thu Jan 17 15:45:34 UTC 2019 - Adrian Schröter
+
+- add recommends to numpy-stl
+
+-------------------------------------------------------------------
+Tue Jan 15 13:59:21 UTC 2019 - Adrian Schröter
+
+- add fix_qt5.12.patch to fix i18n text string handling in qml
+ with Qt 5.12
+
+-------------------------------------------------------------------
+Wed Jan 9 09:50:25 UTC 2019 - Adrian Schröter
+
+- update to version 3.6.1
+ https://code.alephobjects.com/w/cura-lulzbot/
+
+-------------------------------------------------------------------
+Tue Nov 20 15:48:01 UTC 2018 - Adrian Schröter
+
+- update to version 3.2.32
+ * minor code cleanup
+
+-------------------------------------------------------------------
+Mon Oct 22 06:52:46 UTC 2018 - Adrian Schröter
+
+- update to version 3.2.29
+ * version increase only
+
+-------------------------------------------------------------------
Old:
----
Uranium-3.2.28.obscpio
New:
----
Uranium-3.6.4.obscpio
fix_qt5.12.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ uranium-lulzbot.spec ++++++
--- /var/tmp/diff_new_pack.cC1Tvb/_old 2019-02-25 17:52:21.138720605 +0100
+++ /var/tmp/diff_new_pack.cC1Tvb/_new 2019-02-25 17:52:21.142720604 +0100
@@ -1,7 +1,7 @@
#
# spec file for package uranium-lulzbot
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
Name: uranium-lulzbot
Conflicts: uranium
-Version: 3.2.28
+Version: 3.6.4
Release: 0
Summary: 3D printer control software: python UI stack
License: AGPL-3.0-only
@@ -26,9 +26,12 @@
Url: https://code.alephobjects.com/diffusion/U/uranium.git
Source0: Uranium-%{version}.tar.xz
Patch1: fix-build.patch
+# PATCH-FIX-OPENSUSE fix Qt 5.12 with current python qt snapshot
+Patch2: fix_qt5.12.patch
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: python3-devel >= 3.5.0
+Recommends: python3-numpy-stl
%description
Cura is an engine for processing 3D models
@@ -40,6 +43,7 @@
%prep
%setup -q -n Uranium-%version
%patch1 -p1
+%patch2 -p1
%build
CFLAGS="%{optflags}"
++++++ Uranium-3.2.28.obscpio -> Uranium-3.6.4.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Uranium-3.2.28/UM/Qt/QtApplication.py new/Uranium-3.6.4/UM/Qt/QtApplication.py
--- old/Uranium-3.2.28/UM/Qt/QtApplication.py 2018-08-15 20:00:21.000000000 +0200
+++ new/Uranium-3.6.4/UM/Qt/QtApplication.py 2018-12-05 21:12:55.000000000 +0100
@@ -98,6 +98,8 @@
self._main_window = None
self._theme = None
+ self.assertID = 0
+
self._shutting_down = False
self._qml_import_paths = []
self._qml_import_paths.append(os.path.join(os.path.dirname(sys.executable), "qml"))
@@ -579,11 +581,39 @@
Logger.log("w", "Failed to prevent from sleeping")
pass
elif sys.platform.startswith('darwin'): # Mac OS
- import os
- import subprocess
try:
+ from ctypes import cdll, c_void_p, c_uint32, POINTER, byref
+ from CoreFoundation import CFStringCreateWithCString, kCFStringEncodingASCII
+ from objc import pyobjc_id
+
+ libIOKit = cdll.LoadLibrary('/System/Library/Frameworks/IOKit.framework/IOKit')
+ libIOKit.IOPMAssertionCreateWithName.argtypes = [c_void_p, c_uint32, c_void_p, POINTER(c_uint32)]
+ libIOKit.IOPMAssertionRelease.argtypes = [c_uint32]
+
+ def CFSTR(py_string):
+ return CFStringCreateWithCString(None, py_string, kCFStringEncodingASCII)
+
+ def raw_ptr(pyobjc_string):
+ return pyobjc_id(pyobjc_string.nsstring())
+
+ def IOPMAssertionCreateWithName(assert_name, assert_level, assert_msg):
+ assertID = c_uint32(0)
+ p_assert_name = raw_ptr(CFSTR(assert_name))
+ p_assert_msg = raw_ptr(CFSTR(assert_msg))
+ errcode = libIOKit.IOPMAssertionCreateWithName(p_assert_name, assert_level, p_assert_msg, byref(assertID))
+ return (errcode, assertID)
+
+ IOPMAssertionRelease = libIOKit.IOPMAssertionRelease
+
+ kIOPMAssertionTypeNoIdleSleep = b"NoIdleSleepAssertion"
+ kIOPMAssertionLevelOn = 255
+ reason = b"cura-lulzbot is printing"
+
if prevent:
- subprocess.Popen(['caffeinate', '-i', '-w', str(os.getpid())])
+ errcode, self.assertID = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, reason)
+ else:
+ errcode = IOPMAssertionRelease(self.assertID)
+ self.assertID = 0
except:
Logger.log("w", "Failed to prevent from sleeping")
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Uranium-3.2.28/UM/Scene/SceneNode.py new/Uranium-3.6.4/UM/Scene/SceneNode.py
--- old/Uranium-3.2.28/UM/Scene/SceneNode.py 2018-08-15 20:00:21.000000000 +0200
+++ new/Uranium-3.6.4/UM/Scene/SceneNode.py 2018-12-05 21:12:55.000000000 +0100
@@ -55,7 +55,9 @@
self._shear = Vector(0.0, 0.0, 0.0) # type: Vector
self._mirror = Vector(1.0, 1.0, 1.0) # type: Vector
self._orientation = Quaternion() # type: Quaternion
-
+ self._rotationX = 0
+ self._rotationY = 0
+ self._rotationZ = 0
# World transformation (from root to local)
self._world_transformation = Matrix() # type: Matrix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Uranium-3.2.28/plugins/LocalFileOutputDevice/LocalFileOutputDevice.py new/Uranium-3.6.4/plugins/LocalFileOutputDevice/LocalFileOutputDevice.py
--- old/Uranium-3.2.28/plugins/LocalFileOutputDevice/LocalFileOutputDevice.py 2018-08-15 20:00:21.000000000 +0200
+++ new/Uranium-3.6.4/plugins/LocalFileOutputDevice/LocalFileOutputDevice.py 2018-12-05 21:12:55.000000000 +0100
@@ -36,6 +36,7 @@
self.setIconName("save")
self._writing = False
+ self.setPriority(1.5)
## Request the specified nodes to be written to a file.
#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Uranium-3.2.28/plugins/Tools/RotateTool/RotateTool.py new/Uranium-3.6.4/plugins/Tools/RotateTool/RotateTool.py
--- old/Uranium-3.2.28/plugins/Tools/RotateTool/RotateTool.py 2018-08-15 20:00:21.000000000 +0200
+++ new/Uranium-3.6.4/plugins/Tools/RotateTool/RotateTool.py 2018-12-05 21:12:55.000000000 +0100
@@ -38,9 +38,9 @@
self._snap_rotation = True
self._snap_angle = math.radians(15)
- self._X_angle = 0
- self._Y_angle = 0
- self._Z_angle = 0
+ self._X_angle = 0.0
+ self._Y_angle = 0.0
+ self._Z_angle = 0.0
self._angle = None
self._angle_update_time = None
@@ -144,14 +144,20 @@
direction = 1 if Vector.Unit_X.dot(drag_start.cross(drag_end)) > 0 else -1
rotation = Quaternion.fromAngleAxis(direction * angle, Vector.Unit_X)
self._X_angle = float(self._X_angle) + direction * math.degrees( angle )
+ for node in Selection.getAllSelectedObjects():
+ node._rotationX = self._X_angle
elif self.getLockedAxis() == ToolHandle.YAxis:
direction = 1 if Vector.Unit_Y.dot(drag_start.cross(drag_end)) > 0 else -1
rotation = Quaternion.fromAngleAxis(direction * angle, Vector.Unit_Y)
self._Y_angle = float(self._Y_angle) + direction * math.degrees( angle )
+ for node in Selection.getAllSelectedObjects():
+ node._rotationY = self._Y_angle
elif self.getLockedAxis() == ToolHandle.ZAxis:
direction = 1 if Vector.Unit_Z.dot(drag_start.cross(drag_end)) > 0 else -1
rotation = Quaternion.fromAngleAxis(direction * angle, Vector.Unit_Z)
self._Z_angle = float(self._Z_angle) + direction * math.degrees( angle )
+ for node in Selection.getAllSelectedObjects():
+ node._rotationZ = self._Z_angle
else:
direction = -1
@@ -230,6 +236,10 @@
#
# \return type(float)
def getX(self):
+ if Selection.getCount() > 1:
+ self._X_angle = 0.0
+ return self._X_angle
+ self._X_angle = Selection.getAllSelectedObjects()[0]._rotationX
return self._X_angle
## Set X
@@ -239,9 +249,7 @@
if float(X) != self._X_angle:
self._angle = ((float(X) % 360) - (self._X_angle % 360)) % 360
- self.propertyChanged.emit()
self._X_angle = float(X)
- self.propertyChanged.emit()
#rotation = Quaternion.fromAngleAxis( math.radians( self._angle ), Vector.Unit_X)
rotation = Quaternion()
@@ -251,6 +259,7 @@
self._saved_node_positions = []
for node in Selection.getAllSelectedObjects():
self._saved_node_positions.append((node, node.getPosition()))
+ node._rotationX = self._X_angle
# Rate-limit the angle change notification
# This is done to prevent the UI from being flooded with property change notifications,
@@ -258,7 +267,6 @@
new_time = time.monotonic()
if not self._angle_update_time or new_time - self._angle_update_time > 0.1:
self._angle_update_time = new_time
- self.propertyChanged.emit()
# Rotate around the saved centeres of all selected nodes
op = GroupedOperation()
@@ -266,17 +274,20 @@
op.addOperation(RotateOperation(node, rotation, rotate_around_point = position))
op.push()
- self.propertyChanged.emit()
-
- self._angle = 0
- self.propertyChanged.emit()
+ self._angle = 0
+ self.propertyChanged.emit()
## Get Y
#
# \return type(float)
def getY(self):
+ if Selection.getCount() > 1:
+ self._Y_angle = 0.0
+ return self._Y_angle
+ self._Y_angle = Selection.getAllSelectedObjects()[0]._rotationY
return self._Y_angle
+
## Set Y
#
# \param Y type(float)
@@ -284,9 +295,7 @@
if float(Y) != self._Y_angle:
self._angle = ((float(Y) % 360) - (self._Y_angle % 360)) % 360
- self.propertyChanged.emit()
self._Y_angle = float(Y)
- self.propertyChanged.emit()
#rotation = Quaternion.fromAngleAxis(math.radians( self._angle ), Vector.Unit_Y)
rotation = Quaternion()
@@ -297,6 +306,7 @@
self._saved_node_positions = []
for node in Selection.getAllSelectedObjects():
self._saved_node_positions.append((node, node.getPosition()))
+ node._rotationY = self._Y_angle
# Rate-limit the angle change notification
# This is done to prevent the UI from being flooded with property change notifications,
@@ -304,7 +314,6 @@
new_time = time.monotonic()
if not self._angle_update_time or new_time - self._angle_update_time > 0.1:
self._angle_update_time = new_time
- self.propertyChanged.emit()
# Rotate around the saved centeres of all selected nodes
op = GroupedOperation()
@@ -312,16 +321,18 @@
op.addOperation(RotateOperation(node, rotation, rotate_around_point = position))
op.push()
- self.propertyChanged.emit()
-
- self._angle = 0
- self.propertyChanged.emit()
+ self._angle = 0
+ self.propertyChanged.emit()
## Get Z
#
# \return type(float)
def getZ(self):
+ if Selection.getCount() > 1:
+ self._Z_angle = 0.0
+ return self._Z_angle
+ self._Z_angle = Selection.getAllSelectedObjects()[0]._rotationZ
return self._Z_angle
## Set Z
@@ -331,9 +342,7 @@
if float(Z) != self._Z_angle:
self._angle = ((float(Z) % 360) - (self._Z_angle % 360)) % 360
- self.propertyChanged.emit()
self._Z_angle = float(Z)
- self.propertyChanged.emit()
#rotation = Quaternion.fromAngleAxis(math.radians( self._angle ), Vector.Unit_Z)
rotation = Quaternion()
@@ -343,6 +352,7 @@
self._saved_node_positions = []
for node in Selection.getAllSelectedObjects():
self._saved_node_positions.append((node, node.getPosition()))
+ node._rotationZ = self._Z_angle
# Rate-limit the angle change notification
# This is done to prevent the UI from being flooded with property change notifications,
@@ -350,7 +360,6 @@
new_time = time.monotonic()
if not self._angle_update_time or new_time - self._angle_update_time > 0.1:
self._angle_update_time = new_time
- self.propertyChanged.emit()
# Rotate around the saved centeres of all selected nodes
op = GroupedOperation()
@@ -358,7 +367,6 @@
op.addOperation(RotateOperation(node, rotation, rotate_around_point = position))
op.push()
- self.propertyChanged.emit()
self._angle = 0
self.propertyChanged.emit()
@@ -368,6 +376,9 @@
def resetRotation(self):
for node in Selection.getAllSelectedObjects():
node.setMirror(Vector(1,1,1))
+ node._rotationX = 0.0
+ node._rotationY = 0.0
+ node._rotationZ = 0.0
Selection.applyOperation(SetTransformOperation, None, Quaternion(), None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Uranium-3.2.28/plugins/Tools/ScaleTool/ScaleTool.qml new/Uranium-3.6.4/plugins/Tools/ScaleTool/ScaleTool.qml
--- old/Uranium-3.2.28/plugins/Tools/ScaleTool/ScaleTool.qml 2018-08-15 20:00:21.000000000 +0200
+++ new/Uranium-3.6.4/plugins/Tools/ScaleTool/ScaleTool.qml 2018-12-05 21:12:55.000000000 +0100
@@ -9,7 +9,7 @@
Item
{
id: base
- width: childrenRect.width
+ width: childrenRect.width * 1.05
height: childrenRect.height
UM.I18nCatalog { id: catalog; name:"uranium"}
++++++ Uranium.obsinfo ++++++
--- /var/tmp/diff_new_pack.cC1Tvb/_old 2019-02-25 17:52:21.414720455 +0100
+++ /var/tmp/diff_new_pack.cC1Tvb/_new 2019-02-25 17:52:21.414720455 +0100
@@ -1,5 +1,5 @@
name: Uranium
-version: 3.2.28
-mtime: 1534356021
-commit: 50a3c8834c0080bf22036cd35e9b7eb85b66d486
+version: 3.6.4
+mtime: 1544040775
+commit: bd6e9e4f33a2dc58a024817ae707718553b31411
++++++ _service ++++++
--- /var/tmp/diff_new_pack.cC1Tvb/_old 2019-02-25 17:52:21.426720449 +0100
+++ /var/tmp/diff_new_pack.cC1Tvb/_new 2019-02-25 17:52:21.426720449 +0100
@@ -3,8 +3,8 @@
<param name="url">https://code.alephobjects.com/diffusion/U/uranium.git</param>
<param name="scm">git</param>
<param name="filename">Uranium</param>
- <param name="revision">v3.2.28</param>
- <param name="version">3.2.28</param>
+ <param name="revision">v3.6.4</param>
+ <param name="version">3.6.4</param>
</service>
<service mode="disabled" name="set_version" />
++++++ fix_qt5.12.patch ++++++
diff --git a/UM/Qt/Bindings/i18nCatalogProxy.py b/UM/Qt/Bindings/i18nCatalogProxy.py
index 7e2bb16c..cec70dd6 100644
--- a/UM/Qt/Bindings/i18nCatalogProxy.py
+++ b/UM/Qt/Bindings/i18nCatalogProxy.py
@@ -86,9 +86,9 @@ class i18nCatalogProxy(QObject): # [CodeStyle: Ultimaker code style requires cla
# \todo Move this to a more generic place so more things can use it.
def _wrapFunction(self, engine, this_object, function):
# JavaScript code that wraps the Python method call in a closure
- wrap_js = """function(this_object) {{
+ wrap_js = """(function(this_object) {{
return function({args}) {{ return this_object.{function}({args}) }}
- }}"""
+ }})"""
# Get the function name and argument list.
function_name = function.__name__