Esempio n. 1
0
    def JoinWindow(self, title, text, allowCancel=0, width=50, entryWidth=37, buttons=["Join"], hlp=None):
        bb = ButtonBar(self.screen, buttons)
        t = TextboxReflowed(width, text)

        sg = Grid(2, 2)

        entryList = []
        e = Entry(entryWidth)
        sg.setField(Label("User name"), 0, 0, padding=(0, 0, 1, 0), anchorLeft=1)
        sg.setField(e, 1, 0, anchorLeft=1)
        entryList.append(e)
        e = Entry(entryWidth, password=1)
        sg.setField(Label("Password"), 0, 1, padding=(0, 0, 1, 0), anchorLeft=1)
        sg.setField(e, 1, 1, anchorLeft=1)
        entryList.append(e)

        g = GridForm(self.screen, title, 1, 3)

        g.add(t, 0, 0, padding=(0, 0, 0, 1))
        g.add(sg, 0, 1, padding=(0, 0, 0, 1))
        g.add(bb, 0, 2, growx=1)

        result = g.runOnce()

        entryValues = []
        for entry in entryList:
            entryValues.append(entry.value())

        return (bb.buttonPressed(result), tuple(entryValues))
Esempio n. 2
0
    def __init__(self,
                 margin,
                 title,
                 message=None,
                 vendor_text=None,
                 args=None):
        self.debug_mode = args is not None and args.debug

        self.screen = SnackScreen()

        # set usual colors
        for i in colorsets["ROOT"], colorsets["ROOTTEXT"], colorsets[
                "HELPLINE"], colorsets["EMPTYSCALE"]:
            self.screen.setColor(i, "white", "blue") if not self.debug_mode else \
                self.screen.setColor(i, "brightgreen", "black")

        # remove silly default help text
        self.screen.popHelpLine()

        # write static messages
        self.screen.drawRootText((self.screen.width - len(message)) // 2, 4,
                                 message)
        self.screen.drawRootText(-len(vendor_text) - 2, -2, vendor_text)

        if self.debug_mode:
            # write some static debug information
            self.screen.drawRootText(1, 1, _("DEBUG MODE"))
            self.screen.drawRootText(
                2, 2, "screen {}×{}".format(self.screen.width,
                                            self.screen.height))
            self.screen.drawRootText(2, 3, "file {}".format(args.input))

        self.window_width = self.screen.width - margin * 2

        # assemble our progress bar
        self.scale = Scale(self.window_width, 100)
        self.spacer = Label("")
        self.taskbox = Textbox(self.window_width - 2, 1, "")
        self.messagebox = Textbox(self.window_width - 8, 1, " . . . ")

        self.grid = Grid(1, 4)
        self.grid.setField(self.scale, 0, 0)
        self.grid.setField(self.spacer, 0, 1)
        self.grid.setField(self.taskbox, 0, 2)
        self.grid.setField(self.messagebox, 0, 3)
        self.grid.place(1, 1)

        self.screen.gridWrappedWindow(self.grid, title)
        self.form = Form()
        self.form.add(self.scale)
        self.form.add(self.taskbox)
        self.form.add(self.messagebox)
        self.form.draw()
        self.screen.refresh()
    def create_grid_from_fields(self, fields):
        '''
        Takes a series of fields names and values and returns a Grid composed
        of Labels for that screen.

        If the value element is specified, it can be either a String or else
        one of the UI widgets.

        Keyword arguments:
        fields -- A two-dimensional array of label and value pairs.
        '''
        grid = Grid(2, len(fields))
        row = 0
        for field in fields:
            if field[1] is not None:
                grid.setField(Label("%s : " % field[0]), 0, row, anchorRight=1)
                # if the value is a String, then wrap it in a Label
                # otherwise just add it
                value = field[1]
                if type(value) == StringType:
                    value = Label(field[1])
                grid.setField(value, 1, row, anchorLeft=1)
            else:
                # here the label itself might be a string or a widget
                value = field[0]
                if type(value) == StringType:
                    value = Label(field[0])
                grid.setField(value, 0, row)
            row += 1

        return grid
Esempio n. 4
0
    def __init__(self, screen, title, item_count=0):
        self.screen = screen
        self.title = title
        self.current_item = 0
        self.item_count = item_count

        g = Grid(1, 2)
        self.fnm_label = Textbox(40, 2, 'Downloading...', 0, 0)
        self.scale = Scale(40, 100)
        self.scale.set(0)
        g.setField(self.fnm_label, 0, 1)
        g.setField(self.scale, 0, 0)
        self.screen.gridWrappedWindow(g, title)
        self.f = Form()
        self.f.add(self.scale)
        self.f.add(self.fnm_label)
def ConfirmationWindow(screen, title, infolist, width=40, buttons=["Start", "Modify", "Save", "Exit"], help=None):
    from snack import ButtonBar, Label, GridFormHelp, Textbox

    bb = ButtonBar(screen, buttons)
    ig = Grid(2, len(infolist))
    i = 0
    for _info in infolist:
        ig.setField(Label("%s: " % _info.getName()), 0, i, padding=(0, 0, 1, 0), anchorLeft=1)
        ig.setField(Label("%s" % _info.getValue()), 1, i, padding=(0, 0, 1, 0), anchorLeft=1)
        i = i + 1

    g = GridFormHelp(screen, title, help, 1, 3)

    g.add(Textbox(20, 1, "Current settings:"), 0, 0, padding=(0, 0, 0, 1), anchorLeft=1)
    g.add(ig, 0, 1, padding=(0, 0, 0, 1))
    g.add(bb, 0, 2, growx=1)

    result = g.runOnce()

    return bb.buttonPressed(result)
    def __init__(self, screen, info):
        """
        @param buttonarray is an array in the form ([radiobutton, widget], ...)
        """
        from snack import RadioGroup, Textbox, Entry, FLAG_DISABLED

        self.group = RadioGroup()
        self.list = []
        self.item = 0
        self.info = info

        Grid.__init__(self, 1, len(info.getSuggestions()) + 6)

        self.setField(Textbox(20, 1, "Default:"), 0, 0, padding=(0, 0, 0, 0), anchorLeft=1)
        db = self.group.add(info.getDefault(), info.getDefault(), info.getValue() == info.getDefault())

        # print >> sys.stderr, "default: %s, value %s" %(info.getDefault(), info.getValue())

        db.setCallback(self._hasManualToggled)
        self.setField(db, 0, 1, (0, 0, 0, 0), anchorLeft=1, growx=1)
        # self.setField(dt, 1, self.item)
        self.setField(Textbox(20, 1, "Detected:"), 0, 2, padding=(0, 0, 0, 0), anchorLeft=1)

        self.item = self.item + 3
        self.list.append(db)
        for value in info.getSuggestions():
            b = self.group.add(value, value, info.getValue() == value)
            b.setCallback(self._hasManualToggled)
            self.setField(b, 0, self.item, (0, 0, 1, 0), anchorLeft=1, growx=1)
            # self.setField(t, 1, self.item)
            self.item = self.item + 1

        self.setField(Textbox(20, 1, "Manual:"), 0, self.item, padding=(0, 0, 0, 0), anchorLeft=1)
        self.item = self.item + 1
        self.dm = self.group.add("edit", "manual", info.getValue() == info.getManual())
        self.dm.setCallback(self._hasManualToggled)
        self.manualentry = Entry(15, info.getManual())
        self.manualentry.setFlags(FLAG_DISABLED, sense=not (self.dm.selected()))
        self.setField(self.dm, 0, self.item, (0, 0, 1, 0), anchorLeft=1, growx=1)
        self.setField(self.manualentry, 0, self.item + 1, (0, 0, 1, 0), anchorLeft=1)
        self._hasManualToggled()
Esempio n. 7
0
def ExtEntryRadioWindow(screen, title, text, prompts,
                        allowCancel=1, width=40, entryWidth=20,
                        buttons=['Ok', 'Cancel'], help=None, radio_prompts=''):

    bb = ButtonBar(screen, buttons, compact=1)
    t = TextboxReflowed(width, text)
    radio_grid = Grid(3, len(radio_prompts))
    sg = Grid(2, len(prompts))

    max_name_length = 0
    for n in prompts:
        if isinstance(n, types.TupleType):
            n = n[0]
        if len(n) > max_name_length:
            max_name_length = len(n)

    radioList = parse_radio_prompts(radio_prompts, radio_grid, entryWidth,
                                    max_name_length)
    entryList = []
    entry_row = 0
    for n in prompts:
        if isinstance(n, types.TupleType):
            (n, e) = n
            if (type(e) in types.StringTypes):
                e = Entry(entryWidth, e)
        else:
            e = Entry(entryWidth)

        sg.setField(Label(n), 0, entry_row, padding=(0, 0, 1, 0), anchorLeft=1)
        sg.setField(e, 1, entry_row, anchorLeft=1)
        entry_row += 1
        entryList.append(e)

    g = GridFormHelp(screen, title, help, 1, 4)
    g.add(t, 0, 0, padding=(0, 0, 0, 1))
    g.add(radio_grid, 0, 1, padding=(0, 0, 0, 1))
    g.add(sg, 0, 2, padding=(0, 0, 0, 1))
    g.add(bb, 0, 3, growx=1)

    result = g.runOnce()

    entryValues = []
    for rowRadioList in radioList:
        for radio, radio_text in rowRadioList:
            if radio.selected():
                entryValues.append(radio_text)
                break
    for entry in entryList:
        entryValues.append(entry.value())

    return (result, bb.buttonPressed(result), tuple(entryValues))
Esempio n. 8
0
    def __init__(self, screen, title, item_count=0):
        self.screen = screen
        self.title = title
        self.current_item = 0
        self.item_count = item_count

        g = Grid(1, 2)
        self.fnm_label = Textbox(40, 2, 'Downloading...', 0, 0)
        self.scale = Scale(40, 100)
        self.scale.set(0)
        g.setField(self.fnm_label, 0, 1)
        g.setField(self.scale, 0, 0)
        self.screen.gridWrappedWindow(g, title)
        self.f = Form()
        self.f.add(self.scale)
        self.f.add(self.fnm_label)
Esempio n. 9
0
def ExtEntryWindow(screen, title, text, prompts,
                   allowCancel=1, width=40, entryWidth=20,
                   buttons=['Ok', 'Cancel'], help=None):

    bb = ButtonBar(screen, buttons, compact=1)
    t = TextboxReflowed(width, text)

    count = 0
    for n in prompts:
        count = count + 1

    sg = Grid(2, count)

    count = 0
    entryList = []
    for n in prompts:
        if isinstance(n, types.TupleType):
            (n, e) = n
            if (type(e) in types.StringTypes):
                e = Entry(entryWidth, e)
        else:
            e = Entry(entryWidth)

        sg.setField(Label(n), 0, count, padding=(0, 0, 1, 0), anchorLeft=1)
        sg.setField(e, 1, count, anchorLeft=1)
        count = count + 1
        entryList.append(e)

    g = GridFormHelp(screen, title, help, 1, 3)

    g.add(t, 0, 0, padding=(0, 0, 0, 1))
    g.add(sg, 0, 1, padding=(0, 0, 0, 1))
    g.add(bb, 0, 2, growx=1)

    result = g.runOnce()

    entryValues = []
    count = 0
    for n in prompts:
        entryValues.append(entryList[count].value())
        count = count + 1

    return (result, bb.buttonPressed(result), tuple(entryValues))
def ConfirmationWindow(screen,
                       title,
                       infolist,
                       width=40,
                       buttons=['Start', 'Modify', 'Save', 'Exit'],
                       help=None):
    from snack import ButtonBar, Label, GridFormHelp, Textbox
    bb = ButtonBar(screen, buttons)
    ig = Grid(2, len(infolist))
    i = 0
    for _info in infolist:
        ig.setField(Label("%s: " % _info.getName()),
                    0,
                    i,
                    padding=(0, 0, 1, 0),
                    anchorLeft=1)
        ig.setField(Label("%s" % _info.getValue()),
                    1,
                    i,
                    padding=(0, 0, 1, 0),
                    anchorLeft=1)
        i = i + 1

    g = GridFormHelp(screen, title, help, 1, 3)

    g.add(Textbox(20, 1, "Current settings:"),
          0,
          0,
          padding=(0, 0, 0, 1),
          anchorLeft=1)
    g.add(ig, 0, 1, padding=(0, 0, 0, 1))
    g.add(bb, 0, 2, growx=1)

    result = g.runOnce()

    return (bb.buttonPressed(result))
Esempio n. 11
0
    def form(self):
        elements = Grid(2, 8)
        is_network_up = network_up()
        if is_network_up:
            header_message = "RHEV-M Configuration"
        else:
            header_message = "Network Down, RHEV-M Configuration Disabled"
        heading = Label(header_message)
        self.ncs.screen.setColor(customColorset(1), "black", "magenta")
        heading.setColors(customColorset(1))
        elements.setField(heading, 0, 0, anchorLeft=1)
        rhevm_grid = Grid(2, 2)
        rhevm_grid.setField(Label("Management Server:"), 0, 0, anchorLeft=1)
        self.rhevm_server = Entry(25, "")
        self.rhevm_server.setCallback(self.valid_rhevm_server_callback)
        rhevm_grid.setField(Label("Management Server Port:"),
                            0,
                            1,
                            anchorLeft=1)
        self.rhevm_server_port = Entry(6, "", scroll=0)
        self.rhevm_server_port.setCallback(
            self.valid_rhevm_server_port_callback)
        rhevm_grid.setField(self.rhevm_server,
                            1,
                            0,
                            anchorLeft=1,
                            padding=(2, 0, 0, 1))
        rhevm_grid.setField(self.rhevm_server_port,
                            1,
                            1,
                            anchorLeft=1,
                            padding=(2, 0, 0, 1))
        elements.setField(rhevm_grid, 0, 1, anchorLeft=1, padding=(0, 0, 0, 0))
        elements.setField(Label(""), 0, 2, anchorLeft=1)
        self.verify_rhevm_cert = Checkbox(
            "Connect to RHEV Manager and Validate Certificate", isOn=True)
        elements.setField(self.verify_rhevm_cert,
                          0,
                          3,
                          anchorLeft=1,
                          padding=(0, 0, 0, 0))
        elements.setField(Label(""), 0, 4, anchorLeft=1)

        elements.setField(Label("Set RHEV-M Admin Password"),
                          0,
                          5,
                          anchorLeft=1)
        pw_elements = Grid(3, 3)

        pw_elements.setField(Label("Password: "******"Confirm Password: "******"", wrap=1)

        elements.setField(pw_elements, 0, 6, anchorLeft=1)
        elements.setField(self.pw_msg, 0, 7, padding=(0, 0, 0, 0))

        inputFields = [
            self.rhevm_server, self.rhevm_server_port, self.verify_rhevm_cert,
            self.root_password_1, self.root_password_2
        ]
        if not is_network_up:
            for field in inputFields:
                field.setFlags(FLAG_DISABLED, FLAGS_SET)

        try:
            rhevm_server = get_rhevm_config()
            rhevm_server, rhevm_port = rhevm_server.split(":")
            if rhevm_server.startswith("None"):
                self.rhevm_server.set("")
            else:
                self.rhevm_server.set(rhevm_server)
            self.rhevm_server_port.set(rhevm_port)

        except:
            pass
        return [Label(""), elements]
Esempio n. 12
0
File: engine.py Progetto: ekohl/vdsm
    def form(self):
        elements = Grid(2, 8)
        is_network_up = network_up()
        if is_network_up:
            header_message = "oVirt Engine Configuration"
        else:
            header_message = "Network Down, oVirt Engine Configuration Disabled"
        heading = Label(header_message)
        self.ncs.screen.setColor(customColorset(1), "black", "magenta")
        heading.setColors(customColorset(1))
        elements.setField(heading, 0, 0, anchorLeft = 1)
        rhevm_grid = Grid(2,2)
        rhevm_grid.setField(Label("Management Server:"), 0, 0, anchorLeft = 1)
        self.rhevm_server = Entry(25, "")
        self.rhevm_server.setCallback(self.valid_rhevm_server_callback)
        rhevm_grid.setField(Label("Management Server Port:"), 0, 1, anchorLeft = 1)
        self.rhevm_server_port = Entry(6, "", scroll = 0)
        self.rhevm_server_port.setCallback(self.valid_rhevm_server_port_callback)
        rhevm_grid.setField(self.rhevm_server, 1, 0, anchorLeft = 1, padding=(2, 0, 0, 1))
        rhevm_grid.setField(self.rhevm_server_port, 1, 1, anchorLeft = 1, padding=(2, 0, 0, 1))
        elements.setField(rhevm_grid, 0, 1, anchorLeft = 1, padding = (0,0,0,0))
        elements.setField(Label(""), 0, 2, anchorLeft = 1)
        self.verify_rhevm_cert = Checkbox("Connect to oVirt Engine and Validate Certificate", isOn=True)
        elements.setField(self.verify_rhevm_cert, 0, 3, anchorLeft = 1, padding = (0,0,0,0))
        elements.setField(Label(""), 0, 4, anchorLeft = 1)

        elements.setField(Label("Set oVirt Engine Admin Password"), 0, 5, anchorLeft = 1)
        pw_elements = Grid(3,3)

        pw_elements.setField(Label("Password: "******"Confirm Password: "******"", wrap=1)

        elements.setField(pw_elements, 0, 6, anchorLeft=1)
        elements.setField(self.pw_msg, 0, 7, padding = (0,0,0,0))

        inputFields = [self.rhevm_server, self.rhevm_server_port, self.verify_rhevm_cert,
                       self.root_password_1, self.root_password_2]
        if not is_network_up:
            for field in inputFields:
                field.setFlags(FLAG_DISABLED, FLAGS_SET)

        try:
            rhevm_server = get_rhevm_config()
            rhevm_server,rhevm_port = rhevm_server.split(":")
            if rhevm_server.startswith("None"):
                self.rhevm_server.set("")
            else:
                self.rhevm_server.set(rhevm_server)
            self.rhevm_server_port.set(rhevm_port)

        except:
            pass
        return [Label(""), elements]
Esempio n. 13
0
def EntryWindow(screen, title, text, prompts, allowCancel=1, width=40,
                entryWidth=20, buttons=[ 'Ok', 'Cancel' ], help=None, 
                timer_ms=None, anchorLeft=0, anchorRight=1, 
                secondary_message=None, secondary_message_width=None, 
                run_type=RT_EXECUTEANDPOP):

    # Dustin: Added timer_ms parameter. Added secondary_message arguments. 
    #         Added result boolean for whether ESC was pressed. Added 
    #         anchorLeft and anchorRight as arguments to this function. Added 
    #         secondary_message (test below primary text). Results are now
    #         dictionaries. Added auto_pop parameter.

    bb = ButtonBar(screen, buttons);
    t = TextboxReflowed(width, text)

    count = 0
    for n in prompts:
        count = count + 1

    sg = Grid(2, count)

    count = 0
    entryList = []
    for n in prompts:
        if (type(n) == tuple):
            (n, e) = n
            if issubclass(e.__class__, str):
                e = Entry(entryWidth, e)
        else:
            e = Entry(entryWidth)

        sg.setField(Label(n), 0, count, padding=(0, 0, 1, 0), 
                    anchorLeft=anchorLeft, anchorRight=anchorRight)
        sg.setField(e, 1, count, anchorLeft = 1)
        count = count + 1
        entryList.append(e)

    g = GridFormHelp(screen, title, help, 1, 3 + (1 if secondary_message else 
                                                  0))
    
    row = 0

    g.add(t, 0, row, padding = (0, 0, 0, 1))
    row += 1

    if secondary_message:
        if not secondary_message_width:
            secondary_message_width = width
    
        t2 = TextboxReflowed(secondary_message_width, secondary_message)
        g.add(t2, 0, row, padding = (0, 0, 0, 1))
        row += 1

    g.add(sg, 0, row, padding = (0, 0, 0, 1))
    row += 1
    
    g.add(bb, 0, row, growx = 1)
    row += 1

    if timer_ms:
        g.form.w.settimer(timer_ms)

    (button, is_esc) = ActivateWindow(g, run_type, bb)

    entryValues = []
    count = 0
    for n in prompts:
        entryValues.append(entryList[count].value())
        count = count + 1

    return {'button': button, 
            'is_esc': is_esc, 
            'values': tuple(entryValues), 
            'grid':   g,
           }
    def __init__(self, screen, info):
        """
        @param buttonarray is an array in the form ([radiobutton, widget], ...)
        """
        from snack import RadioGroup, Textbox, Entry, FLAG_DISABLED
        self.group = RadioGroup()
        self.list = []
        self.item = 0
        self.info = info

        Grid.__init__(self, 1, len(info.getSuggestions()) + 6)

        self.setField(Textbox(20, 1, "Default:"),
                      0,
                      0,
                      padding=(0, 0, 0, 0),
                      anchorLeft=1)
        db = self.group.add(info.getDefault(), info.getDefault(), \
                            info.getValue() == info.getDefault())

        #print >> sys.stderr, "default: %s, value %s" %(info.getDefault(), info.getValue())

        db.setCallback(self._hasManualToggled)
        self.setField(db, 0, 1, (0, 0, 0, 0), anchorLeft=1, growx=1)
        #self.setField(dt, 1, self.item)
        self.setField(Textbox(20, 1, "Detected:"),
                      0,
                      2,
                      padding=(0, 0, 0, 0),
                      anchorLeft=1)

        self.item = self.item + 3
        self.list.append(db)
        for value in info.getSuggestions():
            b = self.group.add(value, value, info.getValue() == value)
            b.setCallback(self._hasManualToggled)
            self.setField(b, 0, self.item, (0, 0, 1, 0), anchorLeft=1, growx=1)
            #self.setField(t, 1, self.item)
            self.item = self.item + 1

        self.setField(Textbox(20, 1, "Manual:"),
                      0,
                      self.item,
                      padding=(0, 0, 0, 0),
                      anchorLeft=1)
        self.item = self.item + 1
        self.dm = self.group.add("edit", "manual",
                                 info.getValue() == info.getManual())
        self.dm.setCallback(self._hasManualToggled)
        self.manualentry = Entry(15, info.getManual())
        self.manualentry.setFlags(FLAG_DISABLED,
                                  sense=not (self.dm.selected()))
        self.setField(self.dm,
                      0,
                      self.item, (0, 0, 1, 0),
                      anchorLeft=1,
                      growx=1)
        self.setField(self.manualentry,
                      0,
                      self.item + 1, (0, 0, 1, 0),
                      anchorLeft=1)
        self._hasManualToggled()