Przeglądaj źródła

- modified QValidator in FCDoubleSpinner() GUI element to allow entering the minus sign when the range maximum is set as 0.0; also for positive numbers allowed entering the symbol plus

Marius Stanciu 6 lat temu
rodzic
commit
b159548872
3 zmienionych plików z 49 dodań i 40 usunięć
  1. 1 0
      README.md
  2. 12 4
      flatcamGUI/GUIElements.py
  3. 36 36
      flatcamGUI/ObjectUI.py

+ 1 - 0
README.md

@@ -14,6 +14,7 @@ CAD program, and create G-Code for Isolation routing.
 - more optimizations in NCC Tool
 - optimizations in Paint Tool
 - maximum range for Cut Z is now zero to deal with the situation when using V-shape with tip-dia same value with cut width
+- modified QValidator in FCDoubleSpinner() GUI element to allow entering the minus sign when the range maximum is set as 0.0; also for positive numbers allowed entering the symbol plus
 
 16.12.2019
 

+ 12 - 4
flatcamGUI/GUIElements.py

@@ -21,8 +21,16 @@ import re
 import logging
 import html
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
 log = logging.getLogger('base')
 
+fcTranslate.apply_language('strings')
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 EDIT_SIZE_HINT = 70
 
 
@@ -624,7 +632,7 @@ class FCDoubleSpinner(QtWidgets.QDoubleSpinBox):
         # by default don't allow the minus sign to be entered as the default for QDoubleSpinBox is the positive range
         # between 0.00 and 99.00 (2 decimals)
         self.lineEdit().setValidator(
-            QtGui.QRegExpValidator(QtCore.QRegExp("[0-9]*[.,]?[0-9]{%d}" % self.decimals()), self))
+            QtGui.QRegExpValidator(QtCore.QRegExp("\+?[0-9]*[.,]?[0-9]{%d}" % self.decimals()), self))
 
         if suffix:
             self.setSuffix(' %s' % str(suffix))
@@ -710,15 +718,15 @@ class FCDoubleSpinner(QtWidgets.QDoubleSpinBox):
         self.setDecimals(val)
 
         # make sure that the user can't type more decimals than the set precision
-        if self.minimum() < 0 or self.maximum() < 0:
+        if self.minimum() < 0 or self.maximum() <= 0:
             self.lineEdit().setValidator(
                 QtGui.QRegExpValidator(QtCore.QRegExp("-?[0-9]*[.,]?[0-9]{%d}" % self.decimals()), self))
         else:
             self.lineEdit().setValidator(
-                QtGui.QRegExpValidator(QtCore.QRegExp("[0-9]*[.,]?[0-9]{%d}" % self.decimals()), self))
+                QtGui.QRegExpValidator(QtCore.QRegExp("\+?[0-9]*[.,]?[0-9]{%d}" % self.decimals()), self))
 
     def set_range(self, min_val, max_val):
-        if min_val < 0 or max_val < 0:
+        if min_val < 0 or max_val <= 0:
             self.lineEdit().setValidator(
                 QtGui.QRegExpValidator(QtCore.QRegExp("-?[0-9]*[.,]?[0-9]{%d}" % self.decimals()), self))
 

+ 36 - 36
flatcamGUI/ObjectUI.py

@@ -381,7 +381,7 @@ class GerberObjectUI(ObjectUI):
         )
         passlabel.setMinimumWidth(90)
         self.iso_width_entry = FCSpinner()
-        self.iso_width_entry.setRange(1, 999)
+        self.iso_width_entry.set_range(1, 999)
         grid1.addWidget(passlabel, 5, 0)
         grid1.addWidget(self.iso_width_entry, 5, 1, 1, 2)
 
@@ -394,7 +394,7 @@ class GerberObjectUI(ObjectUI):
         self.iso_overlap_entry = FCDoubleSpinner(suffix='%')
         self.iso_overlap_entry.set_precision(self.decimals)
         self.iso_overlap_entry.setWrapping(True)
-        self.iso_overlap_entry.setRange(0.0000, 99.9999)
+        self.iso_overlap_entry.set_range(0.0000, 99.9999)
         self.iso_overlap_entry.setSingleStep(0.1)
         grid1.addWidget(overlabel, 6, 0)
         grid1.addWidget(self.iso_overlap_entry, 6, 1, 1, 2)
@@ -827,9 +827,9 @@ class ExcellonObjectUI(ObjectUI):
         self.cutz_entry.set_precision(self.decimals)
 
         if machinist_setting == 0:
-            self.cutz_entry.setRange(-9999.9999, -0.000001)
+            self.cutz_entry.set_range(-9999.9999, 0.0000)
         else:
-            self.cutz_entry.setRange(-9999.9999, 9999.9999)
+            self.cutz_entry.set_range(-9999.9999, 9999.9999)
 
         self.cutz_entry.setSingleStep(0.1)
 
@@ -846,9 +846,9 @@ class ExcellonObjectUI(ObjectUI):
         self.travelz_entry.set_precision(self.decimals)
 
         if machinist_setting == 0:
-            self.travelz_entry.setRange(0.00001, 9999.9999)
+            self.travelz_entry.set_range(0.00001, 9999.9999)
         else:
-            self.travelz_entry.setRange(-9999.9999, 9999.9999)
+            self.travelz_entry.set_range(-9999.9999, 9999.9999)
 
         self.travelz_entry.setSingleStep(0.1)
 
@@ -873,9 +873,9 @@ class ExcellonObjectUI(ObjectUI):
         self.toolchangez_entry.set_precision(self.decimals)
 
         if machinist_setting == 0:
-            self.toolchangez_entry.setRange(0.0, 9999.9999)
+            self.toolchangez_entry.set_range(0.0, 9999.9999)
         else:
-            self.toolchangez_entry.setRange(-9999.9999, 9999.9999)
+            self.toolchangez_entry.set_range(-9999.9999, 9999.9999)
 
         self.toolchangez_entry.setSingleStep(0.1)
 
@@ -903,9 +903,9 @@ class ExcellonObjectUI(ObjectUI):
         self.eendz_entry.set_precision(self.decimals)
 
         if machinist_setting == 0:
-            self.eendz_entry.setRange(0.0, 9999.9999)
+            self.eendz_entry.set_range(0.0, 9999.9999)
         else:
-            self.eendz_entry.setRange(-9999.9999, 9999.9999)
+            self.eendz_entry.set_range(-9999.9999, 9999.9999)
 
         self.eendz_entry.setSingleStep(0.1)
 
@@ -922,7 +922,7 @@ class ExcellonObjectUI(ObjectUI):
         grid1.addWidget(frlabel, 6, 0)
         self.feedrate_entry = FCDoubleSpinner()
         self.feedrate_entry.set_precision(self.decimals)
-        self.feedrate_entry.setRange(0.0, 9999.9999)
+        self.feedrate_entry.set_range(0.0, 9999.9999)
         self.feedrate_entry.setSingleStep(0.1)
 
         grid1.addWidget(self.feedrate_entry, 6, 1)
@@ -939,7 +939,7 @@ class ExcellonObjectUI(ObjectUI):
         grid1.addWidget(self.feedrate_rapid_label, 7, 0)
         self.feedrate_rapid_entry = FCDoubleSpinner()
         self.feedrate_rapid_entry.set_precision(self.decimals)
-        self.feedrate_rapid_entry.setRange(0.0, 9999.9999)
+        self.feedrate_rapid_entry.set_range(0.0, 9999.9999)
         self.feedrate_rapid_entry.setSingleStep(0.1)
 
         grid1.addWidget(self.feedrate_rapid_entry, 7, 1)
@@ -967,7 +967,7 @@ class ExcellonObjectUI(ObjectUI):
         )
         self.dwelltime_entry = FCDoubleSpinner()
         self.dwelltime_entry.set_precision(self.decimals)
-        self.dwelltime_entry.setRange(0.0, 9999.9999)
+        self.dwelltime_entry.set_range(0.0, 9999.9999)
         self.dwelltime_entry.setSingleStep(0.1)
 
         self.dwelltime_entry.setToolTip(
@@ -998,7 +998,7 @@ class ExcellonObjectUI(ObjectUI):
         grid1.addWidget(self.pdepth_label, 11, 0)
         self.pdepth_entry = FCDoubleSpinner()
         self.pdepth_entry.set_precision(self.decimals)
-        self.pdepth_entry.setRange(-9999.9999, 9999.9999)
+        self.pdepth_entry.set_range(-9999.9999, 9999.9999)
         self.pdepth_entry.setSingleStep(0.1)
 
         grid1.addWidget(self.pdepth_entry, 11, 1)
@@ -1013,7 +1013,7 @@ class ExcellonObjectUI(ObjectUI):
 
         self.feedrate_probe_entry = FCDoubleSpinner()
         self.feedrate_probe_entry.set_precision(self.decimals)
-        self.feedrate_probe_entry.setRange(0.0, 9999.9999)
+        self.feedrate_probe_entry.set_range(0.0, 9999.9999)
         self.feedrate_probe_entry.setSingleStep(0.1)
 
         grid1.addWidget(self.feedrate_probe_label, 12, 0)
@@ -1077,7 +1077,7 @@ class ExcellonObjectUI(ObjectUI):
         )
         self.tooldia_entry = FCDoubleSpinner()
         self.tooldia_entry.set_precision(self.decimals)
-        self.tooldia_entry.setRange(0.0, 9999.9999)
+        self.tooldia_entry.set_range(0.0, 9999.9999)
         self.tooldia_entry.setSingleStep(0.1)
 
         self.generate_milling_button = QtWidgets.QPushButton(_('Mill Drills Geo'))
@@ -1104,7 +1104,7 @@ class ExcellonObjectUI(ObjectUI):
 
         self.slot_tooldia_entry = FCDoubleSpinner()
         self.slot_tooldia_entry.set_precision(self.decimals)
-        self.slot_tooldia_entry.setRange(0.0, 9999.9999)
+        self.slot_tooldia_entry.set_range(0.0, 9999.9999)
         self.slot_tooldia_entry.setSingleStep(0.1)
 
         self.generate_milling_slots_button = QtWidgets.QPushButton(_('Mill Slots Geo'))
@@ -1286,7 +1286,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.tool_offset_entry = FCDoubleSpinner()
         self.tool_offset_entry.set_precision(self.decimals)
-        self.tool_offset_entry.setRange(-9999.9999, 9999.9999)
+        self.tool_offset_entry.set_range(-9999.9999, 9999.9999)
         self.tool_offset_entry.setSingleStep(0.1)
 
         self.grid1.addWidget(self.tool_offset_lbl, 0, 0)
@@ -1298,7 +1298,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.addtool_entry = FCDoubleSpinner()
         self.addtool_entry.set_precision(self.decimals)
-        self.addtool_entry.setRange(0.00001, 9999.9999)
+        self.addtool_entry.set_range(0.00001, 9999.9999)
         self.addtool_entry.setSingleStep(0.1)
 
         self.addtool_btn = QtWidgets.QPushButton(_('Add'))
@@ -1379,7 +1379,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.tipdia_entry = FCDoubleSpinner()
         self.tipdia_entry.set_precision(self.decimals)
-        self.tipdia_entry.setRange(0.00001, 9999.9999)
+        self.tipdia_entry.set_range(0.00001, 9999.9999)
         self.tipdia_entry.setSingleStep(0.1)
 
         self.grid3.addWidget(self.tipdialabel, 1, 0)
@@ -1395,7 +1395,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.tipangle_entry = FCDoubleSpinner()
         self.tipangle_entry.set_precision(self.decimals)
-        self.tipangle_entry.setRange(0.0, 180.0)
+        self.tipangle_entry.set_range(0.0, 180.0)
         self.tipangle_entry.setSingleStep(1)
 
         self.grid3.addWidget(self.tipanglelabel, 2, 0)
@@ -1413,9 +1413,9 @@ class GeometryObjectUI(ObjectUI):
         self.cutz_entry.set_precision(self.decimals)
 
         if machinist_setting == 0:
-            self.cutz_entry.setRange(-9999.9999, -0.00001)
+            self.cutz_entry.set_range(-9999.9999, 0.0000)
         else:
-            self.cutz_entry.setRange(-9999.9999, 9999.9999)
+            self.cutz_entry.set_range(-9999.9999, 9999.9999)
 
         self.cutz_entry.setSingleStep(0.1)
 
@@ -1435,7 +1435,7 @@ class GeometryObjectUI(ObjectUI):
 
         self.maxdepth_entry = FCDoubleSpinner()
         self.maxdepth_entry.set_precision(self.decimals)
-        self.maxdepth_entry.setRange(0, 9999.9999)
+        self.maxdepth_entry.set_range(0, 9999.9999)
         self.maxdepth_entry.setSingleStep(0.1)
 
         self.maxdepth_entry.setToolTip(
@@ -1458,9 +1458,9 @@ class GeometryObjectUI(ObjectUI):
         self.travelz_entry.set_precision(self.decimals)
 
         if machinist_setting == 0:
-            self.travelz_entry.setRange(0.00001, 9999.9999)
+            self.travelz_entry.set_range(0.00001, 9999.9999)
         else:
-            self.travelz_entry.setRange(-9999.9999, 9999.9999)
+            self.travelz_entry.set_range(-9999.9999, 9999.9999)
 
         self.travelz_entry.setSingleStep(0.1)
 
@@ -1486,9 +1486,9 @@ class GeometryObjectUI(ObjectUI):
         self.toolchangez_entry.set_precision(self.decimals)
 
         if machinist_setting == 0:
-            self.toolchangez_entry.setRange(0, 9999.9999)
+            self.toolchangez_entry.set_range(0, 9999.9999)
         else:
-            self.toolchangez_entry.setRange(-9999.9999, 9999.9999)
+            self.toolchangez_entry.set_range(-9999.9999, 9999.9999)
 
         self.toolchangez_entry.setSingleStep(0.1)
 
@@ -1518,9 +1518,9 @@ class GeometryObjectUI(ObjectUI):
         self.gendz_entry.set_precision(self.decimals)
 
         if machinist_setting == 0:
-            self.gendz_entry.setRange(0, 9999.9999)
+            self.gendz_entry.set_range(0, 9999.9999)
         else:
-            self.gendz_entry.setRange(-9999.9999, 9999.9999)
+            self.gendz_entry.set_range(-9999.9999, 9999.9999)
 
         self.gendz_entry.setSingleStep(0.1)
 
@@ -1535,7 +1535,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.cncfeedrate_entry = FCDoubleSpinner()
         self.cncfeedrate_entry.set_precision(self.decimals)
-        self.cncfeedrate_entry.setRange(0, 9999.9999)
+        self.cncfeedrate_entry.set_range(0, 9999.9999)
         self.cncfeedrate_entry.setSingleStep(0.1)
 
         self.grid3.addWidget(frlabel, 10, 0)
@@ -1550,7 +1550,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.cncplunge_entry = FCDoubleSpinner()
         self.cncplunge_entry.set_precision(self.decimals)
-        self.cncplunge_entry.setRange(0, 9999.9999)
+        self.cncplunge_entry.set_range(0, 9999.9999)
         self.cncplunge_entry.setSingleStep(0.1)
 
         self.grid3.addWidget(frzlabel, 11, 0)
@@ -1567,7 +1567,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.cncfeedrate_rapid_entry = FCDoubleSpinner()
         self.cncfeedrate_rapid_entry.set_precision(self.decimals)
-        self.cncfeedrate_rapid_entry.setRange(0, 9999.9999)
+        self.cncfeedrate_rapid_entry.set_range(0, 9999.9999)
         self.cncfeedrate_rapid_entry.setSingleStep(0.1)
 
         self.grid3.addWidget(self.fr_rapidlabel, 12, 0)
@@ -1627,7 +1627,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.dwelltime_entry = FCDoubleSpinner()
         self.dwelltime_entry.set_precision(self.decimals)
-        self.dwelltime_entry.setRange(0, 9999.9999)
+        self.dwelltime_entry.set_range(0, 9999.9999)
         self.dwelltime_entry.setSingleStep(0.1)
 
         self.dwelltime_entry.setToolTip(
@@ -1658,7 +1658,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.pdepth_entry = FCDoubleSpinner()
         self.pdepth_entry.set_precision(self.decimals)
-        self.pdepth_entry.setRange(-9999.9999, 9999.9999)
+        self.pdepth_entry.set_range(-9999.9999, 9999.9999)
         self.pdepth_entry.setSingleStep(0.1)
 
         self.grid3.addWidget(self.pdepth_label, 17, 0)
@@ -1674,7 +1674,7 @@ class GeometryObjectUI(ObjectUI):
         )
         self.feedrate_probe_entry = FCDoubleSpinner()
         self.feedrate_probe_entry.set_precision(self.decimals)
-        self.feedrate_probe_entry.setRange(0.0, 9999.9999)
+        self.feedrate_probe_entry.set_range(0.0, 9999.9999)
         self.feedrate_probe_entry.setSingleStep(0.1)
 
         self.grid3.addWidget(self.feedrate_probe_label, 18, 0)