#!/usr/bin/python3
# vim:et:sta:sts=4:sw=4:ts=8:tw=79:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
import os
import sys
import getopt

# Internationalization
import locale
import gettext
locale.setlocale(locale.LC_ALL, '')
locale.bindtextdomain("gnsu", "/usr/share/locale")
gettext.bindtextdomain("gnsu", "/usr/share/locale")
gettext.textdomain("gnsu")
_ = gettext.gettext


class Gnsu():

    def on_button_ok_clicked(self, widget, data=None):
        self.window.hide()
        print(self.entry_password.get_text())
        Gtk.main_quit()

    def on_button_cancel_clicked(self, widget, data=None):
        Gtk.main_quit()
        sys.exit(1)

    def gtk_main_quit(self, widget, data=None):
        Gtk.main_quit()
        sys.exit(1)

    def __init__(self):
        user = None
        title = None
        permission_denied = False
        try:
            argv = sys.argv[1:]
            opts, args = getopt.getopt(
                argv, "u:t:p", ['user=', 'title=', 'permission-denied'])
            for opt, arg in opts:
                if opt in ("-u", "--user"):
                    user = arg
                elif opt in ("-t", "--title"):
                    title = arg
                elif opt in ("-p", "--permission-denied"):
                    permission_denied = True
        except getopt.GetoptError:
            sys.exit(1)
        if (user is None) or (title is None):
            sys.exit(1)
        builder = Gtk.Builder()
        builder.set_translation_domain("gnsu")
        if os.path.exists('gnsu-askpass.ui'):
            builder.add_from_file('gnsu-askpass.ui')
        elif os.path.exists('/usr/share/gnsu/gnsu-askpass.ui'):
            builder.add_from_file('/usr/share/gnsu/gnsu-askpass.ui')
        self.window = builder.get_object('gnsu_askpass')
        self.window.set_title(title)
        self.label_msg = builder.get_object('label_msg')
        self.entry_password = builder.get_object('entry_password')
        msg = _('Please enter the password for %s:') % user
        if permission_denied:
            msg = "{}\n\n{}".format(_('Permission denied'), msg)
        self.label_msg.set_text(msg)
        builder.connect_signals(self)

if __name__ == "__main__":
    app = Gnsu()
    app.window.show()
    Gtk.main()
