summaryrefslogtreecommitdiffstats
path: root/iw/ipwidget.py
diff options
context:
space:
mode:
Diffstat (limited to 'iw/ipwidget.py')
-rw-r--r--iw/ipwidget.py64
1 files changed, 32 insertions, 32 deletions
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 == '.':