43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
|
|
# This code taken from:
|
|
# http://stackoverflow.com/questions/8290740/simple-versatile-and-re-usable-entry-dialog-sometimes-referred-to-as-input-dia
|
|
|
|
import gi
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gtk as gtk
|
|
|
|
|
|
class EntryDialog(gtk.MessageDialog):
|
|
def __init__(self, *args, **kwargs):
|
|
'''
|
|
Creates a new EntryDialog. Takes all the arguments of the usual
|
|
MessageDialog constructor plus one optional named argument
|
|
"default_value" to specify the initial contents of the entry.
|
|
'''
|
|
if 'default_value' in kwargs:
|
|
default_value = kwargs['default_value']
|
|
del kwargs['default_value']
|
|
else:
|
|
default_value = ''
|
|
super(EntryDialog, self).__init__(*args, **kwargs)
|
|
entry = gtk.Entry()
|
|
entry.set_text(str(default_value))
|
|
entry.connect("activate",
|
|
lambda ent, dlg, resp: dlg.response(resp),
|
|
self, gtk.ResponseType.OK)
|
|
self.vbox.pack_end(entry, True, True, 0)
|
|
self.vbox.show_all()
|
|
self.entry = entry
|
|
|
|
def set_value(self, text):
|
|
self.entry.set_text(text)
|
|
|
|
def run(self):
|
|
result = super(EntryDialog, self).run()
|
|
if result == gtk.ResponseType.OK:
|
|
text = self.entry.get_text()
|
|
else:
|
|
text = None
|
|
return text
|