Skip to content

Commit

Permalink
First commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Camillo Visini committed Jan 23, 2020
0 parents commit 246d765
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.DS_Store
.idea
__pycache__/
node_modules
venv
build
dist
.npm
.node_repl_history
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
![Header](header.png)

# Pomodoro – macOS Menubar App

Current release: [Pomodoro (Version 0.2)](https://github.com/visini/pomodoro/releases/tag/0.2)
Binary file added header.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added icon.icns
Binary file not shown.
63 changes: 63 additions & 0 deletions pomodoro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import rumps


class PomodoroApp(object):
def __init__(self):
self.config = {
"app_name": "Pomodoro",
"start": "Start Timer",
"pause": "Pause Timer",
"continue": "Continue Timer",
"stop": "Stop Timer",
"break_message": "Time is up! Take a break :)",
"interval": 1500
}
self.app = rumps.App(self.config["app_name"])
self.timer = rumps.Timer(self.on_tick, 1)
self.interval = self.config["interval"]
self.set_up_menu()
self.start_pause_button = rumps.MenuItem(title=self.config["start"], callback=self.start_timer)
self.stop_button = rumps.MenuItem(title=self.config["stop"], callback=None)
self.app.menu = [self.start_pause_button, self.stop_button]

def set_up_menu(self):
self.timer.stop()
self.timer.count = 0
self.app.title = "🍅"

def on_tick(self, sender):
time_left = sender.end - sender.count
mins = time_left // 60 if time_left >= 0 else time_left // 60 + 1
secs = time_left % 60 if time_left >= 0 else (-1 * time_left) % 60
if mins == 0 and time_left < 0:
rumps.notification(title=self.config["app_name"], subtitle=self.config["break_message"], message='')
self.stop_timer()
self.stop_button.set_callback(None)
else:
self.stop_button.set_callback(self.stop_timer)
self.app.title = '{:2d}:{:02d}'.format(mins, secs)
sender.count += 1

def start_timer(self, sender):
if sender.title.lower().startswith(("start", "continue")):
if sender.title == self.config["start"]:
self.timer.count = 0
self.timer.end = self.interval
sender.title = self.config["pause"]
self.timer.start()
else:
sender.title = self.config["continue"]
self.timer.stop()

def stop_timer(self):
self.set_up_menu()
self.stop_button.set_callback(None)
self.start_pause_button.title = self.config["start"]

def run(self):
self.app.run()


if __name__ == '__main__':
app = PomodoroApp()
app.run()
21 changes: 21 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from setuptools import setup

APP = ['pomodoro.py']
DATA_FILES = []
OPTIONS = {
'argv_emulation': True,
'iconfile': 'icon.icns',
'plist': {
'CFBundleShortVersionString': '0.2.0',
'LSUIElement': True,
},
'packages': ['rumps'],
}

setup(
app=APP,
name='Pomodoro',
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'], install_requires=['rumps']
)

0 comments on commit 246d765

Please sign in to comment.