From 68e94e3db644b01820642710092e3521646c63d1 Mon Sep 17 00:00:00 2001
From: Nils Brueggemann <nils.brueggemann@mpimet.mpg.de>
Date: Mon, 10 Mar 2025 15:36:57 +0100
Subject: [PATCH] pyic_view: Encapsulate default print statements into function
 to allow for verbosity options later on.

---
 scripts/pyic_view.py | 47 ++++++++++++++++++++++----------------------
 1 file changed, 24 insertions(+), 23 deletions(-)

diff --git a/scripts/pyic_view.py b/scripts/pyic_view.py
index 7fb0e3e..37e71a4 100755
--- a/scripts/pyic_view.py
+++ b/scripts/pyic_view.py
@@ -127,7 +127,7 @@ def get_data(ds, var_name, it, iz, res, lon_reg, lat_reg):
 class view(object):
     def __init__(self, flist, path_grid, fig_size_fac=1.0):
         # Initialize Tkinter
-        print('setup TKinter')
+        self.message('setup TKinter')
         root = tk.Tk()
         root.title("pyicon view")
         root.geometry("1200x800")
@@ -178,7 +178,7 @@ class view(object):
         self.selected_var = tk.StringVar(value=self.var_names[0])
         self.selected_cmap = tk.StringVar(value=self.colormaps[0])
         self.color_limits = tk.StringVar(value="auto")  # Default color limits
-        self.lon_lat_reg_tk = tk.StringVar(value="-180,180,-90,90")
+        self.lon_lat_reg_tk = tk.StringVar(value=f"{self.lon_reg[0]},{self.lon_reg[1]},{self.lat_reg[0]},{self.lat_reg[1]}")
         self.save_fig_tk = tk.StringVar(value="./fig.pdf")
         self.selected_res = tk.StringVar(value="0.3")
         self.selected_proj = tk.StringVar(value="None")
@@ -204,7 +204,7 @@ class view(object):
         self.canvas.mpl_connect("button_press_event", self.on_click)
 
         # --- 1st row
-        print('Setup sliders')
+        self.message('Setup sliders')
         pady_num = 8
         frame1 = tk.Frame(root)
         frame1.pack(fill="x", pady=pady_num)
@@ -240,7 +240,7 @@ class view(object):
         frame2.pack(fill="x", pady=pady_num)
         
         # Create dropdown menus
-        print('Setup var dropdown')
+        self.message('Setup var dropdown')
         var_menu = ttk.Combobox(
             frame2, textvariable=self.selected_var, 
             values=list(self.ds.data_vars.keys()), state="readonly"
@@ -249,14 +249,14 @@ class view(object):
         var_menu.bind("<<ComboboxSelected>>", self.update_data)
         
         # Cmap dropdown
-        print('Setup cmap dropdown')
+        self.message('Setup cmap dropdown')
         cmap_menu = ttk.Combobox(frame2, textvariable=self.selected_cmap, 
             values=self.colormaps, state="readonly")
         cmap_menu.pack(side="left", padx=5)
         cmap_menu.bind("<<ComboboxSelected>>", self.update_cmap)
         
         # Color limit entry
-        print('Setup color limits')
+        self.message('Setup color limits')
         entry = tk.Entry(frame2, textvariable=self.color_limits)
         entry.pack(side="left", padx=5)
         entry.insert(0, "")  # Default value
@@ -279,14 +279,14 @@ class view(object):
         frame3.pack(fill="x", pady=pady_num)
 
         # res entry
-        print('Setup res dropdown')
+        self.message('Setup res dropdown')
         res_menu = ttk.Combobox(frame3, textvariable=self.selected_res, 
             values=self.res_all, state="readonly")
         res_menu.pack(side="left", padx=5)
         res_menu.bind("<<ComboboxSelected>>", self.make_new_axis)
         
         # lon_lat_reg entry
-        print('Setup lon_reg')
+        self.message('Setup lon_reg')
         self.entry_lon_lat_reg = tk.Entry(frame3, textvariable=self.lon_lat_reg_tk)
         self.entry_lon_lat_reg.pack(side="left", padx=5)
         self.entry_lon_lat_reg.insert(0, "")  # Default value
@@ -321,10 +321,13 @@ class view(object):
         self.canvas.draw()
 
         # Start Tkinter loop
-        print('Go into mainloop')
+        self.message('Go into mainloop')
         root.mainloop()
         return
 
+    def message(self, message):
+        print(f'pyic_view: {message}')
+
     # reset zoom
     def reset_zoom(self):
         self.selected_res.set("0.3")
@@ -335,7 +338,7 @@ class view(object):
     # for saving the figure
     def save_figure(self, *args):
         fpath = self.save_fig_tk.get()
-        print(f'Saving figure {fpath}')
+        self.message(f'Saving figure {fpath}')
         #plt.savefig(fpath, dpi=300)
         plt.savefig(fpath, dpi=300, bbox_inches='tight')
 
@@ -389,7 +392,7 @@ class view(object):
             self.canvas.mpl_disconnect(self.cid_motion)
 
     def load_data(self):
-        print('opening dataset')
+        self.message('opening dataset')
         mfdset_kwargs = dict(
             combine='nested', concat_dim='time',
             data_vars='minimal', coords='minimal', 
@@ -398,6 +401,8 @@ class view(object):
          )
         
 
+        self.message('Data from these files is considered:')
+        self.message(self.flist)
         self.ds = xr.open_mfdataset(
             self.flist, **mfdset_kwargs, 
             chunks=dict(time=1, depth=1, depth_2=1)
@@ -416,7 +421,7 @@ class view(object):
             except:
                 pass
         self.var_names = list(self.ds)
-        print(f"variables in data set: {self.var_names}")
+        self.message(f"variables in data set: {self.var_names}")
         self.var_name = self.var_names[0]
 
         # copy uuidOfHGrid to each variable as attribute
@@ -440,7 +445,7 @@ class view(object):
                   self.nzs[var] = 0
             except:
                 delvars.append(var)
-        print(f'Excluding the following variables from data set due to issues with dimension specification: {delvars}')
+        self.message(f'Excluding the following variables from data set due to issues with dimension specification: {delvars}')
         self.ds = self.ds.drop_vars(delvars)
 
     def plot_data(self):
@@ -587,7 +592,7 @@ class view(object):
         # update depth slider
         self.slider_d.config(to=self.nzs[self.var_name]-1)
     
-        print(f'Updating data: {self.var_name}: it = {self.it}; iz = {self.iz}')
+        self.message(f'Updating data: {self.var_name}: it = {self.it}; iz = {self.iz}')
     
         # Get data and plot
         self.update_lon_lat_reg()
@@ -621,7 +626,7 @@ class view(object):
         try:
             clim = self.get_clim(clim_str, self.dai)
             self.hm[0].set_clim(clim[0], clim[1])
-            print(f'Updating clim to {tuple(map(float, clim))}')
+            self.message(f'Updating clim to {tuple(map(float, clim))}')
             self.canvas.draw()
         except ValueError:
             print(f'Invalid value for clim: {clim_str}')
@@ -633,7 +638,7 @@ class view(object):
     def update_cmap(self, *args):
         # update cmap
         cmap = self.selected_cmap.get()
-        print(f"Updating cmap to {cmap}")
+        self.message(f"Updating cmap to {cmap}")
         if cmap.startswith('cmo'):
             cmap = cmap.split('.')[-1]
             cmap = getattr(cmocean.cm, cmap)
@@ -647,7 +652,7 @@ class view(object):
         lon_lat_reg = str_to_array(lon_lat_reg_str)
         self.lon_reg = [lon_lat_reg[0], lon_lat_reg[1]]
         self.lat_reg = [lon_lat_reg[2], lon_lat_reg[3]]
-        print(f'Updating lon_reg to {tuple(map(float, self.lon_reg))} and lat_reg to {tuple(map(float, self.lat_reg))}')
+        self.message(f'Updating lon_reg to {tuple(map(float, self.lon_reg))} and lat_reg to {tuple(map(float, self.lat_reg))}')
 
     def get_clim(self, clim, data):
         # --- clim
@@ -667,7 +672,7 @@ class view(object):
 
     def toggle_grid(self):
         if self.do_grid.get():
-            print('Adding grid lines')
+            self.message('Adding grid lines')
             color='k'
             linewidth=0.5
             if self.proj=="+proj=stere +lat_0=90 +lon_0=0":
@@ -714,7 +719,7 @@ class view(object):
                 self.hgs.append(hg)
                 #print(f'nn = {nn}, {self.hgs}')
         else:
-            print('Removing grid lines')
+            self.message('Removing grid lines')
             for hg in self.hgs:
                 hg.remove()
         self.canvas.draw()
@@ -768,11 +773,7 @@ def main():
     flist = iopts.fpath_data
     flist.sort()
 
-    print('Data from these files is considered:')
-    print(flist)
-
     # Initial plot
-    print('Initialize plot')
     path_grid = 'auto'
     View = view(flist, 
         path_grid=path_grid, 
-- 
GitLab