diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py index 40004be3b69efe74881fb8063a1151f59114b643..a97323344a1e700156824f4170b4ec9aecb5b51d 100644 --- a/Ccs/ccs_function_lib.py +++ b/Ccs/ccs_function_lib.py @@ -2695,10 +2695,11 @@ def get_tc_calibration_and_parameters(ccf_descr=None): return calibrations_dict -def get_tm_id(ccf_descr=None): - if ccf_descr is None: +def get_tm_id(pcf_descr=None): + if pcf_descr is None: tms = scoped_session_idb.execute('SELECT pid_type, pid_stype, pid_apid, pid_pi1_val, pid_descr, pid_tpsd, ' - 'pid_spid, pcf_name, pcf_descr, pcf_curtx, txp_from, txp_altxt, plf_offby ' + 'pid_spid, pcf_name, pcf_descr, pcf_curtx, txp_from, txp_altxt, plf_offby,' + 'pcf_ptc, pcf_pfc ' 'FROM pid ' 'LEFT JOIN plf ' 'ON pid_spid = plf_spid AND pid_tpsd = -1 ' @@ -2713,7 +2714,8 @@ def get_tm_id(ccf_descr=None): else: tms = scoped_session_idb.execute('SELECT pid_type, pid_stype, pid_apid, pid_pi1_val, pid_descr , pid_tpsd, ' - 'pid_spid, pcf_name, pcf_descr, pcf_curtx, txp_from, txp_altxt, plf_offby ' + 'pid_spid, pcf_name, pcf_descr, pcf_curtx, txp_from, txp_altxt, plf_offby,' + 'pcf_ptc, pcf_pfc ' 'FROM pid ' 'LEFT JOIN plf ' 'ON pid_spid = plf_spid AND pid_tpsd = -1 ' @@ -2725,7 +2727,7 @@ def get_tm_id(ccf_descr=None): 'ON pcf_curtx = txf_numbr ' 'LEFT JOIN txp ' 'ON txf_numbr = txp.txp_numbr ' - 'WHERE ccf_descr="{}"'.format(ccf_descr)).fetchall() + 'WHERE pcf_descr="{}"'.format(pcf_descr)).fetchall() scoped_session_idb.close() @@ -2737,6 +2739,28 @@ def get_tm_id(ccf_descr=None): return tms_dict +def get_data_pool_items(pcf_descr = None): + if pcf_descr is None: + data_pool = scoped_session_idb.execute('SELECT pcf_pid, pcf_descr, pcf_ptc, pcf_pfc ' + 'FROM pcf ' + 'WHERE pcf_pid <> 0').fetchall() + + else: + data_pool = scoped_session_idb.execute('SELECT pcf_pid, pcf_descr, pcf_ptc, pcf_pfc ' + 'FROM pcf ' + 'WHERE pcf_pid <> 0 ' + 'WHERE pcf_descr="{}"'.format(pcf_descr)).fetchall() + + scoped_session_idb.close() + + data_pool_dict = {} + + for row in data_pool: + data_pool_dict.setdefault(row[0:4], []).append(row[5:]) + + + return data_pool_dict + def get_dp_items(source='mib'): diff --git a/Ccs/s2k_partypes.py b/Ccs/s2k_partypes.py index 17257c7c4635588ec40731b7cfcf34aa25c0a5a0..4329205317e0479ad1c0b6e93a7493273f58150f 100644 --- a/Ccs/s2k_partypes.py +++ b/Ccs/s2k_partypes.py @@ -36,7 +36,7 @@ ptt = { 11: 'uint11', 12: 'uint12', 13: 'uint13', 14: 'uint14', 15: 'uint15', 16: 'H', 17: 'uint17', 18: 'uint18', 19: 'uint19', 20: 'uint20', 21: 'uint21', 22: 'uint22', 23: 'uint23', 24: 'I24', 25: 'uint25', 26: 'uint26', 27: 'uint27', 28: 'uint28', 29: 'uint29', 30: 'uint30', 31: 'uint31', 32: 'I'}, - 7: {0: 'vOCT', 382: '382s'}, + 7: {0: 'vOCT', 1: '1s', 12: '12s', 382: '382s'}, 8: {0: 'vASCII', 382: '382s'}, 9: {17: 'CUC917', 18: 'CUC918'}, 11: {0: 'deduced'}, diff --git a/Tst/tst/data_pool_tab.py b/Tst/tst/data_pool_tab.py new file mode 100644 index 0000000000000000000000000000000000000000..263f3c036d3433c7509df2a3a8f27eb7322130e3 --- /dev/null +++ b/Tst/tst/data_pool_tab.py @@ -0,0 +1,135 @@ +import gi + +gi.require_version("Gtk", "3.0") +gi.require_version("GtkSource", "3.0") +from gi.repository import Gtk, Gdk, GtkSource +import confignator +import sys +sys.path.append(confignator.get_option('paths', 'ccs')) +import ccs_function_lib as cfl +import s2k_partypes as s2k + + +dictionary_of_data_pool = cfl.get_data_pool_items() +list_of_data_pool = list(dictionary_of_data_pool.keys()) + +data_pool_sublist = [] + +pid_list = [] + +def get_data_pool_sublist(): + for counter in list_of_data_pool: + pcf_pid = str(counter[0]) + pcf_descr = str(counter[1]) + pcf_ptc = counter[2] + pcf_pfc = counter[3] + + if pcf_ptc == None: + data_type = "None" + else: + data_type = s2k.ptt[pcf_ptc][pcf_pfc] + + if pcf_pid not in pid_list: + pid_list.append(pcf_pid) + + data_pool_sublist.append([pcf_pid, pcf_descr, data_type]) + + return data_pool_sublist, pid_list + +data_pool_sublist, pid_list = get_data_pool_sublist() + + + + +class DataPoolTable(Gtk.Grid): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.data_pool_liststore = Gtk.ListStore(str, str, str) + for data_pool_ref in data_pool_sublist: + self.data_pool_liststore.append(list(data_pool_ref)) + self.current_filter_data_pool = None + + # Creating the filter, feeding it with the liststore model + self.data_pool_filter = self.data_pool_liststore.filter_new() + # setting the filter function + self.data_pool_filter.set_visible_func(self.data_pool_filter_func) + + # Create ListStores for the ComboBoxes + self.pid_liststore = Gtk.ListStore(str) + for pid_ref in pid_list: + self.pid_liststore.append([pid_ref, ]) + # self.current_filter_type = None + + """ + self.pid_combo = Gtk.ComboBox.new_with_model(self.pid_liststore) + self.pid_combo.connect("changed", self.on_pid_combo_changed) + renderer_text = Gtk.CellRendererText() + self.pid_combo.pack_start(renderer_text, True) + self.pid_combo.add_attribute(renderer_text, "text", 0) + self.attach(self.pid_combo, 0, 0, 1, 1) + + self.clear_button = Gtk.Button(label="Clear") + self.clear_button.connect("clicked", self.on_clear_button_clicked) + self.attach_next_to( + self.clear_button, self.pid_combo, Gtk.PositionType.RIGHT, 1, 1 + ) + """ + + # creating the treeview, making it use the filter a model, adding columns + self.treeview = Gtk.TreeView.new_with_model(Gtk.TreeModelSort(self.data_pool_filter)) + for i, column_title in enumerate( + ["pcf_pid", "pcf_descr", "datatype"] + ): + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn(column_title, renderer, text=i) + column.set_sort_column_id(i) + self.treeview.append_column(column) + + # Handle selection + self.selected_row = self.treeview.get_selection() + self.selected_row.connect("changed", self.item_selected) + + # setting up layout, treeview in scrollwindow + self.scrollable_treelist = Gtk.ScrolledWindow() + self.scrollable_treelist.set_vexpand(True) + self.scrollable_treelist.set_hexpand(True) + self.attach(self.scrollable_treelist, 0, 1, 8, 10) + + self.scrollable_treelist.add(self.treeview) + + + self.show_all() + + def on_pid_combo_changed(self, combo): + combo_iter = combo.get_active_iter() + if combo_iter is not None: + model = combo.get_model() + number = model[combo_iter][0] + self.current_filter_data_pool = int(number) + + self.data_pool_filter.refilter() + + + def on_clear_button_clicked(self, widget): + self.current_filter_data_pool = None + self.data_pool_filter.refilter() + + + def item_selected(self, selection): + model, row = selection.get_selected() + if row is not None: + pass + + + + def data_pool_filter_func(self, model, iter, data): + + if ( + self.current_filter_data_pool is None + or self.current_filter_data_pool == "None" + ): + return True + else: + return model[iter][0] == self.current_filter_data_pool diff --git a/Tst/tst/tm_management.py b/Tst/tst/tm_management.py index 36648287c91bf1527069d10ea5d6cb919c8dc656..e7cc4eee0f2b26611ed5d7a7d356e2a5f4148732 100644 --- a/Tst/tst/tm_management.py +++ b/Tst/tst/tm_management.py @@ -9,7 +9,7 @@ import confignator import sys sys.path.append(confignator.get_option('paths', 'ccs')) import ccs_function_lib as cfl - +import s2k_partypes as s2k dictionary_of_tms = cfl.get_tm_id() @@ -41,9 +41,17 @@ def get_tm_type_sublist(tm_descr): txp_from = str(counter[5]) txp_altxt = str(counter[6]) plf_offpy = str(counter[7]) + pcf_ptc = counter[8] + pcf_pfc = counter[9] + + if pcf_ptc == None: + data_type = "None" + pass + else: + data_type = s2k.ptt[pcf_ptc][pcf_pfc] - tm_type_sub_list.append([pid_tpsc, pid_spid, pcf_name, pcf_descr, pcf_curtx, txp_from, txp_altxt]) + tm_type_sub_list.append([pcf_name, pcf_descr, pcf_curtx, txp_from, txp_altxt, plf_offpy, data_type]) return tm_type_sub_list @@ -207,7 +215,7 @@ class TmSecondaryTable(Gtk.Box): self.secondary_treeview = Gtk.TreeView(model=self.secondary_filter) for i, column_title in enumerate( - ["pid_tpsc", "pid_spic", "pcf_name", "pcf_descr", "pcf_curtx", "txp_from", "txp_altxt"] + ["pcf_name", "pcf_descr", "pcf_curtx", "txp_from", "txp_altxt", "plf_offby", "data_type"] ): renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn(column_title, renderer, text=i) diff --git a/Tst/tst/tst.py b/Tst/tst/tst.py index 61e753cb32afb7b822cf99c14cea442a23ace99f..e6debfe3e5286be79ca1f9f653c66b50bf971740 100755 --- a/Tst/tst/tst.py +++ b/Tst/tst/tst.py @@ -23,11 +23,17 @@ import dbus import toolbox import tc_management as tcm import tm_management as tmm +import data_pool_tab as dpt import json_to_barescript import json_to_csv + import spec_to_json +#print("!!!!!!!") +#dictionary_of_data_pool = cfl.get_data_pool_items +#print(dictionary_of_data_pool.keys()) + # creating lists for type and subtype to get rid of duplicate entries, for TC List @@ -343,13 +349,11 @@ class TstAppWindow(Gtk.ApplicationWindow): self.label_widget_telemetry.set_text('TM Table') self.feature_area.append_page(child=self.telemetry, tab_label=self.label_widget_telemetry) - - """ - self.tcm = TCTableClass() - self.label_widget_tcm = Gtk.Label() - self.label_widget_tcm.set_text('TC Table') - self.feature_area.append_page(child=self.tcm, tab_label=self.label_widget_tcm) - """ + # data pool list tab + self.data_pool_tab = dpt.DataPoolTable() + self.label_widget_data_pool = Gtk.Label() + self.label_widget_data_pool.set_text('Data Pool') + self.feature_area.append_page(child=self.data_pool_tab, tab_label=self.label_widget_data_pool)