def _reload_account_list(self, *args): '''reload the account list in the combobox''' self.liststore.clear() for mail in sorted(self.accounts): self.liststore.append([mail, utils.scale_nicely(self.pixbuf)]) #this resolves a small bug if not len(self.liststore): self.liststore = None
def _reload_account_list(self, *args): ''' reload the account list in the combobox ''' self.liststore.clear() for mail in sorted(self.accounts): self.liststore.append([mail, utils.scale_nicely(self.pixbuf)]) #this resolves a small bug if not len(self.liststore): self.liststore = None
def _reload_account_list(self, *args): ''' reload the account list in the combobox ''' self.liststore.clear() mail_list = [] for account in sorted(self.accounts): mail = account.rpartition('|')[0] if mail not in mail_list: mail_list.append(mail) self.liststore.append([mail, utils.scale_nicely(self.pixbuf)]) #this resolves a small bug if not len(self.liststore): self.liststore = None
def __init__(self, callback, args=None): gtk.Alignment.__init__(self, xalign=0.5, yalign=0.5, xscale=0.0, yscale=1.0) self.dialog = extension.get_default('dialog') Avatar = extension.get_default('avatar') NiceBar = extension.get_default('nice bar') self.liststore = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf) completion = gtk.EntryCompletion() completion.set_model(self.liststore) pixbufcell = gtk.CellRendererPixbuf() completion.pack_start(pixbufcell) completion.add_attribute(pixbufcell, 'pixbuf', 1) completion.set_text_column(0) completion.set_inline_selection(True) self.pixbuf = utils.safe_gtk_pixbuf_load(gui.theme.image_theme.user) self.cmb_account = gtk.ComboBoxEntry(self.liststore, 0) self.cmb_account.set_tooltip_text(_('Account')) self.cmb_account.get_children()[0].set_completion(completion) self.cmb_account.get_children()[0].connect('key-press-event', self._on_account_key_press) self.cmb_account.connect('changed', self._on_account_changed) self.acc_key_rel_handler = self.cmb_account.connect( 'key-release-event', self._on_account_key_release) self.btn_status = StatusButton.StatusButton() self.btn_status.set_tooltip_text(_('Status')) self.btn_status.set_status(e3.status.ONLINE) self.btn_status.set_size_request(34, -1) self.txt_password = gtk.Entry() self.txt_password.set_tooltip_text(_('Password')) self.txt_password.set_visibility(False) self.txt_password.connect('key-press-event', self._on_password_key_press) self.txt_password.connect('changed', self._on_password_changed) self.txt_password.set_sensitive(False) pix_account = utils.safe_gtk_pixbuf_load(gui.theme.image_theme.user) pix_password = utils.safe_gtk_pixbuf_load( gui.theme.image_theme.password) self.avatar = Avatar() self.remember_account = gtk.CheckButton(_('Remember me')) self.remember_password = gtk.CheckButton(_('Remember password')) self.auto_login = gtk.CheckButton(_('Auto-login')) self.remember_account.connect('toggled', self._on_remember_account_toggled) self.remember_password.connect('toggled', self._on_remember_password_toggled) self.auto_login.connect('toggled', self._on_auto_login_toggled) self.remember_account.set_sensitive(False) self.remember_password.set_sensitive(False) self.auto_login.set_sensitive(False) self.forget_me = gtk.Button() self.forget_me.set_tooltip_text(_('Delete user')) forget_img = gtk.image_new_from_stock(gtk.STOCK_CANCEL, gtk.ICON_SIZE_MENU) self.forget_me.set_image(forget_img) self.forget_me.set_relief(gtk.RELIEF_NONE) self.forget_me.set_border_width(0) self.forget_me.set_size_request(34, -1) self.forget_me.connect('clicked', self._on_forget_me_clicked) self.forget_me.set_sensitive(False) hboxremember = gtk.HBox(spacing=2) hboxremember.pack_start(self.remember_account, False) vbox_remember = gtk.VBox(spacing=4) vbox_remember.set_border_width(8) vbox_remember.pack_start(hboxremember) vbox_remember.pack_start(self.remember_password) vbox_remember.pack_start(self.auto_login) vbox_remember.pack_start(gtk.Label()) self.b_connect = gtk.Button(stock=gtk.STOCK_CONNECT) self.b_connect.set_sensitive(False) self.b_cancel = gtk.Button(stock=gtk.STOCK_CANCEL) self.b_cancel.connect('clicked', self._on_cancel_clicked) vbuttonbox = gtk.VButtonBox() vbuttonbox.set_spacing(8) vbuttonbox.pack_start(self.b_connect) vbuttonbox.pack_start(self.b_cancel) vbox_content = gtk.VBox() hbox_account = gtk.HBox(spacing=6) img_accountpix = gtk.Image() img_accountpix.set_from_pixbuf(utils.scale_nicely(pix_account)) hbox_account.pack_start(img_accountpix, False) hbox_account.pack_start(self.cmb_account) hbox_account.pack_start(self.forget_me, False) hbox_password = gtk.HBox(spacing=6) img_password = gtk.Image() img_password.set_from_pixbuf(utils.scale_nicely(pix_password)) hbox_password.pack_start(img_password, False) hbox_password.pack_start(self.txt_password) hbox_password.pack_start(self.btn_status, False) session_combo_store = gtk.ListStore(gtk.gdk.Pixbuf, str) crp = gtk.CellRendererPixbuf() crt = gtk.CellRendererText() crp.set_property("xalign", 0) crt.set_property("xalign", 0) self.session_combo = gtk.ComboBox() self.session_combo.set_tooltip_text(_('Choose your network')) self.session_combo.set_model(session_combo_store) self.session_combo.pack_start(crp) self.session_combo.pack_start(crt) self.session_combo.add_attribute(crp, "pixbuf", 0) self.session_combo.add_attribute(crt, "text", 1) self.b_preferences = gtk.Button() self.b_preferences.set_tooltip_text(_('Preferences')) self.img_preferences = gtk.image_new_from_stock( gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) self.img_preferences.set_sensitive(False) self.b_preferences.set_image(self.img_preferences) self.b_preferences.set_relief(gtk.RELIEF_NONE) self.b_preferences.connect('enter-notify-event', self._on_preferences_enter) self.b_preferences.connect('leave-notify-event', self._on_preferences_leave) self.b_preferences.connect('clicked', self._on_preferences_selected) self.b_preferences.set_size_request(34, -1) img_sessionpix = gtk.image_new_from_stock(gtk.STOCK_CONNECT, gtk.ICON_SIZE_MENU) img_sessionpix.set_size_request(20, -1) img_sessionpix.set_sensitive(False) hbox_session = gtk.HBox(spacing=6) hbox_session.pack_start(img_sessionpix, False) hbox_session.pack_start(self.session_combo) hbox_session.pack_start(self.b_preferences, False) vbox_entries = gtk.VBox(spacing=12) vbox_entries.set_border_width(8) vbox_entries.pack_start(hbox_account) vbox_entries.pack_start(hbox_password) vbox_entries.pack_start(hbox_session) self.nicebar = NiceBar() th_pix = utils.safe_gtk_pixbuf_load(gui.theme.image_theme.throbber, None, animated=True) self.throbber = gtk.image_new_from_animation(th_pix) self.label_timer = gtk.Label() self.label_timer.set_markup(_('<b>Connection error!\n </b>')) al_label_timer = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.0) al_throbber = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.1, yscale=0.1) al_vbox_entries = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2, yscale=0.0) al_vbox_remember = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.2) al_button = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2) al_account = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.3) al_label_timer.add(self.label_timer) al_throbber.add(self.throbber) al_vbox_entries.add(vbox_entries) al_vbox_remember.add(vbox_remember) al_button.add(vbuttonbox) al_account.add(self.avatar) vbox = gtk.VBox() vbox_top = gtk.VBox() vbox_far_bottom = gtk.VBox() vbox_bottom = gtk.VBox(False) vbox_content.pack_start(gtk.Label(""), True, True) vbox_content.pack_start(al_account, True, False) vbox_content.pack_start(gtk.Label(""), True, True) vbox_content.pack_start(al_vbox_entries, False) vbox_content.pack_start(al_vbox_remember, True, False) vbox_bottom.set_size_request(-1, 100) vbox_bottom.pack_start(al_label_timer, True, False) vbox_bottom.pack_start(al_throbber, False) vbox_bottom.pack_start(gtk.Label(""), True, True) vbox_bottom.pack_start(al_button) vbox_content.pack_start(vbox_bottom) vbox_content.pack_start(gtk.Label(""), True, True) vbox.pack_start(self.nicebar, False) vbox.pack_start(vbox_top) vbox.pack_start(vbox_content) vbox.pack_start(vbox_far_bottom) self.add(vbox) vbox.show_all()
def __init__(self, callback, args=None): gtk.Alignment.__init__(self, xalign=0.5, yalign=0.5, xscale=0.0, yscale=1.0) self.dialog = extension.get_default('dialog') Avatar = extension.get_default('avatar') NiceBar = extension.get_default('nice bar') default_session = extension.get_default('session') self.liststore = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf) completion = gtk.EntryCompletion() completion.set_model(self.liststore) pixbufcell = gtk.CellRendererPixbuf() completion.pack_start(pixbufcell) completion.add_attribute(pixbufcell, 'pixbuf', 1) completion.set_text_column(0) completion.set_inline_selection(True) self.pixbuf = utils.safe_gtk_pixbuf_load(gui.theme.user) self.cmb_account = gtk.ComboBoxEntry(self.liststore, 0) self.cmb_account.get_children()[0].set_completion(completion) self.cmb_account.get_children()[0].connect('key-press-event', self._on_account_key_press) self.cmb_account.connect('changed', self._on_account_changed) self.cmb_account.connect('key-release-event', self._on_account_key_release) self.btn_status = StatusButton.StatusButton() self.btn_status.set_status(e3.status.ONLINE) self.txt_password = gtk.Entry() self.txt_password.set_visibility(False) self.txt_password.connect('key-press-event', self._on_password_key_press) self.txt_password.connect('changed', self._on_password_changed) self.txt_password.set_sensitive(False) pix_account = utils.safe_gtk_pixbuf_load(gui.theme.user) pix_password = utils.safe_gtk_pixbuf_load(gui.theme.password) self.avatar = Avatar() self.remember_account = gtk.CheckButton(_('Remember me')) self.remember_password = gtk.CheckButton(_('Remember password')) self.auto_login = gtk.CheckButton(_('Auto-login')) self.remember_account.connect('toggled', self._on_remember_account_toggled) self.remember_password.connect('toggled', self._on_remember_password_toggled) self.auto_login.connect('toggled', self._on_auto_login_toggled) self.remember_account.set_sensitive(False) self.remember_password.set_sensitive(False) self.auto_login.set_sensitive(False) self.forget_me = gtk.Button() self.forget_me.set_tooltip_text(_('Delete user')) forget_img = gtk.image_new_from_stock(gtk.STOCK_CANCEL, gtk.ICON_SIZE_MENU) self.forget_me.set_image(forget_img) self.forget_me.set_relief(gtk.RELIEF_NONE) self.forget_me.set_border_width(0) self.forget_me.connect('clicked', self._on_forget_me_clicked) self.forget_me.set_sensitive(False) hboxremember = gtk.HBox(spacing=2) hboxremember.pack_start(self.remember_account, False, False) vbox_remember = gtk.VBox(spacing=4) vbox_remember.set_border_width(8) vbox_remember.pack_start(hboxremember) vbox_remember.pack_start(self.remember_password) vbox_remember.pack_start(self.auto_login) self.b_connect = gtk.Button(stock=gtk.STOCK_CONNECT) self.b_connect.connect('clicked', self._on_connect_clicked) self.b_connect.set_sensitive(False) self.b_cancel = gtk.Button(stock=gtk.STOCK_CANCEL) self.b_cancel.connect('clicked', self._on_cancel_clicked) vbuttonbox = gtk.VButtonBox() vbuttonbox.set_spacing(8) vbuttonbox.pack_start(self.b_connect) vbuttonbox.pack_start(self.b_cancel) vbox = gtk.VBox() hbox_account = gtk.HBox(spacing=6) img_accountpix = gtk.Image() img_accountpix.set_from_pixbuf(utils.scale_nicely(pix_account)) hbox_account.pack_start(img_accountpix, False) hbox_account.pack_start(self.cmb_account, True, True) hbox_account.pack_start(self.forget_me, False) hbox_password = gtk.HBox(spacing=6) img_password = gtk.Image() img_password.set_from_pixbuf(utils.scale_nicely(pix_password)) hbox_password.pack_start(img_password, False) hbox_password.pack_start(self.txt_password, True, True) hbox_password.pack_start(self.btn_status, False) vbox_entries = gtk.VBox(spacing=12) vbox_entries.set_border_width(8) vbox_entries.pack_start(hbox_account) vbox_entries.pack_start(hbox_password) self.b_preferences = gtk.Button() self.img_preferences = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) self.img_preferences.set_sensitive(False) self.b_preferences.set_image(self.img_preferences) self.b_preferences.set_relief(gtk.RELIEF_NONE) self.b_preferences.connect('enter-notify-event', self._on_preferences_enter) self.b_preferences.connect('leave-notify-event', self._on_preferences_leave) self.b_preferences.connect('clicked', self._on_preferences_selected) self.nicebar = NiceBar() th_pix = utils.safe_gtk_pixbuf_load(gui.theme.throbber, None, animated=True) self.throbber = gtk.image_new_from_animation(th_pix) self.label_timer = gtk.Label() self.label_timer.set_markup(_('<b>Connection error!\n </b>')) al_label_timer = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.0) al_throbber = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2, yscale=0.2) al_vbox_entries = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2, yscale=0.0) al_vbox_remember = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.2) al_button = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2) al_account = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.0) al_preferences = gtk.Alignment(xalign=1.0, yalign=0.5) al_label_timer.add(self.label_timer) al_throbber.add(self.throbber) al_vbox_entries.add(vbox_entries) al_vbox_remember.add(vbox_remember) al_button.add(vbuttonbox) al_account.add(self.avatar) al_preferences.add(self.b_preferences) vbox_bottom = gtk.VBox(True) vbox.pack_start(self.nicebar, False) vbox.pack_start(al_account, True, False) vbox.pack_start(al_vbox_entries, True, True) vbox.pack_start(al_vbox_remember, True, False) vbox_bottom.pack_start(al_label_timer, True, False) vbox_bottom.pack_start(al_throbber, False, False) vbox_bottom.pack_start(al_button, True, True) vbox.pack_start(vbox_bottom, True, True) vbox.pack_start(al_preferences, True, False) self.add(vbox) vbox.show_all()
def __init__(self, callback, on_preferences_changed, config, config_dir, config_path, proxy=None, use_http=None, session_id=None): gtk.Alignment.__init__(self, xalign=0.5, yalign=0.5, xscale=1.0, yscale=1.0) self.config = config self.config_dir = config_dir self.config_path = config_path self.callback = callback self.on_preferences_changed = on_preferences_changed # the id of the default extension that handles the session # used to select the default session on the preference dialog self.use_http = use_http self.session_id = session_id account = self.config.get_or_set('last_logged_account', '') self.remembers = self.config.get_or_set('d_remembers', {}) self.status = self.config.get_or_set('d_status',{}) self.accounts = self.config.d_accounts if proxy is None: self.proxy = e3.Proxy() else: self.proxy = proxy self.dialog = extension.get_default('dialog') if session_id is not None: for ext_id, ext in extension.get_extensions('session').iteritems(): if session_id == ext_id: self.server_host = ext.DEFAULT_HOST self.server_port = ext.DEFAULT_PORT else: self.server_host = extension.get_default('session').DEFAULT_HOST self.server_port = extension.get_default('session').DEFAULT_PORT self.liststore = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf) completion = gtk.EntryCompletion() completion.set_model(self.liststore) pixbufcell = gtk.CellRendererPixbuf() completion.pack_start(pixbufcell) completion.add_attribute(pixbufcell, 'pixbuf', 1) completion.set_text_column(0) completion.set_inline_selection(True) self.pixbuf = utils.safe_gtk_pixbuf_load(gui.theme.user) self._reload_account_list() self.cmb_account = gtk.ComboBoxEntry(self.liststore, 0) self.cmb_account.get_children()[0].set_completion(completion) self.cmb_account.get_children()[0].connect('key-press-event', self._on_account_key_press) self.cmb_account.connect('changed', self._on_account_changed) self.btn_status = StatusButton.StatusButton() self.btn_status.set_status(e3.status.ONLINE) status_padding = gtk.Label() status_padding.set_size_request(*self.btn_status.size_request()) self.txt_password = gtk.Entry() self.txt_password.set_visibility(False) self.txt_password.connect('key-press-event', self._on_password_key_press) self.txt_password.connect('changed', self._on_password_changed) pix_account = utils.safe_gtk_pixbuf_load(gui.theme.user) pix_password = utils.safe_gtk_pixbuf_load(gui.theme.password) self.img_account = gtk.Image() path = self.config_dir.join(account.replace('@','-at-'), \ 'avatars', 'last') if self.config_dir.file_readable(path): pix = utils.safe_gtk_pixbuf_load(path, (96,96)) else: pix = utils.safe_gtk_pixbuf_load(gui.theme.logo) self.img_account.set_from_pixbuf(pix) self.remember_account = gtk.CheckButton(_('Remember me')) self.remember_password = gtk.CheckButton(_('Remember password')) self.auto_login = gtk.CheckButton(_('Auto-login')) self.remember_account.connect('toggled', self._on_remember_account_toggled) self.remember_password.connect('toggled', self._on_remember_password_toggled) self.auto_login.connect('toggled', self._on_auto_login_toggled) self.forget_me = gtk.EventBox() self.forget_me.set_events(gtk.gdk.BUTTON_PRESS_MASK) self.forget_me_label = gtk.Label('<span foreground="#0000AA">(' + \ _('Forget me') + ')</span>') self.forget_me_label.set_use_markup(True) self.forget_me.add(self.forget_me_label) self.forget_me.connect('button_press_event', self._on_forget_me_clicked) self.forget_me.set_child_visible(False) hboxremember = gtk.HBox(spacing=2) hboxremember.pack_start(self.remember_account, False, False) hboxremember.pack_start(self.forget_me, False, False) vbox_remember = gtk.VBox(spacing=4) vbox_remember.set_border_width(8) vbox_remember.pack_start(hboxremember) vbox_remember.pack_start(self.remember_password) vbox_remember.pack_start(self.auto_login) self.b_connect = gtk.Button(stock=gtk.STOCK_CONNECT) self.b_connect.connect('clicked', self._on_connect_clicked) self.b_connect.set_border_width(8) vbox = gtk.VBox() hbox_account = gtk.HBox(spacing=6) img_accountpix = gtk.Image() img_accountpix.set_from_pixbuf(utils.scale_nicely(pix_account)) hbox_account.pack_start(img_accountpix, False) hbox_account.pack_start(self.cmb_account, True, True) hbox_account.pack_start(status_padding, False) hbox_password = gtk.HBox(spacing=6) img_password = gtk.Image() img_password.set_from_pixbuf(utils.scale_nicely(pix_password)) hbox_password.pack_start(img_password, False) hbox_password.pack_start(self.txt_password, True, True) hbox_password.pack_start(self.btn_status, False) vbox_entries = gtk.VBox(spacing=12) vbox_entries.set_border_width(8) vbox_entries.pack_start(hbox_account) vbox_entries.pack_start(hbox_password) self.b_preferences = gtk.Button() self.img_preferences = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) self.img_preferences.set_sensitive(False) self.b_preferences.set_image(self.img_preferences) self.b_preferences.set_relief(gtk.RELIEF_NONE) self.b_preferences.connect('enter-notify-event', self._on_preferences_enter) self.b_preferences.connect('leave-notify-event', self._on_preferences_leave) self.b_preferences.connect('clicked', self._on_preferences_selected) self.nicebar = NiceBar.NiceBar(default_background= \ NiceBar.ALERTBACKGROUND) al_logo = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.0) al_vbox_entries = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2, yscale=0.0) al_vbox_remember = gtk.Alignment(xalign=0.55, yalign=0.5, xscale=0.05, yscale=0.2) al_button = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.15) al_account = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.0) al_preferences = gtk.Alignment(xalign=1.0, yalign=0.5) al_vbox_entries.add(vbox_entries) al_vbox_remember.add(vbox_remember) al_button.add(self.b_connect) al_account.add(self.img_account) al_preferences.add(self.b_preferences) vbox.pack_start(self.nicebar, False) vbox.pack_start(al_account, True, False) vbox.pack_start(al_vbox_entries, True, True) vbox.pack_start(al_vbox_remember, True, False) vbox.pack_start(al_button, True, True) vbox.pack_start(al_preferences, False) self.add(vbox) vbox.show_all() self.nicebar.hide() if account != '': self.cmb_account.get_children()[0].set_text(account)
def __init__(self, callback, args=None): gtk.Alignment.__init__(self, xalign=0.5, yalign=0.5, xscale=0.0, yscale=1.0) self.dialog = extension.get_default("dialog") Avatar = extension.get_default("avatar") NiceBar = extension.get_default("nice bar") self.liststore = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf) completion = gtk.EntryCompletion() completion.set_model(self.liststore) pixbufcell = gtk.CellRendererPixbuf() completion.pack_start(pixbufcell) completion.add_attribute(pixbufcell, "pixbuf", 1) completion.set_text_column(0) completion.set_inline_selection(True) self.pixbuf = utils.safe_gtk_pixbuf_load(gui.theme.user) self.cmb_account = gtk.ComboBoxEntry(self.liststore, 0) self.cmb_account.set_tooltip_text(_("Account")) self.cmb_account.get_children()[0].set_completion(completion) self.cmb_account.get_children()[0].connect("key-press-event", self._on_account_key_press) self.cmb_account.connect("changed", self._on_account_changed) self.cmb_account.connect("key-release-event", self._on_account_key_release) self.btn_status = StatusButton.StatusButton() self.btn_status.set_tooltip_text(_("Status")) self.btn_status.set_status(e3.status.ONLINE) self.btn_status.set_size_request(34, -1) self.txt_password = gtk.Entry() self.txt_password.set_tooltip_text(_("Password")) self.txt_password.set_visibility(False) self.txt_password.connect("key-press-event", self._on_password_key_press) self.txt_password.connect("changed", self._on_password_changed) self.txt_password.set_sensitive(False) pix_account = utils.safe_gtk_pixbuf_load(gui.theme.user) pix_password = utils.safe_gtk_pixbuf_load(gui.theme.password) self.avatar = Avatar() self.remember_account = gtk.CheckButton(_("Remember me")) self.remember_password = gtk.CheckButton(_("Remember password")) self.auto_login = gtk.CheckButton(_("Auto-login")) self.remember_account.connect("toggled", self._on_remember_account_toggled) self.remember_password.connect("toggled", self._on_remember_password_toggled) self.auto_login.connect("toggled", self._on_auto_login_toggled) self.remember_account.set_sensitive(False) self.remember_password.set_sensitive(False) self.auto_login.set_sensitive(False) self.forget_me = gtk.Button() self.forget_me.set_tooltip_text(_("Delete user")) forget_img = gtk.image_new_from_stock(gtk.STOCK_CANCEL, gtk.ICON_SIZE_MENU) self.forget_me.set_image(forget_img) self.forget_me.set_relief(gtk.RELIEF_NONE) self.forget_me.set_border_width(0) self.forget_me.set_size_request(34, -1) self.forget_me.connect("clicked", self._on_forget_me_clicked) self.forget_me.set_sensitive(False) hboxremember = gtk.HBox(spacing=2) hboxremember.pack_start(self.remember_account, False) vbox_remember = gtk.VBox(spacing=4) vbox_remember.set_border_width(8) vbox_remember.pack_start(hboxremember) vbox_remember.pack_start(self.remember_password) vbox_remember.pack_start(self.auto_login) vbox_remember.pack_start(gtk.Label()) self.b_connect = gtk.Button(stock=gtk.STOCK_CONNECT) self.b_connect.set_sensitive(False) self.b_cancel = gtk.Button(stock=gtk.STOCK_CANCEL) self.b_cancel.connect("clicked", self._on_cancel_clicked) vbuttonbox = gtk.VButtonBox() vbuttonbox.set_spacing(8) vbuttonbox.pack_start(self.b_connect) vbuttonbox.pack_start(self.b_cancel) vbox_content = gtk.VBox() hbox_account = gtk.HBox(spacing=6) img_accountpix = gtk.Image() img_accountpix.set_from_pixbuf(utils.scale_nicely(pix_account)) hbox_account.pack_start(img_accountpix, False) hbox_account.pack_start(self.cmb_account) hbox_account.pack_start(self.forget_me, False) hbox_password = gtk.HBox(spacing=6) img_password = gtk.Image() img_password.set_from_pixbuf(utils.scale_nicely(pix_password)) hbox_password.pack_start(img_password, False) hbox_password.pack_start(self.txt_password) hbox_password.pack_start(self.btn_status, False) session_combo_store = gtk.ListStore(gtk.gdk.Pixbuf, str) crp = gtk.CellRendererPixbuf() crt = gtk.CellRendererText() crp.set_property("xalign", 0) crt.set_property("xalign", 0) self.session_combo = gtk.ComboBox() self.session_combo.set_tooltip_text(_("Choose your network")) self.session_combo.set_model(session_combo_store) self.session_combo.pack_start(crp) self.session_combo.pack_start(crt) self.session_combo.add_attribute(crp, "pixbuf", 0) self.session_combo.add_attribute(crt, "text", 1) self.b_preferences = gtk.Button() self.b_preferences.set_tooltip_text(_("Preferences")) self.img_preferences = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) self.img_preferences.set_sensitive(False) self.b_preferences.set_image(self.img_preferences) self.b_preferences.set_relief(gtk.RELIEF_NONE) self.b_preferences.connect("enter-notify-event", self._on_preferences_enter) self.b_preferences.connect("leave-notify-event", self._on_preferences_leave) self.b_preferences.connect("clicked", self._on_preferences_selected) self.b_preferences.set_size_request(34, -1) img_sessionpix = gtk.image_new_from_stock(gtk.STOCK_CONNECT, gtk.ICON_SIZE_MENU) img_sessionpix.set_size_request(20, -1) img_sessionpix.set_sensitive(False) hbox_session = gtk.HBox(spacing=6) hbox_session.pack_start(img_sessionpix, False) hbox_session.pack_start(self.session_combo) hbox_session.pack_start(self.b_preferences, False) vbox_entries = gtk.VBox(spacing=12) vbox_entries.set_border_width(8) vbox_entries.pack_start(hbox_account) vbox_entries.pack_start(hbox_password) vbox_entries.pack_start(hbox_session) self.nicebar = NiceBar() th_pix = utils.safe_gtk_pixbuf_load(gui.theme.throbber, None, animated=True) self.throbber = gtk.image_new_from_animation(th_pix) self.label_timer = gtk.Label() self.label_timer.set_markup(_("<b>Connection error!\n </b>")) al_label_timer = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.0) al_throbber = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.1, yscale=0.1) al_vbox_entries = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2, yscale=0.0) al_vbox_remember = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.2) al_button = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2) al_account = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.3) al_label_timer.add(self.label_timer) al_throbber.add(self.throbber) al_vbox_entries.add(vbox_entries) al_vbox_remember.add(vbox_remember) al_button.add(vbuttonbox) al_account.add(self.avatar) vbox = gtk.VBox() vbox_top = gtk.VBox() vbox_far_bottom = gtk.VBox() vbox_bottom = gtk.VBox(False) vbox_content.pack_start(gtk.Label(""), True, True) vbox_content.pack_start(al_account, True, False) vbox_content.pack_start(gtk.Label(""), True, True) vbox_content.pack_start(al_vbox_entries, False) vbox_content.pack_start(al_vbox_remember, True, False) vbox_bottom.set_size_request(-1, 100) vbox_bottom.pack_start(al_label_timer, True, False) vbox_bottom.pack_start(al_throbber, False) vbox_bottom.pack_start(gtk.Label(""), True, True) vbox_bottom.pack_start(al_button) vbox_content.pack_start(vbox_bottom) vbox_content.pack_start(gtk.Label(""), True, True) vbox.pack_start(self.nicebar, False) vbox.pack_start(vbox_top) vbox.pack_start(vbox_content) vbox.pack_start(vbox_far_bottom) self.add(vbox) vbox.show_all()
def __init__(self, callback, on_preferences_changed, account, accounts=None, remember_account=None, remember_password=None, statuses=None, proxy=None, use_http=False, session_id=None): gtk.Alignment.__init__(self, xalign=0.5, yalign=0.5, xscale=1.0, yscale=1.0) account = account or e3.Account("", "", e3.status.ONLINE) self.callback = callback self.on_preferences_changed = on_preferences_changed self.accounts = accounts or {} self.l_remember_account = remember_account or [] self.l_remember_password = remember_password or [] self.statuses = statuses or {} # the id of the default extension that handles the session # used to select the default session on the preference dialog self.use_http = use_http self.session_id = session_id if proxy is None: self.proxy = e3.Proxy() else: self.proxy = proxy liststore = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf) completion = gtk.EntryCompletion() completion.set_model(liststore) pixbufcell = gtk.CellRendererPixbuf() completion.pack_start(pixbufcell) completion.add_attribute(pixbufcell, 'pixbuf', 1) completion.set_text_column(0) completion.set_inline_selection(True) pixbuf = utils.safe_gtk_pixbuf_load(gui.theme.user) for mail in sorted(self.accounts): liststore.append([mail, utils.scale_nicely(pixbuf)]) self.cmb_account = gtk.ComboBoxEntry(liststore, 0) self.cmb_account.get_children()[0].set_completion(completion) self.cmb_account.get_children()[0].connect('key-press-event', self._on_account_key_press) self.cmb_account.connect('changed', self._on_account_changed) if account: self.cmb_account.prepend_text(account.account) self.btn_status = StatusButton.StatusButton() status_padding = gtk.Label() status_padding.set_size_request(*self.btn_status.size_request()) self.txt_password = gtk.Entry() self.txt_password.set_visibility(False) if account: self.txt_password.set_text(account.password) self.txt_password.connect('key-press-event', self._on_password_key_press) pix_account = utils.safe_gtk_pixbuf_load(gui.theme.user) pix_password = utils.safe_gtk_pixbuf_load(gui.theme.password) img_logo = utils.safe_gtk_image_load(gui.theme.logo) th_pix = utils.safe_gtk_pixbuf_load(gui.theme.throbber, None, animated=True) self.throbber = gtk.image_new_from_animation(th_pix) self.remember_account = gtk.CheckButton(_('Remember account')) self.remember_password = gtk.CheckButton(_('Remember password')) self.remember_account.connect('toggled', self._on_remember_account_toggled) self.remember_password.connect('toggled', self._on_remember_password_toggled) vbox_remember = gtk.VBox(spacing=4) vbox_remember.set_border_width(8) vbox_remember.pack_start(self.throbber) vbox_remember.pack_start(self.remember_account) vbox_remember.pack_start(self.remember_password) self.b_connect = gtk.Button(stock=gtk.STOCK_CONNECT) self.b_connect.connect('clicked', self._on_connect_clicked) self.b_connect.set_border_width(8) vbox = gtk.VBox() vbox.set_border_width(2) hbox_account = gtk.HBox(spacing=6) img_account = gtk.Image() img_account.set_from_pixbuf(utils.scale_nicely(pix_account)) hbox_account.pack_start(img_account, False) hbox_account.pack_start(self.cmb_account, True, True) hbox_account.pack_start(status_padding, False) hbox_password = gtk.HBox(spacing=6) img_password = gtk.Image() img_password.set_from_pixbuf(utils.scale_nicely(pix_password)) hbox_password.pack_start(img_password, False) hbox_password.pack_start(self.txt_password, True, True) hbox_password.pack_start(self.btn_status, False) vbox_entries = gtk.VBox(spacing=12) vbox_entries.set_border_width(8) vbox_entries.pack_start(hbox_account) vbox_entries.pack_start(hbox_password) self.b_preferences = gtk.Button() self.img_preferences = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) self.img_preferences.set_sensitive(False) self.b_preferences.set_image(self.img_preferences) self.b_preferences.set_relief(gtk.RELIEF_NONE) self.b_preferences.connect('enter-notify-event', self._on_preferences_enter) self.b_preferences.connect('leave-notify-event', self._on_preferences_leave) self.b_preferences.connect('clicked', self._on_preferences_selected) al_vbox_entries = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2, yscale=0.0) al_vbox_remember = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2, yscale=0.2) al_button = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2, yscale=0.0) al_logo = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.0) al_preferences = gtk.Alignment(xalign=1.0, yalign=0.5) al_vbox_entries.add(vbox_entries) al_vbox_remember.add(vbox_remember) al_button.add(self.b_connect) al_logo.add(img_logo) al_preferences.add(self.b_preferences) vbox.pack_start(al_logo, True, True, 10) vbox.pack_start(al_vbox_entries, True, True) vbox.pack_start(al_vbox_remember, True, True) vbox.pack_start(al_button, True, True) vbox.pack_start(al_preferences, False) self.add(vbox) vbox.show_all() self.throbber.hide()
def __init__(self, callback, on_preferences_changed, config, config_dir, config_path, proxy=None, use_http=None, session_id=None): gtk.Alignment.__init__(self, xalign=0.5, yalign=0.5, xscale=0.0, yscale=1.0) self.config = config self.config_dir = config_dir self.config_path = config_path self.callback = callback self.on_preferences_changed = on_preferences_changed # the id of the default extension that handles the session # used to select the default session on the preference dialog self.use_http = use_http self.session_id = session_id account = self.config.get_or_set('last_logged_account', '') self.remembers = self.config.get_or_set('d_remembers', {}) self.status = self.config.get_or_set('d_status',{}) self.accounts = self.config.d_accounts if proxy is None: self.proxy = e3.Proxy() else: self.proxy = proxy self.dialog = extension.get_default('dialog') Avatar = extension.get_default('avatar') NiceBar = extension.get_default('nice bar') if session_id is not None: for ext_id, ext in extension.get_extensions('session').iteritems(): if session_id == ext_id: self.server_host = ext.DEFAULT_HOST self.server_port = ext.DEFAULT_PORT else: self.server_host = extension.get_default('session').DEFAULT_HOST self.server_port = extension.get_default('session').DEFAULT_PORT else: self.server_host = extension.get_default('session').DEFAULT_HOST self.server_port = extension.get_default('session').DEFAULT_PORT self.liststore = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf) completion = gtk.EntryCompletion() completion.set_model(self.liststore) pixbufcell = gtk.CellRendererPixbuf() completion.pack_start(pixbufcell) completion.add_attribute(pixbufcell, 'pixbuf', 1) completion.set_text_column(0) completion.set_inline_selection(True) self.pixbuf = utils.safe_gtk_pixbuf_load(gui.theme.user) self._reload_account_list() self.cmb_account = gtk.ComboBoxEntry(self.liststore, 0) self.cmb_account.get_children()[0].set_completion(completion) self.cmb_account.get_children()[0].connect('key-press-event', self._on_account_key_press) self.cmb_account.connect('changed', self._on_account_changed) self.btn_status = StatusButton.StatusButton() self.btn_status.set_status(e3.status.ONLINE) self.txt_password = gtk.Entry() self.txt_password.set_visibility(False) self.txt_password.connect('key-press-event', self._on_password_key_press) self.txt_password.connect('changed', self._on_password_changed) self.txt_password.set_sensitive(False) pix_account = utils.safe_gtk_pixbuf_load(gui.theme.user) pix_password = utils.safe_gtk_pixbuf_load(gui.theme.password) self.avatar = Avatar() avatar_path = self.config_dir.join(self.server_host, account, 'avatars', 'last') self.avatar.set_from_file(avatar_path) self.remember_account = gtk.CheckButton(_('Remember me')) self.remember_password = gtk.CheckButton(_('Remember password')) self.auto_login = gtk.CheckButton(_('Auto-login')) self.remember_account.connect('toggled', self._on_remember_account_toggled) self.remember_password.connect('toggled', self._on_remember_password_toggled) self.auto_login.connect('toggled', self._on_auto_login_toggled) self.remember_account.set_sensitive(False) self.remember_password.set_sensitive(False) self.auto_login.set_sensitive(False) self.forget_me = gtk.Button() self.forget_me.set_tooltip_text(_('Delete user')) forget_img = gtk.image_new_from_stock(gtk.STOCK_CANCEL, gtk.ICON_SIZE_MENU) self.forget_me.set_image(forget_img) self.forget_me.set_relief(gtk.RELIEF_NONE) self.forget_me.set_border_width(0) self.forget_me.connect('clicked', self._on_forget_me_clicked) self.forget_me.set_sensitive(False) hboxremember = gtk.HBox(spacing=2) hboxremember.pack_start(self.remember_account, False, False) vbox_remember = gtk.VBox(spacing=4) vbox_remember.set_border_width(8) vbox_remember.pack_start(hboxremember) vbox_remember.pack_start(self.remember_password) vbox_remember.pack_start(self.auto_login) self.b_connect = gtk.Button(stock=gtk.STOCK_CONNECT) self.b_connect.connect('clicked', self._on_connect_clicked) self.b_connect.set_border_width(8) self.b_connect.set_sensitive(False) vbox = gtk.VBox() hbox_account = gtk.HBox(spacing=6) img_accountpix = gtk.Image() img_accountpix.set_from_pixbuf(utils.scale_nicely(pix_account)) hbox_account.pack_start(img_accountpix, False) hbox_account.pack_start(self.cmb_account, True, True) hbox_account.pack_start(self.forget_me, False) hbox_password = gtk.HBox(spacing=6) img_password = gtk.Image() img_password.set_from_pixbuf(utils.scale_nicely(pix_password)) hbox_password.pack_start(img_password, False) hbox_password.pack_start(self.txt_password, True, True) hbox_password.pack_start(self.btn_status, False) vbox_entries = gtk.VBox(spacing=12) vbox_entries.set_border_width(8) vbox_entries.pack_start(hbox_account) vbox_entries.pack_start(hbox_password) self.b_preferences = gtk.Button() self.img_preferences = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) self.img_preferences.set_sensitive(False) self.b_preferences.set_image(self.img_preferences) self.b_preferences.set_relief(gtk.RELIEF_NONE) self.b_preferences.connect('enter-notify-event', self._on_preferences_enter) self.b_preferences.connect('leave-notify-event', self._on_preferences_leave) self.b_preferences.connect('clicked', self._on_preferences_selected) self.nicebar = NiceBar() al_vbox_entries = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.2, yscale=0.0) al_vbox_remember = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.2) al_button = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.20) al_account = gtk.Alignment(xalign=0.5, yalign=0.5, xscale=0.0, yscale=0.0) al_preferences = gtk.Alignment(xalign=1.0, yalign=0.5) al_vbox_entries.add(vbox_entries) al_vbox_remember.add(vbox_remember) al_button.add(self.b_connect) al_account.add(self.avatar) al_preferences.add(self.b_preferences) vbox.pack_start(self.nicebar, False) vbox.pack_start(al_account, True, False) vbox.pack_start(al_vbox_entries, True, True) vbox.pack_start(al_vbox_remember, True, False) vbox.pack_start(al_button, True, True) vbox.pack_start(al_preferences, False) self.add(vbox) vbox.show_all() self.nicebar.hide() if account != '': self.cmb_account.get_children()[0].set_text(account)