commit 650ec62401fe22c763eb0f5f07dfe4e8127ff31b Author: rra Date: Mon Jul 6 18:00:12 2020 +0200 init diff --git a/README.md b/README.md new file mode 100644 index 0000000..e095d94 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# pom + + +You need python3 and also: + +`sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0` + +To run: `python3 pom.py` + +To edit interface: open `main.glade` in Glade + +Useful resources: + + + + + + diff --git a/main.glade b/main.glade new file mode 100644 index 0000000..1e0eafc --- /dev/null +++ b/main.glade @@ -0,0 +1,143 @@ + + + + + + True + False + preferences-other + + + False + False + dialog-ok + + + True + False + vertical + + + True + False + 12 + 0:00:00 + + + + + + + + False + True + 4 + 1 + + + + + True + False + 18 + 18 + 8 + + + Start + True + True + True + + + + True + True + 4 + 0 + + + + + Pause + True + True + True + Pause the timer + + + + True + True + 4 + 1 + + + + + Restart + True + True + True + Stop the timer + + + + True + True + 4 + 2 + + + + + False + False + 8 + 2 + + + + + + + True + False + 0 + True + + + True + True + Switch to work or break mode + center + True + + + + + True + False + + + 3 + + + + + True + True + True + 6 + image1 + True + + + end + 5 + + + + + + diff --git a/pom.py b/pom.py new file mode 100644 index 0000000..3369c94 --- /dev/null +++ b/pom.py @@ -0,0 +1,111 @@ + + +import gi +import time +import datetime +import timeit +import threading + +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, GLib + +class Main: + def __init__(self): + self.timer = None + self.event = None + self.timer_running = False + + self.builder = Gtk.Builder() + self.builder.add_from_file('main.glade') + #self.builder.add_from_file('secondtry.glade') + self.builder.connect_signals(self) + + # button = self.builder.get_object("button") + # button.connect("clicked", self.printText) + + window = self.builder.get_object("Main") + window.connect('delete-event', Gtk.main_quit) + window.show() + + self.time_display = self.builder.get_object("time_display") + self.mode_switch = self.builder.get_object('modeSwitch') + self.mode_switch.connect('notify::active', self.work_break_switch) + + self.POMTIME = 25 * 60 + self.BREAKTIME = 5 * 60 + self.LONGBREAK = 30 * 60 + + self.time_left = self.POMTIME + + def updateDisplay(self,time_left): + self.clock = str(datetime.timedelta(seconds = self.time_left)) + self.time_display.set_text(self.clock) + + def countdown(self): + #self.time_left + future = datetime.datetime.now() + datetime.timedelta(seconds=self.time_left) + + if self.timer_running: + while not self.event.is_set(): + self.updateDisplay(self.time_left) + self.time_left -= 1 + + time.sleep(1) + + if datetime.datetime.now() >= future: + if self.mode_switch.get_active(): + self.time_left = self.POMTIME + print('swith on') + self.mode_switch.set_active(False) + else: + self.time_left = self.BREAKTIME + print('swith off') + self.mode_switch.set_active(True) + + # add alarm or whatev here + + #can add an auto continue? + self.pauseCountdown('') + + + def work_break_switch(self, switch, active): + if self.mode_switch.get_active(): + state = "Pomtime" + self.time_left = self.POMTIME + else: + state = "Breaktime" + self.time_left = self.BREAKTIME + + print("Switch was turned to", state) + self.updateDisplay(self.time_left) + self.pauseCountdown('') + + def startCountdown(self,button): + print('Pressed start') + if not self.timer_running: + print('Started timer') + self.timer_running = True + self.timer = threading.Thread(target=self.countdown) + self.event = threading.Event() + self.timer.daemon=True + self.timer.start() + + + def pauseCountdown(self,button): + print('Pressed stop') + self.event.set() + self.timer.join() + self.timer_running = False + + def restartCountdown(self, button): + print('Pressed restart') + self.time_left = self.POMTIME + self.work_break_switch(self.mode_switch,'') + self.event.set() + self.startCountdown(button) + + + +if __name__ == '__main__': + main = Main() + Gtk.main()