From a255da8a4fce33d5843608040dc947826527c8ba Mon Sep 17 00:00:00 2001 From: Marko Mecina <marko.mecina@univie.ac.at> Date: Tue, 28 Nov 2023 18:39:56 +0100 Subject: [PATCH] add selection of monitor parameter set via context menu in poolviewer --- Ccs/monitor.py | 18 ------------------ Ccs/poolview_sql.py | 40 +++++++++++++++++++++++++--------------- 2 files changed, 25 insertions(+), 33 deletions(-) diff --git a/Ccs/monitor.py b/Ccs/monitor.py index 9a8999c..2c6ab20 100644 --- a/Ccs/monitor.py +++ b/Ccs/monitor.py @@ -94,24 +94,6 @@ class ParameterMonitor(Gtk.Window): self.reset_evt_cnt() return - # def check_for_pools(self): - # try: - # # poolmgr = cfl.dbus_connection('poolmanager', cfl.communication['poolmanager']) - # poolmgr = cfl.get_module_handle('poolmanager') - # pools = poolmgr.Functions('loaded_pools_export_func') - # if len(pools) == 1: - # pool_name = pools[0][0] - # if '/' in pools[0][0]: - # pool_name = pools[0][0].split('/')[-1] - # self.set_pool(pool_name) - # return 1 - # else: - # self.logger.error('Failed to open a pool.') - # return 0 - # except Exception as err: - # self.logger.error(err) - # return 0 - def set_pool(self, pool_name): self.pool_name = pool_name diff --git a/Ccs/poolview_sql.py b/Ccs/poolview_sql.py index 32f2515..3d9d177 100644 --- a/Ccs/poolview_sql.py +++ b/Ccs/poolview_sql.py @@ -121,6 +121,8 @@ class TMPoolView(Gtk.Window): self.autoscroll = 1 self.autoselect = 1 + self._selected_mon_par_set = None + self.paned = Gtk.Paned(orientation=Gtk.Orientation.HORIZONTAL, wide_handle=True, position=400) self.statusbar = Gtk.Statusbar() @@ -638,9 +640,8 @@ class TMPoolView(Gtk.Window): return self.offset = int(self.adj.get_value()) self.limit = int(self.adj.get_page_size()) - #self.feed_lines_to_view( - # self.fetch_lines_from_db(offset=self.offset, limit=self.limit)) - self.fetch_lines_from_db(offset=self.offset, limit=self.limit, force_import=True) + + self.feed_lines_to_view(self.fetch_lines_from_db(offset=self.offset, limit=self.limit, force_import=True)) self.reselect_rows() def count_current_pool_rows(self, pool_info=None): @@ -1127,13 +1128,14 @@ class TMPoolView(Gtk.Window): icon_path = os.path.join(self.cfg.get('paths', 'ccs'), 'pixmap/func.png') pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(icon_path, 32, 32) plot_butt = Gtk.Button(image=Gtk.Image.new_from_pixbuf(pixbuf), tooltip_text='Parameter Plotter') - plot_butt.connect('button-press-event', self.show_context_menu, self.context_menu()) + # plot_butt.connect('button-press-event', self.show_context_menu, self.context_menu()) plot_butt.connect('clicked', self.plot_parameters) icon_path = os.path.join(self.cfg.get('paths', 'ccs'), 'pixmap/monitor.png') pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(icon_path, 32, 32) - mon_butt = Gtk.Button(image=Gtk.Image.new_from_pixbuf(pixbuf), tooltip_text='Parameter Monitor') - mon_butt.connect('clicked', self.monitor_parameters) + self.mon_butt = Gtk.Button(image=Gtk.Image.new_from_pixbuf(pixbuf), tooltip_text='Parameter Monitor') + self.mon_butt.connect('clicked', self.monitor_parameters) + self.mon_butt.connect('button-press-event', self.show_context_menu, self.context_menu()) dump_butt = Gtk.Button.new_from_icon_name('gtk-save', Gtk.IconSize.LARGE_TOOLBAR) dump_butt.set_tooltip_text('Save pool') @@ -1166,7 +1168,7 @@ class TMPoolView(Gtk.Window): self.pool_managebar.pack_start(self.pool_selector, 1, 1, 0) self.pool_managebar.pack_start(plot_butt, 0, 0, 0) - self.pool_managebar.pack_start(mon_butt, 0, 0, 0) + self.pool_managebar.pack_start(self.mon_butt, 0, 0, 0) self.pool_managebar.pack_end(self.univie_box, 0, 0, 0) self.pool_managebar.pack_end(clear_butt, 0, 0, 0) self.pool_managebar.pack_end(bigd, 0, 0, 0) @@ -1425,23 +1427,31 @@ class TMPoolView(Gtk.Window): self.adj.set_value(self.offset) - return def context_menu(self): + menu = Gtk.Menu() - item = Gtk.MenuItem(label='TEST') - item.connect('activate', self.menu_test) - menu.append(item) + par_sets = cfg['ccs-monitor_parameter_sets'] + for parset in par_sets: + item = Gtk.MenuItem(label=str(parset)) + item.connect('activate', self.mon_menu, parset) + menu.append(item) + return menu def show_context_menu(self, widget, event, menu): + if event.button != 3: return + menu.show_all() - menu.popup(None, None, None, None, 3, event.time) + menu.popup_at_pointer() - def menu_test(self, widget=None): - pass + def mon_menu(self, widget=None, parset=None): + + if parset is not None: + self._selected_mon_par_set = parset + self.mon_butt.set_tooltip_text('Parameter Monitor [{}]'.format(parset)) def check_structure_type(self): @@ -2627,7 +2637,7 @@ class TMPoolView(Gtk.Window): self.logger.warning('No pool selected') return - cfl.start_monitor(self.active_pool_info.filename) + cfl.start_monitor(self.active_pool_info.filename, parameter_set=self._selected_mon_par_set) def start_recording(self, widget=None): if cfl.is_open('poolmanager', cfl.communication['poolmanager']): -- GitLab