From 4b7c2b37445e91dcd20fabecfdfe968b158bd2c9 Mon Sep 17 00:00:00 2001
From: Rolfes <alois.rolfes@hs-hannover.de>
Date: Thu, 13 Jan 2022 20:16:20 +0100
Subject: [PATCH] base clas gui_api clipboard

---
 Balance_Binary.ipynb                        |  88 +----------------
 __pycache__/nowo1_base.cpython-39.pyc       | Bin 43593 -> 43054 bytes
 __pycache__/nowo1_gui_base.cpython-39.pyc   | Bin 1791 -> 1791 bytes
 __pycache__/nowo1_log_base.cpython-39.pyc   | Bin 3377 -> 3424 bytes
 __pycache__/nowo1_sim_binary.cpython-39.pyc | Bin 9603 -> 9603 bytes
 nowo1_base.py                               | 100 +++++++++-----------
 nowo1_log_base.py                           |   5 +-
 requirements.txt                            |   3 +-
 8 files changed, 55 insertions(+), 141 deletions(-)

diff --git a/Balance_Binary.ipynb b/Balance_Binary.ipynb
index 7359f47..f5b6b87 100644
--- a/Balance_Binary.ipynb
+++ b/Balance_Binary.ipynb
@@ -176,50 +176,7 @@
      }
     }
    },
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "4368c6e2350c4b0c92d6cf8f7d734a7b",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "Output()"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "1606140b05984266b85bef715826cc19",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "Output()"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "5bd5724182034d35b60cd23fa0a4bc9b",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "Output()"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "bilanz_1 = no_bi.binary_node('bilanz_1') # Umgebungs\n",
     "step = no_ba.step_single('step')\n",
@@ -278,7 +235,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "96c8c956f265470da69a1253e650b386",
+       "model_id": "056f50bccc764cb9abda14b18b6f1d74",
        "version_major": 2,
        "version_minor": 0
       },
@@ -318,7 +275,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "35ea6dda14f247d5b73577a34d87eab4",
+       "model_id": "df4f302df2794b3592111ef8250b63d6",
        "version_major": 2,
        "version_minor": 0
       },
@@ -358,7 +315,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "90ce2d0e300749099caa10a06a4563e6",
+       "model_id": "387ddd748f7c439eb5f9853ae7c70353",
        "version_major": 2,
        "version_minor": 0
       },
@@ -368,48 +325,11 @@
      },
      "metadata": {},
      "output_type": "display_data"
-    },
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "749407c2429a4eae8e8d4f623bb02505",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "Output()"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
     }
    ],
    "source": [
     "step.Show_GUI()"
    ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "6de5555e-b239-41f5-82e6-8691f8eb946a",
-   "metadata": {
-    "extensions": {
-     "jupyter_dashboards": {
-      "activeView": "grid_default",
-      "views": {
-       "grid_default": {
-        "col": null,
-        "height": 2,
-        "hidden": true,
-        "row": null,
-        "width": 2
-       }
-      }
-     }
-    }
-   },
-   "outputs": [],
-   "source": []
   }
  ],
  "metadata": {
diff --git a/__pycache__/nowo1_base.cpython-39.pyc b/__pycache__/nowo1_base.cpython-39.pyc
index bb87322a8938399ac0d954e6213a26f2a2d9a223..eeef5132ff07b6a929bd53a415e0143125b55eeb 100644
GIT binary patch
delta 7663
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
Z_?7v@1quZW1QY~31o#9vCu^^g0{|cAkg@;(

delta 7956
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
Y>+!1cl?fOKC<u7)DGCTo7FZz%01c+<hX4Qo

diff --git a/__pycache__/nowo1_gui_base.cpython-39.pyc b/__pycache__/nowo1_gui_base.cpython-39.pyc
index 15a7176630f60e529166bdb2ec6ae66a5a2f08b1..1088c166920acf7b5d726b3edefe9c737fce658f 100644
GIT binary patch
delta 20
bcmey*`=6IPk(ZZ?fq{WRBK5&W?k{WrJTV2l

delta 20
bcmey*`=6IPk(ZZ?fq{YHrQ-dK++WxLKuZQl

diff --git a/__pycache__/nowo1_log_base.cpython-39.pyc b/__pycache__/nowo1_log_base.cpython-39.pyc
index 954395163caf1a7416f6657917e8e4bcbc8746ff..20cba6d895db2abb591d5599e79db1f36f28b5b6 100644
GIT binary patch
delta 279
zcmdle^+1X*k(ZZ?fq{WxUgd*CBi@aC|JnK27#J8pn3;irp}1hOG>4x)>jL(L47IE!
z91A#WSQj!fGSo0+aTVo&$OViG85kK-7=jrznf!`$7#J8dxhJ=9C@I`xE6I;fE-t&p
zSx{M!T9llVS#XObIlrK?$ONQ_ZSq<UEzT(R<l?gU;*z4t7nwz*OhGn^fSkj~#mvRX
z#mK|R#VEqW#mKdpku!>s(Q|SPS1qIO=389sj7ruZQ&@}m7#J9CG3TY07qKufFhp^d
zCFYc-=42L^6xmHa$1KhmG+CM_NYtKzfx!c0I>=)jjAAT2tVQ;dn|S<Ki!2!!7$!g9
O5o5HU{GG>=Q6B)j|39+;

delta 195
zcmaDLwNZ*Mk(ZZ?fq{YHrQ-d>lRO*w{<BZ^<mP3JnJmrWC(T|IQNxhMzJPHd10zEU
zLokCTlV6bz0|SF5$K)9tO6)}@AU5mdTO3-GFEWdWnKCdi6bpciW8`AyV&r1vVdP>I
z*=)@j#mMM3c^X$Oqt|8;ZgxgSi^(!P3XIm1&oPTL`cDq!2@<toU|?_sX=h_#VBlaB
rW8q;fvYEVx$4}rEUtWHBzF~ZNX=Z#<VsYwZeqJ#~o5^atmW(<8YHcbu

diff --git a/__pycache__/nowo1_sim_binary.cpython-39.pyc b/__pycache__/nowo1_sim_binary.cpython-39.pyc
index bcc80afd87a78bb2f2485fba89fdead4adb99d0c..5f903a80489ffdb5700c973dfbaea2ae6f760f78 100644
GIT binary patch
delta 20
bcmZqnZuaI*<mKgJU|?YQp?!ZNcZDhdHfIHh

delta 20
bcmZqnZuaI*<mKgJU|?WaeDU5!?g~`^H}eJ9

diff --git a/nowo1_base.py b/nowo1_base.py
index 2d07f83..00b6cd8 100644
--- a/nowo1_base.py
+++ b/nowo1_base.py
@@ -360,10 +360,32 @@ class gate_dataframe(gate_base):
         self._success_flag = False
 
 
+class gui_api():
+    def __init__(self):
+        self._GUI_visible = True
+        self._GUI_itemlist : dict = dict()
+        self.GUI_Item =  None
+        self._GUI_is_visible = False
+        self.info = widgets.Output()
+
+
+    def Show_GUI(self):
+        if not self.GUI_Item:
+            self.GUI_Item =  self._create_gui()
+        self._GUI_is_visible = True
+        display(self.GUI_Item)
+            
+
+    def _create_gui(self):
+        for widget in self._GUI_itemlist.values():
+            setattr(widget, 'parent', self)
+        return None    
+
 
 #*****************************************************************
-class step_base():
+class step_base(gui_api):
     def __init__(self, name : str,  GUI : bool = False):
+        super().__init__()
         self.name = name
         self.step_nr: int = 0
         self.total_steps: int = 0
@@ -371,41 +393,35 @@ class step_base():
         self.sim_funcs : dict = {}# Ersetzt self.work_objs und self.work_funcs
         self._loggerlist : set = set() 
         
-        self._GUI_visible = GUI
-        self._GUI_itemlist : dict = dict()
-        self.GUI_Item =  self._create_gui()
-        self._GUI_is_visible = False
+        # self._GUI_visible = GUI
+        # self._GUI_itemlist : dict = dict()
+        # self.GUI_Item =  self._create_gui()
+        # self._GUI_is_visible = False
 
-        self.info = widgets.Output()
+        # self.info = widgets.Output()
 
 
 
     def on_start_clicked(self, args):
         parent = args.parent
         parent.reset()
-        #with self.info:print('on click')
-       
-        # for obj in parent.work_objs:
-        #     if obj._GUI_is_visible:
-        #         obj.Init_Over_GUI()
         parent.work()
       
 
-    def Show_GUI(self):
-        for obj in self.work_objs:
-            if obj._GUI_visible:
-                obj.Show_GUI()
-        if self.GUI_Item:
-            self._GUI_is_visible = True
-            display(self.GUI_Item, self.info)
-            #with self.info:
-            #    print('Na dann wollen wir mal')    
-
+    # def Show_GUI(self, show = True):
+    #     for obj in self.work_objs:
+    #         if obj._GUI_visible:
+    #             obj.Show_GUI()
+    #     super().Show_GUI()
+        # if self.GUI_Item:
+        #     self._GUI_is_visible = True
+        #     display(self.GUI_Item)
+            
 
-    def _create_gui(self):
-        for widget in self._GUI_itemlist.values():
-            setattr(widget, 'parent', self)
-        return None
+    # def _create_gui(self):
+    #     for widget in self._GUI_itemlist.values():
+    #         setattr(widget, 'parent', self)
+    #     return None
      
 
     def reset(self):
@@ -632,50 +648,24 @@ class step_timer(step_base):
 
 
 #*****************************************************************
-class work_base():
+class work_base(gui_api):
     def __init__(self, name: str, GUI : bool = False, **kwargs):
-        
+        super().__init__()
         self.name = name
         self._ctrl_ok : bool = False
-        
-        self._GUI_visible = GUI
-        self._GUI_itemlist : dict = dict()
-        self.GUI_Item =  None
-        self._GUI_is_visible = False
-        self.info = widgets.Output()
-        #display(self.info)
    
     def Init(self): pass
        
-    def ready_for_start(self, timer: step_timer): pass
+    def ready_for_start(self, stepper: step_base): pass
        
     def ready_for_end(self):pass
 
 
-    def _create_gui(self):
-        for widget in self._GUI_itemlist.values():
-            setattr(self, 'parent', widget)
-        return None
-     
-
-    def Show_GUI(self):
-        if not self.GUI_Item:
-            self.GUI_Item =  self._create_gui()
-        self._GUI_is_visible = True
-        display(self.GUI_Item)
-
 
 class gui_base(work_base):
     def __init__(self, name: str, GUI : bool = False,  **kwargs):
         super().__init__(name, GUI, **kwargs)
-       
-
-    def ready_for_start(self, stepper: step_base):pass
-    
-    def ready_for_end(self):pass
-        
-    def Init(self): super().Init()
-       
+          
     def Init_by_dataframe(self, dataframe): pass
 
 
diff --git a/nowo1_log_base.py b/nowo1_log_base.py
index 6112f29..8a93a71 100644
--- a/nowo1_log_base.py
+++ b/nowo1_log_base.py
@@ -3,7 +3,7 @@ import nowo1_base as nowo
 import datetime as dt
 import pandas as pd
 import numpy as np
-import nowo1_gui_base 
+import pyperclip
 
 class logger(nowo.port_base):
     def __init__(self, name: str, GUI : bool = False,  **kwargs):
@@ -60,6 +60,9 @@ class log_sheet(nowo.port_base):
                 value = self.buffer_data[key_name]
                 self.sheet_data.at[row_name, col_name] = value
         #self.sheet_data.to_clipboard()
+        csv_str = self.sheet_data.to_csv()
+        pyperclip.copy(csv_str)
+        #copyDF(self.sheet_data)
         if self.Gui_For_Data:
             #with self.info: print(self.Gui_For_Data.name, 'ready_2')
             self.Gui_For_Data.ready_for_end()
diff --git a/requirements.txt b/requirements.txt
index 7f7d907..947c323 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,5 @@
 voila
 voila-gridstack
 ipysheet
-pandas
\ No newline at end of file
+pandas
+pyperclip
\ No newline at end of file
-- 
GitLab