crussh/EntryDialog.py

43 lines
1.4 KiB
Python
Raw Permalink Normal View History

2019-06-02 12:51:06 +00:00
#!/usr/bin/env python3
2013-07-19 21:46:53 +00:00
# This code taken from:
# http://stackoverflow.com/questions/8290740/simple-versatile-and-re-usable-entry-dialog-sometimes-referred-to-as-input-dia
2019-06-02 12:51:06 +00:00
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk as gtk
2013-07-19 21:46:53 +00:00
class EntryDialog(gtk.MessageDialog):
def __init__(self, *args, **kwargs):
'''
Creates a new EntryDialog. Takes all the arguments of the usual
2019-06-02 12:51:06 +00:00
MessageDialog constructor plus one optional named argument
2013-07-19 21:46:53 +00:00
"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)
2019-06-02 12:51:06 +00:00
entry = gtk.Entry()
2013-07-19 21:46:53 +00:00
entry.set_text(str(default_value))
2019-06-02 12:51:06 +00:00
entry.connect("activate",
lambda ent, dlg, resp: dlg.response(resp),
self, gtk.ResponseType.OK)
2013-07-19 21:46:53 +00:00
self.vbox.pack_end(entry, True, True, 0)
self.vbox.show_all()
self.entry = entry
2019-06-02 12:51:06 +00:00
2013-07-19 21:46:53 +00:00
def set_value(self, text):
self.entry.set_text(text)
2019-06-02 12:51:06 +00:00
2013-07-19 21:46:53 +00:00
def run(self):
result = super(EntryDialog, self).run()
2019-06-02 12:51:06 +00:00
if result == gtk.ResponseType.OK:
2013-07-19 21:46:53 +00:00
text = self.entry.get_text()
else:
text = None
2019-06-02 12:51:06 +00:00
return text