Changeset 5753

Show
Ignore:
Timestamp:
08/02/10 16:09:34 (3 years ago)
Author:
ganja
Message:

Validates the user input in master and slave mac address(options)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • packet-manipulator/branches/BTSniff/PM_copy/umit/pm/gui/dialogs/btinterface.py

    r5715 r5753  
    2020 
    2121import gtk 
     22import gobject 
    2223from sys import maxint 
    2324 
     
    6768 
    6869 
    69         self.master_entries = self.__new_add_entry() 
    70         self.slave_entries = self.__new_add_entry()  
     70        self.master_entries = MacEntry() 
     71        self.slave_entries = MacEntry() 
    7172 
    7273        tbl.attach(self.master_entries, 1, 2, 0, 1, yoptions=gtk.SHRINK) 
     
    137138        self.add(tbl) 
    138139     
    139     def __new_add_entry(self): 
    140          
    141         hbox = gtk.HBox(0, False) 
    142     
    143         for i in range(6): 
    144             entry = gtk.Entry() 
    145             entry.set_max_length(2) 
    146             entry.set_width_chars(2) 
    147             hbox.pack_start(entry, False, False) 
    148             if i < 5:  
    149                 hbox.pack_start(self.new_label(_(':')), False, False) 
    150          
    151         return hbox 
    152140     
    153141    def __clear_children(self): 
     
    231219            spart = children[i].get_text() 
    232220            if spart=='': spart = '00' 
    233             # TODO: We should validate input here 
    234221            part = int(spart, 16) 
    235222            lst.append(part) 
    236223        return lst 
    237224         
     225class MacEntry(gtk.HBox): 
     226 
     227    def __init__(self): 
     228 
     229        gtk.HBox.__init__(self,False,0) 
     230    
     231        for i in xrange(6): 
     232            entry = gtk.Entry() 
     233            entry.set_max_length(2) 
     234            entry.set_width_chars(2) 
     235            self.pack_start(entry, False, False) 
     236            _handlerid = entry.connect("insert-text", self.entry_insert_text) 
     237            entry.set_data('handlerid', _handlerid) 
     238            if i < 5:  
     239                self.pack_start(gtk.Label(_(':')), False, False) 
     240 
     241     
     242    def move_cursor(self,entry): 
     243        entry.set_position(-1) 
     244        return False 
     245 
     246    def entry_insert_text(self,entry, new_text, new_text_length, position): 
     247        if new_text.isdigit() or 'a' <= new_text <= 'f' or 'A' <= new_text <= 'F' : 
     248            _string = entry.get_chars(0, -1) + new_text 
     249            _hid = entry.get_data('handlerid') 
     250            entry.handler_block(_hid) 
     251            _pos = entry.get_position() 
     252            _move = True 
     253            _pos = entry.insert_text(new_text, _pos) 
     254            entry.handler_unblock(_hid) 
     255            gobject.idle_add(self.move_cursor, entry) 
     256        entry.stop_emission("insert-text") 
    238257 
    239258class BtInterfaceList(InterfaceList):