Parcourir la source

Merged in Beta (pull request #348)

Python 3.10 compatibility fixes and SystemTrayIcon fix
Maftei Albert-Alexandru il y a 4 ans
Parent
commit
ebf5cb9e30
6 fichiers modifiés avec 27 ajouts et 15 suppressions
  1. 7 2
      appCommon/Common.py
  2. 5 6
      appGUI/GUIElements.py
  3. 1 1
      appParsers/ParseDXF.py
  4. 4 1
      appTools/ToolCopperThieving.py
  5. 4 1
      appTools/ToolQRCode.py
  6. 6 4
      camlib.py

+ 7 - 2
appCommon/Common.py

@@ -84,8 +84,13 @@ class LoudDict(dict):
 
         self.callback = callback
 
-
-class LoudUniqueList(list, collections.MutableSequence):
+# Fix for Python3.10
+MutableSequence = None
+try:
+    MutableSequence = collections.MutableSequence
+except AttributeError:
+    MutableSequence = collections.abc.MutableSequence
+class LoudUniqueList(list, MutableSequence):
     """
     A List with a callback for item changes, callback which returns the index where the items are added/modified.
     A List that will allow adding only items that are not in the list.

+ 5 - 6
appGUI/GUIElements.py

@@ -1136,13 +1136,13 @@ class FCDoubleSlider(QtWidgets.QSlider):
         return self.value()
 
     def setMinimum(self, value):
-        return super(FCDoubleSlider, self).setMinimum(value * self._multi)
+        return super(FCDoubleSlider, self).setMinimum(int(value * self._multi))
 
     def setMaximum(self, value):
-        return super(FCDoubleSlider, self).setMaximum(value * self._multi)
+        return super(FCDoubleSlider, self).setMaximum(int(value * self._multi))
 
     def setSingleStep(self, value):
-        return super(FCDoubleSlider, self).setSingleStep(value * self._multi)
+        return super(FCDoubleSlider, self).setSingleStep(int(value * self._multi))
 
     def singleStep(self):
         return float(super(FCDoubleSlider, self).singleStep()) / self._multi
@@ -1155,7 +1155,7 @@ class FCDoubleSlider(QtWidgets.QSlider):
 
     def set_range(self, min, max):
         self.blockSignals(True)
-        self.setRange(min * self._multi, max * self._multi)
+        self.setRange(int(min * self._multi), int(max * self._multi))
         self.blockSignals(False)
 
 
@@ -4662,8 +4662,7 @@ class FlatCAMSystemTray(QtWidgets.QSystemTrayIcon):
         exitAction = menu.addAction(_("Exit"))
         exitAction.setIcon(QtGui.QIcon(self.app.resource_location + '/power16.png'))
         self.setContextMenu(menu)
-
-        menu_runscript.triggered.connect(lambda: self.app.on_filerunscript(
+        menu_runscript.triggered.connect(lambda: self.app.f_handlers.on_filerunscript(
             silent=True if self.app.cmd_line_headless == 1 else False))
 
         exitAction.triggered.connect(self.app.final_save)

+ 1 - 1
appParsers/ParseDXF.py

@@ -5,7 +5,7 @@
 # MIT Licence                                              #
 # ##########################################################
 
-from shapely.geometry import LineString
+from shapely.geometry import LineString, Point
 from shapely.affinity import rotate
 # Vector was an older name for Vec3; try both for backward compatibility:
 try:

+ 4 - 1
appTools/ToolCopperThieving.py

@@ -20,7 +20,10 @@ import shapely.affinity as affinity
 import logging
 from copy import deepcopy
 import numpy as np
-from collections import Iterable
+try:
+    from collections import Iterable
+except ImportError:
+    from collections.abc import Iterable
 
 import gettext
 import appTranslation as fcTranslate

+ 4 - 1
appTools/ToolQRCode.py

@@ -18,7 +18,10 @@ from shapely.affinity import translate
 from shapely.geometry import box
 
 from io import StringIO, BytesIO
-from collections import Iterable
+try:
+    from collections import Iterable
+except ImportError:
+    from collections.abc import Iterable
 import logging
 from copy import deepcopy
 

+ 6 - 4
camlib.py

@@ -37,9 +37,11 @@ from shapely.geometry import shape
 # Used for solid polygons in Matplotlib
 from descartes.patch import PolygonPatch
 # ---------------------------------------
-
-from collections import Iterable
-
+# Fix for python 3.10
+try:
+    from collections import Iterable
+except ImportError:
+    from collections.abc import Iterable
 import rasterio
 from rasterio.features import shapes
 import ezdxf
@@ -1264,7 +1266,7 @@ class Geometry(object):
 
         merged_lines = linemerge(geos_lines)
         geos = geos_polys
-        for l in merged_lines:
+        for l in list(map(LineString, zip(merged_lines.coords[:-1], merged_lines.coords[1:]))):
             geos.append(l)
 
         # Add to object