Sfoglia il codice sorgente

- added ability to create new scripts and open scripts in FlatCAM Script Editor

Marius Stanciu 6 anni fa
parent
commit
74d1765a95

+ 66 - 11
FlatCAMApp.py

@@ -90,8 +90,8 @@ class App(QtCore.QObject):
     log.addHandler(handler)
 
     # Version
-    version = 8.912
-    version_date = "2019/03/17"
+    version = 8.913
+    version_date = "2019/03/23"
     beta = True
 
     # current date now
@@ -1240,6 +1240,9 @@ class App(QtCore.QObject):
         self.ui.menufileopenproject.triggered.connect(self.on_file_openproject)
         self.ui.menufileopenconfig.triggered.connect(self.on_file_openconfig)
 
+        self.ui.menufilenewscript.triggered.connect(self.on_filenewscript)
+        self.ui.menufileopenscript.triggered.connect(self.on_fileopenscript)
+
         self.ui.menufilerunscript.triggered.connect(self.on_filerunscript)
 
         self.ui.menufileimportsvg.triggered.connect(lambda: self.on_file_importsvg("geometry"))
@@ -1422,6 +1425,7 @@ class App(QtCore.QObject):
 
         self.ui.cncjob_defaults_form.cncjob_adv_opt_group.tc_variable_combo.currentIndexChanged[str].connect(
             self.on_cnc_custom_parameters)
+
         # Modify G-CODE Plot Area TAB
         self.ui.code_editor.textChanged.connect(self.handleTextChanged)
         self.ui.buttonOpen.clicked.connect(self.handleOpen)
@@ -3374,7 +3378,7 @@ class App(QtCore.QObject):
 
         if self.toggle_codeeditor is False:
             # add the tab if it was closed
-            self.ui.plot_tab_area.addTab(self.ui.cncjob_tab, "Code Editor")
+            self.ui.plot_tab_area.addTab(self.ui.cncjob_tab, _("Code Editor"))
             self.ui.cncjob_tab.setObjectName('cncjob_tab')
             # first clear previous text in text editor (if any)
             self.ui.code_editor.clear()
@@ -3863,7 +3867,7 @@ class App(QtCore.QObject):
 
         filter_group = " G-Code Files (*.nc);; G-Code Files (*.txt);; G-Code Files (*.tap);; G-Code Files (*.cnc);; " \
                    "All Files (*.*)"
-        path, _ = QtWidgets.QFileDialog.getOpenFileName(
+        path, _f = QtWidgets.QFileDialog.getOpenFileName(
             caption=_('Open file'), directory=self.get_last_folder(), filter=filter_group)
         if path:
             file = QtCore.QFile(path)
@@ -5299,9 +5303,11 @@ class App(QtCore.QObject):
             return 'fail'
 
         # add the tab if it was closed
-        self.ui.plot_tab_area.addTab(self.ui.cncjob_tab, _("Code Editor"))
+        self.ui.plot_tab_area.addTab(self.ui.cncjob_tab, _("Source Editor"))
+        self.ui.cncjob_tab.setObjectName('cncjob_tab')
         # first clear previous text in text editor (if any)
         self.ui.code_editor.clear()
+        self.toggle_codeeditor = True
 
         # Switch plot_area to CNCJob tab
         self.ui.plot_tab_area.setCurrentWidget(self.ui.cncjob_tab)
@@ -5783,6 +5789,55 @@ class App(QtCore.QObject):
                     self.worker_task.emit({'fcn': self.import_dxf,
                                            'params': [filename, type_of_obj]})
 
+    def on_filenewscript(self):
+        # add the tab if it was closed
+        self.ui.plot_tab_area.addTab(self.ui.cncjob_tab, _("Script Editor"))
+        self.ui.cncjob_tab.setObjectName('cncjob_tab')
+        # first clear previous text in text editor (if any)
+        self.ui.code_editor.clear()
+
+        # Switch plot_area to CNCJob tab
+        self.ui.plot_tab_area.setCurrentWidget(self.ui.cncjob_tab)
+
+        self.toggle_codeeditor = True
+
+    def on_fileopenscript(self):
+        _filter_ = "TCL script (*.FlatScript);;TCL script (*.TCL);;TCL script (*.TXT);;All Files (*.*)"
+        try:
+            filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Open TCL script"),
+                                                                 directory=self.get_last_folder(), filter=_filter_)
+        except TypeError:
+            filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Open TCL script"), filter=_filter_)
+
+        # The Qt methods above will return a QString which can cause problems later.
+        # So far json.dump() will fail to serialize it.
+        # TODO: Improve the serialization methods and remove this fix.
+        filename = str(filename)
+
+        if filename == "":
+            self.inform.emit(_("[WARNING_NOTCL]Open TCL script cancelled."))
+        else:
+            self.on_filenewscript()
+            try:
+                with open(filename, "r") as opened_script:
+                    try:
+                        for line in opened_script:
+                            proc_line = str(line).strip('\n')
+                            self.ui.code_editor.append(proc_line)
+                    except Exception as e:
+                        log.debug('App.on_fileopenscript() -->%s' % str(e))
+                        self.inform.emit(_('[ERROR]App.on_fileopenscript() -->%s') % str(e))
+                        return
+
+                    self.ui.code_editor.moveCursor(QtGui.QTextCursor.Start)
+
+                    self.handleTextChanged()
+                    self.ui.show()
+
+            except Exception as e:
+                log.debug("App.on_fileopenscript() -> %s" % str(e))
+
+
     def on_filerunscript(self):
         """
                 File menu callback for loading and running a TCL script.
@@ -5792,12 +5847,12 @@ class App(QtCore.QObject):
 
         self.report_usage("on_filerunscript")
         App.log.debug("on_file_runscript()")
-        _filter_ = "TCL script (*.TCL);;TCL script (*.TXT);;All Files (*.*)"
+        _filter_ = "TCL script (*.FlatScript);;TCL script (*.TCL);;TCL script (*.TXT);;All Files (*.*)"
         try:
-            filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Open TCL script"),
+            filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Run TCL script"),
                                                          directory=self.get_last_folder(), filter=_filter_)
         except TypeError:
-            filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Open TCL script"), filter=_filter_)
+            filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Run TCL script"), filter=_filter_)
 
         # The Qt methods above will return a QString which can cause problems later.
         # So far json.dump() will fail to serialize it.
@@ -5805,14 +5860,14 @@ class App(QtCore.QObject):
         filename = str(filename)
 
         if filename == "":
-            self.inform.emit(_("[WARNING_NOTCL]Open TCL script cancelled."))
+            self.inform.emit(_("[WARNING_NOTCL]Run TCL script cancelled."))
         else:
             try:
                 with open(filename, "r") as tcl_script:
                     cmd_line_shellfile_content = tcl_script.read()
                     self.shell._sysShell.exec_command(cmd_line_shellfile_content)
-            except Exception as ext:
-                print("ERROR: ", ext)
+            except Exception as e:
+                log.debug("App.on_filerunscript() -> %s" % str(e))
                 sys.exit(2)
 
     def on_file_saveproject(self):

+ 5 - 0
README.md

@@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing.
 
 =================================================
 
+18.03.2019
+
+- added ability to create new scripts and open scripts in FlatCAM Script Editor
+
+
 17.03.2019
 
 - remade the layout in 2Sided Tool

+ 12 - 2
flatcamGUI/FlatCAMGUI.py

@@ -107,7 +107,14 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
         # Separator
         self.menufile.addSeparator()
 
-        # Run Scripts
+        # Scripting
+        self.menufile_scripting = self.menufile.addMenu(QtGui.QIcon('share/script16.png'), _('Scripting'))
+        self.menufile_scripting.setToolTipsVisible(True)
+
+        self.menufilenewscript = QtWidgets.QAction(QtGui.QIcon('share/script_new16.png'), _('New Script ...'),
+                                                   self)
+        self.menufileopenscript = QtWidgets.QAction(QtGui.QIcon('share/script_open16.png'), _('Open Script ...'),
+                                                   self)
         self.menufilerunscript = QtWidgets.QAction(QtGui.QIcon('share/script16.png'), _('Run Script ...\tSHIFT+S'),
                                                    self)
         self.menufilerunscript.setToolTip(
@@ -115,7 +122,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
             "enabling the automation of certain\n"
             "functions of FlatCAM.")
         )
-        self.menufile.addAction(self.menufilerunscript)
+        self.menufile_scripting.addAction(self.menufilenewscript)
+        self.menufile_scripting.addAction(self.menufileopenscript)
+        self.menufile_scripting.addSeparator()
+        self.menufile_scripting.addAction(self.menufilerunscript)
 
         # Separator
         self.menufile.addSeparator()

+ 1 - 1
flatcamTools/ToolDblSided.py

@@ -190,7 +190,7 @@ class DblSidedTool(FlatCAMTool):
 
 
         ## Alignment holes
-        self.ah_label = QtWidgets.QLabel("<b%s</b>" % _('Alignment Drill Coordinates:'))
+        self.ah_label = QtWidgets.QLabel("<b>%s</b>" % _('Alignment Drill Coordinates:'))
         self.ah_label.setToolTip(
            _( "Alignment holes (x1, y1), (x2, y2), ... "
             "on one side of the mirror axis. For each set of (x, y) coordinates\n"

BIN
locale/en/LC_MESSAGES/strings.mo


File diff suppressed because it is too large
+ 183 - 183
locale/en/LC_MESSAGES/strings.po


BIN
locale/ro/LC_MESSAGES/strings.mo


File diff suppressed because it is too large
+ 178 - 178
locale/ro/LC_MESSAGES/strings.po


+ 191 - 191
locale_template/strings.pot

@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"POT-Creation-Date: 2019-03-18 03:21+0200\n"
+"POT-Creation-Date: 2019-03-18 22:08+0200\n"
 "PO-Revision-Date: 2019-03-17 23:10+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -28,112 +28,112 @@ msgstr ""
 msgid "[ERROR] Could not find the Language files. The App strings are missing."
 msgstr ""
 
-#: FlatCAMApp.py:1671 ObjectCollection.py:80 flatcamTools/ToolImage.py:213
+#: FlatCAMApp.py:1669 ObjectCollection.py:80 flatcamTools/ToolImage.py:213
 msgid "Open cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:1685
+#: FlatCAMApp.py:1683
 msgid "Open Config file failed."
 msgstr ""
 
-#: FlatCAMApp.py:1870
+#: FlatCAMApp.py:1868
 msgid ""
 "[WARNING_NOTCL] Editing a MultiGeo Geometry is not possible for the moment."
 msgstr ""
 
-#: FlatCAMApp.py:1891
+#: FlatCAMApp.py:1889
 msgid "[WARNING_NOTCL]Select a Geometry or Excellon Object to edit."
 msgstr ""
 
-#: FlatCAMApp.py:1902
+#: FlatCAMApp.py:1900
 msgid "[WARNING_NOTCL]Editor is activated ..."
 msgstr ""
 
-#: FlatCAMApp.py:1941
+#: FlatCAMApp.py:1939
 msgid "[WARNING] Object empty after edit."
 msgstr ""
 
-#: FlatCAMApp.py:1950
+#: FlatCAMApp.py:1948
 msgid "[WARNING_NOTCL]Select a Geometry or Excellon Object to update."
 msgstr ""
 
-#: FlatCAMApp.py:1963
+#: FlatCAMApp.py:1961
 #, python-format
 msgid "[selected] %s is updated, returning to App..."
 msgstr ""
 
-#: FlatCAMApp.py:2286
+#: FlatCAMApp.py:2284
 msgid "[ERROR] Could not load defaults file."
 msgstr ""
 
-#: FlatCAMApp.py:2298
+#: FlatCAMApp.py:2296
 msgid "[ERROR] Failed to parse defaults file."
 msgstr ""
 
-#: FlatCAMApp.py:2319 FlatCAMApp.py:2322
+#: FlatCAMApp.py:2317 FlatCAMApp.py:2320
 msgid "Import FlatCAM Preferences"
 msgstr ""
 
-#: FlatCAMApp.py:2327
+#: FlatCAMApp.py:2325
 msgid "[WARNING_NOTCL]FlatCAM preferences import cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:2335 FlatCAMApp.py:2814
+#: FlatCAMApp.py:2333 FlatCAMApp.py:2812
 msgid "[ERROR_NOTCL] Could not load defaults file."
 msgstr ""
 
-#: FlatCAMApp.py:2343 FlatCAMApp.py:2823
+#: FlatCAMApp.py:2341 FlatCAMApp.py:2821
 msgid "[ERROR_NOTCL] Failed to parse defaults file."
 msgstr ""
 
-#: FlatCAMApp.py:2346
+#: FlatCAMApp.py:2344
 #, python-format
 msgid "[success]Imported Defaults from %s"
 msgstr ""
 
-#: FlatCAMApp.py:2356 FlatCAMApp.py:2360
+#: FlatCAMApp.py:2354 FlatCAMApp.py:2358
 msgid "Export FlatCAM Preferences"
 msgstr ""
 
-#: FlatCAMApp.py:2366
+#: FlatCAMApp.py:2364
 msgid "[WARNING_NOTCL]FlatCAM preferences export cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:2382
+#: FlatCAMApp.py:2380
 msgid "[ERROR_NOTCL]Could not load defaults file."
 msgstr ""
 
-#: FlatCAMApp.py:2401 FlatCAMApp.py:2837
+#: FlatCAMApp.py:2399 FlatCAMApp.py:2835
 msgid "[ERROR_NOTCL] Failed to write defaults to file."
 msgstr ""
 
-#: FlatCAMApp.py:2453
+#: FlatCAMApp.py:2451
 msgid "[ERROR_NOTCL]Failed to open recent files file for writing."
 msgstr ""
 
-#: FlatCAMApp.py:2538 camlib.py:4229
+#: FlatCAMApp.py:2536 camlib.py:4229
 msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n"
 msgstr ""
 
-#: FlatCAMApp.py:2539
+#: FlatCAMApp.py:2537
 #, python-brace-format
 msgid ""
 "Object ({kind}) failed because: {error} \n"
 "\n"
 msgstr ""
 
-#: FlatCAMApp.py:2559
+#: FlatCAMApp.py:2557
 msgid "Converting units to "
 msgstr ""
 
-#: FlatCAMApp.py:2617 FlatCAMApp.py:2620 FlatCAMApp.py:2623 FlatCAMApp.py:2626
+#: FlatCAMApp.py:2615 FlatCAMApp.py:2618 FlatCAMApp.py:2621 FlatCAMApp.py:2624
 #, python-brace-format
 msgid ""
 "[selected]{kind} created/selected: <span style=\"color:{color};\">{name}</"
 "span>"
 msgstr ""
 
-#: FlatCAMApp.py:2719
+#: FlatCAMApp.py:2717
 #, python-brace-format
 msgid ""
 "<font size=8><B>FlatCAM</B></font><BR>Version {version} {beta} ({date}) - "
@@ -147,37 +147,37 @@ msgid ""
 "downloads/\">here.</a><BR>"
 msgstr ""
 
-#: FlatCAMApp.py:2869
+#: FlatCAMApp.py:2867
 msgid "[success]Defaults saved."
 msgstr ""
 
-#: FlatCAMApp.py:2890
+#: FlatCAMApp.py:2888
 msgid "[ERROR_NOTCL] Could not load factory defaults file."
 msgstr ""
 
-#: FlatCAMApp.py:2899
+#: FlatCAMApp.py:2897
 msgid "[ERROR_NOTCL] Failed to parse factory defaults file."
 msgstr ""
 
-#: FlatCAMApp.py:2913
+#: FlatCAMApp.py:2911
 msgid "[ERROR_NOTCL] Failed to write factory defaults to file."
 msgstr ""
 
-#: FlatCAMApp.py:2917
+#: FlatCAMApp.py:2915
 msgid "Factory defaults saved."
 msgstr ""
 
-#: FlatCAMApp.py:2922
+#: FlatCAMApp.py:2920
 msgid ""
 "There are files/objects modified in FlatCAM. \n"
 "Do you want to Save the project?"
 msgstr ""
 
-#: FlatCAMApp.py:2925 FlatCAMApp.py:5194
+#: FlatCAMApp.py:2923 FlatCAMApp.py:5195
 msgid "Save changes"
 msgstr ""
 
-#: FlatCAMApp.py:2985
+#: FlatCAMApp.py:2983
 msgid ""
 "[ERROR] Failed join. The Geometry objects are of different types.\n"
 "At least one is MultiGeo type and the other is SingleGeo type. A possibility "
@@ -187,597 +187,597 @@ msgid ""
 "Check the generated GCODE."
 msgstr ""
 
-#: FlatCAMApp.py:3026
+#: FlatCAMApp.py:3024
 msgid "[ERROR_NOTCL]Failed. Excellon joining works only on Excellon objects."
 msgstr ""
 
-#: FlatCAMApp.py:3048
+#: FlatCAMApp.py:3046
 msgid "[ERROR_NOTCL]Failed. Gerber joining works only on Gerber objects."
 msgstr ""
 
-#: FlatCAMApp.py:3063 FlatCAMApp.py:3088
+#: FlatCAMApp.py:3061 FlatCAMApp.py:3086
 msgid "[ERROR_NOTCL]Failed. Select a Geometry Object and try again."
 msgstr ""
 
-#: FlatCAMApp.py:3067 FlatCAMApp.py:3092
+#: FlatCAMApp.py:3065 FlatCAMApp.py:3090
 #, python-format
 msgid "[ERROR_NOTCL]Expected a FlatCAMGeometry, got %s"
 msgstr ""
 
-#: FlatCAMApp.py:3080
+#: FlatCAMApp.py:3078
 msgid "[success] A Geometry object was converted to MultiGeo type."
 msgstr ""
 
-#: FlatCAMApp.py:3106
+#: FlatCAMApp.py:3104
 msgid "[success] A Geometry object was converted to SingleGeo type."
 msgstr ""
 
-#: FlatCAMApp.py:3290
+#: FlatCAMApp.py:3288
 #, python-format
 msgid "[success]Converted units to %s"
 msgstr ""
 
-#: FlatCAMApp.py:3301
+#: FlatCAMApp.py:3299
 msgid "[WARNING_NOTCL]Units conversion cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:3866
+#: FlatCAMApp.py:3867
 msgid "Open file"
 msgstr ""
 
-#: FlatCAMApp.py:3917 FlatCAMApp.py:3922
+#: FlatCAMApp.py:3918 FlatCAMApp.py:3923
 msgid "Export G-Code ..."
 msgstr ""
 
-#: FlatCAMApp.py:3925
+#: FlatCAMApp.py:3926
 msgid "[WARNING_NOTCL]Export Code cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:3935
+#: FlatCAMApp.py:3936
 msgid "[WARNING] No such file or directory"
 msgstr ""
 
-#: FlatCAMApp.py:3942
+#: FlatCAMApp.py:3943
 #, python-format
 msgid "Saved to: %s"
 msgstr ""
 
-#: FlatCAMApp.py:4005 FlatCAMApp.py:4037 FlatCAMApp.py:4048 FlatCAMApp.py:4059
+#: FlatCAMApp.py:4006 FlatCAMApp.py:4038 FlatCAMApp.py:4049 FlatCAMApp.py:4060
 #: flatcamTools/ToolNonCopperClear.py:487 flatcamTools/ToolSolderPaste.py:764
 msgid ""
 "[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float "
 "format."
 msgstr ""
 
-#: FlatCAMApp.py:4010 FlatCAMApp.py:4042 FlatCAMApp.py:4053 FlatCAMApp.py:4064
+#: FlatCAMApp.py:4011 FlatCAMApp.py:4043 FlatCAMApp.py:4054 FlatCAMApp.py:4065
 #: flatcamGUI/FlatCAMGUI.py:2484
 msgid "[WARNING_NOTCL] Adding Tool cancelled ..."
 msgstr ""
 
-#: FlatCAMApp.py:4013
+#: FlatCAMApp.py:4014
 msgid ""
 "Adding Tool works only when Advanced is checked.\n"
 "Go to Preferences -> General - Show Advanced Options."
 msgstr ""
 
-#: FlatCAMApp.py:4118
+#: FlatCAMApp.py:4119
 msgid "Object(s) deleted ..."
 msgstr ""
 
-#: FlatCAMApp.py:4122
+#: FlatCAMApp.py:4123
 msgid "Failed. No object(s) selected..."
 msgstr ""
 
-#: FlatCAMApp.py:4124
+#: FlatCAMApp.py:4125
 msgid "Save the work in Editor and try again ..."
 msgstr ""
 
-#: FlatCAMApp.py:4137
+#: FlatCAMApp.py:4138
 msgid "Click to set the origin ..."
 msgstr ""
 
-#: FlatCAMApp.py:4149
+#: FlatCAMApp.py:4150
 msgid "Jump to ..."
 msgstr ""
 
-#: FlatCAMApp.py:4150
+#: FlatCAMApp.py:4151
 msgid "Enter the coordinates in format X,Y:"
 msgstr ""
 
-#: FlatCAMApp.py:4157
+#: FlatCAMApp.py:4158
 msgid "Wrong coordinates. Enter coordinates in format: X,Y"
 msgstr ""
 
-#: FlatCAMApp.py:4172
+#: FlatCAMApp.py:4173
 msgid "Done."
 msgstr ""
 
-#: FlatCAMApp.py:4304
+#: FlatCAMApp.py:4305
 msgid "[success] Origin set ..."
 msgstr ""
 
-#: FlatCAMApp.py:4322
+#: FlatCAMApp.py:4323
 msgid "Preferences"
 msgstr ""
 
-#: FlatCAMApp.py:4342
+#: FlatCAMApp.py:4343
 msgid "[WARNING_NOTCL] No object selected to Flip on Y axis."
 msgstr ""
 
-#: FlatCAMApp.py:4367
+#: FlatCAMApp.py:4368
 msgid "[success] Flip on Y axis done."
 msgstr ""
 
-#: FlatCAMApp.py:4369 FlatCAMApp.py:4409 FlatCAMEditor.py:1340
+#: FlatCAMApp.py:4370 FlatCAMApp.py:4410 FlatCAMEditor.py:1340
 #: flatcamTools/ToolTransform.py:750
 #, python-format
 msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed."
 msgstr ""
 
-#: FlatCAMApp.py:4382
+#: FlatCAMApp.py:4383
 msgid "[WARNING_NOTCL] No object selected to Flip on X axis."
 msgstr ""
 
-#: FlatCAMApp.py:4407
+#: FlatCAMApp.py:4408
 msgid "[success] Flip on X axis done."
 msgstr ""
 
-#: FlatCAMApp.py:4422
+#: FlatCAMApp.py:4423
 msgid "[WARNING_NOTCL] No object selected to Rotate."
 msgstr ""
 
-#: FlatCAMApp.py:4425 FlatCAMApp.py:4470 FlatCAMApp.py:4501
+#: FlatCAMApp.py:4426 FlatCAMApp.py:4471 FlatCAMApp.py:4502
 msgid "Transform"
 msgstr ""
 
-#: FlatCAMApp.py:4425 FlatCAMApp.py:4470 FlatCAMApp.py:4501
+#: FlatCAMApp.py:4426 FlatCAMApp.py:4471 FlatCAMApp.py:4502
 msgid "Enter the Angle value:"
 msgstr ""
 
-#: FlatCAMApp.py:4455
+#: FlatCAMApp.py:4456
 msgid "[success] Rotation done."
 msgstr ""
 
-#: FlatCAMApp.py:4457 FlatCAMEditor.py:1283 flatcamTools/ToolTransform.py:678
+#: FlatCAMApp.py:4458 FlatCAMEditor.py:1283 flatcamTools/ToolTransform.py:678
 #, python-format
 msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed."
 msgstr ""
 
-#: FlatCAMApp.py:4468
+#: FlatCAMApp.py:4469
 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis."
 msgstr ""
 
-#: FlatCAMApp.py:4489
+#: FlatCAMApp.py:4490
 msgid "[success] Skew on X axis done."
 msgstr ""
 
-#: FlatCAMApp.py:4499
+#: FlatCAMApp.py:4500
 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis."
 msgstr ""
 
-#: FlatCAMApp.py:4520
+#: FlatCAMApp.py:4521
 msgid "[success] Skew on Y axis done."
 msgstr ""
 
-#: FlatCAMApp.py:4616 FlatCAMApp.py:4643
+#: FlatCAMApp.py:4617 FlatCAMApp.py:4644
 msgid ""
 "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float "
 "format."
 msgstr ""
 
-#: FlatCAMApp.py:4622
+#: FlatCAMApp.py:4623
 msgid "[success] New Grid added ..."
 msgstr ""
 
-#: FlatCAMApp.py:4625
+#: FlatCAMApp.py:4626
 msgid "[WARNING_NOTCL] Grid already exists ..."
 msgstr ""
 
-#: FlatCAMApp.py:4628
+#: FlatCAMApp.py:4629
 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..."
 msgstr ""
 
-#: FlatCAMApp.py:4650
+#: FlatCAMApp.py:4651
 msgid "[ERROR_NOTCL] Grid Value does not exist ..."
 msgstr ""
 
-#: FlatCAMApp.py:4653
+#: FlatCAMApp.py:4654
 msgid "[success] Grid Value deleted ..."
 msgstr ""
 
-#: FlatCAMApp.py:4656
+#: FlatCAMApp.py:4657
 msgid "[WARNING_NOTCL] Delete Grid value cancelled ..."
 msgstr ""
 
-#: FlatCAMApp.py:4695
+#: FlatCAMApp.py:4696
 msgid "[WARNING_NOTCL]No object selected to copy it's name"
 msgstr ""
 
-#: FlatCAMApp.py:4699
+#: FlatCAMApp.py:4700
 msgid "Name copied on clipboard ..."
 msgstr ""
 
-#: FlatCAMApp.py:4994 FlatCAMApp.py:4997 FlatCAMApp.py:5000 FlatCAMApp.py:5003
-#: FlatCAMApp.py:5017 FlatCAMApp.py:5020 FlatCAMApp.py:5023 FlatCAMApp.py:5026
-#: FlatCAMApp.py:5065 FlatCAMApp.py:5068 FlatCAMApp.py:5071 FlatCAMApp.py:5074
+#: FlatCAMApp.py:4995 FlatCAMApp.py:4998 FlatCAMApp.py:5001 FlatCAMApp.py:5004
+#: FlatCAMApp.py:5018 FlatCAMApp.py:5021 FlatCAMApp.py:5024 FlatCAMApp.py:5027
+#: FlatCAMApp.py:5066 FlatCAMApp.py:5069 FlatCAMApp.py:5072 FlatCAMApp.py:5075
 #: ObjectCollection.py:696 ObjectCollection.py:699 ObjectCollection.py:702
 #: ObjectCollection.py:705
 #, python-brace-format
 msgid "[selected]<span style=\"color:{color};\">{name}</span> selected"
 msgstr ""
 
-#: FlatCAMApp.py:5191
+#: FlatCAMApp.py:5192
 msgid ""
 "There are files/objects opened in FlatCAM.\n"
 "Creating a New project will delete them.\n"
 "Do you want to Save the project?"
 msgstr ""
 
-#: FlatCAMApp.py:5209
+#: FlatCAMApp.py:5210
 msgid "[success] New Project created..."
 msgstr ""
 
-#: FlatCAMApp.py:5290
+#: FlatCAMApp.py:5291
 msgid ""
 "[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file."
 msgstr ""
 
-#: FlatCAMApp.py:5297
+#: FlatCAMApp.py:5298
 msgid ""
 "[WARNING_NOTCL] There is no selected object for which to see it's source "
 "file code."
 msgstr ""
 
-#: FlatCAMApp.py:5301 FlatCAMApp.py:6732 FlatCAMObj.py:5398
+#: FlatCAMApp.py:5302 FlatCAMApp.py:6733 FlatCAMObj.py:5398
 msgid "Code Editor"
 msgstr ""
 
-#: FlatCAMApp.py:5314
+#: FlatCAMApp.py:5315
 #, python-format
 msgid "[ERROR]App.on_view_source() -->%s"
 msgstr ""
 
-#: FlatCAMApp.py:5352 FlatCAMApp.py:5355 flatcamGUI/FlatCAMGUI.py:541
+#: FlatCAMApp.py:5353 FlatCAMApp.py:5356 flatcamGUI/FlatCAMGUI.py:541
 #: flatcamGUI/FlatCAMGUI.py:1590
 msgid "Open Gerber"
 msgstr ""
 
-#: FlatCAMApp.py:5360
+#: FlatCAMApp.py:5361
 msgid "[WARNING_NOTCL] Open Gerber cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5381 FlatCAMApp.py:5384 flatcamGUI/FlatCAMGUI.py:542
+#: FlatCAMApp.py:5382 FlatCAMApp.py:5385 flatcamGUI/FlatCAMGUI.py:542
 #: flatcamGUI/FlatCAMGUI.py:1591
 msgid "Open Excellon"
 msgstr ""
 
-#: FlatCAMApp.py:5389
+#: FlatCAMApp.py:5390
 msgid "[WARNING_NOTCL]Open Excellon cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5411 FlatCAMApp.py:5414
+#: FlatCAMApp.py:5412 FlatCAMApp.py:5415
 msgid "Open G-Code"
 msgstr ""
 
-#: FlatCAMApp.py:5419
+#: FlatCAMApp.py:5420
 msgid "[WARNING_NOTCL]Open G-Code cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5437 FlatCAMApp.py:5440
+#: FlatCAMApp.py:5438 FlatCAMApp.py:5441
 msgid "Open Project"
 msgstr ""
 
-#: FlatCAMApp.py:5448
+#: FlatCAMApp.py:5449
 msgid "[WARNING_NOTCL]Open Project cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5467 FlatCAMApp.py:5470
+#: FlatCAMApp.py:5468 FlatCAMApp.py:5471
 msgid "Open Configuration File"
 msgstr ""
 
-#: FlatCAMApp.py:5474
+#: FlatCAMApp.py:5475
 msgid "[WARNING_NOTCL]Open Config cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5489 FlatCAMApp.py:5686 FlatCAMApp.py:7592 FlatCAMApp.py:7612
-#: FlatCAMApp.py:7633 FlatCAMApp.py:7655
+#: FlatCAMApp.py:5490 FlatCAMApp.py:5687 FlatCAMApp.py:7593 FlatCAMApp.py:7613
+#: FlatCAMApp.py:7634 FlatCAMApp.py:7656
 msgid "[WARNING_NOTCL] No object selected."
 msgstr ""
 
-#: FlatCAMApp.py:5490 FlatCAMApp.py:5687
+#: FlatCAMApp.py:5491 FlatCAMApp.py:5688
 msgid "Please Select a Geometry object to export"
 msgstr ""
 
-#: FlatCAMApp.py:5501
+#: FlatCAMApp.py:5502
 msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used."
 msgstr ""
 
-#: FlatCAMApp.py:5514 FlatCAMApp.py:5518
+#: FlatCAMApp.py:5515 FlatCAMApp.py:5519
 msgid "Export SVG"
 msgstr ""
 
-#: FlatCAMApp.py:5523
+#: FlatCAMApp.py:5524
 msgid "[WARNING_NOTCL]Export SVG cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5537
+#: FlatCAMApp.py:5538
 msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4"
 msgstr ""
 
-#: FlatCAMApp.py:5543 FlatCAMApp.py:5547
+#: FlatCAMApp.py:5544 FlatCAMApp.py:5548
 msgid "Export PNG Image"
 msgstr ""
 
-#: FlatCAMApp.py:5552
+#: FlatCAMApp.py:5553
 msgid "Export PNG cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5569
+#: FlatCAMApp.py:5570
 msgid ""
 "[WARNING_NOTCL] No object selected. Please select an Gerber object to export."
 msgstr ""
 
-#: FlatCAMApp.py:5574
+#: FlatCAMApp.py:5575
 msgid ""
 "[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..."
 msgstr ""
 
-#: FlatCAMApp.py:5586
+#: FlatCAMApp.py:5587
 msgid "Save Gerber source file"
 msgstr ""
 
-#: FlatCAMApp.py:5591
+#: FlatCAMApp.py:5592
 msgid "[WARNING_NOTCL] Save Gerber source file cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5608
+#: FlatCAMApp.py:5609
 msgid ""
 "[WARNING_NOTCL] No object selected. Please select an Excellon object to "
 "export."
 msgstr ""
 
-#: FlatCAMApp.py:5613 FlatCAMApp.py:5652
+#: FlatCAMApp.py:5614 FlatCAMApp.py:5653
 msgid ""
 "[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..."
 msgstr ""
 
-#: FlatCAMApp.py:5621 FlatCAMApp.py:5625
+#: FlatCAMApp.py:5622 FlatCAMApp.py:5626
 msgid "Save Excellon source file"
 msgstr ""
 
-#: FlatCAMApp.py:5630
+#: FlatCAMApp.py:5631
 msgid "[WARNING_NOTCL] Saving Excellon source file cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5647
+#: FlatCAMApp.py:5648
 msgid ""
 "[WARNING_NOTCL] No object selected. Please Select an Excellon object to "
 "export."
 msgstr ""
 
-#: FlatCAMApp.py:5660 FlatCAMApp.py:5664
+#: FlatCAMApp.py:5661 FlatCAMApp.py:5665
 msgid "Export Excellon"
 msgstr ""
 
-#: FlatCAMApp.py:5669
+#: FlatCAMApp.py:5670
 msgid "[WARNING_NOTCL]Export Excellon cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5697
+#: FlatCAMApp.py:5698
 msgid "[ERROR_NOTCL] Only Geometry objects can be used."
 msgstr ""
 
-#: FlatCAMApp.py:5710 FlatCAMApp.py:5714
+#: FlatCAMApp.py:5711 FlatCAMApp.py:5715
 msgid "Export DXF"
 msgstr ""
 
-#: FlatCAMApp.py:5719
+#: FlatCAMApp.py:5720
 msgid "[WARNING_NOTCL] Export DXF cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5737 FlatCAMApp.py:5740
+#: FlatCAMApp.py:5738 FlatCAMApp.py:5741
 msgid "Import SVG"
 msgstr ""
 
-#: FlatCAMApp.py:5748
+#: FlatCAMApp.py:5749
 msgid "[WARNING_NOTCL] Open SVG cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5767 FlatCAMApp.py:5770
+#: FlatCAMApp.py:5768 FlatCAMApp.py:5771
 msgid "Import DXF"
 msgstr ""
 
-#: FlatCAMApp.py:5778
+#: FlatCAMApp.py:5779
 msgid "[WARNING_NOTCL]Open DXF cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5796 FlatCAMApp.py:5799
+#: FlatCAMApp.py:5797 FlatCAMApp.py:5800
 msgid "Open TCL script"
 msgstr ""
 
-#: FlatCAMApp.py:5807
+#: FlatCAMApp.py:5808
 msgid "[WARNING_NOTCL]Open TCL script cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5855 FlatCAMApp.py:5859
+#: FlatCAMApp.py:5856 FlatCAMApp.py:5860
 msgid "Save Project As ..."
 msgstr ""
 
-#: FlatCAMApp.py:5856
+#: FlatCAMApp.py:5857
 #, python-brace-format
 msgid "{l_save}/Project_{date}"
 msgstr ""
 
-#: FlatCAMApp.py:5864
+#: FlatCAMApp.py:5865
 msgid "[WARNING_NOTCL] Save Project cancelled."
 msgstr ""
 
-#: FlatCAMApp.py:5909
+#: FlatCAMApp.py:5910
 msgid "Exporting SVG"
 msgstr ""
 
-#: FlatCAMApp.py:5942 FlatCAMApp.py:6047 FlatCAMApp.py:6161
+#: FlatCAMApp.py:5943 FlatCAMApp.py:6048 FlatCAMApp.py:6162
 #, python-format
 msgid "[success] SVG file exported to %s"
 msgstr ""
 
-#: FlatCAMApp.py:5973 FlatCAMApp.py:6093
+#: FlatCAMApp.py:5974 FlatCAMApp.py:6094
 #, python-format
 msgid "[WARNING_NOTCL]No object Box. Using instead %s"
 msgstr ""
 
-#: FlatCAMApp.py:6050 FlatCAMApp.py:6164
+#: FlatCAMApp.py:6051 FlatCAMApp.py:6165
 msgid "Generating Film ... Please wait."
 msgstr ""
 
-#: FlatCAMApp.py:6311
+#: FlatCAMApp.py:6312
 #, python-format
 msgid "[success] Excellon file exported to %s"
 msgstr ""
 
-#: FlatCAMApp.py:6318
+#: FlatCAMApp.py:6319
 msgid "Exporting Excellon"
 msgstr ""
 
-#: FlatCAMApp.py:6323 FlatCAMApp.py:6330
+#: FlatCAMApp.py:6324 FlatCAMApp.py:6331
 msgid "[ERROR_NOTCL] Could not export Excellon file."
 msgstr ""
 
-#: FlatCAMApp.py:6369
+#: FlatCAMApp.py:6370
 #, python-format
 msgid "[success] DXF file exported to %s"
 msgstr ""
 
-#: FlatCAMApp.py:6375
+#: FlatCAMApp.py:6376
 msgid "Exporting DXF"
 msgstr ""
 
-#: FlatCAMApp.py:6380 FlatCAMApp.py:6387
+#: FlatCAMApp.py:6381 FlatCAMApp.py:6388
 msgid "[[WARNING_NOTCL]] Could not export DXF file."
 msgstr ""
 
-#: FlatCAMApp.py:6407 FlatCAMApp.py:6449 FlatCAMApp.py:6490
+#: FlatCAMApp.py:6408 FlatCAMApp.py:6450 FlatCAMApp.py:6491
 msgid ""
 "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and "
 "Gerber are supported"
 msgstr ""
 
-#: FlatCAMApp.py:6417
+#: FlatCAMApp.py:6418
 msgid "Importing SVG"
 msgstr ""
 
-#: FlatCAMApp.py:6428 FlatCAMApp.py:6470 FlatCAMApp.py:6510 FlatCAMApp.py:6586
-#: FlatCAMApp.py:6653 FlatCAMApp.py:6718
+#: FlatCAMApp.py:6429 FlatCAMApp.py:6471 FlatCAMApp.py:6511 FlatCAMApp.py:6587
+#: FlatCAMApp.py:6654 FlatCAMApp.py:6719
 #, python-format
 msgid "[success] Opened: %s"
 msgstr ""
 
-#: FlatCAMApp.py:6459
+#: FlatCAMApp.py:6460
 msgid "Importing DXF"
 msgstr ""
 
-#: FlatCAMApp.py:6498
+#: FlatCAMApp.py:6499
 msgid "Importing Image"
 msgstr ""
 
-#: FlatCAMApp.py:6539 FlatCAMApp.py:6541
+#: FlatCAMApp.py:6540 FlatCAMApp.py:6542
 #, python-format
 msgid "[ERROR_NOTCL] Failed to open file: %s"
 msgstr ""
 
-#: FlatCAMApp.py:6544
+#: FlatCAMApp.py:6545
 #, python-brace-format
 msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}"
 msgstr ""
 
-#: FlatCAMApp.py:6550 FlatCAMEditor.py:5802 FlatCAMObj.py:4104
+#: FlatCAMApp.py:6551 FlatCAMEditor.py:5802 FlatCAMObj.py:4104
 msgid "[ERROR] An internal error has ocurred. See shell.\n"
 msgstr ""
 
-#: FlatCAMApp.py:6559
+#: FlatCAMApp.py:6560
 msgid ""
 "[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation."
 msgstr ""
 
-#: FlatCAMApp.py:6567
+#: FlatCAMApp.py:6568
 msgid "Opening Gerber"
 msgstr ""
 
-#: FlatCAMApp.py:6577
+#: FlatCAMApp.py:6578
 msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file."
 msgstr ""
 
-#: FlatCAMApp.py:6612
+#: FlatCAMApp.py:6613
 msgid "[ERROR_NOTCL] This is not Excellon file."
 msgstr ""
 
-#: FlatCAMApp.py:6615
+#: FlatCAMApp.py:6616
 #, python-format
 msgid "[ERROR_NOTCL] Cannot open file: %s"
 msgstr ""
 
-#: FlatCAMApp.py:6620
+#: FlatCAMApp.py:6621
 msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n"
 msgstr ""
 
-#: FlatCAMApp.py:6636
+#: FlatCAMApp.py:6637
 #, python-format
 msgid "[ERROR_NOTCL] No geometry found in file: %s"
 msgstr ""
 
-#: FlatCAMApp.py:6639
+#: FlatCAMApp.py:6640
 msgid "Opening Excellon."
 msgstr ""
 
-#: FlatCAMApp.py:6646
+#: FlatCAMApp.py:6647
 msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file."
 msgstr ""
 
-#: FlatCAMApp.py:6685
+#: FlatCAMApp.py:6686
 #, python-format
 msgid "[ERROR_NOTCL] Failed to open %s"
 msgstr ""
 
-#: FlatCAMApp.py:6695
+#: FlatCAMApp.py:6696
 msgid "[ERROR_NOTCL] This is not GCODE"
 msgstr ""
 
-#: FlatCAMApp.py:6701
+#: FlatCAMApp.py:6702
 msgid "Opening G-Code."
 msgstr ""
 
-#: FlatCAMApp.py:6709
+#: FlatCAMApp.py:6710
 msgid ""
 "[ERROR_NOTCL] Failed to create CNCJob Object. Probable not a GCode file.\n"
 " Attempting to create a FlatCAM CNCJob Object from G-Code file failed during "
 "processing"
 msgstr ""
 
-#: FlatCAMApp.py:6749
+#: FlatCAMApp.py:6750
 #, python-format
 msgid "[ERROR_NOTCL] Failed to open config file: %s"
 msgstr ""
 
-#: FlatCAMApp.py:6774 FlatCAMApp.py:6791
+#: FlatCAMApp.py:6775 FlatCAMApp.py:6792
 #, python-format
 msgid "[ERROR_NOTCL] Failed to open project file: %s"
 msgstr ""
 
-#: FlatCAMApp.py:6781
+#: FlatCAMApp.py:6782
 #, python-format
 msgid "[ERROR_NOTCL] Failed to parse project file: %s"
 msgstr ""
 
-#: FlatCAMApp.py:6817
+#: FlatCAMApp.py:6818
 #, python-format
 msgid "[success] Project loaded from: %s"
 msgstr ""
 
-#: FlatCAMApp.py:6947
+#: FlatCAMApp.py:6948
 msgid "Available commands:\n"
 msgstr ""
 
-#: FlatCAMApp.py:6949
+#: FlatCAMApp.py:6950
 msgid ""
 "\n"
 "\n"
@@ -785,23 +785,23 @@ msgid ""
 " Example: help open_gerber"
 msgstr ""
 
-#: FlatCAMApp.py:7097
+#: FlatCAMApp.py:7098
 msgid "Shows list of commands."
 msgstr ""
 
-#: FlatCAMApp.py:7150
+#: FlatCAMApp.py:7151
 msgid "[ERROR_NOTCL] Failed to load recent item list."
 msgstr ""
 
-#: FlatCAMApp.py:7157
+#: FlatCAMApp.py:7158
 msgid "[ERROR_NOTCL] Failed to parse recent item list."
 msgstr ""
 
-#: FlatCAMApp.py:7218 flatcamGUI/FlatCAMGUI.py:856
+#: FlatCAMApp.py:7219 flatcamGUI/FlatCAMGUI.py:856
 msgid "<b>Shortcut Key List</b>"
 msgstr ""
 
-#: FlatCAMApp.py:7225
+#: FlatCAMApp.py:7226
 msgid ""
 "\n"
 "<p><span style=\"font-size:14px\"><strong>Selected Tab - Choose an Item from "
@@ -851,64 +851,64 @@ msgid ""
 "        "
 msgstr ""
 
-#: FlatCAMApp.py:7329
+#: FlatCAMApp.py:7330
 msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect."
 msgstr ""
 
-#: FlatCAMApp.py:7336
+#: FlatCAMApp.py:7337
 msgid "[ERROR_NOTCL] Could not parse information about latest version."
 msgstr ""
 
-#: FlatCAMApp.py:7346
+#: FlatCAMApp.py:7347
 msgid "[success] FlatCAM is up to date!"
 msgstr ""
 
-#: FlatCAMApp.py:7351
+#: FlatCAMApp.py:7352
 msgid "Newer Version Available"
 msgstr ""
 
-#: FlatCAMApp.py:7352
+#: FlatCAMApp.py:7353
 msgid ""
 "There is a newer version of FlatCAM available for download:\n"
 "\n"
 msgstr ""
 
-#: FlatCAMApp.py:7354
+#: FlatCAMApp.py:7355
 msgid "info"
 msgstr ""
 
-#: FlatCAMApp.py:7373
+#: FlatCAMApp.py:7374
 msgid "[success]All plots disabled."
 msgstr ""
 
-#: FlatCAMApp.py:7379
+#: FlatCAMApp.py:7380
 msgid "[success]All non selected plots disabled."
 msgstr ""
 
-#: FlatCAMApp.py:7385
+#: FlatCAMApp.py:7386
 msgid "[success]All plots enabled."
 msgstr ""
 
-#: FlatCAMApp.py:7495
+#: FlatCAMApp.py:7496
 msgid "Saving FlatCAM Project"
 msgstr ""
 
-#: FlatCAMApp.py:7516 FlatCAMApp.py:7547
+#: FlatCAMApp.py:7517 FlatCAMApp.py:7548
 #, python-format
 msgid "[success] Project saved to: %s"
 msgstr ""
 
-#: FlatCAMApp.py:7534
+#: FlatCAMApp.py:7535
 #, python-format
 msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it."
 msgstr ""
 
-#: FlatCAMApp.py:7541
+#: FlatCAMApp.py:7542
 #, python-format
 msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it."
 msgstr ""
 
-#: FlatCAMApp.py:7549
+#: FlatCAMApp.py:7550
 #, python-format
 msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it."
 msgstr ""

BIN
share/script_new16.png


BIN
share/script_open16.png


Some files were not shown because too many files changed in this diff