GerberEditorPrefGroupUI.py 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. from PyQt5 import QtWidgets
  2. from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, FCComboBox, FCEntry, RadioSet
  3. from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
  4. class GerberEditorPrefGroupUI(OptionsGroupUI):
  5. def __init__(self, decimals=4, parent=None):
  6. # OptionsGroupUI.__init__(self, "Gerber Adv. Options Preferences", parent=parent)
  7. super(GerberEditorPrefGroupUI, self).__init__(self)
  8. self.setTitle(str(_("Gerber Editor")))
  9. self.decimals = decimals
  10. # Advanced Gerber Parameters
  11. self.param_label = QtWidgets.QLabel("<b>%s:</b>" % _("Parameters"))
  12. self.param_label.setToolTip(
  13. _("A list of Gerber Editor parameters.")
  14. )
  15. self.layout.addWidget(self.param_label)
  16. grid0 = QtWidgets.QGridLayout()
  17. self.layout.addLayout(grid0)
  18. # Selection Limit
  19. self.sel_limit_label = QtWidgets.QLabel('%s:' % _("Selection limit"))
  20. self.sel_limit_label.setToolTip(
  21. _("Set the number of selected Gerber geometry\n"
  22. "items above which the utility geometry\n"
  23. "becomes just a selection rectangle.\n"
  24. "Increases the performance when moving a\n"
  25. "large number of geometric elements.")
  26. )
  27. self.sel_limit_entry = FCSpinner()
  28. self.sel_limit_entry.set_range(0, 9999)
  29. grid0.addWidget(self.sel_limit_label, 0, 0)
  30. grid0.addWidget(self.sel_limit_entry, 0, 1)
  31. # New aperture code
  32. self.addcode_entry_lbl = QtWidgets.QLabel('%s:' % _('New Aperture code'))
  33. self.addcode_entry_lbl.setToolTip(
  34. _("Code for the new aperture")
  35. )
  36. self.addcode_entry = FCSpinner()
  37. self.addcode_entry.set_range(10, 99)
  38. self.addcode_entry.setWrapping(True)
  39. grid0.addWidget(self.addcode_entry_lbl, 1, 0)
  40. grid0.addWidget(self.addcode_entry, 1, 1)
  41. # New aperture size
  42. self.addsize_entry_lbl = QtWidgets.QLabel('%s:' % _('New Aperture size'))
  43. self.addsize_entry_lbl.setToolTip(
  44. _("Size for the new aperture")
  45. )
  46. self.addsize_entry = FCDoubleSpinner()
  47. self.addsize_entry.set_range(0, 100)
  48. self.addsize_entry.set_precision(self.decimals)
  49. grid0.addWidget(self.addsize_entry_lbl, 2, 0)
  50. grid0.addWidget(self.addsize_entry, 2, 1)
  51. # New aperture type
  52. self.addtype_combo_lbl = QtWidgets.QLabel('%s:' % _('New Aperture type'))
  53. self.addtype_combo_lbl.setToolTip(
  54. _("Type for the new aperture.\n"
  55. "Can be 'C', 'R' or 'O'.")
  56. )
  57. self.addtype_combo = FCComboBox()
  58. self.addtype_combo.addItems(['C', 'R', 'O'])
  59. grid0.addWidget(self.addtype_combo_lbl, 3, 0)
  60. grid0.addWidget(self.addtype_combo, 3, 1)
  61. # Number of pads in a pad array
  62. self.grb_array_size_label = QtWidgets.QLabel('%s:' % _('Nr of pads'))
  63. self.grb_array_size_label.setToolTip(
  64. _("Specify how many pads to be in the array.")
  65. )
  66. self.grb_array_size_entry = FCSpinner()
  67. self.grb_array_size_entry.set_range(0, 9999)
  68. grid0.addWidget(self.grb_array_size_label, 4, 0)
  69. grid0.addWidget(self.grb_array_size_entry, 4, 1)
  70. self.adddim_label = QtWidgets.QLabel('%s:' % _('Aperture Dimensions'))
  71. self.adddim_label.setToolTip(
  72. _("Diameters of the tools, separated by comma.\n"
  73. "The value of the diameter has to use the dot decimals separator.\n"
  74. "Valid values: 0.3, 1.0")
  75. )
  76. grid0.addWidget(self.adddim_label, 5, 0)
  77. self.adddim_entry = FCEntry()
  78. grid0.addWidget(self.adddim_entry, 5, 1)
  79. self.grb_array_linear_label = QtWidgets.QLabel('<b>%s:</b>' % _('Linear Pad Array'))
  80. grid0.addWidget(self.grb_array_linear_label, 6, 0, 1, 2)
  81. # Linear Pad Array direction
  82. self.grb_axis_label = QtWidgets.QLabel('%s:' % _('Linear Direction'))
  83. self.grb_axis_label.setToolTip(
  84. _("Direction on which the linear array is oriented:\n"
  85. "- 'X' - horizontal axis \n"
  86. "- 'Y' - vertical axis or \n"
  87. "- 'Angle' - a custom angle for the array inclination")
  88. )
  89. self.grb_axis_radio = RadioSet([{'label': _('X'), 'value': 'X'},
  90. {'label': _('Y'), 'value': 'Y'},
  91. {'label': _('Angle'), 'value': 'A'}])
  92. grid0.addWidget(self.grb_axis_label, 7, 0)
  93. grid0.addWidget(self.grb_axis_radio, 7, 1)
  94. # Linear Pad Array pitch distance
  95. self.grb_pitch_label = QtWidgets.QLabel('%s:' % _('Pitch'))
  96. self.grb_pitch_label.setToolTip(
  97. _("Pitch = Distance between elements of the array.")
  98. )
  99. # self.drill_pitch_label.setMinimumWidth(100)
  100. self.grb_pitch_entry = FCDoubleSpinner()
  101. self.grb_pitch_entry.set_precision(self.decimals)
  102. grid0.addWidget(self.grb_pitch_label, 8, 0)
  103. grid0.addWidget(self.grb_pitch_entry, 8, 1)
  104. # Linear Pad Array custom angle
  105. self.grb_angle_label = QtWidgets.QLabel('%s:' % _('Angle'))
  106. self.grb_angle_label.setToolTip(
  107. _("Angle at which each element in circular array is placed.")
  108. )
  109. self.grb_angle_entry = FCDoubleSpinner()
  110. self.grb_angle_entry.set_precision(self.decimals)
  111. self.grb_angle_entry.set_range(-360, 360)
  112. self.grb_angle_entry.setSingleStep(5)
  113. grid0.addWidget(self.grb_angle_label, 9, 0)
  114. grid0.addWidget(self.grb_angle_entry, 9, 1)
  115. self.grb_array_circ_label = QtWidgets.QLabel('<b>%s:</b>' % _('Circular Pad Array'))
  116. grid0.addWidget(self.grb_array_circ_label, 10, 0, 1, 2)
  117. # Circular Pad Array direction
  118. self.grb_circular_direction_label = QtWidgets.QLabel('%s:' % _('Circular Direction'))
  119. self.grb_circular_direction_label.setToolTip(
  120. _("Direction for circular array.\n"
  121. "Can be CW = clockwise or CCW = counter clockwise.")
  122. )
  123. self.grb_circular_dir_radio = RadioSet([{'label': _('CW'), 'value': 'CW'},
  124. {'label': _('CCW'), 'value': 'CCW'}])
  125. grid0.addWidget(self.grb_circular_direction_label, 11, 0)
  126. grid0.addWidget(self.grb_circular_dir_radio, 11, 1)
  127. # Circular Pad Array Angle
  128. self.grb_circular_angle_label = QtWidgets.QLabel('%s:' % _('Circular Angle'))
  129. self.grb_circular_angle_label.setToolTip(
  130. _("Angle at which each element in circular array is placed.")
  131. )
  132. self.grb_circular_angle_entry = FCDoubleSpinner()
  133. self.grb_circular_angle_entry.set_precision(self.decimals)
  134. self.grb_circular_angle_entry.set_range(-360, 360)
  135. self.grb_circular_angle_entry.setSingleStep(5)
  136. grid0.addWidget(self.grb_circular_angle_label, 12, 0)
  137. grid0.addWidget(self.grb_circular_angle_entry, 12, 1)
  138. self.grb_array_tools_b_label = QtWidgets.QLabel('<b>%s:</b>' % _('Buffer Tool'))
  139. grid0.addWidget(self.grb_array_tools_b_label, 13, 0, 1, 2)
  140. # Buffer Distance
  141. self.grb_buff_label = QtWidgets.QLabel('%s:' % _('Buffer distance'))
  142. self.grb_buff_label.setToolTip(
  143. _("Distance at which to buffer the Gerber element.")
  144. )
  145. self.grb_buff_entry = FCDoubleSpinner()
  146. self.grb_buff_entry.set_precision(self.decimals)
  147. self.grb_buff_entry.set_range(-9999, 9999)
  148. grid0.addWidget(self.grb_buff_label, 14, 0)
  149. grid0.addWidget(self.grb_buff_entry, 14, 1)
  150. self.grb_array_tools_s_label = QtWidgets.QLabel('<b>%s:</b>' % _('Scale Tool'))
  151. grid0.addWidget(self.grb_array_tools_s_label, 15, 0, 1, 2)
  152. # Scale Factor
  153. self.grb_scale_label = QtWidgets.QLabel('%s:' % _('Scale factor'))
  154. self.grb_scale_label.setToolTip(
  155. _("Factor to scale the Gerber element.")
  156. )
  157. self.grb_scale_entry = FCDoubleSpinner()
  158. self.grb_scale_entry.set_precision(self.decimals)
  159. self.grb_scale_entry.set_range(0, 9999)
  160. grid0.addWidget(self.grb_scale_label, 16, 0)
  161. grid0.addWidget(self.grb_scale_entry, 16, 1)
  162. self.grb_array_tools_ma_label = QtWidgets.QLabel('<b>%s:</b>' % _('Mark Area Tool'))
  163. grid0.addWidget(self.grb_array_tools_ma_label, 17, 0, 1, 2)
  164. # Mark area Tool low threshold
  165. self.grb_ma_low_label = QtWidgets.QLabel('%s:' % _('Threshold low'))
  166. self.grb_ma_low_label.setToolTip(
  167. _("Threshold value under which the apertures are not marked.")
  168. )
  169. self.grb_ma_low_entry = FCDoubleSpinner()
  170. self.grb_ma_low_entry.set_precision(self.decimals)
  171. self.grb_ma_low_entry.set_range(0, 9999)
  172. grid0.addWidget(self.grb_ma_low_label, 18, 0)
  173. grid0.addWidget(self.grb_ma_low_entry, 18, 1)
  174. # Mark area Tool high threshold
  175. self.grb_ma_high_label = QtWidgets.QLabel('%s:' % _('Threshold high'))
  176. self.grb_ma_high_label.setToolTip(
  177. _("Threshold value over which the apertures are not marked.")
  178. )
  179. self.grb_ma_high_entry = FCDoubleSpinner()
  180. self.grb_ma_high_entry.set_precision(self.decimals)
  181. self.grb_ma_high_entry.set_range(0, 9999)
  182. grid0.addWidget(self.grb_ma_high_label, 19, 0)
  183. grid0.addWidget(self.grb_ma_high_entry, 19, 1)
  184. self.layout.addStretch()