Skip to content

Commit

Permalink
Last result tooltip and menu item
Browse files Browse the repository at this point in the history
  • Loading branch information
simpleapps-public committed Dec 7, 2024
1 parent a48332b commit 9c0a87f
Showing 1 changed file with 23 additions and 8 deletions.
31 changes: 23 additions & 8 deletions ping-menubar.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
NSMenuItem,
NSPoint,
NSStatusBar,
NSVariableStatusItemLength,
)
from Foundation import (
NSObject,
Expand Down Expand Up @@ -53,18 +52,25 @@ def init(self):

# Add menu items
self.menu = NSMenu.new()
self.statusitem.setMenu_(self.menu)

self.last_ping_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Last ping: --", None, ""
)
self.menu.addItem_(self.last_ping_item)

self.startup_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Launch at Login", "toggleStartup:", ""
)
self.menu.addItem_(NSMenuItem.separatorItem())
self.startup_item.setTarget_(self)
self.menu.addItem_(self.startup_item)

self.quit_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
"Quit", "terminate:", "q"
)
self.menu.addItem_(NSMenuItem.separatorItem())
self.menu.addItem_(self.quit_item)
self.statusitem.setMenu_(self.menu)
self.menu.addItem_(self.quit_item)

# Add image
self.image = NSImage.alloc().initWithSize_((self.width, BAR_HEIGHT))
Expand All @@ -91,12 +97,12 @@ def schedule_next_update(self, processing_time):
def update_(self, timer):
"""Called every update cycle"""
start = time()
ping_time = self.get_ping_time()
self.times.append(-1 if ping_time is None else ping_time)
self.times.append(self.run_ping())
self.update_last_ping_texts()
self.update_graph()
self.schedule_next_update(time() - start)

def get_ping_time(self) -> Optional[float]:
def run_ping(self) -> Optional[float]:
"""Subprocess call to ping"""
try:
result = subprocess.run(
Expand All @@ -112,6 +118,15 @@ def get_ping_time(self) -> Optional[float]:
pass
return None

def update_last_ping_texts(self):
if self.times[-1] is not None:
status_text = f"Last ping: {self.times[-1]:.3f} ms"
else:
status_text = "Last ping: Failed"

self.last_ping_item.setTitle_(status_text)
self.statusitem.button().setToolTip_(status_text)

def update_graph(self):
self.image.lockFocus()

Expand All @@ -132,7 +147,7 @@ def update_graph(self):
self.statusitem.button().setNeedsDisplay_(True)

def draw_bar(self, value: float, x: int):
if value != -1:
if value is not None:
self.draw_time_bar(value, x)
else:
self.draw_error_bar(x)
Expand Down Expand Up @@ -189,7 +204,7 @@ def toggleStartup_(self, sender):

def main():
app = NSApplication.sharedApplication()
monitor = PingMonitor.alloc().init()
PingMonitor.alloc().init()
app.run()

if __name__ == "__main__":
Expand Down

0 comments on commit 9c0a87f

Please sign in to comment.