CNCJobAdvOptPrefGroupUI.py 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. from PyQt5 import QtWidgets, QtGui
  2. from PyQt5.QtCore import QSettings, Qt
  3. from appGUI.GUIElements import FCComboBox, FCSpinner, FCColorEntry, FCLabel, FCDoubleSpinner, RadioSet
  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 CNCJobAdvOptPrefGroupUI(OptionsGroupUI):
  17. def __init__(self, decimals=4, parent=None):
  18. # OptionsGroupUI.__init__(self, "CNC Job Advanced Options Preferences", parent=None)
  19. super(CNCJobAdvOptPrefGroupUI, self).__init__(self, parent=parent)
  20. self.decimals = decimals
  21. self.setTitle(str(_("CNC Job Adv. Options")))
  22. grid0 = QtWidgets.QGridLayout()
  23. grid0.setColumnStretch(0, 0)
  24. grid0.setColumnStretch(1, 1)
  25. self.layout.addLayout(grid0)
  26. # ## Export G-Code
  27. self.export_gcode_label = QtWidgets.QLabel("<b>%s:</b>" % _("Parameters"))
  28. self.export_gcode_label.setToolTip(
  29. _("Export and save G-Code to\n"
  30. "make this object to a file.")
  31. )
  32. grid0.addWidget(self.export_gcode_label, 0, 0, 1, 2)
  33. # Annotation Font Size
  34. self.annotation_fontsize_label = QtWidgets.QLabel('%s:' % _("Annotation Size"))
  35. self.annotation_fontsize_label.setToolTip(
  36. _("The font size of the annotation text. In pixels.")
  37. )
  38. self.annotation_fontsize_sp = FCSpinner()
  39. self.annotation_fontsize_sp.set_range(0, 9999)
  40. grid0.addWidget(self.annotation_fontsize_label, 2, 0)
  41. grid0.addWidget(self.annotation_fontsize_sp, 2, 1)
  42. # Annotation Font Color
  43. self.annotation_color_label = QtWidgets.QLabel('%s:' % _('Annotation Color'))
  44. self.annotation_color_label.setToolTip(
  45. _("Set the font color for the annotation texts.")
  46. )
  47. self.annotation_fontcolor_entry = FCColorEntry()
  48. grid0.addWidget(self.annotation_color_label, 4, 0)
  49. grid0.addWidget(self.annotation_fontcolor_entry, 4, 1)
  50. # ## Autolevelling
  51. self.autolevelling_gcode_label = QtWidgets.QLabel("<b>%s</b>" % _("Autolevelling"))
  52. self.autolevelling_gcode_label.setToolTip(
  53. _("Parameters for the autolevelling.")
  54. )
  55. grid0.addWidget(self.autolevelling_gcode_label, 6, 0, 1, 2)
  56. # Probe points mode
  57. al_mode_lbl = FCLabel('%s:' % _("Mode"))
  58. al_mode_lbl.setToolTip(_("Choose a mode for height map generation.\n"
  59. "- Manual: will pick a selection of probe points by clicking on canvas\n"
  60. "- Grid: will automatically generate a grid of probe points"))
  61. self.al_mode_radio = RadioSet(
  62. [
  63. {'label': _('Manual'), 'value': 'manual'},
  64. {'label': _('Grid'), 'value': 'grid'}
  65. ])
  66. grid0.addWidget(al_mode_lbl, 8, 0)
  67. grid0.addWidget(self.al_mode_radio, 8, 1)
  68. # AUTOLEVELL METHOD
  69. self.al_method_lbl = FCLabel('%s:' % _("Method"))
  70. self.al_method_lbl.setToolTip(_("Choose a method for approximation of heights from autolevelling data.\n"
  71. "- Voronoi: will generate a Voronoi diagram\n"
  72. "- Bilinear: will use bilinear interpolation. Usable only for grid mode."))
  73. self.al_method_radio = RadioSet(
  74. [
  75. {'label': _('Voronoi'), 'value': 'v'},
  76. {'label': _('Bilinear'), 'value': 'b'}
  77. ])
  78. grid0.addWidget(self.al_method_lbl, 9, 0)
  79. grid0.addWidget(self.al_method_radio, 9, 1)
  80. # ## Columns
  81. self.al_columns_entry = FCSpinner()
  82. self.al_columns_label = QtWidgets.QLabel('%s:' % _("Columns"))
  83. self.al_columns_label.setToolTip(
  84. _("The number of grid columns.")
  85. )
  86. grid0.addWidget(self.al_columns_label, 10, 0)
  87. grid0.addWidget(self.al_columns_entry, 10, 1)
  88. # ## Rows
  89. self.al_rows_entry = FCSpinner()
  90. self.al_rows_label = QtWidgets.QLabel('%s:' % _("Rows"))
  91. self.al_rows_label.setToolTip(
  92. _("The number of gird rows.")
  93. )
  94. grid0.addWidget(self.al_rows_label, 12, 0)
  95. grid0.addWidget(self.al_rows_entry, 12, 1)
  96. # Travel Z Probe
  97. self.ptravelz_label = QtWidgets.QLabel('%s:' % _("Probe Z travel"))
  98. self.ptravelz_label.setToolTip(
  99. _("The safe Z for probe travelling between probe points.")
  100. )
  101. self.ptravelz_entry = FCDoubleSpinner()
  102. self.ptravelz_entry.set_precision(self.decimals)
  103. self.ptravelz_entry.set_range(0.0000, 9999.9999)
  104. grid0.addWidget(self.ptravelz_label, 14, 0)
  105. grid0.addWidget(self.ptravelz_entry, 14, 1)
  106. # Probe depth
  107. self.pdepth_label = QtWidgets.QLabel('%s:' % _("Probe Z depth"))
  108. self.pdepth_label.setToolTip(
  109. _("The maximum depth that the probe is allowed\n"
  110. "to probe. Negative value, in current units.")
  111. )
  112. self.pdepth_entry = FCDoubleSpinner()
  113. self.pdepth_entry.set_precision(self.decimals)
  114. self.pdepth_entry.set_range(-99999.9999, 0.0000)
  115. grid0.addWidget(self.pdepth_label, 16, 0)
  116. grid0.addWidget(self.pdepth_entry, 16, 1)
  117. # Probe feedrate
  118. self.feedrate_probe_label = QtWidgets.QLabel('%s:' % _("Probe Feedrate"))
  119. self.feedrate_probe_label.setToolTip(
  120. _("The feedrate used while the probe is probing.")
  121. )
  122. self.feedrate_probe_entry = FCDoubleSpinner()
  123. self.feedrate_probe_entry.set_precision(self.decimals)
  124. self.feedrate_probe_entry.set_range(0, 99999.9999)
  125. grid0.addWidget(self.feedrate_probe_label, 18, 0)
  126. grid0.addWidget(self.feedrate_probe_entry, 18, 1)
  127. separator_line = QtWidgets.QFrame()
  128. separator_line.setFrameShape(QtWidgets.QFrame.HLine)
  129. separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
  130. grid0.addWidget(separator_line, 20, 0, 1, 2)
  131. self.al_controller_label = FCLabel('%s:' % _("Controller"))
  132. self.al_controller_label.setToolTip(
  133. _("The kind of controller for which to generate\n"
  134. "height map gcode.")
  135. )
  136. self.al_controller_combo = FCComboBox()
  137. self.al_controller_combo.addItems(["MACH3", "MACH4", "LinuxCNC", "GRBL"])
  138. grid0.addWidget(self.al_controller_label, 22, 0)
  139. grid0.addWidget(self.al_controller_combo, 22, 1)
  140. # JOG Step
  141. self.jog_step_label = FCLabel('%s:' % _("Step"))
  142. self.jog_step_label.setToolTip(
  143. _("Each jog action will move the axes with this value.")
  144. )
  145. self.jog_step_entry = FCDoubleSpinner()
  146. self.jog_step_entry.set_precision(self.decimals)
  147. self.jog_step_entry.set_range(0, 99999.9999)
  148. grid0.addWidget(self.jog_step_label, 24, 0)
  149. grid0.addWidget(self.jog_step_entry, 24, 1)
  150. # JOG Feedrate
  151. self.jog_fr_label = FCLabel('%s:' % _("Feedrate"))
  152. self.jog_fr_label.setToolTip(
  153. _("Feedrate when jogging.")
  154. )
  155. self.jog_fr_entry = FCDoubleSpinner()
  156. self.jog_fr_entry.set_precision(self.decimals)
  157. self.jog_fr_entry.set_range(0, 99999.9999)
  158. grid0.addWidget(self.jog_fr_label, 26, 0)
  159. grid0.addWidget(self.jog_fr_entry, 26, 1)
  160. # JOG Travel Z
  161. self.jog_travelz_label = FCLabel('%s:' % _("Travel Z"))
  162. self.jog_travelz_label.setToolTip(
  163. _("Safe height (Z) distance when jogging to origin.")
  164. )
  165. self.jog_travelz_entry = FCDoubleSpinner()
  166. self.jog_travelz_entry.set_precision(self.decimals)
  167. self.jog_travelz_entry.set_range(0, 99999.9999)
  168. grid0.addWidget(self.jog_travelz_label, 28, 0)
  169. grid0.addWidget(self.jog_travelz_entry, 28, 1)
  170. self.layout.addStretch()
  171. self.annotation_fontcolor_entry.editingFinished.connect(self.on_annotation_fontcolor_entry)
  172. def on_annotation_fontcolor_entry(self):
  173. self.app.defaults['cncjob_annotation_fontcolor'] = self.annotation_fontcolor_entry.get_value()