class AskPasswordDialog(DialogBox): ''' Simple input dialog. @undocumented: click_confirm_button @undocumented: click_cancel_button ''' def __init__(self, connection, ssid, key_mgmt=None, default_width=330, default_height=120, confirm_callback=None, cancel_callback=None, ): ''' Initialize InputDialog class. @param title: Input dialog title. @param init_text: Initialize input text. @param default_width: Width of dialog, default is 330 pixel. @param default_height: Height of dialog, default is 330 pixel. @param confirm_callback: Callback when user click confirm button, this callback accept one argument that return by user input text. @param cancel_callback: Callback when user click cancel button, this callback not need argument. ''' # Init. #DialogBox.__init__(self, _("Set password"), default_width, default_height, DIALOG_MASK_SINGLE_PAGE) DialogBox.__init__(self, _("Please input password for %s") % ssid, default_width, default_height, DIALOG_MASK_SINGLE_PAGE) #self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_NORMAL) self.confirm_callback = confirm_callback self.cancel_callback = cancel_callback self.connection = connection self.hint_align = gtk.Alignment() self.hint_align.set(0.5, 0.5, 0, 0) self.hint_align.set_padding(0, 0, 10, 10) self.hint_text = Label(_("Please input password for %s")%ssid, enable_select=False, enable_double_click=False) self.hint_align.add(self.hint_text) self.entry_align = gtk.Alignment() self.entry_align.set(0.0, 0.5, 0, 0) self.entry_align.set_padding(10, 0, 5, 9) if self.connection and isinstance(self.connection, NMRemoteConnection): (setting_name, method) = self.connection.guess_secret_info() if setting_name and method: init_text = nm_module.secret_agent.agent_get_secrets(self.connection.object_path, setting_name, method) else: init_text = "" else: tray_log.debug() self.connection = nm_module.nm_remote_settings.new_wireless_connection(ssid, key_mgmt) init_text = '' self.entry = PasswordEntry(init_text) self.show_key_check = CheckButton(_("Show password"), 0) self.show_key_check.connect("toggled", self.show_key_check_button_cb) self.entry.set_size(default_width - 22, 25) self.main_box = gtk.VBox() entry_align = gtk.Alignment(0.0, 0.5, 0, 0) entry_align.set_padding(0, 0, 5, 0) entry_align.set_size_request(-1, 30) entry_align.add(self.entry) self.main_box.pack_start(entry_align, False, False) self.main_box.pack_start(self.show_key_check, False, False) self.confirm_button = Button(_("OK")) self.cancel_button = Button(_("Cancel")) self.entry.entry.connect("press-return", lambda w: self.click_confirm_button()) self.confirm_button.connect("clicked", lambda w: self.click_confirm_button()) self.cancel_button.connect("clicked", lambda w: self.click_cancel_button()) self.entry_align.add(self.main_box) #self.body_box.pack_start(self.hint_align, True, True) self.body_box.pack_start(self.entry_align, True, True) #self.body_box.pack_start(self.main_box, True, True) self.right_button_box.set_buttons([self.cancel_button, self.confirm_button]) self.connect("show", self.focus_input) def __set_label(self, name): return Label(name, enable_select=False, enable_double_click=False) def show_key_check_button_cb(self, widget): if widget.get_active(): self.entry.show_password(True) else: self.entry.show_password(False) def focus_input(self, widget): ''' Grab focus on input entry. @param widget: InputDialog widget. ''' self.entry.entry.grab_focus() def click_confirm_button(self): ''' Inernal fucntion to handle click confirm button. ''' print self.connection if self.confirm_callback != None: self.confirm_callback(self.entry.entry.get_text(), self.connection) self.destroy() def click_cancel_button(self): ''' Inernal fucntion to handle click cancel button. ''' if self.cancel_callback != None: self.cancel_callback() self.destroy()
class AskPasswordDialog(DialogBox): ''' Simple input dialog. @undocumented: click_confirm_button @undocumented: click_cancel_button ''' def __init__( self, connection, ssid, key_mgmt=None, default_width=330, default_height=120, confirm_callback=None, cancel_callback=None, ): ''' Initialize InputDialog class. @param title: Input dialog title. @param init_text: Initialize input text. @param default_width: Width of dialog, default is 330 pixel. @param default_height: Height of dialog, default is 330 pixel. @param confirm_callback: Callback when user click confirm button, this callback accept one argument that return by user input text. @param cancel_callback: Callback when user click cancel button, this callback not need argument. ''' # Init. #DialogBox.__init__(self, _("Set password"), default_width, default_height, DIALOG_MASK_SINGLE_PAGE) DialogBox.__init__(self, _("Please input password for %s") % ssid, default_width, default_height, DIALOG_MASK_SINGLE_PAGE) #self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_NORMAL) self.confirm_callback = confirm_callback self.cancel_callback = cancel_callback self.connection = connection self.hint_align = gtk.Alignment() self.hint_align.set(0.5, 0.5, 0, 0) self.hint_align.set_padding(0, 0, 10, 10) self.hint_text = Label(_("Please input password for %s") % ssid, enable_select=False, enable_double_click=False) self.hint_align.add(self.hint_text) self.entry_align = gtk.Alignment() self.entry_align.set(0.0, 0.5, 0, 0) self.entry_align.set_padding(10, 0, 5, 9) if self.connection and isinstance(self.connection, NMRemoteConnection): (setting_name, method) = self.connection.guess_secret_info() if setting_name and method: init_text = nm_module.secret_agent.agent_get_secrets( self.connection.object_path, setting_name, method) else: init_text = "" else: tray_log.debug() self.connection = nm_module.nm_remote_settings.new_wireless_connection( ssid, key_mgmt) init_text = '' self.entry = PasswordEntry(init_text) self.show_key_check = CheckButton(_("Show password"), 0) self.show_key_check.connect("toggled", self.show_key_check_button_cb) self.entry.set_size(default_width - 22, 25) self.main_box = gtk.VBox() entry_align = gtk.Alignment(0.0, 0.5, 0, 0) entry_align.set_padding(0, 0, 5, 0) entry_align.set_size_request(-1, 30) entry_align.add(self.entry) self.main_box.pack_start(entry_align, False, False) self.main_box.pack_start(self.show_key_check, False, False) self.confirm_button = Button(_("OK")) self.cancel_button = Button(_("Cancel")) self.entry.entry.connect("press-return", lambda w: self.click_confirm_button()) self.confirm_button.connect("clicked", lambda w: self.click_confirm_button()) self.cancel_button.connect("clicked", lambda w: self.click_cancel_button()) self.entry_align.add(self.main_box) #self.body_box.pack_start(self.hint_align, True, True) self.body_box.pack_start(self.entry_align, True, True) #self.body_box.pack_start(self.main_box, True, True) self.right_button_box.set_buttons( [self.cancel_button, self.confirm_button]) self.connect("show", self.focus_input) def __set_label(self, name): return Label(name, enable_select=False, enable_double_click=False) def show_key_check_button_cb(self, widget): if widget.get_active(): self.entry.show_password(True) else: self.entry.show_password(False) def focus_input(self, widget): ''' Grab focus on input entry. @param widget: InputDialog widget. ''' self.entry.entry.grab_focus() def click_confirm_button(self): ''' Inernal fucntion to handle click confirm button. ''' print self.connection if self.confirm_callback != None: self.confirm_callback(self.entry.entry.get_text(), self.connection) self.destroy() def click_cancel_button(self): ''' Inernal fucntion to handle click cancel button. ''' if self.cancel_callback != None: self.cancel_callback() self.destroy()
class DSLConf(gtk.VBox): LEFT_PADDING = 210 def __init__(self, connection, set_button_callback=None, settings_obj=None): gtk.VBox.__init__(self) self.tab_name = _("DSL") self.connection = connection self.set_button = set_button_callback # 新增settings_obj变量,用于访问shared_methods.Settings对象 self.settings_obj = settings_obj self.dsl_setting = self.connection.get_setting("pppoe") # UI dsl_table = gtk.Table(5, 3, False) ssid_label = Label(_("Connection Name:"), text_size=CONTENT_FONT_SIZE, enable_select=False, enable_double_click=False) ssid_label.set_can_focus(False) username_label = Label(_("Username:"******"Service:"), text_size=CONTENT_FONT_SIZE, enable_select=False, enable_double_click=False) service_label.set_can_focus(False) password_label = Label(_("Password:"******"Show Password"), font_size=CONTENT_FONT_SIZE, padding_x=0) def show_password(widget): if widget.get_active(): self.password_entry.show_password(True) else: self.password_entry.show_password(False) self.show_password.connect("toggled", show_password) #pack entries dsl_table.attach(style.wrap_with_align(self.ssid_entry, align="left"), 1, 3, 0, 1) dsl_table.attach(style.wrap_with_align(self.username_entry, align="left"), 1, 3, 1, 2) dsl_table.attach(style.wrap_with_align(self.service_entry, align="left"), 1, 3, 2, 3) dsl_table.attach(style.wrap_with_align(self.password_entry, align="left"), 1, 3, 3, 4) dsl_table.attach(style.wrap_with_align(self.show_password, align="left"), 1, 3, 4, 5) style.draw_background_color(self) style.set_table(dsl_table) # just make table postion looks right table_align = gtk.Alignment(0, 0, 0, 0) table_align.add(dsl_table) self.pack_start(table_align, False, False) #self.add(align) self.show_all() self.refresh() self.ssid_entry.entry.connect("changed", self.save_changes, "ssid") self.username_entry.entry.connect("changed", self.save_changes, "username") self.service_entry.entry.connect("changed", self.save_changes, "service") self.password_entry.entry.connect("changed", self.save_changes, "password") def refresh(self): #print ">>>",self.connection.settings_dict # get dsl settings ssid = self.connection.get_setting("connection").id if type(self.connection) == NMRemoteConnection: self.ssid_entry.set_text(ssid) username = self.dsl_setting.username service = self.dsl_setting.service (setting_name, method) = self.connection.guess_secret_info() try: password = nm_module.secret_agent.agent_get_secrets(self.connection.object_path, setting_name, method) except: password = "" # check if empty if username == None: username = "" if service == None: service = "" if password == None: password = "" self.settings_obj.dsl_is_valid = False # fill entry self.username_entry.entry.set_text(str(username)) self.service_entry.entry.set_text(str(service)) self.password_entry.entry.set_text(str(password)) setattr(self.dsl_setting, "password", str(password)) def save_changes(self, widget, value, types): if types == "ssid": self.connection.get_setting("connection").id = value else: if value: setattr(self.dsl_setting, types, value) else: delattr(self.dsl_setting, types) #check_settings(self.connection, self.set_button) ############ is_valid = self.connection.check_setting_finish() self.settings_obj.dsl_is_valid = is_valid self.settings_obj.set_button("save", is_valid)
class Broadband(gtk.VBox): ENTRY_WIDTH = 222 LEFT_PADDING = 210 def __init__(self, connection, set_button_callback, settings_obj=None): gtk.VBox.__init__(self) self.tab_name = _("Broadband") self.connection = connection self.set_button = set_button_callback # 新增settings_obj变量,用于访问shared_methods.Settings对象 self.settings_obj = settings_obj # Init widgets self.table = gtk.Table(12, 4, False) #self.label_basic = Label(_("Basic"), text_size = TITLE_FONT_SIZE) self.label_basic = TitleBar(None, _("Basic")) self.label_number = Label(_("Code:"), text_size=CONTENT_FONT_SIZE, enable_select=False, enable_double_click=False) self.label_username = Label(_("Username:"******"Password:"******"Show password"), padding_x=0) self.button_to_region = Button(_("Regions setting")) #self.table = gtk.Table(6, 4, False) self.label_advanced = TitleBar(None,_("Advanced")) self.label_apn = Label(_("APN:"), text_size=CONTENT_FONT_SIZE, enable_select=False, enable_double_click=False) self.label_network = Label(_("Network ID:"), text_size=CONTENT_FONT_SIZE, enable_select=False, enable_double_click=False) self.label_type = Label(_("Type:"), text_size=CONTENT_FONT_SIZE, enable_select=False, enable_double_click=False) self.label_pin = Label(_("PIN:"), text_size=CONTENT_FONT_SIZE, enable_select=False, enable_double_click=False) self.apn = InputEntry() self.network_id = InputEntry() self.network_type = ComboBox([("Any", None), ("3G", 0), ("2G", 1), ("Prefer 3G", 2), ("Prefer 2G", 3)], fixed_width=self.ENTRY_WIDTH) self.roam_check = CheckButton(_("Allow roaming if home network is not available"), padding_x=0) self.pin = InputEntry() # Connect signals self.number.entry.connect("changed", self.save_settings_by, "number") self.username.entry.connect("changed", self.save_settings_by, "username") self.password.entry.connect("changed", self.save_settings_by, "password") self.apn.entry.connect("changed", self.save_settings_by, "apn") self.network_id.entry.connect("changed", self.save_settings_by, "network_id") self.network_type.connect("item-selected", self.network_type_selected) self.password_show.connect("toggled", self.password_show_toggled) self.roam_check.connect("toggled", self.roam_check_toggled) table_align = gtk.Alignment(0, 0, 0, 0) table_align.add(self.table) self.pack_start(table_align) # wrap with alignment # Refesh self.refresh() def password_show_toggled(self, widget): if widget.get_active(): self.password.show_password(True) else: self.password.show_password(False) def init_table(self, network_type): #container_remove_all(self.table) if self.table.get_children() != []: pass else: #self.table.attach(self.label_basic, 0,2 ,0, 1) self.table.attach(style.wrap_with_align(self.label_number, width=self.LEFT_PADDING), 0, 1, 1, 2) self.table.attach(style.wrap_with_align(self.label_username, width=self.LEFT_PADDING), 0, 1, 2, 3) self.table.attach(style.wrap_with_align(self.label_password, width=self.LEFT_PADDING), 0, 1, 3, 4) self.table.attach(style.wrap_with_align(self.number), 1, 2, 1, 2) self.table.attach(style.wrap_with_align(self.username), 1, 2, 2, 3) self.table.attach(style.wrap_with_align(self.password), 1, 2, 3, 4) self.table.attach(style.wrap_with_align(self.password_show, align="left"), 1, 2, 4, 5) def to_region(widget): region = slider.get_page_by_name("region") region.init(self.connection) #region.need_new_connection =False slider._slide_to_page("region", "none") if network_type == "gsm": self.button_to_region.connect("clicked", to_region) self.table.attach(style.wrap_with_align(self.button_to_region), 1,2,5,6) self.table.attach(self.label_advanced, 0, 2, 6, 7) self.table.attach(style.wrap_with_align(self.label_apn), 0, 1 , 7, 8) self.table.attach(style.wrap_with_align(self.label_network), 0, 1, 8, 9) self.table.attach(style.wrap_with_align(self.label_type), 0, 1, 9, 10) self.table.attach(style.wrap_with_align(self.label_pin), 0, 1, 11, 12) self.table.attach(style.wrap_with_align(self.apn), 1, 2, 7, 8) self.table.attach(style.wrap_with_align(self.network_id), 1, 2, 8, 9) self.table.attach(style.wrap_with_align(self.network_type), 1, 2, 9, 10) self.table.attach(style.wrap_with_align(self.roam_check, align="left"), 1, 2, 10, 11) self.table.attach(style.wrap_with_align(self.pin), 1, 2, 11, 12) #TODO ui change #style.set_table_items(self.table, 'entry') entry_list = ["number", "username", "password", "apn", "network_id", "pin"] for entry in entry_list: widget = getattr(self, entry) widget.entry.set_size_request(self.ENTRY_WIDTH, 22) style.set_table(self.table) self.table.show_all() def refresh(self): # get_settings mobile_type = self.connection.get_setting("connection").type self.broadband_setting = self.connection.get_setting(mobile_type) number = self.broadband_setting.number username = self.broadband_setting.username password = self.broadband_setting.password if password == None: try: (setting_name, method) = self.connection.guess_secret_info() password = nm_module.secret_agent.agent_get_secrets(self.connection.object_path, setting_name, method) except: password = "" # both self.number.set_text(number) self.username.set_text(username) self.password.entry.set_text(password) if mobile_type == "gsm": apn = self.broadband_setting.apn network_id = self.broadband_setting.network_id network_type = self.broadband_setting.network_type home_only = self.broadband_setting.home_only # gsm self.apn.set_text(apn) self.network_id.set_text(network_id) if network_type: self.network_type.set_select_index(network_type + 1) else: self.network_type.set_select_index(0) self.roam_check.set_active(home_only is None) self.init_table(mobile_type) ## retrieve wired info def set_new_values(self, new_dict, type): params = new_dict[type] for key, value in params.iteritems(): setattr(self.broadband_setting, key, value) self.refresh() def save_settings_by(self, widget, text, attr): if text == "": delattr(self.broadband_setting, attr) else: setattr(self.broadband_setting, attr, text) self.set_button("save", True) def network_type_selected(self, widget, content, value, index): if value == None: del self.broadband_setting.network_type else: self.broadband_setting.network_type = value def roam_check_toggled(self, widget): if widget.get_active(): del self.broadband_setting.home_only else: self.broadband_setting.home_only = 1 def expose_bg(self, widget, event): cr = widget.window.cairo_create() rect = widget.allocation cr.set_source_rgb( 1, 1, 1) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill()
class PPTPConf(gtk.VBox): ENTRY_WIDTH = 222 LEFT_PADDING = 210 def __init__(self, connection, module_frame, set_button_callback=None, settings_obj=None): gtk.VBox.__init__(self) self.connection = connection self.tab_name = _("PPTP") self.module_frame = module_frame self.set_button = set_button_callback # 新增settings_obj变量,用于访问shared_methods.Settings对象 self.settings_obj = settings_obj self.vpn_setting = self.connection.get_setting("vpn") # UI pptp_table = gtk.Table(7, 4, False) name_label = Label(_("Connection Name:"), enable_select=False, enable_double_click=False) name_label.set_can_focus(False) gateway_label = Label(_("Gateway:"), enable_select=False, enable_double_click=False) gateway_label.set_can_focus(False) user_label = Label(_("Username:"******"Password:"******"NT Domain:"), enable_select=False, enable_double_click=False) nt_domain_label.set_can_focus(False) # Radio Button self.pptp_radio = RadioButton(_("PPTP")) self.l2tp_radio = RadioButton(_("L2TP")) radio_box = gtk.HBox(spacing=30) radio_box.pack_start(self.pptp_radio, True, True) radio_box.pack_start(self.l2tp_radio, True, True) #pack labels pptp_table.attach(style.wrap_with_align(radio_box, align="left"), 2, 4, 0, 1) pptp_table.attach( style.wrap_with_align(name_label, width=self.LEFT_PADDING), 0, 2, 1, 2) pptp_table.attach( style.wrap_with_align(gateway_label, width=self.LEFT_PADDING), 0, 2, 2, 3) pptp_table.attach( style.wrap_with_align(user_label, width=self.LEFT_PADDING), 0, 2, 3, 4) pptp_table.attach( style.wrap_with_align(password_label, width=self.LEFT_PADDING), 0, 2, 4, 5) #pptp_table.attach(style.wrap_with_align(nt_domain_label), 0, 2, 5, 6) # entries self.name_entry = InputEntry() self.name_entry.set_size(self.ENTRY_WIDTH, 22) self.gateway_entry = InputEntry() self.gateway_entry.set_size(self.ENTRY_WIDTH, 22) self.user_entry = InputEntry() self.user_entry.set_size(self.ENTRY_WIDTH, 22) # FIXME should change to new_entry PasswordEntry self.password_entry = PasswordEntry() self.password_entry.set_size(self.ENTRY_WIDTH, 22) self.password_show = CheckButton(_("Show Password"), padding_x=0) self.password_show.set_active(False) self.password_show.connect("toggled", self.show_password) self.nt_domain_entry = InputEntry() self.nt_domain_entry.set_size(self.ENTRY_WIDTH, 22) #pack entries pptp_table.attach(style.wrap_with_align(self.name_entry, align="left"), 2, 4, 1, 2) pptp_table.attach( style.wrap_with_align(self.gateway_entry, align="left"), 2, 4, 2, 3) pptp_table.attach(style.wrap_with_align(self.user_entry, align="left"), 2, 4, 3, 4) pptp_table.attach( style.wrap_with_align(self.password_entry, align="left"), 2, 4, 4, 5) pptp_table.attach( style.wrap_with_align(self.password_show, align="left"), 2, 4, 5, 6) #pptp_table.attach(style.wrap_with_align(self.nt_domain_entry), 2, 4, 5, 6) # Advance setting button #advanced_button = Button(_("Advanced Setting")) #advanced_button.connect("clicked", self.advanced_button_click) #pptp_table.attach(style.wrap_with_align(advanced_button), 3, 4, 6, 7) self.service_type = self.vpn_setting.service_type.split(".")[-1] if self.service_type == "l2tp": self.l2tp_radio.set_active(True) else: self.pptp_radio.set_active(True) self.pptp_radio.connect("toggled", self.radio_toggled, "pptp") self.l2tp_radio.connect("toggled", self.radio_toggled, "l2tp") # set signals #align = style.set_box_with_align(pptp_table, "text") table_align = gtk.Alignment(0, 0, 0, 0) table_align.add(pptp_table) #style.set_table_items(pptp_table, "entry") style.draw_background_color(self) style.set_table(pptp_table) self.add(table_align) self.show_all() self.refresh() self.name_entry.entry.connect("changed", self.entry_changed, "name") self.gateway_entry.entry.connect("changed", self.entry_changed, "gateway") self.user_entry.entry.connect("changed", self.entry_changed, "user") self.password_entry.entry.connect("changed", self.entry_changed, "password") self.nt_domain_entry.entry.connect("changed", self.entry_changed, "domain") #if self.connection.check_setting_finish(): #print "in vpn" #Dispatcher.set_button("save", True) #else: #print "in vpn" #Dispatcher.set_button("save", False) ############## #is_valid = self.connection.check_setting_finish() #self.settings_obj.vpn_is_valid = is_valid #self.settings_obj.set_button("save", is_valid) def refresh(self): #print ">>>",self.vpn_setting.data #print self.vpn_setting.data name = self.connection.get_setting("connection").id gateway = self.vpn_setting.get_data_item("gateway") user = self.vpn_setting.get_data_item("user") domain = self.vpn_setting.get_data_item("domain") if type(self.connection) == NMRemoteConnection: self.name_entry.set_text(name) if gateway: self.gateway_entry.set_text(gateway) if user: self.user_entry.set_text(user) (setting_name, method) = self.connection.guess_secret_info() try: password = nm_module.secret_agent.agent_get_secrets( self.connection.object_path, setting_name, method) if password is None: #self.password_entry.entry.set_text("") self.password_entry.entry.set_text("") else: #self.password_entry.entry.set_text(password) self.password_entry.entry.set_text(password) self.vpn_setting.set_secret_item("password", password) except: pass if domain: self.nt_domain_entry.set_text(domain) def save_setting(self): pass def show_password(self, widget): if widget.get_active(): self.password_entry.show_password(True) else: self.password_entry.show_password(False) def entry_changed(self, widget, content, item): text = content if item == "name": self.connection.get_setting("connection").id = content if text: if item == "password": self.vpn_setting.set_secret_item(item, text) elif item != "name": self.vpn_setting.set_data_item(item, text) else: if item == "password": self.vpn_setting.set_secret_item(item, "") else: self.vpn_setting.delete_data_item(item) #if self.connection.check_setting_finish(): #Dispatcher.set_button("save", True) #else: #Dispatcher.set_button("save", False) ############## is_valid = self.connection.check_setting_finish() self.settings_obj.vpn_is_valid = is_valid self.settings_obj.set_button("save", is_valid) def radio_toggled(self, widget, service_type): if widget.get_active(): self.vpn_setting.service_type = "org.freedesktop.NetworkManager." + service_type self.service_type = service_type if self.connection.check_setting_finish(): Dispatcher.set_button("save", True) else: Dispatcher.set_button("save", False) self.refresh() Dispatcher.emit("vpn-type-change", self.connection) def advanced_button_click(self, widget): ppp = PPPConf(self.module_frame, Dispatcher.set_button) ppp.refresh(self.connection) Dispatcher.send_submodule_crumb(3, _("Advanced")) nm_module.slider.slide_to_page(ppp, "none")
class PPTPConf(gtk.VBox): ENTRY_WIDTH = 222 LEFT_PADDING = 210 def __init__(self, connection, module_frame, set_button_callback=None, settings_obj=None): gtk.VBox.__init__(self) self.connection = connection self.tab_name = _("PPTP") self.module_frame = module_frame self.set_button = set_button_callback # 新增settings_obj变量,用于访问shared_methods.Settings对象 self.settings_obj = settings_obj self.vpn_setting = self.connection.get_setting("vpn") # UI pptp_table = gtk.Table(7, 4, False) name_label = Label(_("Connection Name:"), enable_select=False, enable_double_click=False) name_label.set_can_focus(False) gateway_label = Label(_("Gateway:"), enable_select=False, enable_double_click=False) gateway_label.set_can_focus(False) user_label = Label(_("Username:"******"Password:"******"NT Domain:"), enable_select=False, enable_double_click=False) nt_domain_label.set_can_focus(False) # Radio Button self.pptp_radio = RadioButton(_("PPTP")) self.l2tp_radio = RadioButton(_("L2TP")) radio_box = gtk.HBox(spacing=30) radio_box.pack_start(self.pptp_radio, True, True) radio_box.pack_start(self.l2tp_radio, True, True) #pack labels pptp_table.attach(style.wrap_with_align(radio_box, align="left"), 2,4, 0, 1) pptp_table.attach(style.wrap_with_align(name_label, width=self.LEFT_PADDING), 0, 2, 1, 2) pptp_table.attach(style.wrap_with_align(gateway_label, width=self.LEFT_PADDING), 0, 2 , 2, 3) pptp_table.attach(style.wrap_with_align(user_label, width=self.LEFT_PADDING), 0, 2, 3, 4) pptp_table.attach(style.wrap_with_align(password_label, width=self.LEFT_PADDING), 0, 2, 4, 5) #pptp_table.attach(style.wrap_with_align(nt_domain_label), 0, 2, 5, 6) # entries self.name_entry = InputEntry() self.name_entry.set_size(self.ENTRY_WIDTH, 22) self.gateway_entry = InputEntry() self.gateway_entry.set_size(self.ENTRY_WIDTH,22) self.user_entry = InputEntry() self.user_entry.set_size(self.ENTRY_WIDTH, 22) # FIXME should change to new_entry PasswordEntry self.password_entry = PasswordEntry() self.password_entry.set_size(self.ENTRY_WIDTH, 22) self.password_show = CheckButton(_("Show Password"), padding_x=0) self.password_show.set_active(False) self.password_show.connect("toggled", self.show_password) self.nt_domain_entry = InputEntry() self.nt_domain_entry.set_size(self.ENTRY_WIDTH, 22) #pack entries pptp_table.attach(style.wrap_with_align(self.name_entry, align="left"), 2, 4, 1, 2) pptp_table.attach(style.wrap_with_align(self.gateway_entry, align="left"), 2, 4, 2, 3) pptp_table.attach(style.wrap_with_align(self.user_entry, align="left"), 2, 4, 3, 4) pptp_table.attach(style.wrap_with_align(self.password_entry, align="left"), 2, 4, 4, 5) pptp_table.attach(style.wrap_with_align(self.password_show, align="left"), 2, 4, 5, 6) #pptp_table.attach(style.wrap_with_align(self.nt_domain_entry), 2, 4, 5, 6) # Advance setting button #advanced_button = Button(_("Advanced Setting")) #advanced_button.connect("clicked", self.advanced_button_click) #pptp_table.attach(style.wrap_with_align(advanced_button), 3, 4, 6, 7) self.service_type = self.vpn_setting.service_type.split(".")[-1] if self.service_type == "l2tp": self.l2tp_radio.set_active(True) else: self.pptp_radio.set_active(True) self.pptp_radio.connect("toggled",self.radio_toggled, "pptp") self.l2tp_radio.connect("toggled",self.radio_toggled, "l2tp") # set signals #align = style.set_box_with_align(pptp_table, "text") table_align = gtk.Alignment(0, 0, 0, 0) table_align.add(pptp_table) #style.set_table_items(pptp_table, "entry") style.draw_background_color(self) style.set_table(pptp_table) self.add(table_align) self.show_all() self.refresh() self.name_entry.entry.connect("changed", self.entry_changed, "name") self.gateway_entry.entry.connect("changed", self.entry_changed, "gateway") self.user_entry.entry.connect("changed", self.entry_changed, "user") self.password_entry.entry.connect("changed", self.entry_changed, "password") self.nt_domain_entry.entry.connect("changed", self.entry_changed, "domain") #if self.connection.check_setting_finish(): #print "in vpn" #Dispatcher.set_button("save", True) #else: #print "in vpn" #Dispatcher.set_button("save", False) ############## #is_valid = self.connection.check_setting_finish() #self.settings_obj.vpn_is_valid = is_valid #self.settings_obj.set_button("save", is_valid) def refresh(self): #print ">>>",self.vpn_setting.data #print self.vpn_setting.data name = self.connection.get_setting("connection").id gateway = self.vpn_setting.get_data_item("gateway") user = self.vpn_setting.get_data_item("user") domain = self.vpn_setting.get_data_item("domain") if type(self.connection) == NMRemoteConnection: self.name_entry.set_text(name) if gateway: self.gateway_entry.set_text(gateway) if user: self.user_entry.set_text(user) (setting_name, method) = self.connection.guess_secret_info() try: password = nm_module.secret_agent.agent_get_secrets(self.connection.object_path, setting_name, method) if password is None: #self.password_entry.entry.set_text("") self.password_entry.entry.set_text("") else: #self.password_entry.entry.set_text(password) self.password_entry.entry.set_text(password) self.vpn_setting.set_secret_item("password", password) except: pass if domain: self.nt_domain_entry.set_text(domain) def save_setting(self): pass def show_password(self, widget): if widget.get_active(): self.password_entry.show_password(True) else: self.password_entry.show_password(False) def entry_changed(self, widget, content, item): text = content if item == "name": self.connection.get_setting("connection").id = content if text: if item == "password": self.vpn_setting.set_secret_item(item, text) elif item != "name": self.vpn_setting.set_data_item(item, text) else: if item == "password": self.vpn_setting.set_secret_item(item, "") else: self.vpn_setting.delete_data_item(item) #if self.connection.check_setting_finish(): #Dispatcher.set_button("save", True) #else: #Dispatcher.set_button("save", False) ############## is_valid = self.connection.check_setting_finish() self.settings_obj.vpn_is_valid = is_valid self.settings_obj.set_button("save", is_valid) def radio_toggled(self, widget, service_type): if widget.get_active(): self.vpn_setting.service_type = "org.freedesktop.NetworkManager." + service_type self.service_type = service_type if self.connection.check_setting_finish(): Dispatcher.set_button("save", True) else: Dispatcher.set_button("save", False) self.refresh() Dispatcher.emit("vpn-type-change", self.connection) def advanced_button_click(self, widget): ppp = PPPConf(self.module_frame, Dispatcher.set_button) ppp.refresh(self.connection) Dispatcher.send_submodule_crumb(3, _("Advanced")) nm_module.slider.slide_to_page(ppp, "none")