49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
#!/usr/bin/python
|
|
"""A simple GTK3 graphical dialog helper that can be used as a fallback if zenity is not available
|
|
Compatible with python 2 or 3 with the gi bindings.
|
|
|
|
Three modes are available:
|
|
test: accepts no arguments, returns 0 if the python dependencies are available, or 1 if not
|
|
error: show a gtk-3 error dialog
|
|
accepts arguments --title and --text
|
|
question: show a gtk-3 question dialog
|
|
accepts arguments --title and --text
|
|
returns 0 on Yes, or 1 on No
|
|
"""
|
|
|
|
import sys
|
|
|
|
try:
|
|
import argparse
|
|
import gi
|
|
gi.require_version('Gtk', '3.0')
|
|
from gi.repository import Gtk
|
|
except ImportError:
|
|
sys.exit(1)
|
|
|
|
class Error():
|
|
def __init__(self, title, text):
|
|
dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, title)
|
|
dialog.format_secondary_text(text)
|
|
dialog.run()
|
|
dialog.destroy()
|
|
|
|
class Question():
|
|
def __init__(self, title, text):
|
|
dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, title)
|
|
dialog.format_secondary_text(text)
|
|
response = dialog.run()
|
|
dialog.destroy()
|
|
sys.exit(0 if response == Gtk.ResponseType.YES else 1)
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('type', choices=['error', 'question', 'test'])
|
|
parser.add_argument('--title', type=str, required=False, default='')
|
|
parser.add_argument('--text', type=str, required=False, default='')
|
|
args = parser.parse_args()
|
|
if args.type == 'question':
|
|
Question(args.title, args.text.replace('\\n', '\n'))
|
|
elif args.type == 'error':
|
|
Error(args.title, args.text.replace('\\n', '\n'))
|