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)
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