From f9c14ba29c0eadc8b9dc94a69c8944a0496950e9 Mon Sep 17 00:00:00 2001 From: Mike Fulbright Date: Mon, 13 May 2002 20:19:11 +0000 Subject: rework of network screen, fixing several bugs --- iw/ipwidget.py | 64 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) (limited to 'iw/ipwidget.py') diff --git a/iw/ipwidget.py b/iw/ipwidget.py index 1af538368..62a0826c4 100644 --- a/iw/ipwidget.py +++ b/iw/ipwidget.py @@ -24,33 +24,34 @@ from translate import _, N_ ip_re = re.compile('^([0-2]?[0-9]?[0-9])\\.([0-2]?[0-9]?[0-9])\\.([0-2]?[0-9]?[0-9])\\.([0-2]?[0-9]?[0-9])$') _=gettext.gettext +ip_fields = ['entry1', 'entry2', 'entry3', 'entry4'] + # Includes an error message, and the widget with problems class IPError(Exception): pass class IPEditor: def __init__ (self): - self.entry1 = gtk.Entry(3) - self.entry2 = gtk.Entry(3) - self.entry3 = gtk.Entry(3) - self.entry4 = gtk.Entry(3) - self.entry1.set_max_length(3) - self.entry1.connect('insert_text', self.entry_insert_text_cb, self.entry2) - self.entry2.set_max_length(3) - self.entry2.connect('insert_text', self.entry_insert_text_cb, self.entry3) - self.entry3.set_max_length(3) - self.entry3.connect('insert_text', self.entry_insert_text_cb, self.entry4) - self.entry4.set_max_length(3) - self.entry4.connect('insert_text', self.entry_insert_text_cb, None) + self.entrys = {} + for name in ip_fields: + self.entrys[name] = gtk.Entry(3) + self.entrys[name].set_size_request(50,-1) + self.entrys[name].set_max_length(3) + + for i in range(0, len(ip_fields)): + name = ip_fields[i] + if name != 'entry4': + nname = self.entrys[ip_fields[i+1]] + else: + nname = None + + self.entrys[name].connect('insert_text', self.entry_insert_text_cb, nname) hbox = gtk.HBox() - hbox.pack_start(self.entry1, gtk.FALSE, gtk.FALSE) - hbox.pack_start(gtk.Label('.'), gtk.FALSE, gtk.FALSE) - hbox.pack_start(self.entry2, gtk.FALSE, gtk.FALSE) - hbox.pack_start(gtk.Label('.'), gtk.FALSE, gtk.FALSE) - hbox.pack_start(self.entry3, gtk.FALSE, gtk.FALSE) - hbox.pack_start(gtk.Label('.'), gtk.FALSE, gtk.FALSE) - hbox.pack_start(self.entry4, gtk.FALSE, gtk.FALSE) + for name in ip_fields: + hbox.pack_start(self.entrys[name], gtk.FALSE, gtk.FALSE) + if name != 'entry4': + hbox.pack_start(gtk.Label('.'), gtk.FALSE, gtk.FALSE) self.widget = hbox @@ -58,10 +59,8 @@ class IPEditor: return self.widget def clear_entries (self): - self.entry1.set_text('') - self.entry2.set_text('') - self.entry3.set_text('') - self.entry4.set_text('') + for name in ip_fields: + self.entrys[name].set_text('') def hydrate (self, ip_string): self.clear_entries() @@ -79,30 +78,31 @@ class IPEditor: return except TypeError: return - self.entry1.set_text(octets[0]) - self.entry2.set_text(octets[1]) - self.entry3.set_text(octets[2]) - self.entry4.set_text(octets[3]) + + i = 0 + for name in ip_fields: + self.entrys[name].set_text(octets[i]) + i = i + 1 def dehydrate (self): widget = None try: - widget = self.entry1 + widget = self.entrys['entry1'] if int(widget.get_text()) > 255: raise IPError, (_("IP Addresses must contain numbers between 1 and 255"), widget) - widget = self.entry2 + widget = self.entrys['entry2'] if int(widget.get_text()) > 255: raise IPError, (_("IP Addresses must contain numbers between 1 and 255"), widget) - widget = self.entry3 + widget = self.entrys['entry3'] if int(widget.get_text()) > 255: raise IPError, (_("IP Addresses must contain numbers between 1 and 255"), widget) - widget = self.entry4 + widget = self.entrys['entry4'] if int(widget.get_text()) > 255: raise IPError, (_("IP Addresses must contain numbers between 1 and 255"), widget) except ValueError, msg: raise IPError, (_("IP Addresses must contain numbers between 1 and 255"), widget) - return self.entry1.get_text() + "." + self.entry2.get_text() + "." +self.entry3.get_text() + "." +self.entry4.get_text() + return self.entrys['entry1'].get_text() + "." + self.entrys['entry2'].get_text() + "." +self.entrys['entry3'].get_text() + "." +self.entrys['entry4'].get_text() def entry_insert_text_cb(self, entry, text, length, pos, next): if text == '.': -- cgit