class HelpView(urwid.Frame):
    def __init__(self):
        self.load_help()
        self.ftext = urwid.Text("Dummy")
        self.filler = urwid.Filler(self.ftext)
        self.parser = HelpParser(logger=ilog)
        return super(HelpView, self).__init__(self.filler, urwid.Text("Hilfe-Ansicht"))

    def load_help(self):
        """ Parse the yaml-file with the help information
        """
        try:
            path = find_resource("record_help.yaml")
            with open(path, "r") as f:
                self.helpmap = yaml.load(f)
                ilog.debug("help-file successfully loaded")
        except IOError:
            ilog.warn("help-file could not be opened! - no help availiable")
            self.helpmap = None
        except yaml.YAMLError as e:
            ilog.warn("help-file could not be parsed! - no help availiable")
            ilog.warn("Error in help-file: %s" % e)

    def show_topic(self, arguments):
        text = []
        arg0 = arguments[0]
        if not self.helpmap:
            ilog.warn("Help not avaliable (look for previous errors)")
            return False
        if not arguments[0] in self.helpmap:
            ilog.info("Help on the topic %s could not be found" % arg0)
            return False
        topic = self.helpmap
        while arguments:
            arg = arguments.pop()
            if not arg in topic:
                ilog.info("Help on the subtopic %s could not be found." % arg)
                return False
            topic = topic[arg]
        if "usage" in topic:
            text.append(("help_usage", topic["usage"] + "\n\n"))
        ilog.debug("Calling Parser for topic %s" % arg0)
        text.extend(self.parser.parse(topic["help"]))
        self.ftext.set_text(text)
        return True
 def __init__(self):
     self.load_help()
     self.ftext = urwid.Text("Dummy")
     self.filler = urwid.Filler(self.ftext)
     self.parser = HelpParser(logger=ilog)
     return super(HelpView, self).__init__(self.filler, urwid.Text("Hilfe-Ansicht"))