9a8be46f8a
Well, init function. Point is our calling program shouldn't have to think about windows showing all or GTK main anything! The main trick mentioned last commit wasn't this call to Gtk.main() but rather the if __name__ == '__main__' bit.
72 lines
2.1 KiB
Python
72 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import gi
|
|
gi.require_version('Gtk', '3.0')
|
|
from gi.repository import Gtk, GLib
|
|
|
|
class PromptWindow(Gtk.Window):
|
|
|
|
def __init__(self, task=None):
|
|
|
|
if task is None:
|
|
task = ""
|
|
self.orig_task = task
|
|
|
|
Gtk.Window.__init__(self, title="Pomodoro Prompt")
|
|
self.set_size_request(500, 100)
|
|
self.set_border_width(10)
|
|
|
|
# This is needed to end the thread if the dialog is closed with the X.
|
|
self.connect("destroy", Gtk.main_quit)
|
|
|
|
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
|
|
self.add(vbox)
|
|
|
|
self.entry = Gtk.Entry()
|
|
self.entry.set_text(self.orig_task)
|
|
self.entry.connect("activate", self.save)
|
|
|
|
vbox.pack_start(self.entry, True, True, 0)
|
|
|
|
hbox = Gtk.Box(spacing=6)
|
|
|
|
self.button_ok = Gtk.Button.new_with_label("OK")
|
|
self.button_ok.connect("clicked", self.save)
|
|
hbox.pack_start(self.button_ok, True, True, 0)
|
|
|
|
if task:
|
|
self.button_reset = Gtk.Button.new_with_label("Reset")
|
|
self.button_reset.connect("clicked", self.reset)
|
|
hbox.pack_start(self.button_reset, True, True, 0)
|
|
|
|
vbox.pack_start(hbox, True, True, 0)
|
|
|
|
# self.set_title("Entry")
|
|
|
|
self.show_all()
|
|
Gtk.main()
|
|
|
|
def save(self, item):
|
|
# Note: item is the entry directly if enter is pressed, but the button
|
|
# (i guess) if the button is pressed, so we do not use it.
|
|
self.task = self.entry.get_text()
|
|
# A little concerned this might be sort of the nuclear option here.
|
|
Gtk.main_quit()
|
|
|
|
def reset(self, item):
|
|
self.entry.set_text(self.orig_task)
|
|
|
|
def retrieve(self):
|
|
if self.task:
|
|
return self.task
|
|
else:
|
|
return None
|
|
# started to do conditional like this but maybe main program handles.
|
|
# else if self.orig_task:
|
|
# return "Pomodoro cancelled, original goal was:"
|
|
|
|
|
|
if __name__ == '__main__':
|
|
win = PromptWindow("I'mma tell you what i'm gonna do.")
|
|
tha_task = win.retrieve()
|
|
print(tha_task)
|