- fixed the UI layout in Excellon Editor and made sure that after changing a value in the Notebook side after the mouse is inside the canvas, the canvas takes the focus allowing the key shortcuts to work
- Turkish language strings updated (by Mehmet Kaya)
This commit is contained in:
parent
90e3b26b68
commit
846c0dc59d
|
@ -14,6 +14,8 @@ CHANGELOG for FlatCAM beta
|
|||
- fixed issue in the Excellon Editor where the Space key did not toggle the direction of the array of drills
|
||||
- combed the application strings all over the app and trimmed them up until those starting with letter 'O'
|
||||
- updated the translation strings
|
||||
- fixed the UI layout in Excellon Editor and made sure that after changing a value in the Notebook side after the mouse is inside the canvas, the canvas takes the focus allowing the key shortcuts to work
|
||||
- Turkish language strings updated (by Mehmet Kaya)
|
||||
|
||||
3.11.2020
|
||||
|
||||
|
@ -3080,7 +3082,7 @@ RELEASE 8.993
|
|||
- added all the tools from Gerber Editor to the the contextual menu
|
||||
- added the menu entry "Edit" in the Project contextual menu for Gerber objects
|
||||
- started to work in adding slots and slots array in Excellon Editor
|
||||
- in FCSlot finished the utility geometry and the GUI for it
|
||||
- in SlotAdd finished the utility geometry and the GUI for it
|
||||
|
||||
12.08.2019
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ from PyQt5 import QtGui, QtCore, QtWidgets
|
|||
from PyQt5.QtCore import Qt
|
||||
|
||||
from camlib import distance, arc, FlatCAMRTreeStorage
|
||||
from appGUI.GUIElements import FCEntry, FCComboBox2, FCTable, FCDoubleSpinner, RadioSet, FCSpinner, FCButton
|
||||
from appGUI.GUIElements import FCEntry, FCComboBox2, FCTable, FCDoubleSpinner, RadioSet, FCSpinner, FCButton, FCLabel
|
||||
from appEditors.AppGeoEditor import FCShapeTool, DrawTool, DrawToolShape, DrawToolUtilityShape, AppGeoEditor
|
||||
|
||||
from shapely.geometry import LineString, LinearRing, MultiLineString, Polygon, MultiPolygon, Point
|
||||
|
@ -35,7 +35,7 @@ if '_' not in builtins.__dict__:
|
|||
log = logging.getLogger('base')
|
||||
|
||||
|
||||
class FCDrillSelect(FCShapeTool):
|
||||
class SelectEditorExc(FCShapeTool):
|
||||
def __init__(self, draw_app):
|
||||
DrawTool.__init__(self, draw_app)
|
||||
self.name = 'drill_select'
|
||||
|
@ -219,7 +219,7 @@ class FCDrillSelect(FCShapeTool):
|
|||
pass
|
||||
|
||||
|
||||
class FCDrillAdd(FCShapeTool):
|
||||
class DrillAdd(FCShapeTool):
|
||||
"""
|
||||
Resulting type: MultiLineString
|
||||
"""
|
||||
|
@ -317,7 +317,7 @@ class FCDrillAdd(FCShapeTool):
|
|||
pass
|
||||
|
||||
|
||||
class FCDrillArray(FCShapeTool):
|
||||
class DrillArray(FCShapeTool):
|
||||
"""
|
||||
Resulting type: MultiLineString
|
||||
"""
|
||||
|
@ -404,7 +404,7 @@ class FCDrillArray(FCShapeTool):
|
|||
|
||||
def utility_geometry(self, data=None, static=None):
|
||||
self.drill_axis = self.draw_app.ui.drill_axis_radio.get_value()
|
||||
self.drill_direction = self.draw_app.ui.drill_direction_radio.get_value()
|
||||
self.drill_direction = self.draw_app.ui.drill_array_dir_radio.get_value()
|
||||
self.drill_array = self.draw_app.ui.array_type_combo.get_value()
|
||||
try:
|
||||
self.drill_array_size = int(self.draw_app.ui.drill_array_size_entry.get_value())
|
||||
|
@ -577,7 +577,7 @@ class FCDrillArray(FCShapeTool):
|
|||
pass
|
||||
|
||||
|
||||
class FCSlot(FCShapeTool):
|
||||
class SlotAdd(FCShapeTool):
|
||||
"""
|
||||
Resulting type: Polygon
|
||||
"""
|
||||
|
@ -751,7 +751,7 @@ class FCSlot(FCShapeTool):
|
|||
try:
|
||||
self.geometry = DrawToolShape(self.util_shape(self.points))
|
||||
except Exception as e:
|
||||
log.debug("FCSlot.make() --> %s" % str(e))
|
||||
log.debug("SlotAdd.make() --> %s" % str(e))
|
||||
|
||||
# add the point to drills/slots if the diameter is a key in the dict, if not, create it add the drill location
|
||||
# to the value, as a list of itself
|
||||
|
@ -791,7 +791,7 @@ class FCSlot(FCShapeTool):
|
|||
pass
|
||||
|
||||
|
||||
class FCSlotArray(FCShapeTool):
|
||||
class SlotArray(FCShapeTool):
|
||||
"""
|
||||
Resulting type: MultiPolygon
|
||||
"""
|
||||
|
@ -1150,7 +1150,7 @@ class FCSlotArray(FCShapeTool):
|
|||
pass
|
||||
|
||||
|
||||
class FCDrillResize(FCShapeTool):
|
||||
class ResizeEditorExc(FCShapeTool):
|
||||
def __init__(self, draw_app):
|
||||
DrawTool.__init__(self, draw_app)
|
||||
self.name = 'drill_resize'
|
||||
|
@ -1386,7 +1386,7 @@ class FCDrillResize(FCShapeTool):
|
|||
pass
|
||||
|
||||
|
||||
class FCDrillMove(FCShapeTool):
|
||||
class MoveEditorExc(FCShapeTool):
|
||||
def __init__(self, draw_app):
|
||||
DrawTool.__init__(self, draw_app)
|
||||
self.name = 'drill_move'
|
||||
|
@ -1535,9 +1535,9 @@ class FCDrillMove(FCShapeTool):
|
|||
pass
|
||||
|
||||
|
||||
class FCDrillCopy(FCDrillMove):
|
||||
class CopyEditorExc(MoveEditorExc):
|
||||
def __init__(self, draw_app):
|
||||
FCDrillMove.__init__(self, draw_app)
|
||||
MoveEditorExc.__init__(self, draw_app)
|
||||
self.name = 'drill_copy'
|
||||
|
||||
def make(self):
|
||||
|
@ -1777,14 +1777,14 @@ class AppExcEditor(QtCore.QObject):
|
|||
|
||||
def connect_exc_toolbar_signals(self):
|
||||
self.tools_exc.update({
|
||||
"drill_select": {"button": self.app.ui.select_drill_btn, "constructor": FCDrillSelect},
|
||||
"drill_add": {"button": self.app.ui.add_drill_btn, "constructor": FCDrillAdd},
|
||||
"drill_array": {"button": self.app.ui.add_drill_array_btn, "constructor": FCDrillArray},
|
||||
"slot_add": {"button": self.app.ui.add_slot_btn, "constructor": FCSlot},
|
||||
"slot_array": {"button": self.app.ui.add_slot_array_btn, "constructor": FCSlotArray},
|
||||
"drill_resize": {"button": self.app.ui.resize_drill_btn, "constructor": FCDrillResize},
|
||||
"drill_copy": {"button": self.app.ui.copy_drill_btn, "constructor": FCDrillCopy},
|
||||
"drill_move": {"button": self.app.ui.move_drill_btn, "constructor": FCDrillMove},
|
||||
"drill_select": {"button": self.app.ui.select_drill_btn, "constructor": SelectEditorExc},
|
||||
"drill_add": {"button": self.app.ui.add_drill_btn, "constructor": DrillAdd},
|
||||
"drill_array": {"button": self.app.ui.add_drill_array_btn, "constructor": DrillArray},
|
||||
"slot_add": {"button": self.app.ui.add_slot_btn, "constructor": SlotAdd},
|
||||
"slot_array": {"button": self.app.ui.add_slot_array_btn, "constructor": SlotArray},
|
||||
"drill_resize": {"button": self.app.ui.resize_drill_btn, "constructor": ResizeEditorExc},
|
||||
"drill_copy": {"button": self.app.ui.copy_drill_btn, "constructor": CopyEditorExc},
|
||||
"drill_move": {"button": self.app.ui.move_drill_btn, "constructor": MoveEditorExc},
|
||||
})
|
||||
|
||||
for tool in self.tools_exc:
|
||||
|
@ -1842,7 +1842,7 @@ class AppExcEditor(QtCore.QObject):
|
|||
self.ui.drill_axis_radio.set_value(self.app.defaults['excellon_editor_lin_dir'])
|
||||
self.ui.drill_pitch_entry.set_value(float(self.app.defaults['excellon_editor_lin_pitch']))
|
||||
self.ui.linear_angle_spinner.set_value(float(self.app.defaults['excellon_editor_lin_angle']))
|
||||
self.ui.drill_direction_radio.set_value(self.app.defaults['excellon_editor_circ_dir'])
|
||||
self.ui.drill_array_dir_radio.set_value(self.app.defaults['excellon_editor_circ_dir'])
|
||||
self.ui.drill_angle_entry.set_value(float(self.app.defaults['excellon_editor_circ_angle']))
|
||||
|
||||
self.ui.slot_length_entry.set_value(float(self.app.defaults['excellon_editor_slot_length']))
|
||||
|
@ -1856,8 +1856,14 @@ class AppExcEditor(QtCore.QObject):
|
|||
self.ui.slot_array_direction_radio.set_value(self.app.defaults['excellon_editor_slot_circ_dir'])
|
||||
self.ui.slot_array_angle_entry.set_value(float(self.app.defaults['excellon_editor_slot_circ_angle']))
|
||||
|
||||
self.ui.slot_array_circular_frame.hide()
|
||||
self.ui.slot_array_linear_frame.show()
|
||||
# make sure that th visibility of the various UI frame are updated
|
||||
# according to the set Preferences already loaded
|
||||
self.on_slot_angle_radio()
|
||||
|
||||
self.on_array_type_combo()
|
||||
self.on_slot_array_type_combo()
|
||||
self.on_linear_angle_radio()
|
||||
self.on_slot_array_linear_angle_radio()
|
||||
|
||||
def build_ui(self, first_run=None):
|
||||
|
||||
|
@ -2989,7 +2995,7 @@ class AppExcEditor(QtCore.QObject):
|
|||
self.tools_exc[t]["button"].setChecked(False)
|
||||
|
||||
self.select_tool('drill_select')
|
||||
self.active_tool = FCDrillSelect(self)
|
||||
self.active_tool = SelectEditorExc(self)
|
||||
|
||||
def on_row_selected(self, row, col):
|
||||
if col == 0:
|
||||
|
@ -3067,14 +3073,14 @@ class AppExcEditor(QtCore.QObject):
|
|||
if key_modifier == modifier_to_use:
|
||||
self.select_tool(self.active_tool.name)
|
||||
else:
|
||||
# return to Select tool but not for FCDrillAdd or FCSlot
|
||||
if isinstance(self.active_tool, FCDrillAdd) or isinstance(self.active_tool, FCSlot):
|
||||
# return to Select tool but not for FCDrillAdd or SlotAdd
|
||||
if isinstance(self.active_tool, DrillAdd) or isinstance(self.active_tool, SlotAdd):
|
||||
self.select_tool(self.active_tool.name)
|
||||
else:
|
||||
self.select_tool("drill_select")
|
||||
return
|
||||
|
||||
if isinstance(self.active_tool, FCDrillSelect):
|
||||
if isinstance(self.active_tool, SelectEditorExc):
|
||||
# self.app.log.debug("Replotting after click.")
|
||||
self.replot()
|
||||
else:
|
||||
|
@ -3192,14 +3198,14 @@ class AppExcEditor(QtCore.QObject):
|
|||
QtGui.QGuiApplication.restoreOverrideCursor()
|
||||
except Exception:
|
||||
pass
|
||||
if self.active_tool.complete is False and not isinstance(self.active_tool, FCDrillSelect):
|
||||
if self.active_tool.complete is False and not isinstance(self.active_tool, SelectEditorExc):
|
||||
self.active_tool.complete = True
|
||||
self.in_action = False
|
||||
self.delete_utility_geometry()
|
||||
self.app.inform.emit('[success] %s' % _("Done."))
|
||||
self.select_tool('drill_select')
|
||||
else:
|
||||
if isinstance(self.active_tool, FCDrillAdd):
|
||||
if isinstance(self.active_tool, DrillAdd):
|
||||
self.active_tool.complete = True
|
||||
self.in_action = False
|
||||
self.delete_utility_geometry()
|
||||
|
@ -3222,7 +3228,7 @@ class AppExcEditor(QtCore.QObject):
|
|||
self.draw_selection_area_handler(self.pos, pos, self.app.selection_type)
|
||||
self.app.selection_type = None
|
||||
|
||||
elif isinstance(self.active_tool, FCDrillSelect):
|
||||
elif isinstance(self.active_tool, SelectEditorExc):
|
||||
self.active_tool.click_release((self.pos[0], self.pos[1]))
|
||||
|
||||
# if there are selected objects then plot them
|
||||
|
@ -3333,6 +3339,9 @@ class AppExcEditor(QtCore.QObject):
|
|||
:return: None
|
||||
"""
|
||||
|
||||
if not self.app.plotcanvas.native.hasFocus():
|
||||
self.app.plotcanvas.native.setFocus()
|
||||
|
||||
if self.app.is_legacy is False:
|
||||
event_pos = event.pos
|
||||
event_is_dragging = event.is_dragging
|
||||
|
@ -3398,10 +3407,10 @@ class AppExcEditor(QtCore.QObject):
|
|||
|
||||
# ## Selection area on canvas section # ##
|
||||
if event_is_dragging == 1 and event.button == 1:
|
||||
# I make an exception for FCDrillAdd and FCDrillArray because clicking and dragging while making regions
|
||||
# can create strange issues. Also for FCSlot and FCSlotArray
|
||||
if isinstance(self.active_tool, FCDrillAdd) or isinstance(self.active_tool, FCDrillArray) or \
|
||||
isinstance(self.active_tool, FCSlot) or isinstance(self.active_tool, FCSlotArray):
|
||||
# I make an exception for FCDrillAdd and DrillArray because clicking and dragging while making regions
|
||||
# can create strange issues. Also for SlotAdd and SlotArray
|
||||
if isinstance(self.active_tool, DrillAdd) or isinstance(self.active_tool, DrillArray) or \
|
||||
isinstance(self.active_tool, SlotAdd) or isinstance(self.active_tool, SlotArray):
|
||||
self.app.selection_type = None
|
||||
else:
|
||||
dx = pos[0] - self.pos[0]
|
||||
|
@ -3764,144 +3773,155 @@ class AppExcEditorUI:
|
|||
self.drills_frame = QtWidgets.QFrame()
|
||||
self.drills_frame.setContentsMargins(0, 0, 0, 0)
|
||||
layout.addWidget(self.drills_frame)
|
||||
self.tools_box = QtWidgets.QVBoxLayout()
|
||||
self.tools_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.drills_frame.setLayout(self.tools_box)
|
||||
|
||||
# #############################################################################################################
|
||||
# ######################## MAIN Grid ##########################################################################
|
||||
# #############################################################################################################
|
||||
self.ui_vertical_lay = QtWidgets.QVBoxLayout()
|
||||
self.ui_vertical_lay.setContentsMargins(0, 0, 0, 0)
|
||||
self.drills_frame.setLayout(self.ui_vertical_lay)
|
||||
|
||||
# ## Page Title box (spacing between children)
|
||||
self.title_box = QtWidgets.QHBoxLayout()
|
||||
self.tools_box.addLayout(self.title_box)
|
||||
self.ui_vertical_lay.addLayout(self.title_box)
|
||||
|
||||
# ## Page Title icon
|
||||
# ## Page Title
|
||||
pixmap = QtGui.QPixmap(self.app.resource_location + '/flatcam_icon32.png')
|
||||
self.icon = QtWidgets.QLabel()
|
||||
self.icon = FCLabel()
|
||||
self.icon.setPixmap(pixmap)
|
||||
self.title_box.addWidget(self.icon, stretch=0)
|
||||
|
||||
# ## Title label
|
||||
self.title_label = QtWidgets.QLabel("<font size=5><b>%s</b></font>" % _('Excellon Editor'))
|
||||
self.title_label = FCLabel("<font size=5><b>%s</b></font>" % _('Excellon Editor'))
|
||||
self.title_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
|
||||
|
||||
self.title_box.addWidget(self.icon, stretch=0)
|
||||
self.title_box.addWidget(self.title_label, stretch=1)
|
||||
|
||||
# ## Object name
|
||||
self.name_box = QtWidgets.QHBoxLayout()
|
||||
self.tools_box.addLayout(self.name_box)
|
||||
name_label = QtWidgets.QLabel(_("Name:"))
|
||||
self.name_box.addWidget(name_label)
|
||||
self.ui_vertical_lay.addLayout(self.name_box)
|
||||
|
||||
name_label = FCLabel(_("Name:"))
|
||||
self.name_entry = FCEntry()
|
||||
|
||||
self.name_box.addWidget(name_label)
|
||||
self.name_box.addWidget(self.name_entry)
|
||||
|
||||
# ### Tools Drills ## ##
|
||||
self.tools_table_label = QtWidgets.QLabel("<b>%s</b>" % _('Tools Table'))
|
||||
self.tools_table_label = FCLabel("<b>%s</b>" % _('Tools Table'))
|
||||
self.tools_table_label.setToolTip(
|
||||
_("Tools in this Excellon object\n"
|
||||
"when are used for drilling.")
|
||||
)
|
||||
self.tools_box.addWidget(self.tools_table_label)
|
||||
self.ui_vertical_lay.addWidget(self.tools_table_label)
|
||||
|
||||
# Drills TABLE
|
||||
self.tools_table_exc = FCTable()
|
||||
# delegate = SpinBoxDelegate(units=self.units)
|
||||
# self.ui.tools_table_exc.setItemDelegateForColumn(1, delegate)
|
||||
|
||||
self.tools_box.addWidget(self.tools_table_exc)
|
||||
|
||||
self.tools_table_exc.setColumnCount(4)
|
||||
self.tools_table_exc.setHorizontalHeaderLabels(['#', _('Diameter'), 'D', 'S'])
|
||||
self.tools_table_exc.setSortingEnabled(False)
|
||||
self.tools_table_exc.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
||||
|
||||
self.ui_vertical_lay.addWidget(self.tools_table_exc)
|
||||
|
||||
separator_line = QtWidgets.QFrame()
|
||||
separator_line.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.tools_box.addWidget(separator_line)
|
||||
self.ui_vertical_lay.addWidget(separator_line)
|
||||
|
||||
self.convert_slots_btn = FCButton('%s' % _("Convert Slots"))
|
||||
self.convert_slots_btn.setToolTip(
|
||||
_("Convert the slots in the selected tools to drills.")
|
||||
)
|
||||
self.tools_box.addWidget(self.convert_slots_btn)
|
||||
self.ui_vertical_lay.addWidget(self.convert_slots_btn)
|
||||
|
||||
separator_line = QtWidgets.QFrame()
|
||||
separator_line.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.tools_box.addWidget(separator_line)
|
||||
self.ui_vertical_lay.addWidget(separator_line)
|
||||
|
||||
# ### Add a new Tool ## ##
|
||||
self.addtool_label = QtWidgets.QLabel('<b>%s</b>' % _('Add/Delete Tool'))
|
||||
self.addtool_label = FCLabel('<b>%s</b>' % _('Add/Delete Tool'))
|
||||
self.addtool_label.setToolTip(
|
||||
_("Add/Delete a tool to the tool list\n"
|
||||
"for this Excellon object.")
|
||||
)
|
||||
self.tools_box.addWidget(self.addtool_label)
|
||||
self.ui_vertical_lay.addWidget(self.addtool_label)
|
||||
|
||||
# #############################################################################################################
|
||||
# ######################## ADD New Tool Grid ##################################################################
|
||||
# #############################################################################################################
|
||||
grid1 = QtWidgets.QGridLayout()
|
||||
self.tools_box.addLayout(grid1)
|
||||
grid1.setColumnStretch(0, 0)
|
||||
grid1.setColumnStretch(1, 1)
|
||||
self.ui_vertical_lay.addLayout(grid1)
|
||||
|
||||
addtool_entry_lbl = QtWidgets.QLabel('%s:' % _('Tool Dia'))
|
||||
# Tool Diameter Label
|
||||
addtool_entry_lbl = FCLabel('%s:' % _('Tool Dia'))
|
||||
addtool_entry_lbl.setToolTip(
|
||||
_("Diameter for the new tool")
|
||||
)
|
||||
|
||||
hlay = QtWidgets.QHBoxLayout()
|
||||
self.addtool_entry = FCDoubleSpinner()
|
||||
# Tool Diameter Entry
|
||||
self.addtool_entry = FCDoubleSpinner(policy=False)
|
||||
self.addtool_entry.set_precision(self.decimals)
|
||||
self.addtool_entry.set_range(0.0000, 10000.0000)
|
||||
|
||||
hlay.addWidget(self.addtool_entry)
|
||||
|
||||
self.addtool_btn = QtWidgets.QPushButton(_('Add Tool'))
|
||||
# Tool Diameter Button
|
||||
self.addtool_btn = QtWidgets.QPushButton(_('Add'))
|
||||
self.addtool_btn.setToolTip(
|
||||
_("Add a new tool to the tool list\n"
|
||||
"with the diameter specified above.")
|
||||
)
|
||||
self.addtool_btn.setFixedWidth(80)
|
||||
hlay.addWidget(self.addtool_btn)
|
||||
|
||||
grid1.addWidget(addtool_entry_lbl, 0, 0)
|
||||
grid1.addLayout(hlay, 0, 1)
|
||||
|
||||
grid2 = QtWidgets.QGridLayout()
|
||||
self.tools_box.addLayout(grid2)
|
||||
|
||||
# Delete Tool
|
||||
self.deltool_btn = QtWidgets.QPushButton(_('Delete Tool'))
|
||||
self.deltool_btn.setToolTip(
|
||||
_("Delete a tool in the tool list\n"
|
||||
"by selecting a row in the tool table.")
|
||||
)
|
||||
grid2.addWidget(self.deltool_btn, 0, 1)
|
||||
grid1.addWidget(self.deltool_btn, 2, 0, 1, 2)
|
||||
|
||||
# add a frame and inside add a vertical box layout. Inside this vbox layout I add all the Drills widgets
|
||||
separator_line = QtWidgets.QFrame()
|
||||
separator_line.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
grid1.addWidget(separator_line, 4, 0, 1, 2)
|
||||
|
||||
# #############################################################################################################
|
||||
# ############################## Resize Tool Grid #############################################################
|
||||
# #############################################################################################################
|
||||
# add a frame and inside add a grid box layout. Inside this layout I add all the Drills widgets
|
||||
# this way I can hide/show the frame
|
||||
self.resize_frame = QtWidgets.QFrame()
|
||||
self.resize_frame.setContentsMargins(0, 0, 0, 0)
|
||||
self.tools_box.addWidget(self.resize_frame)
|
||||
self.resize_box = QtWidgets.QVBoxLayout()
|
||||
self.resize_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.resize_frame.setLayout(self.resize_box)
|
||||
self.ui_vertical_lay.addWidget(self.resize_frame)
|
||||
|
||||
# ### Resize a drill ## ##
|
||||
self.emptyresize_label = QtWidgets.QLabel('')
|
||||
self.resize_box.addWidget(self.emptyresize_label)
|
||||
self.resize_grid = QtWidgets.QGridLayout()
|
||||
self.resize_grid.setColumnStretch(0, 0)
|
||||
self.resize_grid.setColumnStretch(1, 1)
|
||||
self.resize_grid.setContentsMargins(0, 0, 0, 0)
|
||||
self.resize_frame.setLayout(self.resize_grid)
|
||||
|
||||
self.drillresize_label = QtWidgets.QLabel('<b>%s</b>' % _("Resize Drill(s)"))
|
||||
self.drillresize_label = FCLabel('<b>%s</b>' % _("Resize Tool"))
|
||||
self.drillresize_label.setToolTip(
|
||||
_("Resize a drill or a selection of drills.")
|
||||
)
|
||||
self.resize_box.addWidget(self.drillresize_label)
|
||||
self.resize_grid.addWidget(self.drillresize_label, 0, 0, 1, 2)
|
||||
|
||||
grid3 = QtWidgets.QGridLayout()
|
||||
self.resize_box.addLayout(grid3)
|
||||
|
||||
res_entry_lbl = QtWidgets.QLabel('%s:' % _('Resize Dia'))
|
||||
# Resize Diameter
|
||||
res_entry_lbl = FCLabel('%s:' % _('Resize Dia'))
|
||||
res_entry_lbl.setToolTip(
|
||||
_("Diameter to resize to.")
|
||||
)
|
||||
grid3.addWidget(res_entry_lbl, 0, 0)
|
||||
|
||||
hlay2 = QtWidgets.QHBoxLayout()
|
||||
self.resdrill_entry = FCDoubleSpinner()
|
||||
self.resdrill_entry = FCDoubleSpinner(policy=False)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred)
|
||||
self.resdrill_entry.setSizePolicy(sizePolicy)
|
||||
self.resdrill_entry.set_precision(self.decimals)
|
||||
|
@ -3909,369 +3929,384 @@ class AppExcEditorUI:
|
|||
|
||||
hlay2.addWidget(self.resdrill_entry)
|
||||
|
||||
# Resize Button
|
||||
self.resize_btn = QtWidgets.QPushButton(_('Resize'))
|
||||
self.resize_btn.setToolTip(
|
||||
_("Resize drill(s)")
|
||||
)
|
||||
self.resize_btn.setFixedWidth(80)
|
||||
hlay2.addWidget(self.resize_btn)
|
||||
grid3.addLayout(hlay2, 0, 1)
|
||||
|
||||
self.resize_grid.addWidget(res_entry_lbl, 2, 0)
|
||||
self.resize_grid.addLayout(hlay2, 2, 1)
|
||||
|
||||
separator_line = QtWidgets.QFrame()
|
||||
separator_line.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.resize_grid.addWidget(separator_line, 6, 0, 1, 2)
|
||||
|
||||
self.resize_frame.hide()
|
||||
|
||||
# ####################################
|
||||
# ### Add DRILL Array ################
|
||||
# ####################################
|
||||
|
||||
# add a frame and inside add a vertical box layout. Inside this vbox layout I add
|
||||
# #############################################################################################################
|
||||
# ################################## Add DRILL Array ##########################################################
|
||||
# #############################################################################################################
|
||||
# add a frame and inside add a grid box layout. Inside this grid layout I add
|
||||
# all the add drill array widgets
|
||||
# this way I can hide/show the frame
|
||||
self.array_frame = QtWidgets.QFrame()
|
||||
self.array_frame.setContentsMargins(0, 0, 0, 0)
|
||||
self.tools_box.addWidget(self.array_frame)
|
||||
self.array_box = QtWidgets.QVBoxLayout()
|
||||
self.array_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.array_frame.setLayout(self.array_box)
|
||||
self.ui_vertical_lay.addWidget(self.array_frame)
|
||||
|
||||
self.emptyarray_label = QtWidgets.QLabel('')
|
||||
self.array_box.addWidget(self.emptyarray_label)
|
||||
self.array_grid = QtWidgets.QGridLayout()
|
||||
self.array_grid.setColumnStretch(0, 0)
|
||||
self.array_grid.setColumnStretch(1, 1)
|
||||
self.array_grid.setContentsMargins(0, 0, 0, 0)
|
||||
self.array_frame.setLayout(self.array_grid)
|
||||
|
||||
self.drill_array_label = QtWidgets.QLabel('<b>%s</b>' % _("Add Drill Array"))
|
||||
# Type of Drill Array
|
||||
self.drill_array_label = FCLabel('<b>%s</b>' % _("Add Drill Array"))
|
||||
self.drill_array_label.setToolTip(
|
||||
_("Add an array of drills (linear or circular array)")
|
||||
)
|
||||
self.array_box.addWidget(self.drill_array_label)
|
||||
|
||||
|
||||
# Special Combo - it works by indexes as opposed to the items Text
|
||||
self.array_type_combo = FCComboBox2()
|
||||
self.array_type_combo.setToolTip(
|
||||
_("Select the type of drills array to create.\n"
|
||||
"It can be Linear X(Y) or Circular")
|
||||
)
|
||||
self.array_type_combo.addItem(_("Linear"))
|
||||
self.array_type_combo.addItem(_("Circular"))
|
||||
self.array_type_combo.addItems([_("Linear"), _("Circular")])
|
||||
|
||||
self.array_box.addWidget(self.array_type_combo)
|
||||
|
||||
self.array_form = QtWidgets.QFormLayout()
|
||||
self.array_box.addLayout(self.array_form)
|
||||
self.array_grid.addWidget(self.drill_array_label, 0, 0, 1, 2)
|
||||
self.array_grid.addWidget(self.array_type_combo, 2, 0, 1, 2)
|
||||
|
||||
# Set the number of drill holes in the drill array
|
||||
self.drill_array_size_label = QtWidgets.QLabel('%s:' % _('Nr of drills'))
|
||||
self.drill_array_size_label = FCLabel('%s:' % _('Number'))
|
||||
self.drill_array_size_label.setToolTip(_("Specify how many drills to be in the array."))
|
||||
self.drill_array_size_label.setMinimumWidth(100)
|
||||
|
||||
self.drill_array_size_entry = FCSpinner()
|
||||
self.drill_array_size_entry.set_range(1, 9999)
|
||||
self.array_form.addRow(self.drill_array_size_label, self.drill_array_size_entry)
|
||||
self.drill_array_size_entry = FCSpinner(policy=False)
|
||||
self.drill_array_size_entry.set_range(1, 10000)
|
||||
|
||||
self.array_grid.addWidget(self.drill_array_size_label, 4, 0)
|
||||
self.array_grid.addWidget(self.drill_array_size_entry, 4, 1)
|
||||
|
||||
# #############################################################################################################
|
||||
# ###################### LINEAR Drill Array ###################################################################
|
||||
# #############################################################################################################
|
||||
self.array_linear_frame = QtWidgets.QFrame()
|
||||
self.array_linear_frame.setContentsMargins(0, 0, 0, 0)
|
||||
self.array_box.addWidget(self.array_linear_frame)
|
||||
self.linear_box = QtWidgets.QVBoxLayout()
|
||||
self.linear_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.array_linear_frame.setLayout(self.linear_box)
|
||||
|
||||
self.linear_form = QtWidgets.QFormLayout()
|
||||
self.linear_box.addLayout(self.linear_form)
|
||||
self.array_grid.addWidget(self.array_linear_frame, 6, 0, 1, 2)
|
||||
self.lin_grid = QtWidgets.QGridLayout()
|
||||
self.lin_grid.setColumnStretch(0, 0)
|
||||
self.lin_grid.setColumnStretch(1, 1)
|
||||
self.lin_grid.setContentsMargins(0, 0, 0, 0)
|
||||
self.array_linear_frame.setLayout(self.lin_grid)
|
||||
|
||||
# Linear Drill Array direction
|
||||
self.drill_axis_label = QtWidgets.QLabel('%s:' % _('Direction'))
|
||||
self.drill_axis_label = FCLabel('%s:' % _('Direction'))
|
||||
self.drill_axis_label.setToolTip(
|
||||
_("Direction on which the linear array is oriented:\n"
|
||||
"- 'X' - horizontal axis \n"
|
||||
"- 'Y' - vertical axis or \n"
|
||||
"- 'Angle' - a custom angle for the array inclination")
|
||||
)
|
||||
self.drill_axis_label.setMinimumWidth(100)
|
||||
|
||||
self.drill_axis_radio = RadioSet([{'label': _('X'), 'value': 'X'},
|
||||
{'label': _('Y'), 'value': 'Y'},
|
||||
{'label': _('Angle'), 'value': 'A'}])
|
||||
self.linear_form.addRow(self.drill_axis_label, self.drill_axis_radio)
|
||||
|
||||
self.lin_grid.addWidget(self.drill_axis_label, 0, 0)
|
||||
self.lin_grid.addWidget(self.drill_axis_radio, 0, 1)
|
||||
|
||||
# Linear Drill Array pitch distance
|
||||
self.drill_pitch_label = QtWidgets.QLabel('%s:' % _('Pitch'))
|
||||
self.drill_pitch_label = FCLabel('%s:' % _('Pitch'))
|
||||
self.drill_pitch_label.setToolTip(
|
||||
_("Pitch = Distance between elements of the array.")
|
||||
)
|
||||
self.drill_pitch_label.setMinimumWidth(100)
|
||||
|
||||
self.drill_pitch_entry = FCDoubleSpinner()
|
||||
self.drill_pitch_entry = FCDoubleSpinner(policy=False)
|
||||
self.drill_pitch_entry.set_precision(self.decimals)
|
||||
self.drill_pitch_entry.set_range(0.0000, 10000.0000)
|
||||
|
||||
self.linear_form.addRow(self.drill_pitch_label, self.drill_pitch_entry)
|
||||
self.lin_grid.addWidget(self.drill_pitch_label, 2, 0)
|
||||
self.lin_grid.addWidget(self.drill_pitch_entry, 2, 1)
|
||||
|
||||
# Linear Drill Array angle
|
||||
self.linear_angle_label = QtWidgets.QLabel('%s:' % _('Angle'))
|
||||
self.linear_angle_label = FCLabel('%s:' % _('Angle'))
|
||||
self.linear_angle_label.setToolTip(
|
||||
_("Angle at which the linear array is placed.\n"
|
||||
"The precision is of max 2 decimals.\n"
|
||||
"Min value is: -360.00 degrees.\n"
|
||||
"Max value is: 360.00 degrees.")
|
||||
)
|
||||
self.linear_angle_label.setMinimumWidth(100)
|
||||
|
||||
self.linear_angle_spinner = FCDoubleSpinner()
|
||||
self.linear_angle_spinner = FCDoubleSpinner(policy=False)
|
||||
self.linear_angle_spinner.set_precision(self.decimals)
|
||||
self.linear_angle_spinner.setSingleStep(1.0)
|
||||
self.linear_angle_spinner.setRange(-360.00, 360.00)
|
||||
self.linear_form.addRow(self.linear_angle_label, self.linear_angle_spinner)
|
||||
|
||||
self.lin_grid.addWidget(self.linear_angle_label, 4, 0)
|
||||
self.lin_grid.addWidget(self.linear_angle_spinner, 4, 1)
|
||||
|
||||
# #############################################################################################################
|
||||
# ###################### CIRCULAR Drill Array #################################################################
|
||||
# #############################################################################################################
|
||||
self.array_circular_frame = QtWidgets.QFrame()
|
||||
self.array_circular_frame.setContentsMargins(0, 0, 0, 0)
|
||||
self.array_box.addWidget(self.array_circular_frame)
|
||||
self.circular_box = QtWidgets.QVBoxLayout()
|
||||
self.circular_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.array_circular_frame.setLayout(self.circular_box)
|
||||
self.array_grid.addWidget(self.array_circular_frame, 8, 0, 1, 2)
|
||||
|
||||
self.drill_direction_label = QtWidgets.QLabel('%s:' % _('Direction'))
|
||||
self.drill_direction_label.setToolTip(_("Direction for circular array.\n"
|
||||
self.circ_grid = QtWidgets.QGridLayout()
|
||||
self.circ_grid.setColumnStretch(0, 0)
|
||||
self.circ_grid.setColumnStretch(1, 1)
|
||||
self.circ_grid.setContentsMargins(0, 0, 0, 0)
|
||||
self.array_circular_frame.setLayout(self.circ_grid)
|
||||
|
||||
# Array Direction
|
||||
self.drill_array_dir_lbl = FCLabel('%s:' % _('Direction'))
|
||||
self.drill_array_dir_lbl.setToolTip(_("Direction for circular array.\n"
|
||||
"Can be CW = clockwise or CCW = counter clockwise."))
|
||||
self.drill_direction_label.setMinimumWidth(100)
|
||||
|
||||
self.circular_form = QtWidgets.QFormLayout()
|
||||
self.circular_box.addLayout(self.circular_form)
|
||||
|
||||
self.drill_direction_radio = RadioSet([{'label': _('CW'), 'value': 'CW'},
|
||||
self.drill_array_dir_radio = RadioSet([{'label': _('CW'), 'value': 'CW'},
|
||||
{'label': _('CCW'), 'value': 'CCW'}])
|
||||
self.circular_form.addRow(self.drill_direction_label, self.drill_direction_radio)
|
||||
|
||||
self.drill_angle_label = QtWidgets.QLabel('%s:' % _('Angle'))
|
||||
self.drill_angle_label.setToolTip(_("Angle at which each element in circular array is placed."))
|
||||
self.drill_angle_label.setMinimumWidth(100)
|
||||
self.circ_grid.addWidget(self.drill_array_dir_lbl, 0, 0)
|
||||
self.circ_grid.addWidget(self.drill_array_dir_radio, 0, 1)
|
||||
|
||||
self.drill_angle_entry = FCDoubleSpinner()
|
||||
# Array Angle
|
||||
self.drill_array_angle_lbl = FCLabel('%s:' % _('Angle'))
|
||||
self.drill_array_angle_lbl.setToolTip(_("Angle at which each element in circular array is placed."))
|
||||
|
||||
self.drill_angle_entry = FCDoubleSpinner(policy=False)
|
||||
self.drill_angle_entry.set_precision(self.decimals)
|
||||
self.drill_angle_entry.setSingleStep(1.0)
|
||||
self.drill_angle_entry.setRange(-360.00, 360.00)
|
||||
|
||||
self.circular_form.addRow(self.drill_angle_label, self.drill_angle_entry)
|
||||
self.circ_grid.addWidget(self.drill_array_angle_lbl, 2, 0)
|
||||
self.circ_grid.addWidget(self.drill_angle_entry, 2, 1)
|
||||
|
||||
self.array_circular_frame.hide()
|
||||
separator_line = QtWidgets.QFrame()
|
||||
separator_line.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.array_grid.addWidget(separator_line, 10, 0, 1, 2)
|
||||
|
||||
self.linear_angle_spinner.hide()
|
||||
self.linear_angle_label.hide()
|
||||
|
||||
self.array_frame.hide()
|
||||
|
||||
# ######################################################
|
||||
# ##### ADDING SLOTS ###################################
|
||||
# ######################################################
|
||||
|
||||
# add a frame and inside add a vertical box layout. Inside this vbox layout I add
|
||||
# #############################################################################################################
|
||||
# ################################### ADDING SLOTS ############################################################
|
||||
# #############################################################################################################
|
||||
# add a frame and inside add a grid box layout. Inside this grid layout I add
|
||||
# all the add slot widgets
|
||||
# this way I can hide/show the frame
|
||||
self.slot_frame = QtWidgets.QFrame()
|
||||
self.slot_frame.setContentsMargins(0, 0, 0, 0)
|
||||
self.tools_box.addWidget(self.slot_frame)
|
||||
self.slot_box = QtWidgets.QVBoxLayout()
|
||||
self.slot_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_frame.setLayout(self.slot_box)
|
||||
self.ui_vertical_lay.addWidget(self.slot_frame)
|
||||
|
||||
self.emptyarray_label = QtWidgets.QLabel('')
|
||||
self.slot_box.addWidget(self.emptyarray_label)
|
||||
self.slot_grid = QtWidgets.QGridLayout()
|
||||
self.slot_grid.setColumnStretch(0, 0)
|
||||
self.slot_grid.setColumnStretch(1, 1)
|
||||
self.slot_grid.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_frame.setLayout(self.slot_grid)
|
||||
|
||||
self.slot_label = QtWidgets.QLabel('<b>%s</b>' % _("Slot Parameters"))
|
||||
# Slot Tile Label
|
||||
self.slot_label = FCLabel('<b>%s</b>' % _("Slot Parameters"))
|
||||
self.slot_label.setToolTip(
|
||||
_("Parameters for adding a slot (hole with oval shape)\n"
|
||||
"either single or as an part of an array.")
|
||||
)
|
||||
self.slot_box.addWidget(self.slot_label)
|
||||
|
||||
self.slot_form = QtWidgets.QFormLayout()
|
||||
self.slot_box.addLayout(self.slot_form)
|
||||
self.slot_grid.addWidget(self.slot_label, 0, 0, 1, 2)
|
||||
|
||||
# Slot length
|
||||
self.slot_length_label = QtWidgets.QLabel('%s:' % _('Length'))
|
||||
self.slot_length_label = FCLabel('%s:' % _('Length'))
|
||||
self.slot_length_label.setToolTip(
|
||||
_("Length. The length of the slot.")
|
||||
)
|
||||
self.slot_length_label.setMinimumWidth(100)
|
||||
|
||||
self.slot_length_entry = FCDoubleSpinner()
|
||||
self.slot_length_entry = FCDoubleSpinner(policy=False)
|
||||
self.slot_length_entry.set_precision(self.decimals)
|
||||
self.slot_length_entry.setSingleStep(0.1)
|
||||
self.slot_length_entry.setRange(0.0000, 10000.0000)
|
||||
|
||||
self.slot_form.addRow(self.slot_length_label, self.slot_length_entry)
|
||||
self.slot_grid.addWidget(self.slot_length_label, 2, 0)
|
||||
self.slot_grid.addWidget(self.slot_length_entry, 2, 1)
|
||||
|
||||
# Slot direction
|
||||
self.slot_axis_label = QtWidgets.QLabel('%s:' % _('Direction'))
|
||||
self.slot_axis_label = FCLabel('%s:' % _('Direction'))
|
||||
self.slot_axis_label.setToolTip(
|
||||
_("Direction on which the slot is oriented:\n"
|
||||
"- 'X' - horizontal axis \n"
|
||||
"- 'Y' - vertical axis or \n"
|
||||
"- 'Angle' - a custom angle for the slot inclination")
|
||||
)
|
||||
self.slot_axis_label.setMinimumWidth(100)
|
||||
|
||||
self.slot_axis_radio = RadioSet([{'label': _('X'), 'value': 'X'},
|
||||
{'label': _('Y'), 'value': 'Y'},
|
||||
{'label': _('Angle'), 'value': 'A'}])
|
||||
self.slot_form.addRow(self.slot_axis_label, self.slot_axis_radio)
|
||||
|
||||
self.slot_grid.addWidget(self.slot_axis_label, 4, 0)
|
||||
self.slot_grid.addWidget(self.slot_axis_radio, 4, 1)
|
||||
|
||||
# Slot custom angle
|
||||
self.slot_angle_label = QtWidgets.QLabel('%s:' % _('Angle'))
|
||||
self.slot_angle_label = FCLabel('%s:' % _('Angle'))
|
||||
self.slot_angle_label.setToolTip(
|
||||
_("Angle at which the slot is placed.\n"
|
||||
"The precision is of max 2 decimals.\n"
|
||||
"Min value is: -360.00 degrees.\n"
|
||||
"Max value is: 360.00 degrees.")
|
||||
)
|
||||
self.slot_angle_label.setMinimumWidth(100)
|
||||
|
||||
self.slot_angle_spinner = FCDoubleSpinner()
|
||||
self.slot_angle_spinner = FCDoubleSpinner(policy=False)
|
||||
self.slot_angle_spinner.set_precision(self.decimals)
|
||||
self.slot_angle_spinner.setWrapping(True)
|
||||
self.slot_angle_spinner.setRange(-360.00, 360.00)
|
||||
self.slot_angle_spinner.setSingleStep(1.0)
|
||||
self.slot_form.addRow(self.slot_angle_label, self.slot_angle_spinner)
|
||||
|
||||
self.slot_frame.hide()
|
||||
self.slot_grid.addWidget(self.slot_angle_label, 6, 0)
|
||||
self.slot_grid.addWidget(self.slot_angle_spinner, 6, 1)
|
||||
|
||||
# ######################################################
|
||||
# ##### ADDING SLOT ARRAY #############################
|
||||
# ######################################################
|
||||
separator_line = QtWidgets.QFrame()
|
||||
separator_line.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.slot_grid.addWidget(separator_line, 8, 0, 1, 2)
|
||||
|
||||
# #############################################################################################################
|
||||
# ##################################### ADDING SLOT ARRAY ####################################################
|
||||
# #############################################################################################################
|
||||
# add a frame and inside add a vertical box layout. Inside this vbox layout I add
|
||||
# all the add slot widgets
|
||||
# this way I can hide/show the frame
|
||||
self.slot_array_frame = QtWidgets.QFrame()
|
||||
self.slot_array_frame.setContentsMargins(0, 0, 0, 0)
|
||||
self.tools_box.addWidget(self.slot_array_frame)
|
||||
self.slot_array_box = QtWidgets.QVBoxLayout()
|
||||
self.slot_array_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_array_frame.setLayout(self.slot_array_box)
|
||||
self.ui_vertical_lay.addWidget(self.slot_array_frame)
|
||||
|
||||
self.emptyarray_label = QtWidgets.QLabel('')
|
||||
self.slot_array_box.addWidget(self.emptyarray_label)
|
||||
self.slot_array_grid = QtWidgets.QGridLayout()
|
||||
self.slot_array_grid.setColumnStretch(0, 0)
|
||||
self.slot_array_grid.setColumnStretch(1, 1)
|
||||
self.slot_array_grid.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_array_frame.setLayout(self.slot_array_grid)
|
||||
|
||||
self.slot_array_label = QtWidgets.QLabel('<b>%s</b>' % _("Slot Array Parameters"))
|
||||
# Slot Array Title
|
||||
self.slot_array_label = FCLabel('<b>%s</b>' % _("Slot Array Parameters"))
|
||||
self.slot_array_label.setToolTip(
|
||||
_("Parameters for the array of slots (linear or circular array)")
|
||||
)
|
||||
self.slot_array_box.addWidget(self.slot_array_label)
|
||||
|
||||
self.l_form = QtWidgets.QFormLayout()
|
||||
self.slot_array_box.addLayout(self.l_form)
|
||||
self.slot_array_grid.addWidget(self.slot_array_label, 0, 0, 1, 2)
|
||||
|
||||
# Special type of Combobox that get_value() by indexes and not by items text
|
||||
self.slot_array_type_combo = FCComboBox2()
|
||||
self.slot_array_type_combo.setToolTip(
|
||||
_("Select the type of slot array to create.\n"
|
||||
"It can be Linear X(Y) or Circular")
|
||||
)
|
||||
self.slot_array_type_combo.addItem(_("Linear"))
|
||||
self.slot_array_type_combo.addItem(_("Circular"))
|
||||
self.slot_array_type_combo.addItems([_("Linear"), _("Circular")])
|
||||
|
||||
self.slot_array_box.addWidget(self.slot_array_type_combo)
|
||||
|
||||
self.slot_array_form = QtWidgets.QFormLayout()
|
||||
self.slot_array_box.addLayout(self.slot_array_form)
|
||||
self.slot_array_grid.addWidget(self.slot_array_type_combo, 2, 0, 1, 2)
|
||||
|
||||
# Set the number of slot holes in the slot array
|
||||
self.slot_array_size_label = QtWidgets.QLabel('%s:' % _('Nr of slots'))
|
||||
self.slot_array_size_label = FCLabel('%s:' % _('Number'))
|
||||
self.slot_array_size_label.setToolTip(_("Specify how many slots to be in the array."))
|
||||
self.slot_array_size_label.setMinimumWidth(100)
|
||||
|
||||
self.slot_array_size_entry = FCSpinner()
|
||||
self.slot_array_size_entry.set_range(0, 9999)
|
||||
self.slot_array_size_entry = FCSpinner(policy=False)
|
||||
self.slot_array_size_entry.set_range(0, 10000)
|
||||
|
||||
self.slot_array_form.addRow(self.slot_array_size_label, self.slot_array_size_entry)
|
||||
self.slot_array_grid.addWidget(self.slot_array_size_label, 4, 0)
|
||||
self.slot_array_grid.addWidget(self.slot_array_size_entry, 4, 1)
|
||||
|
||||
# #############################################################################################################
|
||||
# ##################################### Linear SLOT ARRAY ####################################################
|
||||
# #############################################################################################################
|
||||
self.slot_array_linear_frame = QtWidgets.QFrame()
|
||||
self.slot_array_linear_frame.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_array_box.addWidget(self.slot_array_linear_frame)
|
||||
self.slot_array_linear_box = QtWidgets.QVBoxLayout()
|
||||
self.slot_array_linear_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_array_linear_frame.setLayout(self.slot_array_linear_box)
|
||||
self.slot_array_grid.addWidget(self.slot_array_linear_frame, 6, 0, 1, 2)
|
||||
|
||||
self.slot_array_linear_form = QtWidgets.QFormLayout()
|
||||
self.slot_array_linear_box.addLayout(self.slot_array_linear_form)
|
||||
self.slot_array_lin_grid = QtWidgets.QGridLayout()
|
||||
self.slot_array_lin_grid.setColumnStretch(0, 0)
|
||||
self.slot_array_lin_grid.setColumnStretch(1, 1)
|
||||
self.slot_array_lin_grid.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_array_linear_frame.setLayout(self.slot_array_lin_grid)
|
||||
|
||||
# Linear Slot Array direction
|
||||
self.slot_array_axis_label = QtWidgets.QLabel('%s:' % _('Direction'))
|
||||
self.slot_array_axis_label = FCLabel('%s:' % _('Direction'))
|
||||
self.slot_array_axis_label.setToolTip(
|
||||
_("Direction on which the linear array is oriented:\n"
|
||||
"- 'X' - horizontal axis \n"
|
||||
"- 'Y' - vertical axis or \n"
|
||||
"- 'Angle' - a custom angle for the array inclination")
|
||||
)
|
||||
self.slot_array_axis_label.setMinimumWidth(100)
|
||||
|
||||
self.slot_array_axis_radio = RadioSet([{'label': _('X'), 'value': 'X'},
|
||||
{'label': _('Y'), 'value': 'Y'},
|
||||
{'label': _('Angle'), 'value': 'A'}])
|
||||
self.slot_array_linear_form.addRow(self.slot_array_axis_label, self.slot_array_axis_radio)
|
||||
|
||||
self.slot_array_lin_grid.addWidget(self.slot_array_axis_label, 0, 0)
|
||||
self.slot_array_lin_grid.addWidget(self.slot_array_axis_radio, 0, 1)
|
||||
|
||||
# Linear Slot Array pitch distance
|
||||
self.slot_array_pitch_label = QtWidgets.QLabel('%s:' % _('Pitch'))
|
||||
self.slot_array_pitch_label = FCLabel('%s:' % _('Pitch'))
|
||||
self.slot_array_pitch_label.setToolTip(
|
||||
_("Pitch = Distance between elements of the array.")
|
||||
)
|
||||
self.slot_array_pitch_label.setMinimumWidth(100)
|
||||
|
||||
self.slot_array_pitch_entry = FCDoubleSpinner()
|
||||
self.slot_array_pitch_entry = FCDoubleSpinner(policy=False)
|
||||
self.slot_array_pitch_entry.set_precision(self.decimals)
|
||||
self.slot_array_pitch_entry.setSingleStep(0.1)
|
||||
self.slot_array_pitch_entry.setRange(0.0000, 10000.0000)
|
||||
|
||||
self.slot_array_linear_form.addRow(self.slot_array_pitch_label, self.slot_array_pitch_entry)
|
||||
self.slot_array_lin_grid.addWidget(self.slot_array_pitch_label, 2, 0)
|
||||
self.slot_array_lin_grid.addWidget(self.slot_array_pitch_entry, 2, 1)
|
||||
|
||||
# Linear Slot Array angle
|
||||
self.slot_array_linear_angle_label = QtWidgets.QLabel('%s:' % _('Angle'))
|
||||
self.slot_array_linear_angle_label = FCLabel('%s:' % _('Angle'))
|
||||
self.slot_array_linear_angle_label.setToolTip(
|
||||
_("Angle at which the linear array is placed.\n"
|
||||
"The precision is of max 2 decimals.\n"
|
||||
"Min value is: -360.00 degrees.\n"
|
||||
"Max value is: 360.00 degrees.")
|
||||
)
|
||||
self.slot_array_linear_angle_label.setMinimumWidth(100)
|
||||
|
||||
self.slot_array_linear_angle_spinner = FCDoubleSpinner()
|
||||
self.slot_array_linear_angle_spinner = FCDoubleSpinner(policy=False)
|
||||
self.slot_array_linear_angle_spinner.set_precision(self.decimals)
|
||||
self.slot_array_linear_angle_spinner.setSingleStep(1.0)
|
||||
self.slot_array_linear_angle_spinner.setRange(-360.00, 360.00)
|
||||
self.slot_array_linear_form.addRow(self.slot_array_linear_angle_label, self.slot_array_linear_angle_spinner)
|
||||
|
||||
self.slot_array_lin_grid.addWidget(self.slot_array_linear_angle_label, 4, 0)
|
||||
self.slot_array_lin_grid.addWidget(self.slot_array_linear_angle_spinner, 4, 1)
|
||||
|
||||
# #############################################################################################################
|
||||
# ##################################### Circular SLOT ARRAY ##################################################
|
||||
# #############################################################################################################
|
||||
self.slot_array_circular_frame = QtWidgets.QFrame()
|
||||
self.slot_array_circular_frame.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_array_box.addWidget(self.slot_array_circular_frame)
|
||||
self.slot_array_circular_box = QtWidgets.QVBoxLayout()
|
||||
self.slot_array_circular_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_array_circular_frame.setLayout(self.slot_array_circular_box)
|
||||
self.slot_array_grid.addWidget(self.slot_array_circular_frame, 8, 0, 1, 2)
|
||||
|
||||
self.slot_array_direction_label = QtWidgets.QLabel('%s:' % _('Direction'))
|
||||
self.slot_array_circ_grid = QtWidgets.QGridLayout()
|
||||
self.slot_array_circ_grid.setColumnStretch(0, 0)
|
||||
self.slot_array_circ_grid.setColumnStretch(1, 1)
|
||||
self.slot_array_circ_grid.setContentsMargins(0, 0, 0, 0)
|
||||
self.slot_array_circular_frame.setLayout(self.slot_array_circ_grid)
|
||||
|
||||
# Slot Circular Array Direction
|
||||
self.slot_array_direction_label = FCLabel('%s:' % _('Direction'))
|
||||
self.slot_array_direction_label.setToolTip(_("Direction for circular array.\n"
|
||||
"Can be CW = clockwise or CCW = counter clockwise."))
|
||||
self.slot_array_direction_label.setMinimumWidth(100)
|
||||
|
||||
self.slot_array_circular_form = QtWidgets.QFormLayout()
|
||||
self.slot_array_circular_box.addLayout(self.slot_array_circular_form)
|
||||
|
||||
self.slot_array_direction_radio = RadioSet([{'label': _('CW'), 'value': 'CW'},
|
||||
{'label': _('CCW'), 'value': 'CCW'}])
|
||||
self.slot_array_circular_form.addRow(self.slot_array_direction_label, self.slot_array_direction_radio)
|
||||
|
||||
self.slot_array_angle_label = QtWidgets.QLabel('%s:' % _('Angle'))
|
||||
self.slot_array_circ_grid.addWidget(self.slot_array_direction_label, 0, 0)
|
||||
self.slot_array_circ_grid.addWidget(self.slot_array_direction_radio, 0, 1)
|
||||
|
||||
# Slot Circular Array Angle
|
||||
self.slot_array_angle_label = FCLabel('%s:' % _('Angle'))
|
||||
self.slot_array_angle_label.setToolTip(_("Angle at which each element in circular array is placed."))
|
||||
self.slot_array_angle_label.setMinimumWidth(100)
|
||||
|
||||
self.slot_array_angle_entry = FCDoubleSpinner()
|
||||
self.slot_array_angle_entry = FCDoubleSpinner(policy=False)
|
||||
self.slot_array_angle_entry.set_precision(self.decimals)
|
||||
self.slot_array_angle_entry.setSingleStep(1)
|
||||
self.slot_array_angle_entry.setRange(-360.00, 360.00)
|
||||
|
||||
self.slot_array_circular_form.addRow(self.slot_array_angle_label, self.slot_array_angle_entry)
|
||||
self.slot_array_circ_grid.addWidget(self.slot_array_angle_label, 2, 0)
|
||||
self.slot_array_circ_grid.addWidget(self.slot_array_angle_entry, 2, 1)
|
||||
|
||||
self.slot_array_linear_angle_spinner.hide()
|
||||
self.slot_array_linear_angle_label.hide()
|
||||
|
||||
self.slot_array_frame.hide()
|
||||
|
||||
self.tools_box.addStretch()
|
||||
|
||||
layout.addStretch()
|
||||
self.ui_vertical_lay.addStretch()
|
||||
layout.addStretch(1)
|
||||
|
||||
# Editor
|
||||
self.exit_editor_button = QtWidgets.QPushButton(_('Exit Editor'))
|
||||
|
@ -4286,6 +4321,21 @@ class AppExcEditorUI:
|
|||
}
|
||||
""")
|
||||
layout.addWidget(self.exit_editor_button)
|
||||
|
||||
# #############################################################################################################
|
||||
# ###################### INIT Excellon Editor UI ##############################################################
|
||||
# #############################################################################################################
|
||||
self.linear_angle_spinner.hide()
|
||||
self.linear_angle_label.hide()
|
||||
self.array_linear_frame.hide()
|
||||
self.array_circular_frame.hide()
|
||||
self.array_frame.hide()
|
||||
|
||||
self.slot_frame.hide()
|
||||
self.slot_array_linear_angle_spinner.hide()
|
||||
self.slot_array_linear_angle_label.hide()
|
||||
self.slot_array_frame.hide()
|
||||
|
||||
# ############################ FINSIHED GUI ###################################
|
||||
# #############################################################################
|
||||
|
||||
|
|
|
@ -4365,6 +4365,10 @@ class AppGerberEditor(QtCore.QObject):
|
|||
:param event: Event object dispatched by VisPy SceneCavas
|
||||
:return: None
|
||||
"""
|
||||
|
||||
if not self.app.plotcanvas.native.hasFocus():
|
||||
self.app.plotcanvas.native.setFocus()
|
||||
|
||||
if self.app.is_legacy is False:
|
||||
event_pos = event.pos
|
||||
event_is_dragging = event.is_dragging
|
||||
|
|
|
@ -899,7 +899,7 @@ class FCSpinner(QtWidgets.QSpinBox):
|
|||
returnPressed = QtCore.pyqtSignal()
|
||||
confirmation_signal = QtCore.pyqtSignal(bool, float, float)
|
||||
|
||||
def __init__(self, suffix=None, alignment=None, parent=None, callback=None):
|
||||
def __init__(self, suffix=None, alignment=None, parent=None, callback=None, policy=True):
|
||||
super(FCSpinner, self).__init__(parent)
|
||||
self.readyToEdit = True
|
||||
|
||||
|
@ -924,8 +924,9 @@ class FCSpinner(QtWidgets.QSpinBox):
|
|||
self.prev_readyToEdit = True
|
||||
self.menu = None
|
||||
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Preferred)
|
||||
self.setSizePolicy(sizePolicy)
|
||||
if policy:
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Preferred)
|
||||
self.setSizePolicy(sizePolicy)
|
||||
|
||||
def eventFilter(self, object, event):
|
||||
if event.type() == QtCore.QEvent.MouseButtonPress and self.prev_readyToEdit is True:
|
||||
|
@ -1277,7 +1278,7 @@ class FCDoubleSpinner(QtWidgets.QDoubleSpinBox):
|
|||
returnPressed = QtCore.pyqtSignal()
|
||||
confirmation_signal = QtCore.pyqtSignal(bool, float, float)
|
||||
|
||||
def __init__(self, suffix=None, alignment=None, parent=None, callback=None):
|
||||
def __init__(self, suffix=None, alignment=None, parent=None, callback=None, policy=True):
|
||||
"""
|
||||
|
||||
:param suffix: a char added to the end of the value in the LineEdit; like a '%' or '$' etc
|
||||
|
@ -1314,8 +1315,9 @@ class FCDoubleSpinner(QtWidgets.QDoubleSpinBox):
|
|||
self.prev_readyToEdit = True
|
||||
self.menu = None
|
||||
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Preferred)
|
||||
self.setSizePolicy(sizePolicy)
|
||||
if policy:
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Preferred)
|
||||
self.setSizePolicy(sizePolicy)
|
||||
|
||||
def on_edit_finished(self):
|
||||
self.clearFocus()
|
||||
|
|
Binary file not shown.
|
@ -6,7 +6,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: 2020-11-04 18:02+0200\n"
|
||||
"PO-Revision-Date: 2020-11-04 18:02+0200\n"
|
||||
"PO-Revision-Date: 2020-11-04 21:22+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: tr_TR\n"
|
||||
|
@ -753,15 +753,6 @@ msgstr "Üst Üste Gelme"
|
|||
#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:184
|
||||
#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:163
|
||||
#: appTools/ToolNCC.py:4206 appTools/ToolPaint.py:2975
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "How much (percentage) of the tool width to overlap each tool pass.\n"
|
||||
#| "Adjust the value starting with lower values\n"
|
||||
#| "and increasing it if areas that should be cleared are still \n"
|
||||
#| "not cleared.\n"
|
||||
#| "Lower values = faster processing, faster execution on CNC.\n"
|
||||
#| "Higher values = slow processing and slow execution on CNC\n"
|
||||
#| "due of too many paths."
|
||||
msgid ""
|
||||
"How much (percentage) of the tool width to overlap each tool pass.\n"
|
||||
"Adjust the value starting with lower values\n"
|
||||
|
@ -773,11 +764,11 @@ msgid ""
|
|||
msgstr ""
|
||||
"Ucun her geçişinde uç genişliğinin ne kadarlık kısmının (yüzde) üst üste "
|
||||
"geleceğini belirler.\n"
|
||||
"Daha düşük değerlerden başlayarak ve temizlenecek alanlar hala \n"
|
||||
"temizlenmemişse değeri artırın.\n"
|
||||
"Değeri daha düşük değerlerden başlayarak ayarlayın ve işlenmesi gereken "
|
||||
"alanlar hâlâ işlenmiyorsa değeri artırın.\n"
|
||||
"Düşük değerler = Daha hızlı işleme, CNC'de daha hızlı yürütme sağlar.\n"
|
||||
"Daha yüksek değerler = Çok sayıda yol nedeniyle CNC'de yavaş\n"
|
||||
"işleme ve yavaş yürütmeye sebep olur."
|
||||
"Daha yüksek değerler = Çok sayıda yol nedeniyle CNC'de yavaş işleme \n"
|
||||
"ve yavaş yürütmeye sebep olur."
|
||||
|
||||
#: appDatabase.py:649 appDatabase.py:1156 appEditors/AppGeoEditor.py:473
|
||||
#: appGUI/ObjectUI.py:1679
|
||||
|
@ -930,12 +921,6 @@ msgstr "Hizala"
|
|||
#: appDatabase.py:704 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:257
|
||||
#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:267 appTools/ToolNCC.py:4285
|
||||
#: appTools/ToolNCC.py:4381
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "If used, it will add an offset to the copper features.\n"
|
||||
#| "The copper clearing will finish to a distance\n"
|
||||
#| "from the copper features.\n"
|
||||
#| "The value can be between 0 and 10 FlatCAM units."
|
||||
msgid ""
|
||||
"If used, it will add an offset to the copper features.\n"
|
||||
"The copper clearing will finish to a distance\n"
|
||||
|
@ -943,8 +928,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"İşaretlendiğinde, bakır alanlara bir hiza ekleyecektir.\n"
|
||||
"Bakır temizliği, bakır alanların belirli bir mesafesine\n"
|
||||
"kadar olacaktır.\n"
|
||||
"Değer, 0 ile 10 arasında FlatCAM birimi olabilir."
|
||||
"kadar olacaktır."
|
||||
|
||||
#: appDatabase.py:759 appEditors/AppGeoEditor.py:475
|
||||
#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:183
|
||||
|
@ -2101,10 +2085,8 @@ msgstr "Uzunluk"
|
|||
|
||||
#: appEditors/AppExcEditor.py:4085
|
||||
#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:164
|
||||
#, fuzzy
|
||||
#| msgid "Length = The length of the slot."
|
||||
msgid "Length. The length of the slot."
|
||||
msgstr "Uzunluk = Yuvanın uzunluğu."
|
||||
msgstr "Uzunluk. Yuvanın uzunluğu."
|
||||
|
||||
#: appEditors/AppExcEditor.py:4099
|
||||
#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:180
|
||||
|
@ -2535,7 +2517,7 @@ msgstr ""
|
|||
#: appEditors/AppGeoEditor.py:741 appEditors/AppGerberEditor.py:5555
|
||||
#: appTools/ToolTransform.py:667
|
||||
msgid "Skew X"
|
||||
msgstr "X Eğrilt"
|
||||
msgstr "Eğrilt"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:743 appEditors/AppGeoEditor.py:764
|
||||
#: appEditors/AppGerberEditor.py:5557 appEditors/AppGerberEditor.py:5578
|
||||
|
@ -2559,7 +2541,7 @@ msgstr "Y Eğim Açısı"
|
|||
#: appEditors/AppGeoEditor.py:762 appEditors/AppGerberEditor.py:5576
|
||||
#: appTools/ToolTransform.py:688
|
||||
msgid "Skew Y"
|
||||
msgstr "Y Eğrilt"
|
||||
msgstr "Eğrilt"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:793 appEditors/AppGerberEditor.py:5607
|
||||
#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:120
|
||||
|
@ -2900,10 +2882,8 @@ msgid "Rotate done"
|
|||
msgstr "Döndürme işlemi tamamlandı"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1461 appEditors/AppGerberEditor.py:6327
|
||||
#, fuzzy
|
||||
#| msgid "Rotate Angle"
|
||||
msgid "Rotate cancelled"
|
||||
msgstr "Rotate Angle"
|
||||
msgstr "Döndürme işlemi iptal edildi"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1466 appEditors/AppGerberEditor.py:6332
|
||||
msgid "Offset on X axis ..."
|
||||
|
@ -2915,58 +2895,44 @@ msgid "Enter a distance Value"
|
|||
msgstr "Bir mesafe değeri girin"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1479 appEditors/AppGerberEditor.py:6345
|
||||
#, fuzzy
|
||||
#| msgid "Open DXF cancelled."
|
||||
msgid "Offset X cancelled"
|
||||
msgstr "Open DXF cancelled."
|
||||
msgstr "X hizalama işlemi iptal edildi"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1484 appEditors/AppGerberEditor.py:6350
|
||||
msgid "Offset on Y axis ..."
|
||||
msgstr "Y ekseninde hiza ..."
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1494 appEditors/AppGerberEditor.py:6360
|
||||
#, fuzzy
|
||||
#| msgid "Offset on the Y axis done"
|
||||
msgid "Offset on Y axis done"
|
||||
msgstr "Y eksenindeki hizalama işlemi yapıldı"
|
||||
msgstr "Y ekseninde hizalama işlemi yapıldı"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1497
|
||||
#, fuzzy
|
||||
#| msgid "Offset on the Y axis done"
|
||||
msgid "Offset on the Y axis canceled"
|
||||
msgstr "Y eksenindeki hizalama işlemi yapıldı"
|
||||
msgstr "Y ekseninde hizalama işlemi iptal edildi"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1500 appEditors/AppGerberEditor.py:6366
|
||||
msgid "Skew on X axis ..."
|
||||
msgstr "X ekseninde eğrilt ..."
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1510 appEditors/AppGerberEditor.py:6376
|
||||
#, fuzzy
|
||||
#| msgid "Skew on X axis done."
|
||||
msgid "Skew on X axis done"
|
||||
msgstr "X ekseninde eğme işlemi tamamlandı."
|
||||
msgstr "X ekseninde eğritlme işlemi yapıldı"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1513
|
||||
#, fuzzy
|
||||
#| msgid "Skew on X axis done."
|
||||
msgid "Skew on X axis canceled"
|
||||
msgstr "X ekseninde eğme işlemi tamamlandı."
|
||||
msgstr "X eksenindeki eğriltme işlemi iptal edildi"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1516 appEditors/AppGerberEditor.py:6382
|
||||
msgid "Skew on Y axis ..."
|
||||
msgstr "Y Ekseninde Eğrilt ..."
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1526 appEditors/AppGerberEditor.py:6392
|
||||
#, fuzzy
|
||||
#| msgid "Skew on Y axis done."
|
||||
msgid "Skew on Y axis done"
|
||||
msgstr "Y ekseninde eğme işlemi tamamlandı."
|
||||
msgstr "Y ekseninde eğriltme işlemi yapıldı"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1529
|
||||
#, fuzzy
|
||||
#| msgid "Skew on Y axis done."
|
||||
msgid "Skew on Y axis canceled"
|
||||
msgstr "Y ekseninde eğme işlemi tamamlandı."
|
||||
msgstr "Y ekseninde eğrilme işlemi iptal edildi"
|
||||
|
||||
#: appEditors/AppGeoEditor.py:1960 appEditors/AppGeoEditor.py:2031
|
||||
#: appEditors/AppGerberEditor.py:1500 appEditors/AppGerberEditor.py:1583
|
||||
|
@ -3161,17 +3127,13 @@ msgstr ""
|
|||
|
||||
#: appEditors/AppGeoEditor.py:4936 appEditors/AppGeoEditor.py:4988
|
||||
#: appEditors/AppGeoEditor.py:5037 appEditors/AppGeoEditor.py:5084
|
||||
#, fuzzy
|
||||
#| msgid "Failed. Nothing selected."
|
||||
msgid "Nothing selected."
|
||||
msgstr "Hata. Hiçbir şey seçilmedi."
|
||||
msgstr "Hiçbir şey seçilmedi."
|
||||
|
||||
#: appEditors/AppGeoEditor.py:4940 appEditors/AppGeoEditor.py:4992
|
||||
#: appEditors/AppGeoEditor.py:5041
|
||||
#, fuzzy
|
||||
#| msgid "Invalid distance for buffering."
|
||||
msgid "Invalid distance."
|
||||
msgstr "Tampon oluşturmak için geçersiz mesafe."
|
||||
msgstr "Geçersiz mesafe."
|
||||
|
||||
#: appEditors/AppGeoEditor.py:4964 appEditors/AppGeoEditor.py:5012
|
||||
#: appEditors/AppGeoEditor.py:5061
|
||||
|
@ -3341,10 +3303,8 @@ msgid "Added new aperture with code"
|
|||
msgstr "Şu kodlu yeni şekil eklendi"
|
||||
|
||||
#: appEditors/AppGerberEditor.py:3095
|
||||
#, fuzzy
|
||||
#| msgid " Select an aperture in Aperture Table"
|
||||
msgid "Select an aperture in Aperture Table"
|
||||
msgstr " Şekil Tablosundan bir şekil seçin"
|
||||
msgstr "Şekil Tablosundan bir şekil seçin"
|
||||
|
||||
#: appEditors/AppGerberEditor.py:3103
|
||||
msgid "Select an aperture in Aperture Table -->"
|
||||
|
@ -3701,22 +3661,16 @@ msgid "Specify how many pads to be in the array."
|
|||
msgstr "Dizide kaç tane ped olması gerektiğini belirtin."
|
||||
|
||||
#: appEditors/AppGerberEditor.py:6363
|
||||
#, fuzzy
|
||||
#| msgid "Open cancelled."
|
||||
msgid "Offset Y cancelled"
|
||||
msgstr "Open cancelled."
|
||||
msgstr "Y hizalama işlemi iptal edildi"
|
||||
|
||||
#: appEditors/AppGerberEditor.py:6379
|
||||
#, fuzzy
|
||||
#| msgid "Open DXF cancelled."
|
||||
msgid "Skew X cancelled"
|
||||
msgstr "Open DXF cancelled."
|
||||
msgstr "X eğriltme işlemi iptal edildi"
|
||||
|
||||
#: appEditors/AppGerberEditor.py:6395
|
||||
#, fuzzy
|
||||
#| msgid "Skew_Y angle"
|
||||
msgid "Skew Y cancelled"
|
||||
msgstr "Skew_Y angle"
|
||||
msgstr "Y eğriltme işlemi iptal edildi"
|
||||
|
||||
#: appEditors/AppTextEditor.py:84
|
||||
msgid "Find"
|
||||
|
@ -5093,8 +5047,6 @@ msgstr "Varsayılan"
|
|||
#: appGUI/MainGUI.py:863
|
||||
#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:33
|
||||
#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:35
|
||||
#, fuzzy
|
||||
#| msgid "Create CNC Job"
|
||||
msgid "Create CNCJob"
|
||||
msgstr "CNC İşi Oluştur"
|
||||
|
||||
|
@ -6549,10 +6501,8 @@ msgstr ""
|
|||
"sağlar."
|
||||
|
||||
#: appGUI/ObjectUI.py:724
|
||||
#, fuzzy
|
||||
#| msgid "Generate GCode out of drill holes in an Excellon object."
|
||||
msgid "Generate GCode from the drill holes in an Excellon object."
|
||||
msgstr "Bir Excellon nesnesindeki matkap deliklerinden G Kod oluşturun."
|
||||
msgstr "Bir Excellon nesnesindeki deliklerinden G Kodu oluşturun."
|
||||
|
||||
#: appGUI/ObjectUI.py:735 appGUI/ObjectUI.py:1790
|
||||
msgid "Milling Tool"
|
||||
|
@ -9206,8 +9156,6 @@ msgstr ""
|
|||
"başlatılmasını gerektirir."
|
||||
|
||||
#: appGUI/preferences/general/GeneralAppPrefGroupUI.py:64
|
||||
#, fuzzy
|
||||
#| msgid "Precision INCH"
|
||||
msgid "Precision Inch"
|
||||
msgstr "İNÇ Hassasiyet"
|
||||
|
||||
|
@ -12105,15 +12053,6 @@ msgstr "Kalan Parça İşleme"
|
|||
#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:245
|
||||
#: appTools/ToolIsolation.py:3394 appTools/ToolNCC.py:4338
|
||||
#: appTools/ToolPaint.py:3079
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "If checked, use 'rest machining'.\n"
|
||||
#| "Basically it will isolate outside PCB features,\n"
|
||||
#| "using the biggest tool and continue with the next tools,\n"
|
||||
#| "from bigger to smaller, to isolate the copper features that\n"
|
||||
#| "could not be cleared by previous tool, until there is\n"
|
||||
#| "no more copper features to isolate or there are no more tools.\n"
|
||||
#| "If not checked, use the standard algorithm."
|
||||
msgid ""
|
||||
"If checked, use 'rest machining'.\n"
|
||||
"Basically it will process copper outside PCB features,\n"
|
||||
|
@ -12124,12 +12063,12 @@ msgid ""
|
|||
"\n"
|
||||
"If not checked, use the standard algorithm."
|
||||
msgstr ""
|
||||
"Bu onay kutusu işaretlenirse, 'Kalan Parça İşleme' kullanılır.\n"
|
||||
"Bu, en büyük ucu kullanarak PCB'nin ana bakırını \n"
|
||||
"temizler ve temizlenecek daha fazla bakır kalmayana veya \n"
|
||||
"daha fazla uç kalmayana kadar önceki uçla temizlenemeyen\n"
|
||||
"bakır alanlarını temizlemek için bir sonraki uçla, daha büyükten\n"
|
||||
"daha küçüğe doğru ilerler.\n"
|
||||
"İşaretlenirse, 'Kalan Parça İşleme' kullanılır.\n"
|
||||
"Temel olarak, PCB özelliklerinin dışında kalan bakırları işleyecek.\n"
|
||||
"En büyük uçtan başlayarak ve büyükten küçüğe doğru kullanarak işlenecek "
|
||||
"hiçbir şey kalmayıncaya kadar veya önceki uçla temizlenemeyen bakırları "
|
||||
"işlemeye devam edecektir.\n"
|
||||
"\n"
|
||||
"Onay kutusu seçilmezse, standart algoritma kullanılır."
|
||||
|
||||
#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:258
|
||||
|
@ -13827,8 +13766,6 @@ msgstr "İptal edildi. G Kod üretimi için dört nokta gereklidir."
|
|||
#: app_Main.py:8652 app_Main.py:8694 app_Main.py:8736 app_Main.py:8777
|
||||
#: app_Main.py:8822 app_Main.py:8867 app_Main.py:9330 app_Main.py:9334
|
||||
#: camlib.py:2403 camlib.py:2471 camlib.py:2539 camlib.py:2617
|
||||
#, fuzzy
|
||||
#| msgid "No object selected."
|
||||
msgid "No object is selected."
|
||||
msgstr "Hiçbir nesne seçilmedi."
|
||||
|
||||
|
@ -15134,10 +15071,8 @@ msgid "Starting G-Code"
|
|||
msgstr "G-Kodu başlatılıyor"
|
||||
|
||||
#: appTools/ToolDrilling.py:1673 appTools/ToolMilling.py:1355
|
||||
#, fuzzy
|
||||
#| msgid "Generating Excellon CNCJob..."
|
||||
msgid "Generating CNCJob..."
|
||||
msgstr "Excellon CNC İşi oluşturuluyor ..."
|
||||
msgstr "CNC İşi oluşturuluyor ..."
|
||||
|
||||
#: appTools/ToolDrilling.py:1791 camlib.py:3214 camlib.py:3644 camlib.py:5730
|
||||
msgid "The Toolchange X,Y format has to be (x, y)."
|
||||
|
@ -15406,20 +15341,12 @@ msgstr ""
|
|||
"Genişlik, her zaman bakır kaynağının genişliğinin iki katıdır."
|
||||
|
||||
#: appTools/ToolFilm.py:160
|
||||
#, fuzzy
|
||||
#| msgid "No FlatCAM object selected. Load an object for Film and retry."
|
||||
msgid "Load an object for Film and retry."
|
||||
msgstr ""
|
||||
"Hiçbir FlatCAM nesnesi seçilmedi. Film için bir nesne yükleyin ve tekrar "
|
||||
"deneyin."
|
||||
msgstr "Film için bir nesne yükleyin ve tekrar deneyin."
|
||||
|
||||
#: appTools/ToolFilm.py:167
|
||||
#, fuzzy
|
||||
#| msgid "No FlatCAM object selected. Load an object for Box and retry."
|
||||
msgid "Load an object for Box and retry."
|
||||
msgstr ""
|
||||
"Hiçbir FlatCAM nesnesi seçilmedi. Çerçeve için bir nesne yükleyin ve tekrar "
|
||||
"deneyin."
|
||||
msgstr "Çerçeve için bir nesne yükleyin ve tekrar deneyin."
|
||||
|
||||
#: appTools/ToolFilm.py:182
|
||||
msgid "Generating Film ..."
|
||||
|
@ -15785,10 +15712,8 @@ msgid "Tool(s) deleted from Tool Table."
|
|||
msgstr "Uç(lar) Araçlar Tablosundan silindi."
|
||||
|
||||
#: appTools/ToolIsolation.py:1479
|
||||
#, fuzzy
|
||||
#| msgid "Isolation"
|
||||
msgid "Isolating"
|
||||
msgstr "Yalıtım"
|
||||
msgstr "Yalıtılıyor"
|
||||
|
||||
#: appTools/ToolIsolation.py:1499
|
||||
msgid "Following geometry was generated"
|
||||
|
@ -16022,7 +15947,7 @@ msgstr "TAŞIMA işlemi iptal edildi. Taşınacak nesne (ler) yok."
|
|||
|
||||
#: appTools/ToolMove.py:211
|
||||
msgid "object was moved"
|
||||
msgstr "nesne taşındı"
|
||||
msgstr "nesnesi taşındı"
|
||||
|
||||
#: appTools/ToolMove.py:221
|
||||
msgid "Error when mouse left click."
|
||||
|
@ -16820,21 +16745,16 @@ msgid "Import Excellon"
|
|||
msgstr "Excellon'u İçe Aktar"
|
||||
|
||||
#: appTools/ToolPcbWizard.py:466
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Import in FlatCAM an Excellon file\n"
|
||||
#| "that store it's information's in 2 files.\n"
|
||||
#| "One usually has .DRL extension while\n"
|
||||
#| "the other has .INF extension."
|
||||
msgid ""
|
||||
"Import an Excellon file\n"
|
||||
"that store it's information's in 2 files.\n"
|
||||
"One usually has .DRL extension while\n"
|
||||
"the other has .INF extension."
|
||||
msgstr ""
|
||||
"FlatCAM'de, bilgileri 2 dosyada bulunan\n"
|
||||
"Excellon dosyasını içe aktarın. \n"
|
||||
"Birinde genellikle .DRL, diğerinde .INF uzantısı vardır."
|
||||
"Bilgilerinin 2 dosyada saklandığı \n"
|
||||
"bir Excellon dosyasını içe aktarın.\n"
|
||||
"Biri genellikle .DRL uzantısına sahipken\n"
|
||||
"diğeri .INF uzantısına sahiptir."
|
||||
|
||||
#: appTools/ToolProperties.py:127
|
||||
msgid "Object Properties are displayed."
|
||||
|
@ -18196,10 +18116,8 @@ msgid "Adding New Grid cancelled"
|
|||
msgstr "Yeni ızgara ekleme işlemi iptal edildi"
|
||||
|
||||
#: app_Main.py:6351
|
||||
#, fuzzy
|
||||
#| msgid " Grid Value does not exist"
|
||||
msgid "Grid Value does not exist"
|
||||
msgstr " Izgara değeri mevcut değil"
|
||||
msgstr "Izgara değeri mevcut değil"
|
||||
|
||||
#: app_Main.py:6353
|
||||
msgid "Grid Value deleted"
|
||||
|
@ -18214,8 +18132,6 @@ msgid "Key Shortcut List"
|
|||
msgstr "Klavye Kısayol Listesi"
|
||||
|
||||
#: app_Main.py:6401
|
||||
#, fuzzy
|
||||
#| msgid "Name copied on clipboard ..."
|
||||
msgid "Name copied to clipboard ..."
|
||||
msgstr "İsim panoya kopyalandı ..."
|
||||
|
||||
|
@ -18631,10 +18547,8 @@ msgstr ""
|
|||
"ediliyor."
|
||||
|
||||
#: app_Main.py:10387
|
||||
#, fuzzy
|
||||
#| msgid " Open HPGL2 failed. Probable not a HPGL2 file."
|
||||
msgid "Failed. Probable not a HPGL2 file."
|
||||
msgstr " HPGL2 açılamadı. Muhtemelen bir HPGL2 dosyası değil."
|
||||
msgstr "Başarısız oldu. Muhtemelen bir HPGL2 dosyası değil."
|
||||
|
||||
#: app_Main.py:10413
|
||||
msgid "TCL script file opened in Code Editor."
|
||||
|
|
Loading…
Reference in New Issue