From 36d230bf6b2eb0490c5cb0ad4dc4aa37cdb97d69 Mon Sep 17 00:00:00 2001 From: Radek SPRTA Date: Sun, 5 Feb 2017 20:14:46 +0100 Subject: [PATCH] Use local time representation --- safeeyes/safeeyes/TrayIcon.py | 186 +++++++++++++------------- safeeyes/safeeyes/config/lang/cs.json | 4 +- safeeyes/safeeyes/config/lang/en.json | 4 +- safeeyes/safeeyes/config/lang/es.json | 4 +- safeeyes/safeeyes/config/lang/fr.json | 4 +- safeeyes/safeeyes/config/lang/hu.json | 4 +- safeeyes/safeeyes/config/lang/pt.json | 4 +- safeeyes/safeeyes/config/lang/ru.json | 4 +- safeeyes/safeeyes/config/lang/sk.json | 4 +- safeeyes/safeeyes/config/lang/ta.json | 4 +- 10 files changed, 104 insertions(+), 118 deletions(-) diff --git a/safeeyes/safeeyes/TrayIcon.py b/safeeyes/safeeyes/TrayIcon.py index 26c8fab..28df634 100644 --- a/safeeyes/safeeyes/TrayIcon.py +++ b/safeeyes/safeeyes/TrayIcon.py @@ -17,6 +17,7 @@ # along with this program. If not, see . import gi +import locale import logging gi.require_version('Gtk', '3.0') gi.require_version('AppIndicator3', '0.1') @@ -27,116 +28,119 @@ from gi.repository import AppIndicator3 as appindicator active = True APPINDICATOR_ID = 'safeeyes' + class TrayIcon: - def __init__(self, language, on_show_settings, on_show_about, on_enable, on_disable, on_quite): - logging.info("Initialize the tray icon") - self.on_show_settings = on_show_settings - self.on_show_about = on_show_about - self.on_quite = on_quite - self.on_enable = on_enable - self.on_disable = on_disable - self.language = language - self.dateTime = None - # Construct the tray icon - self.indicator = appindicator.Indicator.new(APPINDICATOR_ID, "safeeyes_enabled", appindicator.IndicatorCategory.APPLICATION_STATUS) - self.indicator.set_status(appindicator.IndicatorStatus.ACTIVE) + def __init__(self, language, on_show_settings, on_show_about, on_enable, on_disable, on_quite): + logging.info("Initialize the tray icon") + self.on_show_settings = on_show_settings + self.on_show_about = on_show_about + self.on_quite = on_quite + self.on_enable = on_enable + self.on_disable = on_disable + self.language = language + self.dateTime = None - # Construct the context menu - self.menu = Gtk.Menu() + # Construct the tray icon + self.indicator = appindicator.Indicator.new( + APPINDICATOR_ID, "safeeyes_enabled", appindicator.IndicatorCategory.APPLICATION_STATUS) + self.indicator.set_status(appindicator.IndicatorStatus.ACTIVE) - # Next break info menu item - self.item_info = Gtk.ImageMenuItem() - img_timer = Gtk.Image() - img_timer.set_from_icon_name("safeeyes_timer", 16) - self.item_info.set_image(img_timer) + # Construct the context menu + self.menu = Gtk.Menu() - self.item_separator = Gtk.SeparatorMenuItem() + # Next break info menu item + self.item_info = Gtk.ImageMenuItem() + img_timer = Gtk.Image() + img_timer.set_from_icon_name("safeeyes_timer", 16) + self.item_info.set_image(img_timer) - # Enable menu item with check box - self.item_enable = Gtk.CheckMenuItem() - self.item_enable.set_active(True) - self.item_enable.connect('activate', self.on_toogle_enable) + self.item_separator = Gtk.SeparatorMenuItem() - # Settings menu item - self.item_settings = Gtk.MenuItem() - self.item_settings.connect('activate', self.show_settings) + # Enable menu item with check box + self.item_enable = Gtk.CheckMenuItem() + self.item_enable.set_active(True) + self.item_enable.connect('activate', self.on_toogle_enable) - # About menu item - self.item_about = Gtk.MenuItem() - self.item_about.connect('activate', self.show_about) + # Settings menu item + self.item_settings = Gtk.MenuItem() + self.item_settings.connect('activate', self.show_settings) - # Quit menu item - self.item_quit = Gtk.MenuItem() - self.item_quit.connect('activate', self.quit_safe_eyes) + # About menu item + self.item_about = Gtk.MenuItem() + self.item_about.connect('activate', self.show_about) - self.set_labels(language) + # Quit menu item + self.item_quit = Gtk.MenuItem() + self.item_quit.connect('activate', self.quit_safe_eyes) - # Append all menu items and show the menu - self.menu.append(self.item_info) - self.menu.append(self.item_separator) - self.menu.append(self.item_enable) - self.menu.append(self.item_settings) - self.menu.append(self.item_about) - self.menu.append(self.item_quit) - self.menu.show_all() + self.set_labels(language) - self.indicator.set_menu(self.menu) + # Append all menu items and show the menu + self.menu.append(self.item_info) + self.menu.append(self.item_separator) + self.menu.append(self.item_enable) + self.menu.append(self.item_settings) + self.menu.append(self.item_about) + self.menu.append(self.item_quit) + self.menu.show_all() - def set_labels(self, language): - self.language = language - active = self.item_enable.get_active() - if active: - if self.dateTime: - self.set_next_break_info(self.dateTime) - else: - self.item_info.set_label(self.language['messages']['safe_eyes_is_disabled']) - self.item_enable.set_label(self.language['ui_controls']['enable']) - self.item_settings.set_label(self.language['ui_controls']['settings']) - self.item_about.set_label(self.language['ui_controls']['about']) - self.item_quit.set_label(self.language['ui_controls']['quit']) + self.indicator.set_menu(self.menu) - def show_icon(self): - GLib.idle_add(lambda: self.indicator.set_status(appindicator.IndicatorStatus.ACTIVE)) + def set_labels(self, language): + self.language = language + active = self.item_enable.get_active() + if active: + if self.dateTime: + self.set_next_break_info(self.dateTime) + else: + self.item_info.set_label(self.language['messages'][ + 'safe_eyes_is_disabled']) + self.item_enable.set_label(self.language['ui_controls']['enable']) + self.item_settings.set_label(self.language['ui_controls']['settings']) + self.item_about.set_label(self.language['ui_controls']['about']) + self.item_quit.set_label(self.language['ui_controls']['quit']) - def hide_icon(self): - GLib.idle_add(lambda: self.indicator.set_status(appindicator.IndicatorStatus.PASSIVE)) + def show_icon(self): + GLib.idle_add(lambda: self.indicator.set_status( + appindicator.IndicatorStatus.ACTIVE)) - def quit_safe_eyes(self, *args): - self.on_quite() + def hide_icon(self): + GLib.idle_add(lambda: self.indicator.set_status( + appindicator.IndicatorStatus.PASSIVE)) - def show_settings(self, *args): - self.on_show_settings() + def quit_safe_eyes(self, *args): + self.on_quite() - def show_about(self, *args): - self.on_show_about() + def show_settings(self, *args): + self.on_show_settings() - def next_break_time(self, dateTime): - logging.info("Update next break information") - self.dateTime = dateTime - self.set_next_break_info(self.dateTime) + def show_about(self, *args): + self.on_show_about() - def set_next_break_info(self, dateTime): - formatted_time = dateTime.strftime("%l:%M") - if dateTime.hour == 12: - message = self.language['messages']['next_break_at_noon'].format(formatted_time) - elif dateTime.hour < 12: - message = self.language['messages']['next_break_at_am'].format(formatted_time) - else: - message = self.language['messages']['next_break_at_pm'].format(formatted_time) + def next_break_time(self, dateTime): + logging.info("Update next break information") + self.dateTime = dateTime + self.set_next_break_info(self.dateTime) - GLib.idle_add(lambda: self.item_info.set_label(message)) + def set_next_break_info(self, dateTime): + formatted_time = dateTime.strftime(locale.nl_langinfo(locale.T_FMT)) + message = self.language['messages'][ + 'next_break_at'].format(formatted_time) - def on_toogle_enable(self, *args): - active = self.item_enable.get_active() - if active: - logging.info("Enable Safe Eyes") - self.indicator.set_icon("safeeyes_enabled") - self.item_info.set_sensitive(True) - self.on_enable() - else: - logging.info("Disable Safe Eyes") - self.indicator.set_icon("safeeyes_disabled") - self.item_info.set_label(self.language['messages']['safe_eyes_is_disabled']) - self.item_info.set_sensitive(False) - self.on_disable() + GLib.idle_add(lambda: self.item_info.set_label(message)) + + def on_toogle_enable(self, *args): + active = self.item_enable.get_active() + if active: + logging.info("Enable Safe Eyes") + self.indicator.set_icon("safeeyes_enabled") + self.item_info.set_sensitive(True) + self.on_enable() + else: + logging.info("Disable Safe Eyes") + self.indicator.set_icon("safeeyes_disabled") + self.item_info.set_label(self.language['messages'][ + 'safe_eyes_is_disabled']) + self.item_info.set_sensitive(False) + self.on_disable() diff --git a/safeeyes/safeeyes/config/lang/cs.json b/safeeyes/safeeyes/config/lang/cs.json index ca35f37..906b2fa 100644 --- a/safeeyes/safeeyes/config/lang/cs.json +++ b/safeeyes/safeeyes/config/lang/cs.json @@ -20,9 +20,7 @@ "messages": { "ready_for_a_break": "Připravte se na přestávku za {} sekund", "safe_eyes_is_disabled": "Safe Eyes je zakázáno", - "next_break_at_noon": "Příští přestávka v {}", - "next_break_at_am": "Příští přestávka v {} dopoledne", - "next_break_at_pm": "Příští přestávka v {} odpoledne" + "next_break_at": "Příští přestávka v {}" }, "ui_controls": { "skip": "Přeskočit", diff --git a/safeeyes/safeeyes/config/lang/en.json b/safeeyes/safeeyes/config/lang/en.json index 3694e5a..44688a1 100644 --- a/safeeyes/safeeyes/config/lang/en.json +++ b/safeeyes/safeeyes/config/lang/en.json @@ -20,9 +20,7 @@ "messages": { "ready_for_a_break": "Ready for a break in {} seconds", "safe_eyes_is_disabled": "Safe Eyes is disabled", - "next_break_at_noon": "Next break at {}", - "next_break_at_am": "Next break at {} AM", - "next_break_at_pm": "Next break at {} PM" + "next_break_at": "Next break at {}" }, "ui_controls": { "skip": "Skip", diff --git a/safeeyes/safeeyes/config/lang/es.json b/safeeyes/safeeyes/config/lang/es.json index ce3cd70..4a39f26 100644 --- a/safeeyes/safeeyes/config/lang/es.json +++ b/safeeyes/safeeyes/config/lang/es.json @@ -20,9 +20,7 @@ "messages": { "ready_for_a_break": "Listo para una pausa en {} segundos", "safe_eyes_is_disabled": "Safe Eyes está desactivado", - "next_break_at_noon": "Próxima pausa a las {}", - "next_break_at_am": "Próxima pausa a las {} de la mañana", - "next_break_at_pm": "Próxima pausa a las {} de la tarde/noche" + "next_break_at": "Próxima pausa a las {}" }, "ui_controls": { "skip": "Cancelar", diff --git a/safeeyes/safeeyes/config/lang/fr.json b/safeeyes/safeeyes/config/lang/fr.json index 092eb90..de84a9b 100644 --- a/safeeyes/safeeyes/config/lang/fr.json +++ b/safeeyes/safeeyes/config/lang/fr.json @@ -20,9 +20,7 @@ "messages": { "ready_for_a_break": "Prêt pour une pause dans {} secondes", "safe_eyes_is_disabled": "Safe Eyes est désactivé", - "next_break_at_noon": "Prochaine pause à {}", - "next_break_at_am": "Prochaine pause à {} AM", - "next_break_at_pm": "Prochaine pause à {} PM" + "next_break_at": "Prochaine pause à {}" }, "ui_controls": { "skip": "Annuler", diff --git a/safeeyes/safeeyes/config/lang/hu.json b/safeeyes/safeeyes/config/lang/hu.json index 8623ea8..e44e4bb 100644 --- a/safeeyes/safeeyes/config/lang/hu.json +++ b/safeeyes/safeeyes/config/lang/hu.json @@ -19,9 +19,7 @@ "messages": { "ready_for_a_break": "Tervezett szünet {} másodperc múlva!", "safe_eyes_is_disabled": "Safe Eyes kikapcsolva", - "next_break_at_noon": "A következő szünet {}", - "next_break_at_am": "A következő szünet de. {}", - "next_break_at_pm": "A következő szünet du. {}" + "next_break_at": "A következő szünet {}" }, "ui_controls": { "skip": "Átugrás", diff --git a/safeeyes/safeeyes/config/lang/pt.json b/safeeyes/safeeyes/config/lang/pt.json index 3ae1f3a..ff4d397 100644 --- a/safeeyes/safeeyes/config/lang/pt.json +++ b/safeeyes/safeeyes/config/lang/pt.json @@ -20,9 +20,7 @@ "messages": { "ready_for_a_break": "Pronto para uma pausa em {} segundos", "safe_eyes_is_disabled": "Safe Eyes está desabilitado", - "next_break_at_noon": "Próxima pausa em {}", - "next_break_at_am": "Próxima pausa em {} AM", - "next_break_at_pm": "Próxima pausa em {} PM" + "next_break_at": "Próxima pausa em {}" }, "ui_controls": { "skip": "Pular", diff --git a/safeeyes/safeeyes/config/lang/ru.json b/safeeyes/safeeyes/config/lang/ru.json index ef96f28..121e520 100644 --- a/safeeyes/safeeyes/config/lang/ru.json +++ b/safeeyes/safeeyes/config/lang/ru.json @@ -20,9 +20,7 @@ "messages": { "ready_for_a_break": "Приготовьтесь к перерыву через {} секунд", "safe_eyes_is_disabled": "Safe Eyes отключен", - "next_break_at_noon": "Следующий перерыв в {}", - "next_break_at_am": "Следующий перерыв в {} утра", - "next_break_at_pm": "Следующий перерыв в {} вечера" + "next_break_at": "Следующий перерыв в {}" }, "ui_controls": { "skip": "Пропустить", diff --git a/safeeyes/safeeyes/config/lang/sk.json b/safeeyes/safeeyes/config/lang/sk.json index 1414b8e..1d0eaa6 100644 --- a/safeeyes/safeeyes/config/lang/sk.json +++ b/safeeyes/safeeyes/config/lang/sk.json @@ -20,9 +20,7 @@ "messages": { "ready_for_a_break": "Priprav sa na prestávku o {} sekúnd", "safe_eyes_is_disabled": "Safe Eyes sú zablokované", - "next_break_at_noon": "Ďalšia prestávka o {}", - "next_break_at_am": "Ďalšia prestávka o {} doobeda", - "next_break_at_pm": "Ďalšia prestávka o {} poobede" + "next_break_at": "Ďalšia prestávka o {}" }, "ui_controls": { "skip": "Preskočiť", diff --git a/safeeyes/safeeyes/config/lang/ta.json b/safeeyes/safeeyes/config/lang/ta.json index ccbfa5e..cef4435 100644 --- a/safeeyes/safeeyes/config/lang/ta.json +++ b/safeeyes/safeeyes/config/lang/ta.json @@ -20,9 +20,7 @@ "messages": { "ready_for_a_break": "{} விநாடிகளில் இடைவேளைக்கு தயாராகுங்கள்", "safe_eyes_is_disabled": "Safe Eyes நிறுத்தி வைக்கப்பட்டுள்ளது", - "next_break_at_noon": "அடுத்த இடைவேளை {}", - "next_break_at_am": "அடுத்த இடைவேளை {} முற்பகல்", - "next_break_at_pm": "அடுத்த இடைவேள {} பிற்பகல்" + "next_break_at": "அடுத்த இடைவேளை {}" }, "ui_controls": { "cancel": "ரத்து",