예제 #1
0
    def _get_check_column(modobj, show_all_buttons):
        # Button to check
        button_check = widget.Button("Check", modobj.check)

        if modobj.parent.globalsave and show_all_buttons is False:
            return widget.Columns([button_check])

        # Button to revert to previously saved settings
        button_cancel = widget.Button("Cancel", modobj.cancel)
        # Button to apply (and check again)
        button_apply = widget.Button("Apply", modobj.apply)

        return widget.Columns(
            [button_check, button_cancel, button_apply, ('weight', 2, blank)])
예제 #2
0
    def _create_radiobutton_widget(cls, default_data):
        label = widget.TextLabel(('editlbl', default_data["label"]))
        callback = default_data.get("callback", None)

        choices_list = default_data.get("choices")
        if not choices_list:
            choices_list = ["Yes", "No"]
        choices = widget.ChoicesGroup(choices_list,
                                      default_value=choices_list[0],
                                      fn=callback)
        columns = widget.Columns([('weight', 2, label),
                                  ('weight', 3, choices)])
        # Attach choices rb_group so we can use it later
        columns.rb_group = choices.rb_group
        return columns
예제 #3
0
 def _create_button_widget(cls, default_data):
     button = widget.Button(default_data.get('label', ''),
                            default_data.get('callback'))
     return widget.Columns([button])
예제 #4
0
    def screenUI(cls,
                 modobj,
                 headertext,
                 fields,
                 defaults,
                 showallbuttons=False,
                 buttons_visible=True):

        log.debug("Preparing screen UI for %s" % modobj.name)
        #Define text labels, text fields, and buttons first
        header_content = []
        for text in headertext:
            if isinstance(text, str):
                header_content.append(urwid.Text(text))
            else:
                header_content.append(text)

        edits = []
        toolbar = modobj.parent.footer
        for key in fields:
            #Example: key = hostname, label = Hostname, value = fuel-pm
            if key == "blank":
                edits.append(blank)
            elif defaults[key]["value"] == "radio":
                label = widget.TextLabel(defaults[key]["label"])
                if "choices" in defaults[key]:
                    choices_list = defaults[key]["choices"]
                else:
                    choices_list = ["Yes", "No"]
                choices = widget.ChoicesGroup(choices_list,
                                              default_value="Yes",
                                              fn=modobj.radioSelect)
                columns = widget.Columns([('weight', 2, label),
                                          ('weight', 3, choices)])
                #Attach choices rb_group so we can use it later
                columns.rb_group = choices.rb_group
                edits.append(columns)
            elif defaults[key]["value"] == "label":
                edits.append(widget.TextLabel(defaults[key]["label"]))
            else:
                ispassword = "******" in key.upper()
                caption = defaults[key]["label"]
                default = defaults[key]["value"]
                tooltip = defaults[key]["tooltip"]
                edits.append(
                    widget.TextField(key,
                                     caption,
                                     23,
                                     default,
                                     tooltip,
                                     toolbar,
                                     ispassword=ispassword))

        listbox_content = []
        listbox_content.extend(header_content)
        listbox_content.append(blank)
        listbox_content.extend(edits)
        listbox_content.append(blank)

        #Wrap buttons into Columns so it doesn't expand and look ugly
        if buttons_visible:
            #Button to check
            button_check = widget.Button("Check", modobj.check)
            #Button to revert to previously saved settings
            button_cancel = widget.Button("Cancel", modobj.cancel)
            #Button to apply (and check again)
            button_apply = widget.Button("Apply", modobj.apply)

            if modobj.parent.globalsave and showallbuttons is False:
                check_col = widget.Columns([button_check])
            else:
                check_col = widget.Columns([
                    button_check, button_cancel, button_apply,
                    ('weight', 2, blank)
                ])
            listbox_content.append(check_col)

        #Add everything into a ListBox and return it
        listwalker = widget.TabbedListWalker(listbox_content)
        screen = urwid.ListBox(listwalker)
        modobj.edits = edits
        modobj.walker = listwalker
        modobj.listbox_content = listbox_content
        return screen