From b159548872d57f9212afdff2f46f6f785a1ee144 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Tue, 17 Dec 2019 01:53:58 +0200 Subject: [PATCH] - 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 --- README.md | 1 + flatcamGUI/GUIElements.py | 16 ++++++--- flatcamGUI/ObjectUI.py | 72 +++++++++++++++++++-------------------- 3 files changed, 49 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 39817398..19f46ccc 100644 --- a/README.md +++ b/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 diff --git a/flatcamGUI/GUIElements.py b/flatcamGUI/GUIElements.py index 21068200..96fa793d 100644 --- a/flatcamGUI/GUIElements.py +++ b/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)) diff --git a/flatcamGUI/ObjectUI.py b/flatcamGUI/ObjectUI.py index 8cf74fc1..f5d432b3 100644 --- a/flatcamGUI/ObjectUI.py +++ b/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)