pomodoroprompt/prompt_window.py
mlncn 9a8be46f8a Bring triggers to actually show window into main function
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.
2021-05-02 12:11:53 -04:00

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)