diff options
-rw-r--r-- | iw/network_gui.py | 2 | ||||
-rw-r--r-- | network.py | 2 | ||||
-rw-r--r-- | textw/network_text.py | 83 |
3 files changed, 58 insertions, 29 deletions
diff --git a/iw/network_gui.py b/iw/network_gui.py index 95e32102b..1da6d4c19 100644 --- a/iw/network_gui.py +++ b/iw/network_gui.py @@ -160,7 +160,7 @@ class NetworkWindow(InstallWindow): # NetworkWindow tag="netconf" - def getScreen(self, network): + def getScreen(self, network, dispatch): box = GtkVBox() box.set_border_width(5) self.network = network diff --git a/network.py b/network.py index 11f6ab96e..6a6e27927 100644 --- a/network.py +++ b/network.py @@ -69,7 +69,6 @@ class Network: self.secondaryNS = "" self.ternaryNS = "" self.domains = [] - self.readData = 0 self.isConfigured = 0 self.hostname = "localhost.localdomain" @@ -96,7 +95,6 @@ class Network: if info.has_key("HOSTNAME"): self.hostname = info["HOSTNAME"] - self.readData = 1 try: f = open("/etc/resolv.conf", "r") except: diff --git a/textw/network_text.py b/textw/network_text.py index a820c178a..4dff360ff 100644 --- a/textw/network_text.py +++ b/textw/network_text.py @@ -54,37 +54,36 @@ class NetworkWindow: ns = isys.inet_calcNS (net) self.ns.set (ns) - def __call__(self, screen, network): + def runScreen(self, screen, network, dev): - - devices = network.available () - if not devices: - return INSTALL_NOOP - - if network.readData: - # XXX expert mode, allow changing network settings here - return INSTALL_NOOP - - list = devices.keys () - list.sort() - dev = devices[list[0]] - - firstg = Grid (1, 1) + firstg = Grid (1, 3) boot = dev.get ("bootproto") + onboot = dev.get('onboot') + onbootIsOn = ((dev == network.available().values()[0] and not onboot) + or onboot == 'yes') if not boot: boot = "dhcp" + firstg.setField (Label (_("Network Device: %s") % + (dev.info['DEVICE'],)), + 0, 0, padding = (0, 0, 0, 1), anchorLeft = 1) self.cb = Checkbox (_("Use bootp/dhcp"), isOn = (boot == "dhcp")) - firstg.setField (self.cb, 0, 0, anchorLeft = 1) + firstg.setField (self.cb, 0, 1, anchorLeft = 1) + self.onboot = Checkbox(_("Activate on boot"), isOn = onbootIsOn) + firstg.setField (self.onboot, 0, 2, anchorLeft = 1) secondg = Grid (2, 6) secondg.setField (Label (_("IP address:")), 0, 0, anchorLeft = 1) secondg.setField (Label (_("Netmask:")), 0, 1, anchorLeft = 1) - secondg.setField (Label (_("Default gateway (IP):")), 0, 2, anchorLeft = 1) - secondg.setField (Label (_("Primary nameserver:")), 0, 3, anchorLeft = 1) - secondg.setField (Label (_("Secondary nameserver:")), 0, 4, anchorLeft = 1) - secondg.setField (Label (_("Ternary nameserver:")), 0, 5, anchorLeft = 1) + secondg.setField (Label (_("Default gateway (IP):")), 0, 2, + anchorLeft = 1) + secondg.setField (Label (_("Primary nameserver:")), 0, 3, + anchorLeft = 1) + secondg.setField (Label (_("Secondary nameserver:")), 0, 4, + anchorLeft = 1) + secondg.setField (Label (_("Ternary nameserver:")), 0, 5, + anchorLeft = 1) self.ip = Entry (16) self.ip.set (dev.get ("ipaddr")) @@ -112,7 +111,8 @@ class NetworkWindow: bb = ButtonBar (screen, (TEXT_OK_BUTTON, TEXT_BACK_BUTTON)) - toplevel = GridFormHelp (screen, _("Network Configuration"), + toplevel = GridFormHelp (screen, _("Network Configuration for %s") % + (dev.info['DEVICE']), "network", 1, 3) toplevel.add (firstg, 0, 0, (0, 0, 0, 1), anchorLeft = 1) toplevel.add (secondg, 0, 1, (0, 0, 0, 1)) @@ -122,12 +122,18 @@ class NetworkWindow: while 1: result = toplevel.run () + screen.suspend() + if self.onboot.selected() != 0: + dev.set (('onboot', 'yes')) + else: + dev.unset ('onboot') if self.cb.selected (): dev.set (("bootproto", "dhcp")) dev.unset ("ipaddr", "netmask", "network", "broadcast") else: try: - (net, bc) = isys.inet_calcNetBroad (self.ip.value (), self.nm.value ()) + (net, bc) = isys.inet_calcNetBroad (self.ip.value (), + self.nm.value ()) except: ButtonChoiceWindow(screen, _("Invalid information"), _("You must enter valid IP information to continue"), @@ -135,7 +141,8 @@ class NetworkWindow: continue dev.set (("bootproto", "static")) - dev.set (("ipaddr", self.ip.value ()), ("netmask", self.nm.value ()), + dev.set (("ipaddr", self.ip.value ()), ("netmask", + self.nm.value ()), ("network", net), ("broadcast", bc)) network.gateway = self.gw.value () network.primaryNS = self.ns.value () @@ -145,16 +152,40 @@ class NetworkWindow: screen.popWindow() break - dev.set (("onboot", "yes")) - rc = bb.buttonPressed (result) if rc == TEXT_BACK_CHECK: return INSTALL_BACK return INSTALL_OK + def __call__(self, screen, network, dispatch): + + devices = network.available () + if not devices: + return INSTALL_NOOP + + list = devices.keys () + list.sort() + devLen = len(list) + if dispatch.dir == 1: + currentDev = 0 + else: + currentDev = devLen - 1 + + while currentDev < devLen and currentDev >= 0: + rc = self.runScreen(screen, network, devices[list[currentDev]]) + if rc == INSTALL_BACK: + currentDev = currentDev - 1 + else: + currentDev = currentDev + 1 + + if currentDev < 0: + return INSTALL_BACK + else: + return INSTALL_OK + class HostnameWindow: - def __call__(self, screen, network): + def __call__(self, screen, network, dispatch): devices = network.available () if not devices: return INSTALL_NOOP |