Sfoglia il codice sorgente

- 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)

Marius Stanciu 5 anni fa
parent
commit
846c0dc59d

+ 3 - 1
CHANGELOG.md

@@ -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
 

+ 292 - 242
appEditors/AppExcEditor.py

@@ -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_frame.hide()
+        self.resize_grid.addWidget(res_entry_lbl, 2, 0)
+        self.resize_grid.addLayout(hlay2, 2, 1)
 
-        # ####################################
-        # ### Add DRILL Array ################
-        # ####################################
+        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)
 
-        # add a frame and inside add a vertical box layout. Inside this vbox layout I add
+        self.resize_frame.hide()
+
+        # #############################################################################################################
+        # ################################## 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_box.addWidget(self.array_type_combo)
+        self.array_type_combo.addItems([_("Linear"), _("Circular")])
 
-        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"
-                                                "Can be CW = clockwise or CCW = counter clockwise."))
-        self.drill_direction_label.setMinimumWidth(100)
+        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)
 
-        self.circular_form = QtWidgets.QFormLayout()
-        self.circular_box.addLayout(self.circular_form)
+        # 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_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)
+
+        # 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()
+        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.array_circular_frame.hide()
-
-        self.linear_angle_spinner.hide()
-        self.linear_angle_label.hide()
+        self.circ_grid.addWidget(self.drill_array_angle_lbl, 2, 0)
+        self.circ_grid.addWidget(self.drill_angle_entry, 2, 1)
 
-        self.array_frame.hide()
-
-        # ######################################################
-        # ##### ADDING SLOTS ###################################
-        # ######################################################
+        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)
 
-        # 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_box.addWidget(self.slot_array_type_combo)
+        self.slot_array_type_combo.addItems([_("Linear"), _("Circular")])
 
-        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_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)
 
-        self.slot_array_direction_label = QtWidgets.QLabel('%s:' % _('Direction'))
+        # 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_linear_angle_spinner.hide()
-        self.slot_array_linear_angle_label.hide()
-
-        self.slot_array_frame.hide()
-
-        self.tools_box.addStretch()
+        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)
 
-        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 ###################################
         # #############################################################################
 

+ 4 - 0
appEditors/AppGerberEditor.py

@@ -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

+ 8 - 6
appGUI/GUIElements.py

@@ -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()

BIN
locale/tr/LC_MESSAGES/strings.mo


+ 41 - 127
locale/tr/LC_MESSAGES/strings.po

@@ -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."