# SPDX-License-Identifier: WTFPL import os from gi.repository import Gtk from .view import View from yms import gtkutils, combobox, treeview from yms.lookup import Dropdown from yms.model import measurement class MeasurementView(View): def __init__(self, context): super().__init__(context, _("Measurements"), "measurement.ui") self.measure = measurement.Measurement(context.db) # current record self.newrecord = False # measurement units self.dd_unit = self.context.lookup.dropdown(Dropdown.UNIT) self.lst_measurement = Gtk.ListStore(int, str, str, str, str, str) sql = ( "SELECT m.mid, m.mname, m.nval, m.val1, m.val2, m.val3, m.unit, " "m.accuracy, m.note, e.ename " "FROM measurement AS m LEFT OUTER JOIN equipment AS e USING (eid) " "WHERE m.vid=%s " "ORDER BY m.mid" ) self.db.dcur.execute(sql, (context.vessel.vid,)) for row in self.db.dcur.fetchall(): if row['nval'] == 1: value = "{} {}".format(row['val1'], row['unit']) elif row['nval'] == 2: value = "{}x{} {}".format(row['val1'], row['val2'], row['unit']) elif row['nval'] == 3: value = "{}x{}x{} {}".format(row['val1'], row['val2'], row['val3'], row['unit']) else: #invalid value = "#invalid" data = ( row['mid'], row['mname'], value, row['accuracy'], row['ename'], row['note'] or '' ) self.lst_measurement.append(data) treeview.add_column(self.tree['measurement'], _('ID'), 0) treeview.add_column(self.tree['measurement'], _('Measurement'), 1) treeview.add_column(self.tree['measurement'], _('Value'), 2) treeview.add_column(self.tree['measurement'], _('Accuracy'), 3) treeview.add_column(self.tree['measurement'], _('Equipment'), 4) treeview.add_column(self.tree['measurement'], _('Note'), 5) self.tree['measurement'].set_model(self.lst_measurement) # buttons on list page def on_but_new_clicked(self, widget): self.topwidget.set_visible_child(self.box['measure_edit']) def on_but_edit_clicked(self, widget): self.topwidget.set_visible_child(self.box['measure_edit']) def on_but_detail_clicked(self, widget): mid = treeview.get_value(self.tree['measurement'], 0) if not mid: return self.measure.load(mid) self.display_record() self.topwidget.set_visible_child(self.box['measure_detail']) self.button['close'].grab_focus() def on_tvw_measurement_row_activated(self, widget, path, column): mid = treeview.get_value(widget, 0) self.measure.load(mid) self.display_record() self.topwidget.set_visible_child(self.box['measure_detail']) self.button['close'].grab_focus() # buttons on detail page # edit2 uses edit callback def on_but_close_clicked(self, widget): self.topwidget.set_visible_child(self.box['measurement']) def on_but_delete_clicked(self, widget): self.topwidget.set_visible_child(self.box['measurement']) # buttons on edit page def on_but_save_clicked(self, widget): pass def on_but_cancel_clicked(self, widget): self.topwidget.set_visible_child(self.box['measurement']) def display_record(self): self.label['name'].set_text(self.measure.mname) self.label['note'].set_text(self.measure.note or '') def edit_record(self): pass