Quellcode durchsuchen

- fixed cncjob TclCommand - it used the default values for parameters
- fixed the layout in ToolTransform
- fixed the initial text in the ToolShell

Marius Stanciu vor 7 Jahren
Ursprung
Commit
3ea1f4e62c
6 geänderte Dateien mit 84 neuen und 68 gelöschten Zeilen
  1. 5 5
      FlatCAMApp.py
  2. 9 19
      FlatCAMObj.py
  3. 6 0
      README.md
  4. 12 11
      camlib.py
  5. 7 6
      flatcamTools/ToolShell.py
  6. 45 27
      flatcamTools/ToolTransform.py

+ 5 - 5
FlatCAMApp.py

@@ -87,8 +87,8 @@ class App(QtCore.QObject):
     log.addHandler(handler)
     log.addHandler(handler)
 
 
     # Version
     # Version
-    version = 'Beta1'
-    version_date = "2019/01/03"
+    version = '8.6 Beta1'
+    version_date = "2019/01/06"
 
 
     # URL for update checks and statistics
     # URL for update checks and statistics
     version_url = "http://flatcam.org/version"
     version_url = "http://flatcam.org/version"
@@ -1091,13 +1091,13 @@ class App(QtCore.QObject):
 
 
         self.myKeywords = self.tcl_commands_list + self.ordinary_keywords
         self.myKeywords = self.tcl_commands_list + self.ordinary_keywords
 
 
-        self.shell = FCShell(self)
+        self.shell = FCShell(self, version=self.version)
         self.shell._edit.set_model_data(self.myKeywords)
         self.shell._edit.set_model_data(self.myKeywords)
         self.shell.setWindowIcon(self.ui.app_icon)
         self.shell.setWindowIcon(self.ui.app_icon)
         self.shell.setWindowTitle("FlatCAM Shell")
         self.shell.setWindowTitle("FlatCAM Shell")
         self.shell.resize(*self.defaults["global_shell_shape"])
         self.shell.resize(*self.defaults["global_shell_shape"])
-        self.shell.append_output("FlatCAM %s\n(c) 2014-2019 Juan Pablo Caram\n\n" % self.version)
-        self.shell.append_output("Type help to get started.\n\n")
+        self.shell.append_output("FlatCAM %s (c)2014-2019 Juan Pablo Caram " % self.version)
+        self.shell.append_output("(Type help to get started)\n\n")
 
 
         self.init_tcl()
         self.init_tcl()
 
 

+ 9 - 19
FlatCAMObj.py

@@ -3221,8 +3221,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
 
 
         ppname_g = ppname_g if ppname_g else self.options["ppname_g"]
         ppname_g = ppname_g if ppname_g else self.options["ppname_g"]
 
 
-        print(self.tools)
-
         # Object initialization function for app.new_object()
         # Object initialization function for app.new_object()
         # RUNNING ON SEPARATE THREAD!
         # RUNNING ON SEPARATE THREAD!
         def job_init(job_obj, app_obj):
         def job_init(job_obj, app_obj):
@@ -3232,15 +3230,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
             job_obj.options["tooldia"] = tooldia
             job_obj.options["tooldia"] = tooldia
 
 
             app_obj.progress.emit(20)
             app_obj.progress.emit(20)
-            job_obj.z_cut = z_cut
-            job_obj.z_move = z_move
-            job_obj.feedrate = feedrate
-            job_obj.feedrate_z = feedrate_z
-            job_obj.feedrate_rapid = feedrate_rapid
-            job_obj.pp_geometry_name = ppname_g
-            job_obj.spindlespeed = spindlespeed
-            job_obj.dwell = dwell
-            job_obj.dwelltime = dwelltime
+
             job_obj.coords_decimals = self.app.defaults["cncjob_coords_decimals"]
             job_obj.coords_decimals = self.app.defaults["cncjob_coords_decimals"]
             job_obj.fr_decimals = self.app.defaults["cncjob_fr_decimals"]
             job_obj.fr_decimals = self.app.defaults["cncjob_fr_decimals"]
             app_obj.progress.emit(40)
             app_obj.progress.emit(40)
@@ -3248,16 +3238,16 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
             job_obj.options['type'] = 'Geometry'
             job_obj.options['type'] = 'Geometry'
             job_obj.options['tool_dia'] = tooldia
             job_obj.options['tool_dia'] = tooldia
 
 
-            job_obj.toolchange = self.options["toolchange"]
-            job_obj.toolchangez = self.options["toolchangez"]
-            job_obj.toolchangexy = self.options["toolchangexy"]
-
             # TODO: The tolerance should not be hard coded. Just for testing.
             # TODO: The tolerance should not be hard coded. Just for testing.
-            job_obj.generate_from_geometry_2(self, tooldia=tooldia, offset=offset,
+            job_obj.generate_from_geometry_2(self, tooldia=tooldia, offset=offset, tolerance=0.0005,
+                                             z_cut=z_cut, z_move=z_move,
+                                             feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid,
+                                             spindlespeed=spindlespeed, dwell=dwell, dwelltime=dwelltime,
                                              multidepth=multidepth, depthpercut=depthperpass,
                                              multidepth=multidepth, depthpercut=depthperpass,
-                                             tolerance=0.0005,
-                                             extracut=extracut,  endz=endz, startz=startz,
-                                             toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy)
+                                             toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy,
+                                             extracut=extracut, startz=startz, endz=endz,
+                                             pp_geometry_name=ppname_g
+                                             )
 
 
             app_obj.progress.emit(50)
             app_obj.progress.emit(50)
             # tell gcode_parse from which point to start drawing the lines depending on what kind of object is the
             # tell gcode_parse from which point to start drawing the lines depending on what kind of object is the

+ 6 - 0
README.md

@@ -9,6 +9,12 @@ CAD program, and create G-Code for Isolation routing.
 
 
 =================================================
 =================================================
 
 
+5.01.2019
+
+- fixed cncjob TclCommand - it used the default values for parameters
+- fixed the layout in ToolTransform
+- fixed the initial text in the ToolShell
+
 3.01.2019
 3.01.2019
 
 
 - initial merge into FlatCAM regular
 - initial merge into FlatCAM regular

+ 12 - 11
camlib.py

@@ -4754,16 +4754,14 @@ class CNCjob(Geometry):
         self.gcode = gcode
         self.gcode = gcode
 
 
     def generate_from_multitool_geometry(self, geometry, append=True,
     def generate_from_multitool_geometry(self, geometry, append=True,
-                                 tooldia=None, offset=0.0, tolerance=0,
-                                 z_cut=1.0, z_move=2.0,
-                                 feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30,
-                                 spindlespeed=None, dwell=False, dwelltime=1.0,
-                                 multidepth=False, depthpercut=None,
-                                 toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0",
-                                 extracut=False, startz=None, endz=2.0,
-                                 pp_geometry_name=None, tool_no=1):
+                                         tooldia=None, offset=0.0, tolerance=0, z_cut=1.0, z_move=2.0,
+                                         feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30,
+                                         spindlespeed=None, dwell=False, dwelltime=1.0,
+                                         multidepth=False, depthpercut=None,
+                                         toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0", extracut=False,
+                                         startz=None, endz=2.0, pp_geometry_name=None, tool_no=1):
         """
         """
-        Second algorithm to generate from Geometry.
+        Algorithm to generate from multitool Geometry.
 
 
         Algorithm description:
         Algorithm description:
         ----------------------
         ----------------------
@@ -4781,7 +4779,7 @@ class CNCjob(Geometry):
         :return: None
         :return: None
         """
         """
 
 
-        log.debug("Generate_from_geometry_2()")
+        log.debug("Generate_from_multitool_geometry()")
 
 
         temp_solid_geometry = []
         temp_solid_geometry = []
         if offset != 0.0:
         if offset != 0.0:
@@ -4948,7 +4946,10 @@ class CNCjob(Geometry):
             overlapping the first point in path to ensure complete copper removal
             overlapping the first point in path to ensure complete copper removal
         :return: None
         :return: None
         """
         """
-        assert isinstance(geometry, Geometry), "Expected a Geometry, got %s" % type(geometry)
+
+        if not isinstance(geometry, Geometry):
+            self.app.inform.emit("[error]Expected a Geometry, got %s" % type(geometry))
+            return 'fail'
         log.debug("Generate_from_geometry_2()")
         log.debug("Generate_from_geometry_2()")
 
 
         # if solid_geometry is empty raise an exception
         # if solid_geometry is empty raise an exception

+ 7 - 6
flatcamTools/ToolShell.py

@@ -14,9 +14,10 @@ from PyQt5.QtWidgets import QLineEdit, QSizePolicy, QTextEdit, QVBoxLayout, QWid
 
 
 class _BrowserTextEdit(QTextEdit):
 class _BrowserTextEdit(QTextEdit):
 
 
-    def __init__(self):
+    def __init__(self, version):
         QTextEdit.__init__(self)
         QTextEdit.__init__(self)
         self.menu = None
         self.menu = None
+        self.version = version
 
 
     def contextMenuEvent(self, event):
     def contextMenuEvent(self, event):
         self.menu = self.createStandardContextMenu(event.pos())
         self.menu = self.createStandardContextMenu(event.pos())
@@ -29,7 +30,7 @@ class _BrowserTextEdit(QTextEdit):
 
 
     def clear(self):
     def clear(self):
         QTextEdit.clear(self)
         QTextEdit.clear(self)
-        text = "FlatCAM 3000\n(c) 2014-2019 Juan Pablo Caram\n\nType help to get started.\n\n"
+        text = "FlatCAM %s (c)2014-2019 Juan Pablo Caram (Type help to get started)\n\n" % self.version
         text = html.escape(text)
         text = html.escape(text)
         text = text.replace('\n', '<br/>')
         text = text.replace('\n', '<br/>')
         self.moveCursor(QTextCursor.End)
         self.moveCursor(QTextCursor.End)
@@ -174,10 +175,10 @@ class TermWidget(QWidget):
     User pressed Enter. Client class should decide, if command must be executed or user may continue edit it
     User pressed Enter. Client class should decide, if command must be executed or user may continue edit it
     """
     """
 
 
-    def __init__(self, *args):
+    def __init__(self, version, *args):
         QWidget.__init__(self, *args)
         QWidget.__init__(self, *args)
 
 
-        self._browser = _BrowserTextEdit()
+        self._browser = _BrowserTextEdit(version=version)
         self._browser.setStyleSheet("font: 9pt \"Courier\";")
         self._browser.setStyleSheet("font: 9pt \"Courier\";")
         self._browser.setReadOnly(True)
         self._browser.setReadOnly(True)
         self._browser.document().setDefaultStyleSheet(
         self._browser.document().setDefaultStyleSheet(
@@ -338,8 +339,8 @@ class TermWidget(QWidget):
             self._edit.moveCursor(QTextCursor.End)
             self._edit.moveCursor(QTextCursor.End)
 
 
 class FCShell(TermWidget):
 class FCShell(TermWidget):
-    def __init__(self, sysShell, *args):
-        TermWidget.__init__(self, *args)
+    def __init__(self, sysShell, version, *args):
+        TermWidget.__init__(self, version, *args)
         self._sysShell = sysShell
         self._sysShell = sysShell
 
 
     def is_command_complete(self, text):
     def is_command_complete(self, text):

+ 45 - 27
flatcamTools/ToolTransform.py

@@ -43,7 +43,7 @@ class ToolTransform(FlatCAMTool):
         ## Layout
         ## Layout
         form_layout = QtWidgets.QFormLayout()
         form_layout = QtWidgets.QFormLayout()
         self.transform_lay.addLayout(form_layout)
         self.transform_lay.addLayout(form_layout)
-        form_child = QtWidgets.QFormLayout()
+        form_child = QtWidgets.QHBoxLayout()
 
 
         self.rotate_label = QtWidgets.QLabel("Angle:")
         self.rotate_label = QtWidgets.QLabel("Angle:")
         self.rotate_label.setToolTip(
         self.rotate_label.setToolTip(
@@ -55,7 +55,7 @@ class ToolTransform(FlatCAMTool):
         self.rotate_label.setFixedWidth(50)
         self.rotate_label.setFixedWidth(50)
 
 
         self.rotate_entry = FCEntry()
         self.rotate_entry = FCEntry()
-        self.rotate_entry.setFixedWidth(60)
+        # self.rotate_entry.setFixedWidth(60)
         self.rotate_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.rotate_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
 
 
         self.rotate_button = FCButton()
         self.rotate_button = FCButton()
@@ -67,7 +67,9 @@ class ToolTransform(FlatCAMTool):
         )
         )
         self.rotate_button.setFixedWidth(60)
         self.rotate_button.setFixedWidth(60)
 
 
-        form_child.addRow(self.rotate_entry, self.rotate_button)
+        form_child.addWidget(self.rotate_entry)
+        form_child.addWidget(self.rotate_button)
+
         form_layout.addRow(self.rotate_label, form_child)
         form_layout.addRow(self.rotate_label, form_child)
 
 
         self.transform_lay.addWidget(self.empty_label1)
         self.transform_lay.addWidget(self.empty_label1)
@@ -79,8 +81,8 @@ class ToolTransform(FlatCAMTool):
         ## Form Layout
         ## Form Layout
         form1_layout = QtWidgets.QFormLayout()
         form1_layout = QtWidgets.QFormLayout()
         self.transform_lay.addLayout(form1_layout)
         self.transform_lay.addLayout(form1_layout)
-        form1_child_1 = QtWidgets.QFormLayout()
-        form1_child_2 = QtWidgets.QFormLayout()
+        form1_child_1 = QtWidgets.QHBoxLayout()
+        form1_child_2 = QtWidgets.QHBoxLayout()
 
 
         self.skewx_label = QtWidgets.QLabel("Angle X:")
         self.skewx_label = QtWidgets.QLabel("Angle X:")
         self.skewx_label.setToolTip(
         self.skewx_label.setToolTip(
@@ -90,7 +92,7 @@ class ToolTransform(FlatCAMTool):
         self.skewx_label.setFixedWidth(50)
         self.skewx_label.setFixedWidth(50)
         self.skewx_entry = FCEntry()
         self.skewx_entry = FCEntry()
         self.skewx_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.skewx_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.skewx_entry.setFixedWidth(60)
+        # self.skewx_entry.setFixedWidth(60)
 
 
         self.skewx_button = FCButton()
         self.skewx_button = FCButton()
         self.skewx_button.set_value("Skew X")
         self.skewx_button.set_value("Skew X")
@@ -108,7 +110,7 @@ class ToolTransform(FlatCAMTool):
         self.skewy_label.setFixedWidth(50)
         self.skewy_label.setFixedWidth(50)
         self.skewy_entry = FCEntry()
         self.skewy_entry = FCEntry()
         self.skewy_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.skewy_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.skewy_entry.setFixedWidth(60)
+        # self.skewy_entry.setFixedWidth(60)
 
 
         self.skewy_button = FCButton()
         self.skewy_button = FCButton()
         self.skewy_button.set_value("Skew Y")
         self.skewy_button.set_value("Skew Y")
@@ -118,8 +120,12 @@ class ToolTransform(FlatCAMTool):
             "the bounding box for all selected objects.")
             "the bounding box for all selected objects.")
         self.skewy_button.setFixedWidth(60)
         self.skewy_button.setFixedWidth(60)
 
 
-        form1_child_1.addRow(self.skewx_entry, self.skewx_button)
-        form1_child_2.addRow(self.skewy_entry, self.skewy_button)
+        form1_child_1.addWidget(self.skewx_entry)
+        form1_child_1.addWidget(self.skewx_button)
+
+        form1_child_2.addWidget(self.skewy_entry)
+        form1_child_2.addWidget(self.skewy_button)
+
         form1_layout.addRow(self.skewx_label, form1_child_1)
         form1_layout.addRow(self.skewx_label, form1_child_1)
         form1_layout.addRow(self.skewy_label, form1_child_2)
         form1_layout.addRow(self.skewy_label, form1_child_2)
 
 
@@ -132,8 +138,8 @@ class ToolTransform(FlatCAMTool):
         ## Form Layout
         ## Form Layout
         form2_layout = QtWidgets.QFormLayout()
         form2_layout = QtWidgets.QFormLayout()
         self.transform_lay.addLayout(form2_layout)
         self.transform_lay.addLayout(form2_layout)
-        form2_child_1 = QtWidgets.QFormLayout()
-        form2_child_2 = QtWidgets.QFormLayout()
+        form2_child_1 = QtWidgets.QHBoxLayout()
+        form2_child_2 = QtWidgets.QHBoxLayout()
 
 
         self.scalex_label = QtWidgets.QLabel("Factor X:")
         self.scalex_label = QtWidgets.QLabel("Factor X:")
         self.scalex_label.setToolTip(
         self.scalex_label.setToolTip(
@@ -142,7 +148,7 @@ class ToolTransform(FlatCAMTool):
         self.scalex_label.setFixedWidth(50)
         self.scalex_label.setFixedWidth(50)
         self.scalex_entry = FCEntry()
         self.scalex_entry = FCEntry()
         self.scalex_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.scalex_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.scalex_entry.setFixedWidth(60)
+        # self.scalex_entry.setFixedWidth(60)
 
 
         self.scalex_button = FCButton()
         self.scalex_button = FCButton()
         self.scalex_button.set_value("Scale X")
         self.scalex_button.set_value("Scale X")
@@ -159,7 +165,7 @@ class ToolTransform(FlatCAMTool):
         self.scaley_label.setFixedWidth(50)
         self.scaley_label.setFixedWidth(50)
         self.scaley_entry = FCEntry()
         self.scaley_entry = FCEntry()
         self.scaley_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.scaley_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.scaley_entry.setFixedWidth(60)
+        # self.scaley_entry.setFixedWidth(60)
 
 
         self.scaley_button = FCButton()
         self.scaley_button = FCButton()
         self.scaley_button.set_value("Scale Y")
         self.scaley_button.set_value("Scale Y")
@@ -186,8 +192,12 @@ class ToolTransform(FlatCAMTool):
             "and the center of the biggest bounding box\n"
             "and the center of the biggest bounding box\n"
             "of the selected objects when unchecked.")
             "of the selected objects when unchecked.")
 
 
-        form2_child_1.addRow(self.scalex_entry, self.scalex_button)
-        form2_child_2.addRow(self.scaley_entry, self.scaley_button)
+        form2_child_1.addWidget(self.scalex_entry)
+        form2_child_1.addWidget(self.scalex_button)
+
+        form2_child_2.addWidget(self.scaley_entry)
+        form2_child_2.addWidget(self.scaley_button)
+
         form2_layout.addRow(self.scalex_label, form2_child_1)
         form2_layout.addRow(self.scalex_label, form2_child_1)
         form2_layout.addRow(self.scaley_label, form2_child_2)
         form2_layout.addRow(self.scaley_label, form2_child_2)
         form2_layout.addRow(self.scale_link_cb, self.scale_zero_ref_cb)
         form2_layout.addRow(self.scale_link_cb, self.scale_zero_ref_cb)
@@ -202,8 +212,8 @@ class ToolTransform(FlatCAMTool):
         ## Form Layout
         ## Form Layout
         form3_layout = QtWidgets.QFormLayout()
         form3_layout = QtWidgets.QFormLayout()
         self.transform_lay.addLayout(form3_layout)
         self.transform_lay.addLayout(form3_layout)
-        form3_child_1 = QtWidgets.QFormLayout()
-        form3_child_2 = QtWidgets.QFormLayout()
+        form3_child_1 = QtWidgets.QHBoxLayout()
+        form3_child_2 = QtWidgets.QHBoxLayout()
 
 
         self.offx_label = QtWidgets.QLabel("Value X:")
         self.offx_label = QtWidgets.QLabel("Value X:")
         self.offx_label.setToolTip(
         self.offx_label.setToolTip(
@@ -212,7 +222,7 @@ class ToolTransform(FlatCAMTool):
         self.offx_label.setFixedWidth(50)
         self.offx_label.setFixedWidth(50)
         self.offx_entry = FCEntry()
         self.offx_entry = FCEntry()
         self.offx_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.offx_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.offx_entry.setFixedWidth(60)
+        # self.offx_entry.setFixedWidth(60)
 
 
         self.offx_button = FCButton()
         self.offx_button = FCButton()
         self.offx_button.set_value("Offset X")
         self.offx_button.set_value("Offset X")
@@ -229,7 +239,7 @@ class ToolTransform(FlatCAMTool):
         self.offy_label.setFixedWidth(50)
         self.offy_label.setFixedWidth(50)
         self.offy_entry = FCEntry()
         self.offy_entry = FCEntry()
         self.offy_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.offy_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.offy_entry.setFixedWidth(60)
+        # self.offy_entry.setFixedWidth(60)
 
 
         self.offy_button = FCButton()
         self.offy_button = FCButton()
         self.offy_button.set_value("Offset Y")
         self.offy_button.set_value("Offset Y")
@@ -239,8 +249,12 @@ class ToolTransform(FlatCAMTool):
             "the bounding box for all selected objects.\n")
             "the bounding box for all selected objects.\n")
         self.offy_button.setFixedWidth(60)
         self.offy_button.setFixedWidth(60)
 
 
-        form3_child_1.addRow(self.offx_entry, self.offx_button)
-        form3_child_2.addRow(self.offy_entry, self.offy_button)
+        form3_child_1.addWidget(self.offx_entry)
+        form3_child_1.addWidget(self.offx_button)
+
+        form3_child_2.addWidget(self.offy_entry)
+        form3_child_2.addWidget(self.offy_button)
+
         form3_layout.addRow(self.offx_label, form3_child_1)
         form3_layout.addRow(self.offx_label, form3_child_1)
         form3_layout.addRow(self.offy_label, form3_child_2)
         form3_layout.addRow(self.offy_label, form3_child_2)
 
 
@@ -252,9 +266,10 @@ class ToolTransform(FlatCAMTool):
 
 
         ## Form Layout
         ## Form Layout
         form4_layout = QtWidgets.QFormLayout()
         form4_layout = QtWidgets.QFormLayout()
+        form4_child_hlay = QtWidgets.QHBoxLayout()
+        self.transform_lay.addLayout(form4_child_hlay)
         self.transform_lay.addLayout(form4_layout)
         self.transform_lay.addLayout(form4_layout)
-        form4_child = QtWidgets.QFormLayout()
-        form4_child_1 = QtWidgets.QFormLayout()
+        form4_child_1 = QtWidgets.QHBoxLayout()
 
 
         self.flipx_button = FCButton()
         self.flipx_button = FCButton()
         self.flipx_button.set_value("Flip on X")
         self.flipx_button.set_value("Flip on X")
@@ -296,7 +311,7 @@ class ToolTransform(FlatCAMTool):
         self.flip_ref_label.setFixedWidth(50)
         self.flip_ref_label.setFixedWidth(50)
         self.flip_ref_entry = EvalEntry2("(0, 0)")
         self.flip_ref_entry = EvalEntry2("(0, 0)")
         self.flip_ref_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.flip_ref_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.flip_ref_entry.setFixedWidth(60)
+        # self.flip_ref_entry.setFixedWidth(60)
 
 
         self.flip_ref_button = FCButton()
         self.flip_ref_button = FCButton()
         self.flip_ref_button.set_value("Add")
         self.flip_ref_button.set_value("Add")
@@ -306,10 +321,13 @@ class ToolTransform(FlatCAMTool):
             "SHIFT key. Then click Add button to insert.")
             "SHIFT key. Then click Add button to insert.")
         self.flip_ref_button.setFixedWidth(60)
         self.flip_ref_button.setFixedWidth(60)
 
 
-        form4_child.addRow(self.flipx_button, self.flipy_button)
-        form4_child_1.addRow(self.flip_ref_entry, self.flip_ref_button)
+        form4_child_hlay.addStretch()
+        form4_child_hlay.addWidget(self.flipx_button)
+        form4_child_hlay.addWidget(self.flipy_button)
+
+        form4_child_1.addWidget(self.flip_ref_entry)
+        form4_child_1.addWidget(self.flip_ref_button)
 
 
-        form4_layout.addRow(self.empty_label, form4_child)
         form4_layout.addRow(self.flip_ref_cb)
         form4_layout.addRow(self.flip_ref_cb)
         form4_layout.addRow(self.flip_ref_label, form4_child_1)
         form4_layout.addRow(self.flip_ref_label, form4_child_1)
         self.ois_flip = OptionalInputSection(self.flip_ref_cb,
         self.ois_flip = OptionalInputSection(self.flip_ref_cb,