# SPDX-License-Identifier: WTFPL import os import gi gi.require_version("Gtk", "3.0") from gi.repository import GLib, Gtk, Gdk from .view import View from yms import gtkutils, combobox, treeview from yms.model import storage from yms.lookup import Dropdown class StorageView(View): def __init__(self, context): super().__init__(context, _("Storage"), "storage.ui") self.storage = storage.Storage(context.db) # current record self.newrecord = False self.lst_storage = Gtk.ListStore(int, str, str, str) sql = ( "SELECT sid, sname, CONCAT(x, ',', y, ',', z) AS position, remarks " "FROM storage " "WHERE vid=%s " "ORDER BY sname" ) self.db.cur.execute(sql, (context.vessel.vid,)) for row in self.db.cur.fetchall(): self.lst_storage.append(row) treeview.add_column(self.tree['storage'], _('ID'), 0) treeview.add_column(self.tree['storage'], _('Name'), 1) treeview.add_column(self.tree['storage'], _('Position'), 2) treeview.add_column(self.tree['storage'], _('Remarks'), 3) self.tree['storage'].set_model(self.lst_storage) combodict = self.context.lookup.dropdown(Dropdown.STORAGE_TYPE) combobox.load_from_dict(self.combo['type'], combodict) combodict = self.context.lookup.dropdown(Dropdown.STORAGE_TYPE) combobox.load_from_dict(self.combo['type'], combodict) combodict = self.context.lookup.enum('storage.capaunit') combobox.load_from_dict(self.combo['unit'], combodict) def load_list(self): pass def display_record(self): self.label['name'].set_text(self.storage.sname) self.label['remarks'].set_text(self.storage.remarks or '') def edit_record(self): self.entry['sname'].set_text(self.storage.sname) self.spin['x'].set_value(self.storage.x) self.spin['y'].set_value(self.storage.y) self.spin['z'].set_value(self.storage.z) self.text['remarks'].get_buffer().set_text(self.storage.remarks or '') # buttons on list page def on_but_new_clicked(self, widget): self.newrecord = True self.label['title_edit'].set_text("Add new Storage") self.topwidget.set_visible_child(self.box['stor_edit']) def on_but_edit_clicked(self, widget): sid = treeview.get_value(self.tree['storage'], 0) if sid is None: return self.newrecord = False self.label['title_edit'].set_text("Edit Storage") self.storage.load(sid) self.edit_record() self.topwidget.set_visible_child(self.box['stor_edit']) def on_but_detail_clicked(self, widget): sid = treeview.get_value(self.tree['storage'], 0) self.storage.load(sid) self.display_record() self.topwidget.set_visible_child(self.box['stor_detail']) # buttons on detail page # edit2 uses edit callback def on_but_close_clicked(self, widget): self.topwidget.set_visible_child(self.box['storage']) def on_but_delete_clicked(self, widget): self.topwidget.set_visible_child(self.box['storage']) self.newrecord = False # buttons on edit page def on_but_save_clicked(self, widget): self.newrecord = False # check mandatory fields sname = self.entry['sname'].get_text().strip() if not sname: return # here be dragons def on_but_cancel_clicked(self, widget): self.topwidget.set_visible_child(self.box['storage']) self.newrecord = False