X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=hooke%2Fui%2F__init__.py;h=d70bd41425334c4c0b75bac1ff9ccde3fe03f7f3;hb=dadbd81e6d41bfb8c6fd22004d2d12652cd5fca7;hp=38311b4389915de3d906dcc58ce86bd39b48c685;hpb=50e1e1779501f39b0178ae4ac1748ba6960397ae;p=hooke.git diff --git a/hooke/ui/__init__.py b/hooke/ui/__init__.py index 38311b4..d70bd41 100644 --- a/hooke/ui/__init__.py +++ b/hooke/ui/__init__.py @@ -2,15 +2,15 @@ # # This file is part of Hooke. # -# Hooke is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. +# Hooke is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. # -# Hooke is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. +# Hooke is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General +# Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with Hooke. If not, see @@ -22,14 +22,14 @@ import ConfigParser as configparser from .. import version -from ..compat.odict import odict +from ..license import short_license from ..config import Setting -from ..util.pluggable import IsSubclass +from ..util.pluggable import IsSubclass, construct_odict USER_INTERFACE_MODULES = [ 'commandline', - #'gui', + 'gui', ] """List of user interface modules. TODO: autodiscovery """ @@ -52,8 +52,10 @@ class CommandMessage (QueueMessage): a :class:`dict` with `argname` keys and `value` values to be passed to the command. """ - def __init__(self, command, arguments): + def __init__(self, command, arguments=None): self.command = command + if arguments == None: + arguments = {} self.arguments = arguments class UserInterface (object): @@ -86,47 +88,26 @@ class UserInterface (object): except configparser.NoSectionError: self.config = {} - def run(self, hooke, ui_to_command_queue, command_to_ui_queue): + def run(self, commands, ui_to_command_queue, command_to_ui_queue): return # Assorted useful tidbits for subclasses - def _splash_text(self): + def _splash_text(self, extra_info, **kwargs): return (""" Hooke version %s -COPYRIGHT +%s ---- -""" % version()).strip() +""" % (version(), short_license(extra_info, **kwargs))).strip() def _playlist_status(self, playlist): if len(playlist) > 0: - return '%s (%s/%s)' % (playlist.name, playlist._index + 1, + return '%s (%s/%s)' % (playlist.name, playlist.index() + 1, len(playlist)) return 'The playlist %s does not contain any valid force curve data.' \ % self.name -def construct_odict(this_modname, submodnames, class_selector): - """Search the submodules `submodnames` of a module `this_modname` - for class objects for which `class_selector(class)` returns - `True`. These classes are instantiated and stored in the returned - :class:`hooke.compat.odict.odict` in the order in which they were - discovered. - """ - instances = odict() - for submodname in submodnames: - count = len([s for s in submodnames if s == submodname]) - assert count > 0, 'No %s entries: %s' % (submodname, submodnames) - assert count == 1, 'Multiple (%d) %s entries: %s' \ - % (count, submodname, submodnames) - this_mod = __import__(this_modname, fromlist=[submodname]) - submod = getattr(this_mod, submodname) - for objname in dir(submod): - obj = getattr(submod, objname) - if class_selector(obj): - instance = obj() - instances[instance.name] = instance - return instances USER_INTERFACES = construct_odict( this_modname=__name__,