Tools2EDrillsPrefGroupUI.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. from PyQt5 import QtWidgets
  2. from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner
  3. from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
  4. class Tools2EDrillsPrefGroupUI(OptionsGroupUI):
  5. def __init__(self, decimals=4, parent=None):
  6. super(Tools2EDrillsPrefGroupUI, self).__init__(self)
  7. self.setTitle(str(_("Extract Drills Options")))
  8. self.decimals = decimals
  9. # ## Grid Layout
  10. grid_lay = QtWidgets.QGridLayout()
  11. self.layout.addLayout(grid_lay)
  12. grid_lay.setColumnStretch(0, 0)
  13. grid_lay.setColumnStretch(1, 1)
  14. self.param_label = QtWidgets.QLabel('<b>%s:</b>' % _('Parameters'))
  15. self.param_label.setToolTip(
  16. _("Parameters used for this tool.")
  17. )
  18. grid_lay.addWidget(self.param_label, 0, 0, 1, 2)
  19. self.padt_label = QtWidgets.QLabel("<b>%s:</b>" % _("Processed Pads Type"))
  20. self.padt_label.setToolTip(
  21. _("The type of pads shape to be processed.\n"
  22. "If the PCB has many SMD pads with rectangular pads,\n"
  23. "disable the Rectangular aperture.")
  24. )
  25. grid_lay.addWidget(self.padt_label, 2, 0, 1, 2)
  26. # Circular Aperture Selection
  27. self.circular_cb = FCCheckBox('%s' % _("Circular"))
  28. self.circular_cb.setToolTip(
  29. _("Process Circular Pads.")
  30. )
  31. grid_lay.addWidget(self.circular_cb, 3, 0, 1, 2)
  32. # Oblong Aperture Selection
  33. self.oblong_cb = FCCheckBox('%s' % _("Oblong"))
  34. self.oblong_cb.setToolTip(
  35. _("Process Oblong Pads.")
  36. )
  37. grid_lay.addWidget(self.oblong_cb, 4, 0, 1, 2)
  38. # Square Aperture Selection
  39. self.square_cb = FCCheckBox('%s' % _("Square"))
  40. self.square_cb.setToolTip(
  41. _("Process Square Pads.")
  42. )
  43. grid_lay.addWidget(self.square_cb, 5, 0, 1, 2)
  44. # Rectangular Aperture Selection
  45. self.rectangular_cb = FCCheckBox('%s' % _("Rectangular"))
  46. self.rectangular_cb.setToolTip(
  47. _("Process Rectangular Pads.")
  48. )
  49. grid_lay.addWidget(self.rectangular_cb, 6, 0, 1, 2)
  50. # Others type of Apertures Selection
  51. self.other_cb = FCCheckBox('%s' % _("Others"))
  52. self.other_cb.setToolTip(
  53. _("Process pads not in the categories above.")
  54. )
  55. grid_lay.addWidget(self.other_cb, 7, 0, 1, 2)
  56. separator_line = QtWidgets.QFrame()
  57. separator_line.setFrameShape(QtWidgets.QFrame.HLine)
  58. separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
  59. grid_lay.addWidget(separator_line, 8, 0, 1, 2)
  60. # ## Axis
  61. self.hole_size_radio = RadioSet(
  62. [
  63. {'label': _("Fixed Diameter"), 'value': 'fixed'},
  64. {'label': _("Fixed Annular Ring"), 'value': 'ring'},
  65. {'label': _("Proportional"), 'value': 'prop'}
  66. ],
  67. orientation='vertical',
  68. stretch=False)
  69. self.hole_size_label = QtWidgets.QLabel('<b>%s:</b>' % _("Method"))
  70. self.hole_size_label.setToolTip(
  71. _("The method for processing pads. Can be:\n"
  72. "- Fixed Diameter -> all holes will have a set size\n"
  73. "- Fixed Annular Ring -> all holes will have a set annular ring\n"
  74. "- Proportional -> each hole size will be a fraction of the pad size"))
  75. grid_lay.addWidget(self.hole_size_label, 9, 0)
  76. grid_lay.addWidget(self.hole_size_radio, 9, 1)
  77. # grid_lay1.addWidget(QtWidgets.QLabel(''))
  78. separator_line = QtWidgets.QFrame()
  79. separator_line.setFrameShape(QtWidgets.QFrame.HLine)
  80. separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
  81. grid_lay.addWidget(separator_line, 10, 0, 1, 2)
  82. # Annular Ring
  83. self.fixed_label = QtWidgets.QLabel('<b>%s</b>' % _("Fixed Diameter"))
  84. grid_lay.addWidget(self.fixed_label, 11, 0, 1, 2)
  85. # Diameter value
  86. self.dia_entry = FCDoubleSpinner()
  87. self.dia_entry.set_precision(self.decimals)
  88. self.dia_entry.set_range(0.0000, 9999.9999)
  89. self.dia_label = QtWidgets.QLabel('%s:' % _("Value"))
  90. self.dia_label.setToolTip(
  91. _("Fixed hole diameter.")
  92. )
  93. grid_lay.addWidget(self.dia_label, 12, 0)
  94. grid_lay.addWidget(self.dia_entry, 12, 1)
  95. # Annular Ring value
  96. self.ring_label = QtWidgets.QLabel('<b>%s</b>' % _("Fixed Annular Ring"))
  97. self.ring_label.setToolTip(
  98. _("The size of annular ring.\n"
  99. "The copper sliver between the hole exterior\n"
  100. "and the margin of the copper pad.")
  101. )
  102. grid_lay.addWidget(self.ring_label, 13, 0, 1, 2)
  103. # Circular Annular Ring Value
  104. self.circular_ring_label = QtWidgets.QLabel('%s:' % _("Circular"))
  105. self.circular_ring_label.setToolTip(
  106. _("The size of annular ring for circular pads.")
  107. )
  108. self.circular_ring_entry = FCDoubleSpinner()
  109. self.circular_ring_entry.set_precision(self.decimals)
  110. self.circular_ring_entry.set_range(0.0000, 9999.9999)
  111. grid_lay.addWidget(self.circular_ring_label, 14, 0)
  112. grid_lay.addWidget(self.circular_ring_entry, 14, 1)
  113. # Oblong Annular Ring Value
  114. self.oblong_ring_label = QtWidgets.QLabel('%s:' % _("Oblong"))
  115. self.oblong_ring_label.setToolTip(
  116. _("The size of annular ring for oblong pads.")
  117. )
  118. self.oblong_ring_entry = FCDoubleSpinner()
  119. self.oblong_ring_entry.set_precision(self.decimals)
  120. self.oblong_ring_entry.set_range(0.0000, 9999.9999)
  121. grid_lay.addWidget(self.oblong_ring_label, 15, 0)
  122. grid_lay.addWidget(self.oblong_ring_entry, 15, 1)
  123. # Square Annular Ring Value
  124. self.square_ring_label = QtWidgets.QLabel('%s:' % _("Square"))
  125. self.square_ring_label.setToolTip(
  126. _("The size of annular ring for square pads.")
  127. )
  128. self.square_ring_entry = FCDoubleSpinner()
  129. self.square_ring_entry.set_precision(self.decimals)
  130. self.square_ring_entry.set_range(0.0000, 9999.9999)
  131. grid_lay.addWidget(self.square_ring_label, 16, 0)
  132. grid_lay.addWidget(self.square_ring_entry, 16, 1)
  133. # Rectangular Annular Ring Value
  134. self.rectangular_ring_label = QtWidgets.QLabel('%s:' % _("Rectangular"))
  135. self.rectangular_ring_label.setToolTip(
  136. _("The size of annular ring for rectangular pads.")
  137. )
  138. self.rectangular_ring_entry = FCDoubleSpinner()
  139. self.rectangular_ring_entry.set_precision(self.decimals)
  140. self.rectangular_ring_entry.set_range(0.0000, 9999.9999)
  141. grid_lay.addWidget(self.rectangular_ring_label, 17, 0)
  142. grid_lay.addWidget(self.rectangular_ring_entry, 17, 1)
  143. # Others Annular Ring Value
  144. self.other_ring_label = QtWidgets.QLabel('%s:' % _("Others"))
  145. self.other_ring_label.setToolTip(
  146. _("The size of annular ring for other pads.")
  147. )
  148. self.other_ring_entry = FCDoubleSpinner()
  149. self.other_ring_entry.set_precision(self.decimals)
  150. self.other_ring_entry.set_range(0.0000, 9999.9999)
  151. grid_lay.addWidget(self.other_ring_label, 18, 0)
  152. grid_lay.addWidget(self.other_ring_entry, 18, 1)
  153. self.prop_label = QtWidgets.QLabel('<b>%s</b>' % _("Proportional Diameter"))
  154. grid_lay.addWidget(self.prop_label, 19, 0, 1, 2)
  155. # Factor value
  156. self.factor_entry = FCDoubleSpinner(suffix='%')
  157. self.factor_entry.set_precision(self.decimals)
  158. self.factor_entry.set_range(0.0000, 100.0000)
  159. self.factor_entry.setSingleStep(0.1)
  160. self.factor_label = QtWidgets.QLabel('%s:' % _("Factor"))
  161. self.factor_label.setToolTip(
  162. _("Proportional Diameter.\n"
  163. "The hole diameter will be a fraction of the pad size.")
  164. )
  165. grid_lay.addWidget(self.factor_label, 20, 0)
  166. grid_lay.addWidget(self.factor_entry, 20, 1)
  167. self.layout.addStretch()