Native gui some more code
This commit is contained in:
@@ -0,0 +1,32 @@
|
|||||||
|
from gi.repository import Gtk
|
||||||
|
|
||||||
|
def init_named_controls(window, builder):
|
||||||
|
ctrltype = {
|
||||||
|
'lbl': 'label',
|
||||||
|
'ent': 'entry',
|
||||||
|
'but': 'button',
|
||||||
|
'cmb': 'combo',
|
||||||
|
'tvw': 'tree',
|
||||||
|
'spi': 'spin',
|
||||||
|
'txt': 'text',
|
||||||
|
'chk': 'check',
|
||||||
|
'opt': 'radio',
|
||||||
|
'vbx': 'vbox',
|
||||||
|
'hbx': 'hbox',
|
||||||
|
'box': 'box',
|
||||||
|
'tbl': 'table',
|
||||||
|
'mnu': 'menu',
|
||||||
|
'img': 'image',
|
||||||
|
'drw': 'area'
|
||||||
|
}
|
||||||
|
for ctrl in ctrltype.values():
|
||||||
|
setattr(window, ctrl, {})
|
||||||
|
for widget in builder.get_objects():
|
||||||
|
if type(widget) in (Gtk.Adjustment, Gtk.CellRendererText, Gtk.TreeSelection):
|
||||||
|
continue
|
||||||
|
widgetname = Gtk.Buildable.get_name(widget)
|
||||||
|
nameparts = widgetname.partition('_')
|
||||||
|
if (not nameparts[0] in ctrltype.keys()) or (not nameparts[2]):
|
||||||
|
continue
|
||||||
|
var = getattr(window, ctrltype[nameparts[0]])
|
||||||
|
var[nameparts[2]] = widget
|
||||||
+180
@@ -0,0 +1,180 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generated with glade 3.38.2 -->
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk+" version="3.24"/>
|
||||||
|
<object class="GtkWindow" id="wnd_main">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="title" translatable="yes">YMS</property>
|
||||||
|
<signal name="destroy" handler="on_destroy" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButtonBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="homogeneous">True</property>
|
||||||
|
<property name="layout-style">start</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="but_vessel">
|
||||||
|
<property name="label" translatable="yes">Vessel</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="but_company">
|
||||||
|
<property name="label" translatable="yes">Companies</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="but_equipment">
|
||||||
|
<property name="label" translatable="yes">Equipment</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="but_inventory">
|
||||||
|
<property name="label" translatable="yes">Inventory</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="but_provisions">
|
||||||
|
<property name="label" translatable="yes">Provisions</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">4</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="but_projects">
|
||||||
|
<property name="label" translatable="yes">Projects</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">5</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="but_documents">
|
||||||
|
<property name="label" translatable="yes">Documents</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">6</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="lbl_vessel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="label" translatable="yes">empty</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScrolledWindow">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="shadow-type">in</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeView" id="tvw_user">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<child internal-child="selection">
|
||||||
|
<object class="GtkTreeSelection"/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="but_info">
|
||||||
|
<property name="label" translatable="yes">Ok</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
<signal name="clicked" handler="on_but_info_clicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
||||||
@@ -21,6 +21,7 @@ gi.require_version("Gtk", "3.0")
|
|||||||
from gi.repository import GLib, Gtk
|
from gi.repository import GLib, Gtk
|
||||||
|
|
||||||
from yms import database
|
from yms import database
|
||||||
|
from yms import gtkutils
|
||||||
|
|
||||||
cfg = {
|
cfg = {
|
||||||
'cfgfile': '~/.config/ymsgui.conf',
|
'cfgfile': '~/.config/ymsgui.conf',
|
||||||
@@ -29,16 +30,46 @@ cfg = {
|
|||||||
'user': 'yms'
|
'user': 'yms'
|
||||||
}
|
}
|
||||||
|
|
||||||
class Frontend(Gtk.Window):
|
class Frontend():
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
builder = Gtk.Builder()
|
||||||
self.connect("destroy", self.on_destroy)
|
builder.add_from_file("yms/ui/main.ui")
|
||||||
|
builder.connect_signals(self)
|
||||||
|
self.window = builder.get_object("wnd_main")
|
||||||
|
gtkutils.init_named_controls(self, builder)
|
||||||
|
|
||||||
|
# get current vessel id
|
||||||
|
db.cur.execute("SELECT valint FROM settings WHERE userid=0 AND sno=1")
|
||||||
|
row = db.cur.fetchone()
|
||||||
|
if not row:
|
||||||
|
self.vid = 0
|
||||||
|
self.vname = "Ghost"
|
||||||
|
db.cur.execute("INSERT INTO settings (userid, sno, valint) VALUES (0, 1, 0)")
|
||||||
|
db.conn.commit()
|
||||||
|
else:
|
||||||
|
self.vid = row[0]
|
||||||
|
# get vessel infos
|
||||||
|
if self.vid > 0:
|
||||||
|
db.cur.execute("SELECT vesselname, model FROM vessel WHERE vid=%s", (self.vid, ))
|
||||||
|
self.vessel = db.cur.fetchone()
|
||||||
|
print(self.vessel['sesselname'])
|
||||||
|
else:
|
||||||
|
self.vname = "Ghost(0)"
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.show_all()
|
self.label['vessel'].set_text(self.vname)
|
||||||
|
self.window.show_all()
|
||||||
Gtk.main()
|
Gtk.main()
|
||||||
|
|
||||||
|
def on_but_info_clicked(self, widget):
|
||||||
|
|
||||||
|
# Userlist
|
||||||
|
sql = ("SELECT userid, login FROM user ORDER BY login")
|
||||||
|
db.cur.execute(sql)
|
||||||
|
for row in db.cur.fetchall():
|
||||||
|
print(row)
|
||||||
|
|
||||||
def on_destroy(self, widget, data=None):
|
def on_destroy(self, widget, data=None):
|
||||||
Gtk.main_quit()
|
Gtk.main_quit()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user