class Wired(gtk.VBox): ENTRY_WIDTH = 222 def __init__(self, connection, set_button_callback=None, settings_obj=None): gtk.VBox.__init__(self) self.tab_name = _("Wired") self.ethernet = connection.get_setting("802-3-ethernet") self.connection = connection self.set_button = set_button_callback # 新增settings_obj变量,用于访问shared_methods.Settings对象 self.settings_obj = settings_obj self.settings_obj.initial_lock = True #self.settings_obj.set_button("save", True) self.__init_table() self.__init_signals() (mac, clone_mac, mtu) = self.ethernet.mac_address, self.ethernet.cloned_mac_address, self.ethernet.mtu if mac != None: self.mac_entry.set_address(mac) if clone_mac !=None: self.clone_entry.set_address(clone_mac) if mtu != None: self.mtu_spin.set_value(int(mtu)) # check valid for nmconnection init #if not type(self.connection) == NMRemoteConnection: #self.save_settings(None, None, None) self.settings_obj.initial_lock = False def __init_table(self): self.table = TableAsm() self.mac_entry = self.table.row_mac_entry(_("Device Mac Address:")) self.clone_entry = self.table.row_mac_entry(_("Cloned Mac Address:")) self.mtu_spin = self.table.row_spin(_("MTU:"), 0, 1500) self.table.table_build() # TODO UI change align = gtk.Alignment(0,0,0,0) align.add(self.table) self.pack_start(align) def __init_signals(self): self.mac_entry.connect("changed", self.save_settings, "mac_address") self.clone_entry.connect("changed", self.save_settings, "cloned_mac_address") self.mtu_spin.connect("value_changed", self.save_settings, "mtu") self.mtu_spin.value_entry.connect("changed", self.spin_user_set) def spin_user_set(self, widget, value): if value == "": return value = int(value) if self.mtu_spin.lower_value <= value <= self.mtu_spin.upper_value: self.mtu_spin.update_and_emit(value) elif value < self.mtu_spin.lower_value: self.mtu_spin.update_and_emit(self.mtu_spin.lower_value) else: self.mtu_spin.update_and_emit(self.mtu_spin.upper_value) ## retrieve wired info def save_settings(self, widget, content, types): #value = None if types: setattr(self.ethernet, types, content) if self.settings_obj is None: return # check mac address whether is valid if types == "mac_address": mac_address = content cloned_mac_address = self.clone_entry.get_address() elif types == "cloned_mac_address": mac_address = self.mac_entry.get_address() cloned_mac_address = content else: mac_address = self.mac_entry.get_address() cloned_mac_address = self.clone_entry.get_address() if (mac_address == ":::::") or \ (mac_address == "") or \ (TypeConvert.is_valid_mac_address(mac_address)): mac_address_is_valid = True else: mac_address_is_valid = False if (cloned_mac_address == ":::::") or \ (cloned_mac_address == "") or \ (TypeConvert.is_valid_mac_address(cloned_mac_address)): cloned_mac_address_is_valid = True else: cloned_mac_address_is_valid = False if mac_address_is_valid and cloned_mac_address_is_valid: self.settings_obj.mac_is_valid = True else: self.settings_obj.mac_is_valid = False # 统一调用shared_methods.Settings的set_button log.debug('set_button True') self.settings_obj.set_button("save", True) """