From 4df8c2ca0bcb7da5501c6a62463fd3d69a0f2c6c Mon Sep 17 00:00:00 2001
From: Marko Mecina <marko.mecina@univie.ac.at>
Date: Wed, 25 May 2022 17:59:53 +0200
Subject: [PATCH] don't detach CCS Editor from terminal when launched via
 start_ccs

---
 Ccs/ccs_function_lib.py | 22 +++++++++++++++-------
 Ccs/editor.py           | 40 ++++------------------------------------
 start_ccs               |  4 ++--
 3 files changed, 21 insertions(+), 45 deletions(-)

diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py
index 38fdff7..d8aaca8 100644
--- a/Ccs/ccs_function_lib.py
+++ b/Ccs/ccs_function_lib.py
@@ -62,6 +62,12 @@ crc = crcmod.predefined.mkCrcFun(crctype)
 # Set up logger
 logger = logging.getLogger('CFL')
 
+LOGLEVEL_DICT = {'DEBUG': logging.DEBUG,
+                 'INFO': logging.INFO,
+                 'WARNING': logging.WARNING,
+                 'ERROR': logging.ERROR,
+                 'CRITICAL': logging.CRITICAL}
+
 counters = {}
 
 pid_offset = int(cfg.get('ccs-misc', 'pid_offset'))
@@ -184,7 +190,13 @@ def start_editor(console=True, *args):
 
     directory = confignator.get_option('paths', 'ccs')
     file_path = os.path.join(directory, 'editor.py')
-    start_app(console, file_path, directory, *args)
+
+    if '--terminal' in args:
+        args = list(args)
+        args.remove('--terminal')
+        os.system(' '.join(['python3', file_path, *args]))
+    else:
+        start_app(console, file_path, directory, *args)
 
     return
 
@@ -258,16 +270,12 @@ def start_config_editor(console=False, *args):
 # The logger is returned with the given name an can be used like a normal logger
 def start_logging(name):
     level = cfg.get('ccs-logging', 'level')
-    loglevel_dict = {'DEBUG': logging.DEBUG,
-                          'INFO': logging.INFO,
-                          'WARNING': logging.WARNING,
-                          'ERROR': logging.ERROR,
-                          'CRITICAL': logging.CRITICAL}
-    loglevel = loglevel_dict[level]
+    loglevel = LOGLEVEL_DICT[level]
 
     rootLogger = logging.getLogger('')
     rootLogger.setLevel(loglevel)
     socketHandler = logging.handlers.SocketHandler('localhost', logging.handlers.DEFAULT_TCP_LOGGING_PORT)
+
     # don't bother with a formatter, since a socket handler sends the event as an unformatted pickle
     rootLogger.addHandler(socketHandler)
     log = logging.getLogger(name)
diff --git a/Ccs/editor.py b/Ccs/editor.py
index d266011..2a30204 100644
--- a/Ccs/editor.py
+++ b/Ccs/editor.py
@@ -153,13 +153,7 @@ class CcsEditor(Gtk.Window):
             self.cfg = confignator.get_config(file_path=confignator.get_option('config-files', 'ccs'))
             self.cfg.source = confignator.get_option('config-files', 'ccs')
 
-        # try:
-        #     with open('.pickledcfg', 'wb') as fdesc:
-        #         pickle.dump(self.cfg, fdesc)
-        # except Exception as e:
-        #     pass
-        # finally:
-        #     fdesc.close()
+        self.logdir = confignator.get_option('ccs-paths', 'log-file-dir')
 
         self.paned = Gtk.Paned(orientation=Gtk.Orientation.VERTICAL)
         self.paned.set_wide_handle(True)
@@ -179,25 +173,7 @@ class CcsEditor(Gtk.Window):
 
         self.searchbar = self.create_searchbar()
         self.grid.attach(self.searchbar, 0, 2, 3, 1)
-        '''        
-        """ logo """
-        box = Gtk.HBox()
-        button = Gtk.ToolButton()
-        button.set_icon_name("system-search-symbolic")
-        size = button.get_icon_size()
-        t, h, w = Gtk.IconSize.lookup(size)
-        # icons are half the size of button (usually)
-        pixmap_path = os.path.join(pixmap_folder, 'UVIE_Logo_48.png')
-        logo = GdkPixbuf.Pixbuf.new_from_file_at_size(pixmap_path, -1, w * 2)
-        img = Gtk.Image.new_from_pixbuf(logo)
-        box.pack_end(img, False, False, 0)
-
-        pixmap_path = os.path.join(pixmap_folder, 'IfA_Logo_48.png')
-        logo = GdkPixbuf.Pixbuf.new_from_file_at_size(pixmap_path, -1, w * 2)
-        img = Gtk.Image.new_from_pixbuf(logo)
-        box.pack_end(img, False, False, 0)
-        self.grid.attach(box, 2, 1, 1, 1)
-        '''
+
         self.univie_box = self.create_univie_box()
         self.grid.attach(self.univie_box, 2, 1, 1, 1)
 
@@ -207,10 +183,6 @@ class CcsEditor(Gtk.Window):
         self.editor_notebook = Gtk.Notebook(scrollable=True)
         self.grid.attach(self.editor_notebook, 0, 3, 3, 1)
 
-        # scrolledwindow = Gtk.ScrolledWindow()
-        # scrolledwindow.set_overlay_scrolling(False)
-        # scrolledwindow.add(self.ipython_view)
-
         self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
 
         # self.connect('size-allocate', self.paned_check_resize)
@@ -221,12 +193,7 @@ class CcsEditor(Gtk.Window):
 
         self.logwin, self.logwintext, self.logbuffer = self.create_log_window()
 
-        # self._share_variables(**{'cfg': self.cfg})
-
-        # self.ipython_view = ipython_view.IPythonView()
-        # self.ipython_view.updateNamespace(globals())
         self.ipython_view = IPythonTerminal(scrollback_lines=int(self.cfg.get('ccs-editor', 'scrollback_lines')))
-        # self.ipython_view.connect('commit', self.ipy_commit)
         self.feed_ready = True
 
         self.nb.append_page(self.ipython_view, tab_label=Gtk.Label(label='Console', angle=270))
@@ -1786,7 +1753,7 @@ class CcsEditor(Gtk.Window):
 
     def switch_notebook_page(self, logwin, view, buffer):
 
-        filelist = glob.glob("logs/*.log")
+        filelist = glob.glob(os.path.join(self.logdir, '*.log'))
         filelist.sort(reverse=True)
         file = open(filelist[0], 'r')
         file = file.read()
@@ -1854,6 +1821,7 @@ class ActionWindow(Gtk.Window):
         self.add(grid)
         self.show_all()
 
+
 if __name__ == "__main__":
     given_cfg = None
     for i in sys.argv:
diff --git a/start_ccs b/start_ccs
index a43fed3..2198ed4 100755
--- a/start_ccs
+++ b/start_ccs
@@ -8,8 +8,8 @@ import ccs_function_lib as cfl
 
 
 if __name__ == '__main__':
-    files_to_open = ()
+    files_to_open = []
         # os.path.join(confignator.get_option('paths', 'tst'), 'prep_test_env.py'),
         # os.path.join(confignator.get_option('paths', 'obsw'), 'send_TC.py')
 
-    cfl.start_editor(False, *files_to_open)
+    cfl.start_editor(False, *files_to_open, '--terminal')
-- 
GitLab