From a70c82dc4c4d48e8e50c1f1ac052e14017689be0 Mon Sep 17 00:00:00 2001 From: Tobias Witek Date: Tue, 4 Feb 2020 21:10:05 +0100 Subject: [PATCH] [modules] Add date, time, datetime Add modules to show date, time and date and time. Instead of introducing a "fancy" aliasing mechanism, simply implement time and date in terms of datetime, by inheriting and overwriting selectively. --- modules/date.py | 19 +++++++++++++++++++ modules/datetime.py | 43 +++++++++++++++++++++++++++++++++++++++++++ modules/time.py | 19 +++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 modules/date.py create mode 100644 modules/datetime.py create mode 100644 modules/time.py diff --git a/modules/date.py b/modules/date.py new file mode 100644 index 0000000..38c4e62 --- /dev/null +++ b/modules/date.py @@ -0,0 +1,19 @@ +# pylint: disable=C0111,R0903 + +'''Displays the current date and time. + +Parameters: + * date.format: strftime()-compatible formatting string + * date.locale: locale to use rather than the system default +''' + +from .datetime import Module + +class Module(Module): + def __init__(self, config): + super().__init__(config) + + def default_format(self): + return '%x' + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/modules/datetime.py b/modules/datetime.py new file mode 100644 index 0000000..58d586b --- /dev/null +++ b/modules/datetime.py @@ -0,0 +1,43 @@ +# pylint: disable=C0111,R0903 + +'''Displays the current date and time. + +Parameters: + * datetime.format: strftime()-compatible formatting string + * datetime.locale: locale to use rather than the system default +''' + +from __future__ import absolute_import +import datetime +import locale + +import core.module +import core.widget + +class Module(core.module.Module): + def __init__(self, config): + super().__init__(config, core.widget.Widget(self.full_text)) + # TODO: register callback + #engine.input.register_callback(self, button=bumblebee.input.LEFT_MOUSE, + # cmd='calendar') + self._fmt = self.parameter('format', self.default_format()) + l = locale.getdefaultlocale() + if not l or l == (None, None): + l = ('en_US', 'UTF-8') + lcl = self.parameter('locale', '.'.join(l)) + try: + locale.setlocale(locale.LC_TIME, lcl.split('.')) + except Exception as e: + locale.setlocale(locale.LC_TIME, ('en_US', 'UTF-8')) + + def default_format(self): + return '%x %X' + + def full_text(self): + enc = locale.getpreferredencoding() + retval = datetime.datetime.now().strftime(self._fmt) + if hasattr(retval, 'decode'): + return retval.decode(enc) + return retval + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/modules/time.py b/modules/time.py new file mode 100644 index 0000000..a800103 --- /dev/null +++ b/modules/time.py @@ -0,0 +1,19 @@ +# pylint: disable=C0111,R0903 + +'''Displays the current date and time. + +Parameters: + * time.format: strftime()-compatible formatting string + * time.locale: locale to use rather than the system default +''' + +from .datetime import Module + +class Module(Module): + def __init__(self, config): + super().__init__(config) + + def default_format(self): + return '%X' + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4