Example #1
0
    def __init__(self, interface, net=None, parent=None):
        QFrame.__init__(self, parent)

        self.interface = None
        self.interface_label = QLabel()
        self.interface_label.setTextFormat(Qt.RichText)
        self.setInterface(interface)

        #synonym for "inside a wizard"
        self.new = net is None
        if self.new:
            net = Net("", IP("0.0.0.0"))

        self.net = net
        self.setWindowTitle(tr("Editing network %s") % self.net.label)

        self.net_ip = NetworkEdit(self, accept_empty=False)

        net_ip_text = "" if self.new else unicode(self.net.net)
        self.net_ip.setText(net_ip_text)

        self.ip_addrs = NetIpListEdit(self.net)

        self.inputs = (self.net_ip, self.ip_addrs)

        self.net_label = OptionnalLine(value=self.net.label, hint=tr('network label'))
        self.net_label.setWhatsThis("<h3>%s</h3>" % tr('Enter a label for this network'))

        self.message_area = MessageArea()
        self.message_area.setWordWrap()

        form = QFormLayout(self)
        form.addRow(tr("Supporting interface"), self.interface_label)
        form.addRow(tr("Network address"), self.net_ip)
        form.addRow(tr("IP addresses on this network"), self.ip_addrs)
        form.addRow(tr("Network label"), self.net_label)
        form.addRow(self.message_area)

        for item in self.inputs + (self.net_label,):
            self.connect(item, SIGNAL('editing done'), self.isValid)

        self.connect(self.net_label, SIGNAL("textChanged(QString)"), self.changeTitle)
Example #2
0
    def buildGUI(self):
        #general setup
        form = QFormLayout(self)

        self.label = OptionnalLine(hint="Optional interface name")
        form.addRow(self.tr("Interface name"), self.label)

        self.speed_group = QButtonGroup()
        self.speed_box = QGroupBox(tr("Force an ethernet speed"))
        speed_layout = QVBoxLayout(self.speed_box)

        self.speed_GFull = QRadioButton(tr("Gigabit full duplex"))
        self.speed_GHalf = QRadioButton(tr("Gigabit half duplex"))
        self.speed_100Full = QRadioButton(tr("100 Mb Full duplex"))
        self.speed_100Half = QRadioButton(tr("100 Mb Half duplex"))
        self.speed_10Full = QRadioButton(tr("10 Mb Full duplex"))
        self.speed_10Half = QRadioButton(tr("10 Mb Half duplex"))

        def toggle(value):
            if value:
                self.speed_GFull.click()

        self.speed_box.setCheckable(True)
        self.speed_box.setChecked(Qt.Unchecked)
        self.connect(self.speed_box, SIGNAL('toggled(bool)'), toggle)

        for item in (
            self.speed_GFull,
            self.speed_GHalf,
            self.speed_100Full,
            self.speed_100Half,
            self.speed_10Full,
            self.speed_10Half,
            ):
            self.speed_group.addButton(item)
            speed_layout.addWidget(item)

        form.addRow(self.speed_box)
Example #3
0
class NetFrame(QFrame):
    def __init__(self, interface, net=None, parent=None):
        QFrame.__init__(self, parent)

        self.interface = None
        self.interface_label = QLabel()
        self.interface_label.setTextFormat(Qt.RichText)
        self.setInterface(interface)

        #synonym for "inside a wizard"
        self.new = net is None
        if self.new:
            net = Net("", IP("0.0.0.0"))

        self.net = net
        self.setWindowTitle(tr("Editing network %s") % self.net.label)

        self.net_ip = NetworkEdit(self, accept_empty=False)

        net_ip_text = "" if self.new else unicode(self.net.net)
        self.net_ip.setText(net_ip_text)

        self.ip_addrs = NetIpListEdit(self.net)

        self.inputs = (self.net_ip, self.ip_addrs)

        self.net_label = OptionnalLine(value=self.net.label, hint=tr('network label'))
        self.net_label.setWhatsThis("<h3>%s</h3>" % tr('Enter a label for this network'))

        self.message_area = MessageArea()
        self.message_area.setWordWrap()

        form = QFormLayout(self)
        form.addRow(tr("Supporting interface"), self.interface_label)
        form.addRow(tr("Network address"), self.net_ip)
        form.addRow(tr("IP addresses on this network"), self.ip_addrs)
        form.addRow(tr("Network label"), self.net_label)
        form.addRow(self.message_area)

        for item in self.inputs + (self.net_label,):
            self.connect(item, SIGNAL('editing done'), self.isValid)

        self.connect(self.net_label, SIGNAL("textChanged(QString)"), self.changeTitle)

    def setInterface(self, interface):
        self.interface = interface
        if interface is None:
            name = tr("unset")
        else:
            name = interface.fullName()
        self.interface_label.setText("<i>%s</i>" % name)

    def changeTitle(self, *args):
        """
        just discarding args after 'self'
        """
        self.emit(SIGNAL('change title'), unicode(self.net_label.value()).strip())

    @validator
    def _validNetIp(self):
        ok, msg = self.net_ip.isValidWithMsg()
        if not ok:
            err = "Network address field is incorrectly specified:<br/>%s"
            return False, tr(err) % msg
        return True, None

    @validator
    def _validIpAddrs(self):
        ok, msg = self.ip_addrs.isValidWithMsg(accept_empty=True)
        if not ok:
            #investigate
            try:
                self.ip_addrs.values()
            except InputException, err:
                return False, err.args[0]

            error_message = tr("IP addresses are incorrectly specified:")
            error_message += "<br/>%s" % msg
            return False, error_message
        return True, None
Example #4
0
class EthernetEditor(QFrame):
    def __init__(self, ethernet, parent=None):
        QFrame.__init__(self, parent)

        self.ethernet = ethernet

        self.buildGUI()
        self.fillValues()

    def buildGUI(self):
        #general setup
        form = QFormLayout(self)

        self.label = OptionnalLine(hint="Optional interface name")
        form.addRow(self.tr("Interface name"), self.label)

        self.speed_group = QButtonGroup()
        self.speed_box = QGroupBox(tr("Force an ethernet speed"))
        speed_layout = QVBoxLayout(self.speed_box)

        self.speed_GFull = QRadioButton(tr("Gigabit full duplex"))
        self.speed_GHalf = QRadioButton(tr("Gigabit half duplex"))
        self.speed_100Full = QRadioButton(tr("100 Mb Full duplex"))
        self.speed_100Half = QRadioButton(tr("100 Mb Half duplex"))
        self.speed_10Full = QRadioButton(tr("10 Mb Full duplex"))
        self.speed_10Half = QRadioButton(tr("10 Mb Half duplex"))

        def toggle(value):
            if value:
                self.speed_GFull.click()

        self.speed_box.setCheckable(True)
        self.speed_box.setChecked(Qt.Unchecked)
        self.connect(self.speed_box, SIGNAL('toggled(bool)'), toggle)

        for item in (
            self.speed_GFull,
            self.speed_GHalf,
            self.speed_100Full,
            self.speed_100Half,
            self.speed_10Full,
            self.speed_10Half,
            ):
            self.speed_group.addButton(item)
            speed_layout.addWidget(item)

        form.addRow(self.speed_box)

    def fillValues(self):
        name = self.ethernet.user_label
        if name != "":
            self.label.setText(name)
            self.label.checkEmpty()
            self.label.setStyleSheet('')

        if self.ethernet.eth_auto:
            self.speed_box.setChecked(Qt.Unchecked)
            return

        self.speed_box.setChecked(Qt.Checked)
        if self.ethernet.eth_duplex == Ethernet.FULL:
            if self.ethernet.eth_speed == 10:
                button = self.speed_10Full
            elif self.ethernet.eth_speed == 100:
                button = self.speed_100Full
            else:
                button = self.speed_GFull
        else:
            if self.ethernet.eth_speed == 10:
                button = self.speed_10Half
            elif self.ethernet.eth_speed == 100:
                button = self.speed_100Half
            else:
                button = self.speed_GHalf


        button.setChecked(Qt.Checked)

    def getConfig(self):
        auto = not self.speed_box.isChecked()
        if auto:
            return True, None, None
        selection = self.speed_group.checkedButton()
        if selection is self.speed_GFull:
            return False, 1000, Ethernet.FULL
        elif self.speed_GHalf:
            return False, 1000, Ethernet.HALF
        elif self.speed_100Full:
            return False, 100, Ethernet.FULL
        elif self.speed_100Half:
            return False, 100, Ethernet.HALF
        elif self.speed_10Full:
            return False, 10, Ethernet.FULL
        elif self.speed_10Half:
            return False, 10, Ethernet.HALF

        assert False, "this selection is unknown"

    def setName(self):
        new_name = self.label.value()
        if new_name != self.ethernet.user_label:
            self.ethernet.user_label = new_name
            #message = tr("renamed ethernet interface to: %s'") % new_name
        return True

    def accept(self, *args, **kwargs):
        ok = True
        ok &= self.setName()
        self.ethernet.setEthernetMode(*self.getConfig())
        if ok:
            self.emit(SIGNAL('edited'), "edited ethernet interface '%s'" \
            % self.ethernet.fullName())
        return ok