howdy/howdy-gtk/src/tab_models.py
2021-01-04 12:38:10 +01:00

118 lines
3.6 KiB
Python

import subprocess
import time
from i18n import _
from gi.repository import Gtk as gtk
def on_user_change(self, select):
self.active_user = select.get_active_text()
self.load_model_list()
def on_user_add(self, button):
# Open question dialog
dialog = gtk.MessageDialog(parent=self, flags=gtk.DialogFlags.MODAL, type=gtk.MessageType.QUESTION, buttons=gtk.ButtonsType.OK_CANCEL)
dialog.set_title(_("Confirm User Creation"))
dialog.props.text = _("Please enter the username of the user you want to add to Howdy")
# Create the input field
entry = gtk.Entry()
# Add a label to ask for a model name
hbox = gtk.HBox()
hbox.pack_start(gtk.Label(_("Username:")), False, 5, 5)
hbox.pack_end(entry, True, True, 5)
# Add the box and show the dialog
dialog.vbox.pack_end(hbox, True, True, 0)
dialog.show_all()
# Show dialog
response = dialog.run()
entered_user = entry.get_text()
dialog.destroy()
if response == gtk.ResponseType.OK:
self.userlist.append_text(entered_user)
self.userlist.set_active(self.userlist.items)
self.userlist.items += 1
self.active_user = entered_user
self.load_model_list()
def on_model_add(self, button):
# Open question dialog
dialog = gtk.MessageDialog(parent=self, flags=gtk.DialogFlags.MODAL, type=gtk.MessageType.QUESTION, buttons=gtk.ButtonsType.OK_CANCEL)
dialog.set_title(_("Confirm Model Creation"))
dialog.props.text = _("Please enter a name for the new model, 24 characters max")
# Create the input field
entry = gtk.Entry()
# Add a label to ask for a model name
hbox = gtk.HBox()
hbox.pack_start(gtk.Label(_("Model name:")), False, 5, 5)
hbox.pack_end(entry, True, True, 5)
# Add the box and show the dialog
dialog.vbox.pack_end(hbox, True, True, 0)
dialog.show_all()
# Show dialog
response = dialog.run()
entered_name = entry.get_text()
dialog.destroy()
if response == gtk.ResponseType.OK:
dialog = gtk.MessageDialog(parent=self, flags=gtk.DialogFlags.MODAL)
dialog.set_title(_("Creating Model"))
dialog.props.text = _("Please look directly into the camera")
dialog.show_all()
time.sleep(1)
status, output = subprocess.getstatusoutput(["howdy add -y -U " + self.active_user + " '" + entered_name + "'"])
dialog.destroy()
if status != 0:
dialog = gtk.MessageDialog(parent=self, flags=gtk.DialogFlags.MODAL, type=gtk.MessageType.ERROR, buttons=gtk.ButtonsType.CLOSE)
dialog.set_title(_("Howdy Error"))
dialog.props.text = _("Error while adding model, error code {}: \n\n").format(str(status))
dialog.format_secondary_text(output)
dialog.run()
dialog.destroy()
self.load_model_list()
def on_model_delete(self, button):
selection = self.treeview.get_selection()
(listmodel, rowlist) = selection.get_selected_rows()
if len(rowlist) == 1:
id = listmodel.get_value(listmodel.get_iter(rowlist[0]), 0)
name = listmodel.get_value(listmodel.get_iter(rowlist[0]), 2)
dialog = gtk.MessageDialog(parent=self, flags=gtk.DialogFlags.MODAL, buttons=gtk.ButtonsType.OK_CANCEL)
dialog.set_title(_("Confirm Model Deletion"))
dialog.props.text = _("Are you sure you want to delete model {id} ({name})?").format(id=id, name=name)
response = dialog.run()
dialog.destroy()
if response == gtk.ResponseType.OK:
status, output = subprocess.getstatusoutput(["howdy remove " + id + " -y -U " + self.active_user])
if status != 0:
dialog = gtk.MessageDialog(parent=self, flags=gtk.DialogFlags.MODAL, type=gtk.MessageType.ERROR, buttons=gtk.ButtonsType.CLOSE)
dialog.set_title(_("Howdy Error"))
dialog.props.text = _("Error while deleting model, error code {}: \n\n").format(status)
dialog.format_secondary_text(output)
dialog.run()
dialog.destroy()
self.load_model_list()