class PPPConf(gtk.VBox): TABLE_WIDTH = 1 def __init__(self, connection, set_button_callback, settings_obj=None): gtk.VBox.__init__(self) self.tab_name = _("PPP") self.connection = connection self.set_button = set_button_callback # 新增settings_obj变量,用于访问shared_methods.Settings对象 self.settings_obj = settings_obj self.ppp_setting = self.connection.get_setting("ppp") self.method_title = TitleBar(None, _("Configure Method"), width=self.TABLE_WIDTH, has_separator=False) self.method_table = TableAsm() self.method_table.row_attach(self.method_title) self.refuse_eap = self.method_table.row_toggle(_("EAP")) self.refuse_pap = self.method_table.row_toggle(_("PAP")) self.refuse_chap = self.method_table.row_toggle(_("CHAP")) self.refuse_mschap = self.method_table.row_toggle(_("MSCHAP")) self.refuse_mschapv2 = self.method_table.row_toggle(_("MSCHAP v2")) # visible settings self.compression_title = TitleBar(None, _("Compression"), width=self.TABLE_WIDTH, has_separator=False) self.echo_title = TitleBar(None, _("Echo"), width=self.TABLE_WIDTH, has_separator=False) self.comp_table = TableAsm() self.sub_item = [] #compressio))n = Label(_("Compression"), text_size=TITLE_FONT_SIZE) self.comp_table.row_attach(self.compression_title) self.require_mppe = self.comp_table.row_toggle(_("Use point-to-point encryption(mppe)")) self.require_mppe_128 = self.comp_table.row_toggle(_("Require 128-bit encryption"), self.sub_item) self.mppe_stateful = self.comp_table.row_toggle(_("Use stateful MPPE"), self.sub_item) self.nobsdcomp = self.comp_table.row_toggle(_("Allow BSD data Compression")) self.nodeflate = self.comp_table.row_toggle(_("Allow Deflate data compression")) self.no_vj_comp = self.comp_table.row_toggle(_("Use TCP header compression")) self.echo_table = TableAsm() self.echo_table.row_attach(self.echo_title) self.ppp_echo = self.echo_table.row_toggle(_("Send PPP echo packets")) self.method_table.table_build() self.echo_table.table_build() vbox = gtk.VBox() table_align = gtk.Alignment(0, 0, 0, 0) table_align.add(vbox) self.pack_start(table_align) vbox.pack_start(self.method_table, False, False) vbox.pack_start(self.comp_table, False, False) vbox.pack_start(self.echo_table, False, False) self.refresh() self.refuse_eap.connect("toggled", self.check_button_cb, "refuse_eap") self.refuse_pap.connect("toggled", self.check_button_cb, "refuse_pap") self.refuse_chap.connect("toggled", self.check_button_cb, "refuse_chap") self.refuse_mschap.connect("toggled", self.check_button_cb, "refuse_mschap") self.refuse_mschapv2.connect("toggled", self.check_button_cb, "refuse_mschapv2") self.require_mppe.connect("toggled", self.check_button_cb, "require_mppe") self.require_mppe_128.connect("toggled", self.check_button_cb, "require_mppe_128") self.mppe_stateful.connect("toggled", self.check_button_cb,"mppe_stateful") self.nobsdcomp.connect("toggled", self.check_button_cb, "nobsdcomp") self.nodeflate.connect("toggled", self.check_button_cb, "nodeflate") self.no_vj_comp.connect("toggled", self.check_button_cb, "no_vj_comp") self.ppp_echo.connect("toggled", self.check_button_cb, "echo") def refresh_table(self, require_mppe): self.comp_table.table_clear() if require_mppe: #log.debug("comp_table items", self.comp_table.shared, self.sub_item) self.comp_table.table_build(self.sub_item, 2) else: #log.debug("comp_table items", self.comp_table.shared) self.comp_table.table_build() self.require_mppe_128.set_active(False) self.mppe_stateful.set_active(False) self.show_all() def refresh(self): #========================= # retreieve settings refuse_eap = self.ppp_setting.refuse_eap refuse_pap = self.ppp_setting.refuse_pap refuse_chap = self.ppp_setting.refuse_chap refuse_mschap = self.ppp_setting.refuse_mschap refuse_mschapv2 = self.ppp_setting.refuse_mschapv2 require_mppe = self.ppp_setting.require_mppe require_mppe_128 = self.ppp_setting.require_mppe_128 mppe_stateful = self.ppp_setting.mppe_stateful nobsdcomp = self.ppp_setting.nobsdcomp nodeflate = self.ppp_setting.nodeflate no_vj_comp = self.ppp_setting.no_vj_comp lcp_echo_failure = self.ppp_setting.lcp_echo_failure lcp_echo_interval = self.ppp_setting.lcp_echo_interval self.refuse_eap.set_active( not refuse_eap) self.refuse_pap.set_active(not refuse_pap) self.refuse_chap.set_active(not refuse_chap) self.refuse_mschap.set_active(not refuse_mschap) self.refuse_mschapv2.set_active(not refuse_mschapv2) self.require_mppe.set_active(require_mppe) self.require_mppe_128.set_active(require_mppe_128) self.mppe_stateful.set_active(mppe_stateful) self.nobsdcomp.set_active(not nobsdcomp) self.nodeflate.set_active(not nodeflate) self.no_vj_comp.set_active(not no_vj_comp) if not lcp_echo_failure and not lcp_echo_interval: self.ppp_echo.set_active(False) else: self.ppp_echo.set_active(True) self.refresh_table(require_mppe) #================================== def check_button_cb(self, widget, key): active = widget.get_active() if key.startswith("refuse"): if active: setattr(self.ppp_setting, key, False) else: setattr(self.ppp_setting, key, True) elif key.startswith("no"): if active: setattr(self.ppp_setting, key, False) else: setattr(self.ppp_setting, key, True) elif key is "echo": if active: setattr(self.ppp_setting, "lcp_echo_failure", 5) setattr(self.ppp_setting, "lcp_echo_interval", 30) else: setattr(self.ppp_setting, "lcp_echo_failure", 0) setattr(self.ppp_setting, "lcp_echo_interval", 0) else: if active: setattr(self.ppp_setting, key, True) else: setattr(self.ppp_setting, key, False) #check_settings(self.connection, self.set_button) ################## is_valid = self.connection.check_setting_finish() #self.settings_obj.ppp_is_valid = is_valid self.settings_obj.set_button("save", is_valid) if key is "require_mppe": if active: self.refresh_table(1) else: self.refresh_table(None)