- when clicking the coordinates toolbars in the status bar now the Distance Plugin is shown and if already displayed, it is closed (toggle action)
152 lines
5.9 KiB
Python
152 lines
5.9 KiB
Python
from PyQt6 import QtWidgets
|
|
|
|
from appGUI.GUIElements import RadioSet, FCDoubleSpinner, FCCheckBox, NumericalEvalTupleEntry, FCLabel, \
|
|
GLay, FCFrame
|
|
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
|
|
|
|
import gettext
|
|
import appTranslation as fcTranslate
|
|
import builtins
|
|
|
|
fcTranslate.apply_language('strings')
|
|
if '_' not in builtins.__dict__:
|
|
_ = gettext.gettext
|
|
|
|
|
|
class Tools2CalPrefGroupUI(OptionsGroupUI):
|
|
def __init__(self, app, parent=None):
|
|
|
|
super(Tools2CalPrefGroupUI, self).__init__(self, parent=parent)
|
|
|
|
self.setTitle(str(_("Calibration Plugin")))
|
|
self.decimals = app.decimals
|
|
self.options = app.options
|
|
|
|
# #############################################################################################################
|
|
# Parameters Frame
|
|
# #############################################################################################################
|
|
self.param_label = FCLabel('<span style="color:blue;"><b>%s</b></span>' % _('Parameters'))
|
|
self.param_label.setToolTip(
|
|
_("Parameters used for this tool.")
|
|
)
|
|
|
|
par_frame = FCFrame()
|
|
self.layout.addWidget(par_frame)
|
|
|
|
param_grid = GLay(v_spacing=5, h_spacing=3)
|
|
par_frame.setLayout(param_grid)
|
|
|
|
param_grid.addWidget(self.param_label, 0, 0, 1, 2)
|
|
|
|
# Calibration source
|
|
self.cal_source_lbl = FCLabel("%s:" % _("Source Type"))
|
|
self.cal_source_lbl.setToolTip(_("The source of calibration points.\n"
|
|
"It can be:\n"
|
|
"- Object -> click a hole geo for Excellon or a pad for Gerber\n"
|
|
"- Free -> click freely on canvas to acquire the calibration points"))
|
|
self.cal_source_radio = RadioSet([{'label': _('Object'), 'value': 'object'},
|
|
{'label': _('Free'), 'value': 'free'}],
|
|
compact=True)
|
|
|
|
param_grid.addWidget(self.cal_source_lbl, 2, 0)
|
|
param_grid.addWidget(self.cal_source_radio, 2, 1, 1, 2)
|
|
|
|
separator_line = QtWidgets.QFrame()
|
|
separator_line.setFrameShape(QtWidgets.QFrame.Shape.HLine)
|
|
separator_line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
|
|
param_grid.addWidget(separator_line, 4, 0, 1, 2)
|
|
|
|
# Travel Z entry
|
|
travelz_lbl = FCLabel('%s:' % _("Travel Z"))
|
|
travelz_lbl.setToolTip(
|
|
_("Height (Z) for travelling between the points.")
|
|
)
|
|
|
|
self.travelz_entry = FCDoubleSpinner()
|
|
self.travelz_entry.set_range(-10000.0000, 10000.0000)
|
|
self.travelz_entry.set_precision(self.decimals)
|
|
self.travelz_entry.setSingleStep(0.1)
|
|
|
|
param_grid.addWidget(travelz_lbl, 6, 0)
|
|
param_grid.addWidget(self.travelz_entry, 6, 1, 1, 2)
|
|
|
|
# Verification Z entry
|
|
verz_lbl = FCLabel('%s:' % _("Verification Z"))
|
|
verz_lbl.setToolTip(
|
|
_("Height (Z) for checking the point.")
|
|
)
|
|
|
|
self.verz_entry = FCDoubleSpinner()
|
|
self.verz_entry.set_range(-10000.0000, 10000.0000)
|
|
self.verz_entry.set_precision(self.decimals)
|
|
self.verz_entry.setSingleStep(0.1)
|
|
|
|
param_grid.addWidget(verz_lbl, 8, 0)
|
|
param_grid.addWidget(self.verz_entry, 8, 1, 1, 2)
|
|
|
|
# Zero the Z of the verification tool
|
|
self.zeroz_cb = FCCheckBox('%s' % _("Zero Z tool"))
|
|
self.zeroz_cb.setToolTip(
|
|
_("Include a sequence to zero the height (Z)\n"
|
|
"of the verification tool.")
|
|
)
|
|
|
|
param_grid.addWidget(self.zeroz_cb, 10, 0, 1, 3)
|
|
|
|
# Second point choice
|
|
second_point_lbl = FCLabel('%s:' % _("Second point"))
|
|
second_point_lbl.setToolTip(
|
|
_("Second point in the Gcode verification can be:\n"
|
|
"- top-left -> the user will align the PCB vertically\n"
|
|
"- bottom-right -> the user will align the PCB horizontally")
|
|
)
|
|
self.second_point_radio = RadioSet([{'label': _('Top Left'), 'value': 'tl'},
|
|
{'label': _('Bottom Right'), 'value': 'br'}],
|
|
orientation='vertical')
|
|
|
|
param_grid.addWidget(second_point_lbl, 16, 0)
|
|
param_grid.addWidget(self.second_point_radio, 16, 1, 1, 2)
|
|
|
|
# #############################################################################################################
|
|
# Tool change Frame
|
|
# #############################################################################################################
|
|
tc_lbl = FCLabel('<span style="color:brown;"><b>%s</b></span>' % _("Tool change"))
|
|
self.layout.addWidget(tc_lbl)
|
|
|
|
tc_frame = FCFrame()
|
|
self.layout.addWidget(tc_frame)
|
|
|
|
tc_grid = GLay(v_spacing=5, h_spacing=3)
|
|
tc_frame.setLayout(tc_grid)
|
|
|
|
# Toolchange X-Y entry
|
|
toolchangexy_lbl = FCLabel('%s:' % "X-Y")
|
|
toolchangexy_lbl.setToolTip(
|
|
_("Toolchange X,Y position.\n"
|
|
"If no value is entered then the current\n"
|
|
"(x, y) point will be used,")
|
|
)
|
|
|
|
self.toolchange_xy_entry = NumericalEvalTupleEntry(border_color='#0069A9')
|
|
|
|
tc_grid.addWidget(toolchangexy_lbl, 0, 0)
|
|
tc_grid.addWidget(self.toolchange_xy_entry, 0, 1)
|
|
|
|
# Toochange Z entry
|
|
toolchangez_lbl = FCLabel('%s:' % "Z")
|
|
toolchangez_lbl.setToolTip(
|
|
_("Height (Z) for mounting the verification probe.")
|
|
)
|
|
|
|
self.toolchangez_entry = FCDoubleSpinner()
|
|
self.toolchangez_entry.set_range(0.0000, 10000.0000)
|
|
self.toolchangez_entry.set_precision(self.decimals)
|
|
self.toolchangez_entry.setSingleStep(0.1)
|
|
|
|
tc_grid.addWidget(toolchangez_lbl, 2, 0)
|
|
tc_grid.addWidget(self.toolchangez_entry, 2, 1)
|
|
|
|
GLay.set_common_column_size([param_grid, tc_grid], 0)
|
|
|
|
self.layout.addStretch()
|