From 3438f9605351083e51b04c629759c212a829403a Mon Sep 17 00:00:00 2001
From: Marko Mecina <marko.mecina@univie.ac.at>
Date: Tue, 21 Nov 2023 13:22:17 +0100
Subject: [PATCH] ask before overwriting existing automated test scripts

---
 Ccs/pixmap/collapse.svg |  89 ++++++++++++++------------------------
 Ccs/pixmap/expand.svg   |  91 +++++++++++++++------------------------
 Ccs/pixmap/pythons.png  | Bin 0 -> 9037 bytes
 Tst/tst/generator.py    |   7 +--
 Tst/tst/tst.py          |  93 ++++++++++++++++++++++++++--------------
 5 files changed, 128 insertions(+), 152 deletions(-)
 create mode 100644 Ccs/pixmap/pythons.png

diff --git a/Ccs/pixmap/collapse.svg b/Ccs/pixmap/collapse.svg
index 209678a..060adaf 100644
--- a/Ccs/pixmap/collapse.svg
+++ b/Ccs/pixmap/collapse.svg
@@ -7,7 +7,7 @@
    viewBox="0 0 26.510696 28.219185"
    version="1.1"
    id="svg5"
-   inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
+   inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
    sodipodi:docname="collapse.svg"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@@ -26,7 +26,7 @@
      showgrid="false"
      inkscape:zoom="2.3786088"
      inkscape:cx="183.09022"
-     inkscape:cy="531.82348"
+     inkscape:cy="61.17021"
      inkscape:window-width="2560"
      inkscape:window-height="1385"
      inkscape:window-x="0"
@@ -34,66 +34,43 @@
      inkscape:window-maximized="1"
      inkscape:current-layer="layer1" />
   <defs
-     id="defs2">
-    <marker
-       style="overflow:visible"
-       id="Arrow3-7"
-       refX="0"
-       refY="0"
-       orient="auto-start-reverse"
-       inkscape:stockid="Arrow3"
-       markerWidth="11"
-       markerHeight="11"
-       viewBox="0 0 4.2071068 7"
-       inkscape:isstock="true"
-       inkscape:collect="always"
-       preserveAspectRatio="xMidYMid"
-       markerUnits="userSpaceOnUse">
-      <path
-         style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
-         d="M 3,-3 0,0 3,3"
-         id="arrow3-5"
-         transform="rotate(180,0.125,0)"
-         sodipodi:nodetypes="ccc" />
-    </marker>
-    <marker
-       style="overflow:visible"
-       id="Arrow3-7-5"
-       refX="0"
-       refY="0"
-       orient="auto-start-reverse"
-       inkscape:stockid="Arrow3"
-       markerWidth="11"
-       markerHeight="11"
-       viewBox="0 0 4.2071068 7"
-       inkscape:isstock="true"
-       inkscape:collect="always"
-       preserveAspectRatio="xMidYMid"
-       markerUnits="userSpaceOnUse">
-      <path
-         style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
-         d="M 3,-3 0,0 3,3"
-         id="arrow3-5-6"
-         transform="rotate(180,0.125,0)"
-         sodipodi:nodetypes="ccc" />
-    </marker>
-  </defs>
+     id="defs2" />
   <g
      inkscape:label="Ebene 1"
      inkscape:groupmode="layer"
      id="layer1"
      transform="translate(-54.299432,-112.5212)">
     <path
-       style="fill:none;stroke:#000000;stroke-width:1.375;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
-       d="M 54.986932,126.6308 H 80.122625"
+       style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+       d="m 54.986328,125.94336 a 0.6875,0.6875 0 0 0 -0.6875,0.6875 0.6875,0.6875 0 0 0 0.6875,0.6875 h 25.136719 a 0.6875,0.6875 0 0 0 0.6875,-0.6875 0.6875,0.6875 0 0 0 -0.6875,-0.6875 z"
        id="path2600" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.744;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow3-7)"
-       d="m 67.554779,130.0808 v 9.7876"
-       id="path2600-3-3" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.744;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow3-7-5)"
-       d="m 67.554779,123.1808 v -9.7876"
-       id="path2600-3-3-2" />
+    <g
+       id="path2600-3-3">
+      <path
+         style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+         d="m 67.554687,129.20898 a 0.87199998,0.87199998 0 0 0 -0.871093,0.8711 v 9.78906 a 0.87199998,0.87199998 0 0 0 0.871093,0.87109 0.87199998,0.87199998 0 0 0 0.873047,-0.87109 v -9.78906 a 0.87199998,0.87199998 0 0 0 -0.873047,-0.8711 z"
+         id="path6" />
+      <g
+         id="g5">
+        <path
+           style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+           d="m 67.554687,128.57617 -5.269531,5.26953 a 0.78571498,0.78571498 0 0 0 0,1.11133 0.78571498,0.78571498 0 0 0 1.111328,0 l 4.158203,-4.1582 4.158204,4.1582 a 0.78571498,0.78571498 0 0 0 1.111328,0 0.78571498,0.78571498 0 0 0 0,-1.11133 z"
+           id="path5" />
+      </g>
+    </g>
+    <g
+       id="path2600-3-3-2">
+      <path
+         style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+         d="m 67.554687,112.52148 a 0.87199998,0.87199998 0 0 0 -0.871093,0.8711 v 9.78906 a 0.87199998,0.87199998 0 0 0 0.871093,0.87109 0.87199998,0.87199998 0 0 0 0.873047,-0.87109 v -9.78906 a 0.87199998,0.87199998 0 0 0 -0.873047,-0.8711 z"
+         id="path3" />
+      <g
+         id="g2">
+        <path
+           style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+           d="m 62.839844,118.07422 a 0.78571498,0.78571498 0 0 0 -0.554688,0.23047 0.78571498,0.78571498 0 0 0 0,1.10937 l 5.269531,5.27149 5.269532,-5.27149 a 0.78571498,0.78571498 0 0 0 0,-1.10937 0.78571498,0.78571498 0 0 0 -1.111328,0 l -4.158204,4.1582 -4.158203,-4.1582 a 0.78571498,0.78571498 0 0 0 -0.55664,-0.23047 z"
+           id="path2" />
+      </g>
+    </g>
   </g>
 </svg>
diff --git a/Ccs/pixmap/expand.svg b/Ccs/pixmap/expand.svg
index 37e398d..bba0bb0 100644
--- a/Ccs/pixmap/expand.svg
+++ b/Ccs/pixmap/expand.svg
@@ -7,8 +7,8 @@
    viewBox="0 0 26.510681 28.219215"
    version="1.1"
    id="svg5"
-   inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
-   sodipodi:docname="collapse.svg"
+   inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
+   sodipodi:docname="expand.svg"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns="http://www.w3.org/2000/svg"
@@ -26,7 +26,7 @@
      showgrid="false"
      inkscape:zoom="2.3786088"
      inkscape:cx="183.09022"
-     inkscape:cy="531.82348"
+     inkscape:cy="61.17021"
      inkscape:window-width="2560"
      inkscape:window-height="1385"
      inkscape:window-x="0"
@@ -34,66 +34,43 @@
      inkscape:window-maximized="1"
      inkscape:current-layer="layer1" />
   <defs
-     id="defs2">
-    <marker
-       style="overflow:visible"
-       id="Arrow3-7-9"
-       refX="0"
-       refY="0"
-       orient="auto-start-reverse"
-       inkscape:stockid="Arrow3"
-       markerWidth="11"
-       markerHeight="11"
-       viewBox="0 0 4.2071068 7"
-       inkscape:isstock="true"
-       inkscape:collect="always"
-       preserveAspectRatio="xMidYMid"
-       markerUnits="userSpaceOnUse">
-      <path
-         style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
-         d="M 3,-3 0,0 3,3"
-         id="arrow3-5-1"
-         transform="rotate(180,0.125,0)"
-         sodipodi:nodetypes="ccc" />
-    </marker>
-    <marker
-       style="overflow:visible"
-       id="Arrow3-7-5-2"
-       refX="0"
-       refY="0"
-       orient="auto-start-reverse"
-       inkscape:stockid="Arrow3"
-       markerWidth="11"
-       markerHeight="11"
-       viewBox="0 0 4.2071068 7"
-       inkscape:isstock="true"
-       inkscape:collect="always"
-       preserveAspectRatio="xMidYMid"
-       markerUnits="userSpaceOnUse">
-      <path
-         style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
-         d="M 3,-3 0,0 3,3"
-         id="arrow3-5-6-7"
-         transform="rotate(180,0.125,0)"
-         sodipodi:nodetypes="ccc" />
-    </marker>
-  </defs>
+     id="defs2" />
   <g
      inkscape:label="Ebene 1"
      inkscape:groupmode="layer"
      id="layer1"
      transform="translate(-109.32506,-110.6955)">
     <path
-       style="fill:none;stroke:#000000;stroke-width:1.375;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
-       d="m 110.01256,124.8051 h 25.13569"
+       style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+       d="m 110.01172,124.11719 a 0.6875,0.6875 0 0 0 -0.6875,0.6875 0.6875,0.6875 0 0 0 0.6875,0.6875 h 25.13672 a 0.6875,0.6875 0 0 0 0.6875,-0.6875 0.6875,0.6875 0 0 0 -0.6875,-0.6875 z"
        id="path2600-0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.744;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow3-7-9)"
-       d="m 122.58041,137.41068 v -9.7876"
-       id="path2600-3-3-9" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.744;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow3-7-5-2)"
-       d="m 122.58041,112.19952 v 9.7876"
-       id="path2600-3-3-2-3" />
+    <g
+       id="path2600-3-3-9">
+      <path
+         style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+         d="m 122.58008,126.75195 a 0.87199998,0.87199998 0 0 0 -0.8711,0.8711 v 9.78711 a 0.87199998,0.87199998 0 0 0 0.8711,0.87304 0.87199998,0.87199998 0 0 0 0.87305,-0.87304 v -9.78711 a 0.87199998,0.87199998 0 0 0 -0.87305,-0.8711 z"
+         id="path3" />
+      <g
+         id="g2">
+        <path
+           style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+           d="m 117.31055,132.5332 a 0.78571498,0.78571498 0 0 0 0,1.11133 l 5.26953,5.26953 5.26953,-5.26953 a 0.78571498,0.78571498 0 0 0 0,-1.11133 0.78571498,0.78571498 0 0 0 -1.11133,0 l -4.1582,4.15821 -4.1582,-4.15821 a 0.78571498,0.78571498 0 0 0 -1.11133,0 z"
+           id="path2" />
+      </g>
+    </g>
+    <g
+       id="path2600-3-3-2-3">
+      <path
+         style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+         d="m 122.58008,111.32813 a 0.87199998,0.87199998 0 0 0 -0.8711,0.87109 v 9.78711 a 0.87199998,0.87199998 0 0 0 0.8711,0.87305 0.87199998,0.87199998 0 0 0 0.87305,-0.87305 v -9.78711 a 0.87199998,0.87199998 0 0 0 -0.87305,-0.87109 z"
+         id="path5" />
+      <g
+         id="g4">
+        <path
+           style="color:#000000;fill:#000000;stroke-linecap:round;-inkscape-stroke:none"
+           d="m 122.58008,110.69531 -5.26953,5.26953 a 0.78571498,0.78571498 0 0 0 0,1.11133 0.78571498,0.78571498 0 0 0 1.11133,0 l 4.1582,-4.1582 4.1582,4.1582 a 0.78571498,0.78571498 0 0 0 1.11133,0 0.78571498,0.78571498 0 0 0 0,-1.11133 z"
+           id="path4" />
+      </g>
+    </g>
   </g>
 </svg>
diff --git a/Ccs/pixmap/pythons.png b/Ccs/pixmap/pythons.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f85a30cc1a521a5b5bc3e32d16d5e22508ace26
GIT binary patch
literal 9037
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

literal 0
HcmV?d00001

diff --git a/Tst/tst/generator.py b/Tst/tst/generator.py
index f3821b6..dee547c 100644
--- a/Tst/tst/generator.py
+++ b/Tst/tst/generator.py
@@ -350,7 +350,7 @@ def make_verification_script(model, model_spec):
 
 
 def make_documentation(model, model_spec):
-    return None
+    return
 
 
 def make_all(model):
@@ -363,11 +363,6 @@ def make_all(model):
         dc_path = make_documentation(sequence, model)
         break
 
-    #cs_path = make_command_script(model)
-    #cms_path = make_command_manually_steps_script(model)
-    #vf_path = make_verification_script(model)
-    #dc_path = make_documentation(model)
-
     if cs_path is not None:
         paths.append(cs_path)
     if cms_path is not None:
diff --git a/Tst/tst/tst.py b/Tst/tst/tst.py
index d06ce7e..f823017 100755
--- a/Tst/tst/tst.py
+++ b/Tst/tst/tst.py
@@ -282,25 +282,26 @@ class TstAppWindow(Gtk.ApplicationWindow):
         self.btn_export_csv.set_icon_name('text-csv')
         self.btn_export_csv.set_tooltip_text('Export current spec to CSV')
         self.btn_export_csv.connect('clicked', self.on_generate_csv)
-        # self.btn_generate_products = Gtk.ToolButton()
-        # self.btn_generate_products.set_label('Generate scripts')
-        # self.btn_generate_products.set_icon_name('text-x-python')
-        # self.btn_generate_products.set_tooltip_text('Generate command.py, verification.py and manually.py')
-        # self.btn_generate_products.connect('clicked', self.on_generate_products)
+        self.btn_generate_products = Gtk.ToolButton()
+        self.btn_generate_products.set_label('Automated test scripts')
+        pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(os.path.join(cfg.get('paths', 'ccs'), 'pixmap/pythons.png'), 28, 28)
+        icon = Gtk.Image.new_from_pixbuf(pixbuf)
+        self.btn_generate_products.set_icon_widget(icon)
+        self.btn_generate_products.set_tooltip_text('Generate set of Python scripts for automated testing')
+        self.btn_generate_products.connect('clicked', self.on_generate_products)
         self.btn_generate_script = Gtk.ToolButton()
-        self.btn_generate_script.set_label('Generate scripts')
+        self.btn_generate_script.set_label('Generate script')
         self.btn_generate_script.set_icon_name('text-x-python')
-        self.btn_generate_script.set_tooltip_text('Generate Python script of the current test')
+        self.btn_generate_script.set_tooltip_text('Generate compact Python script of the current test')
         self.btn_generate_script.connect('clicked', self.on_generate_barescript)
 
         self.btn_start_ccs_editor = Gtk.ToolButton()
         self.btn_start_ccs_editor.set_label('Start CCS')
-        pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(
-            cfg.get('paths', 'ccs') + '/pixmap/ccs_logo_2.svg', 28, 28)
+        pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(os.path.join(cfg.get('paths', 'ccs'), 'pixmap/ccs_logo_2.svg'), 28, 28)
         icon = Gtk.Image.new_from_pixbuf(pixbuf)
         self.btn_start_ccs_editor.set_icon_widget(icon)
         self.btn_start_ccs_editor.set_tooltip_text('Start CCS-Editor')
-        self.btn_start_ccs_editor.connect('clicked', self.on_start_ccs_editor)
+        self.btn_start_ccs_editor.connect('clicked', self.connect_to_ccs_editor)
 
         self.btn_open_progress_view = Gtk.ToolButton()
         self.btn_open_progress_view.set_label('Start ProgressView')
@@ -315,10 +316,10 @@ class TstAppWindow(Gtk.ApplicationWindow):
         self.toolbar.insert(self.btn_save_as, 3)
         # self.toolbar.insert(self.btn_show_model_viewer, 2)
         self.toolbar.insert(self.btn_export_csv, 4)
-        # self.toolbar.insert(self.btn_generate_products, 5)
         self.toolbar.insert(self.btn_generate_script, 5)
-        self.toolbar.insert(self.btn_start_ccs_editor, 6)
-        self.toolbar.insert(self.btn_open_progress_view, 7)
+        self.toolbar.insert(self.btn_generate_products, 6)
+        self.toolbar.insert(self.btn_start_ccs_editor, 7)
+        self.toolbar.insert(self.btn_open_progress_view, 8)
         
         # IDB chooser
         self.idb_chooser = Gtk.ToolButton()
@@ -328,12 +329,12 @@ class TstAppWindow(Gtk.ApplicationWindow):
         self.idb_chooser.set_label_widget(label)
         self.idb_chooser.set_tooltip_text('Select IDB')
         self.idb_chooser.connect('clicked', self.on_set_idb_version)
-        self.toolbar.insert(self.idb_chooser, 8)
+        self.toolbar.insert(self.idb_chooser, 9)
 
         # separator
         sepa = Gtk.SeparatorToolItem()
         sepa.set_expand(True)
-        self.toolbar.insert(sepa, 9)
+        self.toolbar.insert(sepa, 10)
 
         # logo
         self.unilogo = Gtk.ToolButton()
@@ -342,7 +343,7 @@ class TstAppWindow(Gtk.ApplicationWindow):
         icon = Gtk.Image.new_from_pixbuf(pixbuf)
         self.unilogo.set_icon_widget(icon)
         self.unilogo.connect('clicked', self.on_about)
-        self.toolbar.insert(self.unilogo, 10)
+        self.toolbar.insert(self.unilogo, 11)
         self.box.pack_start(self.toolbar, False, True, 0)
         
         self.info_bar = None
@@ -889,9 +890,6 @@ class TstAppWindow(Gtk.ApplicationWindow):
         This function generates out of the current test script model the command script, the verification script and
         the documentation file. If it succeeded, a dialog box will be triggered.
         """
-        # ToDo: remove the reloading, when developing is finished
-        # import importlib
-        # importlib.reload(generator)
         model = self.current_model()
         if not model:
             logger.info('Test Files can not be generated without Steps')
@@ -901,21 +899,38 @@ class TstAppWindow(Gtk.ApplicationWindow):
             logger.info('Test Files can not be generated if Test has no name!')
             logger.error('Please give the test a name')
             return
-        self.product_paths = generator.make_all(model=model)
+
+        existfns = self.check_for_existing_files(model)
+        if existfns:
+
+            dialog = FilesExistDialog(existfns[0])
+            dialog.set_transient_for(self)
+
+            response = dialog.run()
+            if response != Gtk.ResponseType.OK:
+                dialog.destroy()
+                return
+
+            dialog.destroy()
+
+        self.product_paths = generator.make_all(model)
         # triggering the dialog after generation
         self.on_generate_products_message_dialog(paths=self.product_paths)
 
+    def check_for_existing_files(self, model):
+        cmdfn = generator.create_script_path(model.name, generator.cmd_scrpt_auxiliary)
+        runfn = generator.create_script_path(model.name, generator.run_scrpt_auxiliary)
+        vrcfn = generator.create_script_path(model.name, generator.vrc_scrpt_auxiliary)
+
+        if os.path.isfile(cmdfn) or os.path.isfile(runfn) or os.path.isfile(vrcfn):
+            return cmdfn, runfn, vrcfn
+        else:
+            return False
+
     def on_generate_barescript(self, *args):
         """
         Generates a compact python test file without all the additional stuff from on_generate_scripts
         """
-        # dialog = Gtk.FileChooserDialog(
-        #     title="Save script as", parent=self, action=Gtk.FileChooserAction.SAVE)
-        # dialog.add_buttons(
-        #     Gtk.STOCK_CANCEL,
-        #     Gtk.ResponseType.CANCEL,
-        #     Gtk.STOCK_SAVE,
-        #     Gtk.ResponseType.OK, )
 
         if self.current_test_instance():
             # current_json_filename = self.current_test_instance().filename
@@ -979,7 +994,7 @@ class TstAppWindow(Gtk.ApplicationWindow):
         dialog.destroy()
         return
 
-    def connect_to_ccs_editor(self):
+    def connect_to_ccs_editor(self, *args):
         # get the DBus connection to the CCS-Editor
         editor = connect_apps.connect_to_editor()
         if editor is None:
@@ -987,6 +1002,7 @@ class TstAppWindow(Gtk.ApplicationWindow):
             self.on_start_ccs_editor(False)
 
         editor = connect_apps.connect_to_app('editor')
+        editor.Functions('present')
         '''     
         k = 0
         while k < 3:
@@ -1046,11 +1062,11 @@ class TstAppWindow(Gtk.ApplicationWindow):
                                    Gtk.MessageType.QUESTION,
                                    Gtk.ButtonsType.YES_NO,
                                    'Scripts were generated')
-        message = 'Generated files:\n'
+        message = 'Generated files in {}:\n\n'.format(os.path.dirname(paths[0]))
         for entry in paths:
             message += os.path.basename(entry) + '\n'
         paths.append(os.path.join(os.path.realpath(os.path.join(os.path.dirname(__file__), '..')), 'prep_test_env.py'))
-        message += 'Do you want to open them in CCS?'
+        message += '\nDo you want to open them in CCS?'
         dialog.format_secondary_text(message)
         response = dialog.run()
         if response == Gtk.ResponseType.YES:
@@ -1101,13 +1117,14 @@ class TstAppWindow(Gtk.ApplicationWindow):
         progress_viewer = self.connect_progress_viewer()
         file_names = self.get_log_file_paths_from_json_file_name()
         try:
-            progress_viewer.Activate('open-test-files', [file_names], [])
+            if file_names:
+                progress_viewer.Activate('open-test-files', [file_names], [])
         except Exception as e:
-            message = 'Could not start ProgressViewer application.'
+            message = 'Could not load test files for {} in Progress Viewer.'.format(file_names['json_file_path'])
             self.logger.error(message)
             self.logger.exception(e)
             # add a info bar message that the starting of the CCS-Editor failed.
-            self.add_info_bar(message_type=Gtk.MessageType.ERROR, message=message)
+            self.add_info_bar(message_type=Gtk.MessageType.WARNING, message=message)
 
     def on_start_ccs_editor(self, *args):
         try:
@@ -1328,5 +1345,15 @@ class ScriptExportDialog(Gtk.FileChooserDialog):
             self.csvspec.set_sensitive(False)
 
 
+class FilesExistDialog(Gtk.MessageDialog):
+
+    def __init__(self, existpath):
+        super().__init__(title='Files exist', message_type=Gtk.MessageType.INFO)
+
+        existdir, existfn = os.path.split(existpath)
+        self.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.OK)
+        self.set_markup('\n<i>{}*</i> scripts already exist in\n{}\nand will be overwritten!'.format(existfn.replace(generator.cmd_scrpt_auxiliary, ''), existdir))
+
+
 if __name__ == '__main__':
     run()
-- 
GitLab