Tools2CalPrefGroupUI.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. from PyQt5 import QtWidgets
  2. from PyQt5.QtCore import QSettings
  3. from appGUI.GUIElements import RadioSet, FCDoubleSpinner, FCCheckBox, NumericalEvalTupleEntry
  4. from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
  5. import gettext
  6. import appTranslation as fcTranslate
  7. import builtins
  8. fcTranslate.apply_language('strings')
  9. if '_' not in builtins.__dict__:
  10. _ = gettext.gettext
  11. settings = QSettings("Open Source", "FlatCAM")
  12. if settings.contains("machinist"):
  13. machinist_setting = settings.value('machinist', type=int)
  14. else:
  15. machinist_setting = 0
  16. class Tools2CalPrefGroupUI(OptionsGroupUI):
  17. def __init__(self, decimals=4, parent=None):
  18. super(Tools2CalPrefGroupUI, self).__init__(self, parent=parent)
  19. self.setTitle(str(_("Calibration Tool Options")))
  20. self.decimals = decimals
  21. # ## Grid Layout
  22. grid_lay = QtWidgets.QGridLayout()
  23. self.layout.addLayout(grid_lay)
  24. grid_lay.setColumnStretch(0, 0)
  25. grid_lay.setColumnStretch(1, 1)
  26. self.param_label = QtWidgets.QLabel('<b>%s:</b>' % _('Parameters'))
  27. self.param_label.setToolTip(
  28. _("Parameters used for this tool.")
  29. )
  30. grid_lay.addWidget(self.param_label, 0, 0, 1, 2)
  31. # Calibration source
  32. self.cal_source_lbl = QtWidgets.QLabel("<b>%s:</b>" % _("Source Type"))
  33. self.cal_source_lbl.setToolTip(_("The source of calibration points.\n"
  34. "It can be:\n"
  35. "- Object -> click a hole geo for Excellon or a pad for Gerber\n"
  36. "- Free -> click freely on canvas to acquire the calibration points"))
  37. self.cal_source_radio = RadioSet([{'label': _('Object'), 'value': 'object'},
  38. {'label': _('Free'), 'value': 'free'}],
  39. stretch=False)
  40. grid_lay.addWidget(self.cal_source_lbl, 1, 0)
  41. grid_lay.addWidget(self.cal_source_radio, 1, 1, 1, 2)
  42. separator_line = QtWidgets.QFrame()
  43. separator_line.setFrameShape(QtWidgets.QFrame.HLine)
  44. separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
  45. grid_lay.addWidget(separator_line, 2, 0, 1, 2)
  46. # Travel Z entry
  47. travelz_lbl = QtWidgets.QLabel('%s:' % _("Travel Z"))
  48. travelz_lbl.setToolTip(
  49. _("Height (Z) for travelling between the points.")
  50. )
  51. self.travelz_entry = FCDoubleSpinner()
  52. self.travelz_entry.set_range(-9999.9999, 9999.9999)
  53. self.travelz_entry.set_precision(self.decimals)
  54. self.travelz_entry.setSingleStep(0.1)
  55. grid_lay.addWidget(travelz_lbl, 3, 0)
  56. grid_lay.addWidget(self.travelz_entry, 3, 1, 1, 2)
  57. # Verification Z entry
  58. verz_lbl = QtWidgets.QLabel('%s:' % _("Verification Z"))
  59. verz_lbl.setToolTip(
  60. _("Height (Z) for checking the point.")
  61. )
  62. self.verz_entry = FCDoubleSpinner()
  63. self.verz_entry.set_range(-9999.9999, 9999.9999)
  64. self.verz_entry.set_precision(self.decimals)
  65. self.verz_entry.setSingleStep(0.1)
  66. grid_lay.addWidget(verz_lbl, 4, 0)
  67. grid_lay.addWidget(self.verz_entry, 4, 1, 1, 2)
  68. # Zero the Z of the verification tool
  69. self.zeroz_cb = FCCheckBox('%s' % _("Zero Z tool"))
  70. self.zeroz_cb.setToolTip(
  71. _("Include a sequence to zero the height (Z)\n"
  72. "of the verification tool.")
  73. )
  74. grid_lay.addWidget(self.zeroz_cb, 5, 0, 1, 3)
  75. # Toochange Z entry
  76. toolchangez_lbl = QtWidgets.QLabel('%s:' % _("Toolchange Z"))
  77. toolchangez_lbl.setToolTip(
  78. _("Height (Z) for mounting the verification probe.")
  79. )
  80. self.toolchangez_entry = FCDoubleSpinner()
  81. self.toolchangez_entry.set_range(0.0000, 9999.9999)
  82. self.toolchangez_entry.set_precision(self.decimals)
  83. self.toolchangez_entry.setSingleStep(0.1)
  84. grid_lay.addWidget(toolchangez_lbl, 6, 0)
  85. grid_lay.addWidget(self.toolchangez_entry, 6, 1, 1, 2)
  86. # Toolchange X-Y entry
  87. toolchangexy_lbl = QtWidgets.QLabel('%s:' % _('Toolchange X-Y'))
  88. toolchangexy_lbl.setToolTip(
  89. _("Toolchange X,Y position.\n"
  90. "If no value is entered then the current\n"
  91. "(x, y) point will be used,")
  92. )
  93. self.toolchange_xy_entry = NumericalEvalTupleEntry(border_color='#0069A9')
  94. grid_lay.addWidget(toolchangexy_lbl, 7, 0)
  95. grid_lay.addWidget(self.toolchange_xy_entry, 7, 1, 1, 2)
  96. # Second point choice
  97. second_point_lbl = QtWidgets.QLabel('%s:' % _("Second point"))
  98. second_point_lbl.setToolTip(
  99. _("Second point in the Gcode verification can be:\n"
  100. "- top-left -> the user will align the PCB vertically\n"
  101. "- bottom-right -> the user will align the PCB horizontally")
  102. )
  103. self.second_point_radio = RadioSet([{'label': _('Top-Left'), 'value': 'tl'},
  104. {'label': _('Bottom-Right'), 'value': 'br'}],
  105. orientation='vertical')
  106. grid_lay.addWidget(second_point_lbl, 8, 0)
  107. grid_lay.addWidget(self.second_point_radio, 8, 1, 1, 2)
  108. self.layout.addStretch()