0
0
Fork 0
mirror of https://github.com/boltgolt/howdy.git synced 2024-09-19 09:51:19 +02:00

Started on glade ui, removed howdy-gtk-auth symlink

This commit is contained in:
boltgolt 2020-12-05 13:44:40 +01:00
parent 11eaccbdfb
commit a151338dac
No known key found for this signature in database
GPG key ID: BECEC9937E1AAE26
6 changed files with 354 additions and 6 deletions

View file

@ -1 +1 @@
/usr/lib/howdy-gtk/authsticky.py /usr/bin/howdy-gtk-auth
/usr/lib/howdy-gtk/init.py /usr/bin/howdy-gtk

4
howdy-gtk/src/authsticky.py Executable file → Normal file
View file

@ -1,5 +1,3 @@
#!/usr/bin/env python3
# Shows a floating window when authenticating
import cairo
import gi
@ -72,8 +70,6 @@ class StickyWindow(gtk.Window):
self.show_all()
self.resize(windowWidth, windowHeight)
print("init")
# Add a timeout to catch input passed from compare.py
gobject.timeout_add(100, self.catch_stdin)

8
howdy-gtk/src/init.py Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# Opens auth ui if requested, otherwise starts normal ui
import sys
if "--start-auth-ui" in sys.argv:
import authsticky
else:
import window

264
howdy-gtk/src/ui.glade Normal file
View file

@ -0,0 +1,264 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface domain="howdy">
<requires lib="gtk+" version="3.10"/>
<object class="GtkWindow" id="mainwindow">
<property name="can_focus">False</property>
<property name="title" translatable="yes" context="Window title">Howdy Configuration</property>
<property name="window_position">center</property>
<property name="icon">logo.png</property>
<child>
<object class="GtkNotebook" id="notebook1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkPaned" id="paned1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">5</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="userlabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
<property name="margin_left">10</property>
<property name="label" translatable="yes">Active user:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="userlist">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button2">
<property name="label" translatable="yes">Add new model</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="margin_right">10</property>
<property name="xalign">0.46000000834465027</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="adduserbutton">
<property name="label" translatable="yes">Add new user</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image_position">bottom</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="resize">False</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<object class="GtkBox" id="modellistbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkSeparator" id="separator1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_bottom">5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkTreeView" id="treeview3">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection3"/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</object>
<packing>
<property name="tab_expand">True</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="modelstab">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Models</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="videotab">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Video</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child type="tab">
<placeholder/>
</child>
</object>
</child>
</object>
<object class="GtkBox" id="modelrow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_right">10</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="box4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="box5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="modelrowname">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
<property name="lines">3</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</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="GtkButton" id="button1">
<property name="label" translatable="yes">Delete</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</interface>

80
howdy-gtk/src/window.py Normal file
View file

@ -0,0 +1,80 @@
# Opens and controls main ui window
import cairo
import gi
import signal
import sys
import os
import subprocess
# Make sure we have the libs we need
gi.require_version("Gtk", "3.0")
gi.require_version("Gdk", "3.0")
# Import them
from gi.repository import Gtk as gtk
from gi.repository import Gdk as gdk
class MainWindow(gtk.Window):
def __init__(self):
"""Initialize the sticky window"""
# Make the class a GTK window
gtk.Window.__init__(self)
self.connect("destroy", self.exit)
self.builder = gtk.Builder()
self.builder.add_from_file("./ui.glade")
self.builder.connect_signals(self)
self.window = self.builder.get_object("mainwindow")
self.userlist = self.builder.get_object("userlist")
self.modellistbox = self.builder.get_object("modellistbox")
filelist = os.listdir("/lib/security/howdy/models")
self.active_user = ""
for file in filelist:
self.userlist.append_text(file[:-4])
if not self.active_user:
self.active_user = file[:-4]
self.userlist.set_active(0)
self.load_model_list()
self.window.show_all()
# self.resize(300, 300)
# Start GTK main loop
gtk.main()
def load_model_list(self):
output = subprocess.check_output(["howdy", "list", "-U", self.active_user])
lines = output.decode("utf-8") .split("\n")[3:-2]
print(lines)
newrow = self.builder.get_object("modelrow")
print(newrow.set_name("wat"))
self.modellistbox.add(newrow)
newrow2 = self.builder.get_object("modelrow")
# print(newrow.get_object("modelrowname"))
self.modellistbox.add(newrow2)
def exit(self, widget, context):
"""Cleanly exit"""
gtk.main_quit()
sys.exit()
# Make sure we quit on a SIGINT
signal.signal(signal.SIGINT, signal.SIG_DFL)
# Open the GTK window
window = MainWindow()

View file

@ -122,7 +122,7 @@ face_encoder = None
# Start the auth ui
try:
gtk_proc = subprocess.Popen(["python3", "-u", "../howdy-gtk/src/authsticky.py"], stdin=subprocess.PIPE, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
gtk_proc = subprocess.Popen(["howdy-gtk", "--start-auth-ui"], stdin=subprocess.PIPE, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
except FileNotFoundError as err:
pass