コード例 #1
0
ファイル: privacy_list.py プロジェクト: shubham2110/gajim1
    def __init__(self, account):
        EventHelper.__init__(self)
        self.account = account
        self.privacy_lists_save = []

        self._ui = get_builder('privacy_lists_window.ui')

        self.window = self._ui.get_object('privacy_lists_first_window')

        self.draw_privacy_lists_in_combobox([])
        self.privacy_lists_refresh()

        self.enabled = True

        if len(app.connections) > 1:
            title = _('Privacy Lists for %s') % self.account
        else:
            title = _('Privacy Lists')

        self.window.set_title(title)

        # pylint: disable=line-too-long
        self.register_events([
            ('privacy-lists-received', ged.GUI1,
             self._nec_privacy_lists_received),
            ('privacy-list-removed', ged.GUI1,
             self._nec_privacy_lists_removed),
        ])
        # pylint: enable=line-too-long

        self.window.show_all()

        self._ui.connect_signals(self)
コード例 #2
0
ファイル: message_control.py プロジェクト: bj-h/gajim
    def __init__(self,
                 type_id,
                 parent_win,
                 widget_name,
                 contact,
                 account,
                 resource=None):
        # dict { cb id : widget}
        # keep all registered callbacks of widgets, created by self.xml
        self.handlers = {}
        self.type_id = type_id
        self.parent_win = parent_win
        self.widget_name = widget_name
        self.contact = contact
        self.account = account
        self.resource = resource
        # control_id is a unique id for the control,
        # its used as action name for actions that belong to a control
        self.control_id = str(uuid.uuid4())
        self.session = None

        app.last_message_time[self.account][self.get_full_jid()] = 0

        self.xml = get_builder('%s.ui' % widget_name)
        self.xml.connect_signals(self)
        self.widget = self.xml.get_object('%s_hbox' % widget_name)

        app.ged.register_event_handler('message-outgoing', ged.OUT_GUI1,
                                       self._nec_message_outgoing)
コード例 #3
0
ファイル: account_wizard.py プロジェクト: bj-h/gajim
    def __init__(self):
        self.xml = get_builder('account_creation_wizard_window.ui')
        self.window = self.xml.get_object('account_creation_wizard_window')
        active_window = app.app.get_active_window()
        self.window.set_transient_for(active_window)

        # Connect events from comboboxtext_entry
        server_comboboxtext = self.xml.get_object('server_comboboxtext')
        entry = self.xml.get_object('server_comboboxtext_entry')
        entry.connect('key_press_event',
                      self.on_entry_key_press_event, server_comboboxtext)

        server_comboboxtext1 = self.xml.get_object('server_comboboxtext1')

        self.update_proxy_list()

        # parse servers.json
        server_file_path = os.path.join(
            configpaths.get('DATA'), 'other', 'servers.json')
        servers = helpers.load_json(server_file_path, 'servers', [])

        servers_model = self.xml.get_object('server_liststore')
        for server in servers:
            servers_model.append((server,))

        server_comboboxtext.set_model(servers_model)
        server_comboboxtext1.set_model(servers_model)

        # Generic widgets
        self.notebook = self.xml.get_object('notebook')
        self.cancel_button = self.xml.get_object('cancel_button')
        self.back_button = self.xml.get_object('back_button')
        self.forward_button = self.xml.get_object('forward_button')
        self.finish_button = self.xml.get_object('finish_button')
        self.advanced_button = self.xml.get_object('advanced_button')
        self.finish_label = self.xml.get_object('finish_label')
        self.go_online_checkbutton = self.xml.get_object(
            'go_online_checkbutton')
        self.show_vcard_checkbutton = self.xml.get_object(
            'show_vcard_checkbutton')
        self.progressbar = self.xml.get_object('progressbar')

        # some vars
        self.update_progressbar_timeout_id = None

        self.notebook.set_current_page(0)
        self.xml.connect_signals(self)
        self.window.show_all()
        app.ged.register_event_handler(
            'new-account-connected', ged.GUI1,
            self._nec_new_acc_connected)
        app.ged.register_event_handler(
            'new-account-not-connected', ged.GUI1,
            self._nec_new_acc_not_connected)
        app.ged.register_event_handler(
            'account-created', ged.GUI1,
            self._nec_acc_is_ok)
        app.ged.register_event_handler(
            'account-not-created', ged.GUI1,
            self._nec_acc_is_not_ok)
コード例 #4
0
    def __init__(self, jid, text, account, user_nick=None):
        Gtk.ApplicationWindow.__init__(self)
        self.set_name('SubscriptionRequest')
        self.set_application(app.app)
        self.set_show_menubar(False)
        self.set_resizable(False)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_title(_('Subscription Request'))

        self._ui = get_builder('subscription_request_window.ui')
        self.add(self._ui.subscription_box)
        self.jid = jid
        self.account = account
        self.user_nick = user_nick
        self._ui.jid_label.set_text(self.jid)
        if len(app.connections) >= 2:
            prompt_text = \
                _('Subscription request for account %(account)s from %(jid)s')\
                % {'account': account, 'jid': self.jid}
        else:
            prompt_text = _('Subscription request from %s') % self.jid

        self._ui.request_label.set_text(prompt_text)
        self._ui.subscription_text.set_text(text)

        self._ui.connect_signals(self)
        self.show_all()
コード例 #5
0
    def __init__(self, dataformnode=None):
        ''' Create a widget. '''
        GObject.GObject.__init__(self, xscale=1.0, yscale=1.0)

        self._data_form = None
        self.selectable = False
        self.clean_cb = None

        self.xml = get_builder('data_form_window.ui', ['data_form_vbox'])
        self.xml.connect_signals(self)
        for name in ('instructions_label', 'instructions_hseparator',
                     'single_form_viewport', 'data_form_types_notebook',
                     'single_form_scrolledwindow', 'multiple_form_hbox',
                     'records_treeview', 'buttons_vbox', 'add_button',
                     'remove_button', 'edit_button', 'up_button',
                     'down_button', 'clear_button'):
            self.__dict__[name] = self.xml.get_object(name)

        self.add(self.xml.get_object('data_form_vbox'))

        if dataformnode is not None:
            self.set_data_form(dataformnode)

        selection = self.records_treeview.get_selection()
        selection.connect('changed', self.on_records_selection_changed)
        selection.set_mode(Gtk.SelectionMode.MULTIPLE)
コード例 #6
0
ファイル: dialogs.py プロジェクト: bj-h/gajim
    def __init__(self, account, remote_account):
        self.local_account = account
        self.remote_account = remote_account
        self.xml = get_builder('synchronise_select_contacts_dialog.ui')
        self.dialog = self.xml.get_object('synchronise_select_contacts_dialog')
        self.contacts_treeview = self.xml.get_object('contacts_treeview')
        model = Gtk.ListStore(bool, str)
        self.contacts_treeview.set_model(model)
        # columns
        renderer1 = Gtk.CellRendererToggle()
        renderer1.set_property('activatable', True)
        renderer1.connect('toggled', self.toggled_callback)
        self.contacts_treeview.insert_column_with_attributes(-1,
                                                             _('Synchronise'),
                                                             renderer1,
                                                             active=0)
        renderer2 = Gtk.CellRendererText()
        self.contacts_treeview.insert_column_with_attributes(-1,
                                                             _('Name'),
                                                             renderer2,
                                                             text=1)

        self.xml.connect_signals(self)
        self.init_contacts()
        self.dialog.show_all()
コード例 #7
0
    def __init__(self, account):
        self.account = account
        self.privacy_lists_save = []

        self.xml = get_builder('privacy_lists_window.ui')

        self.window = self.xml.get_object('privacy_lists_first_window')
        for widget_to_add in (
            'list_of_privacy_lists_combobox', 'delete_privacy_list_button',
            'open_privacy_list_button', 'new_privacy_list_button',
            'new_privacy_list_entry', 'privacy_lists_refresh_button',
                'close_privacy_lists_window_button'):
            self.__dict__[widget_to_add] = self.xml.get_object(widget_to_add)

        self.draw_privacy_lists_in_combobox([])
        self.privacy_lists_refresh()

        self.enabled = True

        if len(app.connections) > 1:
            title = _('Privacy Lists for %s') % self.account
        else:
            title = _('Privacy Lists')

        self.window.set_title(title)

        app.ged.register_event_handler('privacy-lists-received', ged.GUI1,
                                       self._nec_privacy_lists_received)
        app.ged.register_event_handler('privacy-list-removed', ged.GUI1,
                                       self._nec_privacy_lists_removed)

        self.window.show_all()

        self.xml.connect_signals(self)
コード例 #8
0
ファイル: dialogs.py プロジェクト: bj-h/gajim
    def __init__(self, account):
        # 'account' can be None if we are about to create our first one
        if not account or app.connections[account].connected < 2:
            ErrorDialog(
                _('You are not connected to the server'),
                _('Without a connection, you can not synchronise your contacts.'
                  ))
            raise GajimGeneralException('You are not connected to the server')
        self.account = account
        self.xml = get_builder('synchronise_select_account_dialog.ui')
        self.dialog = self.xml.get_object('synchronise_select_account_dialog')
        self.dialog.set_transient_for(app.get_app_window('AccountsWindow'))
        self.accounts_treeview = self.xml.get_object('accounts_treeview')
        model = Gtk.ListStore(str, str, bool)
        self.accounts_treeview.set_model(model)
        # columns
        renderer = Gtk.CellRendererText()
        self.accounts_treeview.insert_column_with_attributes(-1,
                                                             _('Name'),
                                                             renderer,
                                                             text=0)
        renderer = Gtk.CellRendererText()
        self.accounts_treeview.insert_column_with_attributes(-1,
                                                             _('Server'),
                                                             renderer,
                                                             text=1)

        self.xml.connect_signals(self)
        self.init_accounts()
        self.dialog.show_all()
コード例 #9
0
ファイル: dialogs.py プロジェクト: bj-h/gajim
    def __init__(self, list_):
        """
        list_ is a list of (contact, account) tuples
        """
        self.xml = get_builder('edit_groups_dialog.ui')
        self.dialog = self.xml.get_object('edit_groups_dialog')
        self.dialog.set_transient_for(app.interface.roster.window)
        self.list_ = list_
        self.changes_made = False
        self.treeview = self.xml.get_object('groups_treeview')
        if len(list_) == 1:
            contact = list_[0][0]
            self.xml.get_object('nickname_label').set_markup(
                _('Contact name: <i>%s</i>') % contact.get_shown_name())
            self.xml.get_object('jid_label').set_markup(
                _('XMPP Address: <i>%s</i>') % contact.jid)
        else:
            self.xml.get_object('nickname_label').set_no_show_all(True)
            self.xml.get_object('nickname_label').hide()
            self.xml.get_object('jid_label').set_no_show_all(True)
            self.xml.get_object('jid_label').hide()

        self.xml.connect_signals(self)
        self.init_list()

        self.dialog.show_all()
        if self.changes_made:
            for (contact, account) in self.list_:
                con = app.connections[account]
                con.get_module('Roster').update_contact(
                    contact.jid, contact.name, contact.groups)
コード例 #10
0
ファイル: pep_config.py プロジェクト: shubham2110/gajim1
    def __init__(self, account):
        Gtk.ApplicationWindow.__init__(self)
        EventHelper.__init__(self)
        self.set_application(app.app)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_show_menubar(False)
        self.set_name('PEPConfig')
        self.set_default_size(300, 350)
        self.set_resizable(True)
        self.set_transient_for(app.interface.roster.window)

        self._ui = get_builder('manage_pep_services_window.ui')
        self.add(self._ui.manage_pep_services)

        self.account = account
        self.set_title(_('PEP Service Configuration (%s)') % self.account)
        self._con = app.connections[self.account]

        self._init_services()
        self._ui.services_treeview.get_selection().connect(
            'changed', self._on_services_selection_changed)

        self.register_events([
            ('pubsub-config-received', ged.GUI1, self._nec_pep_config_received),
        ])

        self.show_all()
        self.connect('key-press-event', self._on_key_press_event)
        self._ui.connect_signals(self)
コード例 #11
0
ファイル: groupchat_creation.py プロジェクト: bj-h/gajim
    def __init__(self, account):
        Gtk.ApplicationWindow.__init__(self)
        self.set_name('CreateGroupchat')
        self.set_application(app.app)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_show_menubar(False)
        self.set_resizable(True)
        self.set_title(_('Create Group Chat'))

        self._ui = get_builder('groupchat_creation.ui')
        self.add(self._ui.create_group_chat)

        self._destroyed = False

        self._account = self._fill_account_combo(account)

        self._create_entry_completion()
        self._fill_placeholders()

        self._ui.connect_signals(self)
        self.connect('key-press-event', self._on_key_press_event)
        self.connect('destroy', self._on_destroy)

        self.show_all()
        self.set_focus(self._ui.address_entry)
コード例 #12
0
    def __init__(self, account):
        Gtk.ApplicationWindow.__init__(self)
        self.set_application(app.app)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_show_menubar(False)
        self.set_title(_('Blocking List for %s') % account)

        self.connect('key-press-event', self._on_key_press)

        self.account = account
        self._con = app.connections[account]
        self._prev_blocked_jids = set()
        self._await_results = 2
        self._received_errors = False

        self._ui = get_builder('blocking_list.ui')
        self.add(self._ui.blocking_grid)

        self._spinner = Gtk.Spinner()
        self._ui.overlay.add_overlay(self._spinner)

        self._set_grid_state(False)
        self._ui.connect_signals(self)
        self.show_all()

        self._activate_spinner()

        self._con.get_module('Blocking').get_blocking_list(
            callback=self._on_blocking_list_received)
コード例 #13
0
    def __init__(self,
                 title,
                 label_str,
                 checktext='',
                 input_str=None,
                 is_modal=True,
                 ok_handler=None,
                 cancel_handler=None,
                 transient_for=None):
        self.xml = get_builder('input_dialog.ui')
        InputDialog.__init__(self,
                             title,
                             label_str,
                             input_str=input_str,
                             is_modal=is_modal,
                             ok_handler=ok_handler,
                             cancel_handler=cancel_handler,
                             transient_for=transient_for)
        self.input_entry = self.xml.get_object('input_entry')
        if input_str:
            self.input_entry.set_text(input_str)
            self.input_entry.select_region(0, -1)  # select all

        if checktext:
            self.checkbutton = Gtk.CheckButton.new_with_mnemonic(checktext)
            self.vbox.pack_start(self.checkbutton, False, True, 0)
            self.checkbutton.show()
コード例 #14
0
ファイル: history_manager.py プロジェクト: bj-h/gajim
    def __init__(self):
        log_db_path = configpaths.get('LOG_DB')
        if not os.path.exists(log_db_path):
            ErrorDialog(_('Cannot find history logs database'),
                        _('%s does not exist.') % log_db_path)
            sys.exit()

        self._ui = get_builder('history_manager.ui')
        Gtk.Window.set_default_icon_list(
            get_app_icon_list(self._ui.history_manager_window))

        self.jids_already_in = []  # holds jids that we already have in DB
        self.AT_LEAST_ONE_DELETION_DONE = False

        self.con = sqlite3.connect(log_db_path,
                                   timeout=20.0,
                                   isolation_level='IMMEDIATE')
        self.con.execute("PRAGMA secure_delete=1")
        self.cur = self.con.cursor()

        self._init_jids_listview()
        self._init_logs_listview()
        self._init_search_results_listview()

        self._fill_jids_listview()

        self._ui.search_entry.grab_focus()

        self._ui.history_manager_window.show_all()

        self._ui.connect_signals(self)
コード例 #15
0
    def __init__(self, transfer):
        Gtk.ApplicationWindow.__init__(self)
        EventHelper.__init__(self)
        self.set_name('FileTransferProgress')
        self.set_application(app.app)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_show_menubar(False)
        self.set_title(_('File Transfer'))

        self._destroyed = False
        self._transfer = transfer
        self._transfer.connect('state-changed', self._on_transfer_state_change)
        self._transfer.connect('progress', self._on_transfer_progress)

        if app.config.get('use_kib_mib'):
            self._units = GLib.FormatSizeFlags.IEC_UNITS
        else:
            self._units = GLib.FormatSizeFlags.DEFAULT

        self._start_time = time.time()

        self._ui = get_builder('filetransfer_progress.ui')
        self._ui.file_name_label.set_text(transfer.filename)
        self.add(self._ui.box)

        self._pulse = GLib.timeout_add(100, self._pulse_progressbar)
        self.show_all()

        self.connect('destroy', self._on_destroy)
        self._ui.connect_signals(self)
コード例 #16
0
    def __init__(self,
                 transient_for=None,
                 width=550,
                 height=400,
                 transition_duration=200):
        Gtk.ApplicationWindow.__init__(self)
        EventHelper.__init__(self)
        self.set_application(Gio.Application.get_default())
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_show_menubar(False)
        self.set_name('Assistant')
        self.set_default_size(width, height)
        self.set_resizable(True)
        self.set_transient_for(transient_for)

        self._pages = {}
        self._buttons = {}
        self._button_visible_func = None

        self._ui = get_builder('assistant.ui')
        self.add(self._ui.main_grid)

        self._ui.stack.set_transition_duration(transition_duration)

        self.connect('key-press-event', self._on_key_press_event)
        self.connect('destroy', self.__on_destroy)
        self._ui.connect_signals(self)
コード例 #17
0
ファイル: http_upload_progress.py プロジェクト: bj-h/gajim
    def __init__(self, file):
        Gtk.ApplicationWindow.__init__(self)
        self.set_name('HTTPUploadProgressWindow')
        self.set_application(app.app)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_show_menubar(False)
        self.set_title(_('File Transfer'))

        self.event = file.event
        self.file = file

        if app.config.get('use_kib_mib'):
            self.units = GLib.FormatSizeFlags.IEC_UNITS
        else:
            self.units = GLib.FormatSizeFlags.DEFAULT
        file_name = os.path.basename(file.path)

        self._start_time = time.time()

        self._ui = get_builder('httpupload_progress_dialog.ui')
        self._ui.file_name_label.set_text(file_name)
        self.add(self._ui.box)

        self.pulse = GLib.timeout_add(100, self._pulse_progressbar)
        self.show_all()

        self.connect('destroy', self._on_destroy)
        self._ui.connect_signals(self)

        app.ged.register_event_handler('httpupload-progress', ged.CORE,
                                       self._on_httpupload_progress)
コード例 #18
0
ファイル: application.py プロジェクト: shubham2110/gajim1
    def _startup(self, _application):

        # Create and initialize Application Paths & Databases
        app.detect_dependencies()
        configpaths.create_paths()
        try:
            app.logger = logger.Logger()
            caps_cache.initialize(app.logger)
        except exceptions.DatabaseMalformed as error:
            dlg = Gtk.MessageDialog(transient_for=None,
                                    destroy_with_parent=True,
                                    modal=True,
                                    message_type=Gtk.MessageType.ERROR,
                                    buttons=Gtk.ButtonsType.OK,
                                    text=_('Database Error'))
            dlg.format_secondary_text(str(error))
            dlg.run()
            dlg.destroy()
            sys.exit()

        from gajim.gtk.util import load_user_iconsets
        load_user_iconsets()

        # Set Application Menu
        app.app = self
        from gajim.gtk.util import get_builder
        builder = get_builder('application_menu.ui')
        menubar = builder.get_object("menubar")
        appmenu = builder.get_object("appmenu")
        if app.prefers_app_menu():
            self.set_app_menu(appmenu)
        else:
            # Add it to the menubar instead
            menubar.prepend_submenu('Gajim', appmenu)
        self.set_menubar(menubar)
コード例 #19
0
    def __init__(self, account):
        Gtk.ApplicationWindow.__init__(self)
        self.set_application(app.app)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_show_menubar(False)
        self.set_title(_('Archiving Preferences for %s') % account)

        self.connect('destroy', self._on_destroy)
        self.connect('key-press-event', self._on_key_press)

        self.account = account
        self._con = app.connections[account]

        self._ui = get_builder('mam_preferences.ui')
        self.add(self._ui.get_object('mam_box'))

        self._spinner = Gtk.Spinner()
        self._ui.overlay.add_overlay(self._spinner)

        app.ged.register_event_handler('mam-prefs-received', ged.GUI1,
                                       self._mam_prefs_received)
        app.ged.register_event_handler('mam-prefs-saved', ged.GUI1,
                                       self._mam_prefs_saved)
        app.ged.register_event_handler('mam-prefs-error', ged.GUI1,
                                       self._mam_prefs_error)

        self._set_mam_box_state(False)
        self._ui.connect_signals(self)
        self.show_all()

        self._activate_spinner()

        self._con.get_module('MAM').request_mam_preferences()
コード例 #20
0
    def __init__(self,
                 titletext,
                 labeltext,
                 checkbuttontext=None,
                 ok_handler=None,
                 cancel_handler=None,
                 transient_for=None):
        self._ui = get_builder('passphrase_dialog.ui')
        self.window = self._ui.get_object('passphrase_dialog')
        self.passphrase = -1
        self.window.set_title(titletext)
        self._ui.message_label.set_text(labeltext)

        self.ok = False

        self.cancel_handler = cancel_handler
        self.ok_handler = ok_handler
        self._ui.ok_button.connect('clicked', self.on_okbutton_clicked)
        self._ui.cancel_button.connect('clicked', self.on_cancelbutton_clicked)

        self._ui.connect_signals(self)
        if transient_for is None:
            transient_for = app.app.get_active_window()
        self.window.set_transient_for(transient_for)
        self.window.show_all()

        self.check = bool(checkbuttontext)
        if self._ui.save_passphrase_checkbutton:
            self._ui.save_passphrase_checkbutton.set_label(checkbuttontext)
        else:
            self._ui.save_passphrase_checkbutton.hide()
コード例 #21
0
    def __init__(self):
        super().__init__()
        self.set_name('EmoticonPopover')
        self._text_widget = None
        self._load_source_id = None
        self._pango_layout = Pango.Layout(self.get_pango_context())

        self._builder = get_builder('emoji_chooser.ui')
        self._search = self._builder.get_object('search')
        self._stack = self._builder.get_object('stack')

        self._sections = OrderedDict()
        for name in self._section_names:
            self._sections[name] = Section(name, self._search,
                                           self._on_emoticon_press, self)

        section_box = self._builder.get_object('section_box')
        for section in self._sections.values():
            section_box.add(section)

        self.add(self._builder.get_object('box'))

        self.connect('key-press-event', self._key_press)
        self._builder.connect_signals(self)
        self.show_all()
コード例 #22
0
ファイル: themes.py プロジェクト: throwawaymicrosoft/gajim
    def __init__(self, transient):
        Gtk.Window.__init__(self)
        self.set_application(app.app)
        self.set_title(_('Gajim Themes'))
        self.set_name('ThemesWindow')
        self.set_show_menubar(False)
        self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
        self.set_transient_for(transient)
        self.set_resizable(True)
        self.set_default_size(600, 400)

        self.builder = get_builder('themes_window.ui')
        self.add(self.builder.get_object('theme_grid'))

        widgets = ['option_listbox', 'remove_theme_button', 'theme_store',
                   'theme_treeview', 'choose_option_listbox',
                   'add_option_button']
        for widget in widgets:
            setattr(self, '_%s' % widget, self.builder.get_object(widget))

        # Doesnt work if we set it in Glade
        self._add_option_button.set_sensitive(False)

        self._get_themes()

        self.builder.connect_signals(self)
        self.connect('destroy', self._on_destroy)
        self.show_all()

        self._fill_choose_listbox()
コード例 #23
0
    def __init__(self, account):
        Gtk.ApplicationWindow.__init__(self)
        self.set_application(app.app)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_show_menubar(False)
        self.set_title(_('Bookmarks for %s' % app.get_account_label(account)))
        self.set_default_size(700, 500)

        self.account = account

        self._ui = get_builder('bookmarks.ui')
        self.add(self._ui.bookmarks_grid)

        con = app.connections[account]
        for bookmark in con.get_module('Bookmarks').bookmarks:
            self._ui.bookmarks_store.append([str(bookmark.jid),
                                             bookmark.name,
                                             bookmark.nick,
                                             bookmark.password,
                                             bookmark.autojoin])

        self._ui.bookmarks_view.set_search_equal_func(self._search_func)

        self._ui.connect_signals(self)
        self.connect('key-press-event', self._on_key_press)

        self.show_all()
コード例 #24
0
 def __init__(self):
     transient = app.app.get_active_window()
     builder = get_builder('shortcuts_window.ui')
     self.window = builder.get_object('shortcuts_window')
     self.window.connect('destroy', self._on_window_destroy)
     self.window.set_transient_for(transient)
     self.window.show_all()
     self.window.present()
コード例 #25
0
 def show(self, parent=None):
     if self.window is None:
         builder = get_builder('shortcuts_window.ui')
         self.window = builder.get_object('shortcuts_window')
         self.window.connect('destroy', self._on_window_destroy)
     self.window.set_transient_for(parent)
     self.window.show_all()
     self.window.present()
コード例 #26
0
ファイル: accounts.py プロジェクト: bj-h/gajim
 def __init__(self, account):
     self.account = account
     self._ui = get_builder('remove_account_window.ui')
     active_window = app.app.get_active_window()
     self._ui.remove_account_window.set_transient_for(active_window)
     self._ui.remove_account_window.set_title(
         _('Removing account %s') % self.account)
     self._ui.connect_signals(self)
     self._ui.remove_account_window.show_all()
コード例 #27
0
ファイル: bookmarks.py プロジェクト: bj-h/gajim
    def __init__(self):
        self._ui = get_builder('manage_bookmarks_window.ui')
        self._ui.manage_bookmarks_window.set_transient_for(
            app.interface.roster.window)

        self.ignore_events = False

        # Account-JID, RoomName, Room-JID, Autojoin, Password, Nick, Name
        self.treestore = Gtk.TreeStore(str, str, str, bool, str, str, str)
        self.treestore.set_sort_column_id(1, Gtk.SortType.ASCENDING)

        # Store bookmarks in treeview.
        for account, account_label in app.get_enabled_accounts_with_labels(
                connected_only=True, private_storage_only=True):
            iter_ = self.treestore.append(None, [
                None, account, None, None,
                None, None, account_label])

            con = app.connections[account]
            bookmarks = con.get_module('Bookmarks').get_sorted_bookmarks()

            for bookmark in bookmarks:
                self.treestore.append(iter_, [account,
                                              bookmark.name,
                                              str(bookmark.jid),
                                              bookmark.autojoin,
                                              bookmark.password,
                                              bookmark.nick,
                                              bookmark.name])

        self._ui.bookmarks_treeview.set_model(self.treestore)
        self._ui.bookmarks_treeview.expand_all()

        renderer = Gtk.CellRendererText()
        column = Gtk.TreeViewColumn('Bookmarks', renderer, text=Row.LABEL)
        self._ui.bookmarks_treeview.append_column(column)

        self.selection = self._ui.bookmarks_treeview.get_selection()
        self.selection.connect('changed', self.bookmark_selected)

        # Prepare input fields
        self._ui.title_entry.connect('changed', self.on_title_entry_changed)
        self._ui.nick_entry.connect('changed', self.on_nick_entry_changed)
        self._ui.server_entry.connect(
            'focus-out-event', self.on_server_entry_focus_out)
        self.room_entry_changed_id = self._ui.room_entry.connect(
            'changed', self.on_room_entry_changed)
        self._ui.pass_entry.connect('changed', self.on_pass_entry_changed)

        self._ui.connect_signals(self)
        self._ui.manage_bookmarks_window.show_all()
        # select root iter
        first_iter = self.treestore.get_iter_first()
        if first_iter:
            self.selection.select_iter(first_iter)
コード例 #28
0
    def __init__(self, account, jid, own_affiliation, form=None):
        Gtk.ApplicationWindow.__init__(self)
        self.set_application(app.app)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_show_menubar(False)
        self.set_title(_('Group Chat Configuration'))
        self._destroyed = False

        self.account = account
        self.jid = jid
        self._own_affiliation = own_affiliation

        self._ui = get_builder('groupchat_config.ui')
        self.add(self._ui.grid)

        # Activate Add button only for Admins and Owners
        if self._own_affiliation in ('admin', 'owner'):
            self._ui.add_button.set_sensitive(True)
            self._ui.add_button.set_tooltip_text('')

        disco_info = app.logger.get_last_disco_info(self.jid)
        visible = disco_info.supports(nbxmpp.NS_REGISTER)
        self._ui.reserved_name_column.set_visible(visible)
        self._ui.info_button.set_sensitive(False)

        self._form = form
        self._affiliations = {}
        self._new_affiliations = {}

        con = app.connections[self.account]
        for affiliation in ('owner', 'admin', 'member', 'outcast'):
            con.get_module('MUC').get_affiliation(
                self.jid,
                affiliation,
                callback=self._on_affiliations_received,
                user_data=affiliation)

        if form is not None:
            self._ui.stack.set_visible_child_name('config')
            self._data_form_widget = DataFormWidget(form)
            self._data_form_widget.connect('is-valid', self._on_is_valid)
            self._data_form_widget.validate()
            self._ui.config_grid.add(self._data_form_widget)
        else:
            self._ui.stack.get_child_by_name('config').hide()
            self._ui.stack.get_child_by_name('config').set_no_show_all(True)
            self._ui.stack.set_visible_child_name('affiliation')

        self._ui.connect_signals(self)
        self.connect('delete-event', self._cancel)
        self.connect('destroy', self._on_destroy)
        self.connect('key-press-event', self._on_key_press)
        self.show_all()
        self._ui.stack.notify('visible-child-name')
コード例 #29
0
ファイル: tooltips.py プロジェクト: bj-h/gajim
    def __init__(self):
        StatusTable.__init__(self)
        self.create_table()
        self.account = None
        self.row = None
        self.contact_jid = None
        self.prim_contact = None
        self.last_widget = None
        self.num_resources = 0

        self._ui = get_builder('tooltip_roster_contact.ui')
コード例 #30
0
ファイル: dialogs.py プロジェクト: shubham2110/gajim1
    def __init__(self, transient_for, account, cert):
        Gtk.ApplicationWindow.__init__(self)
        self.set_name('CertificateDialog')
        self.set_application(app.app)
        self.set_show_menubar(False)
        self.set_resizable(False)
        self.set_position(Gtk.WindowPosition.CENTER)
        self.set_title(_('Certificate'))
        self.account = account

        self._ui = get_builder('certificate_dialog.ui')
        self.add(self._ui.certificate_box)

        self.account = account
        self._clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)

        # Get data for labels and copy button
        issuer = cert.get_issuer()
        subject = cert.get_subject()

        self._headline = _('Certificate for account\n%s') % account
        self._it_common_name = subject.commonName or ''
        self._it_organization = subject.organizationName or ''
        self._it_org_unit = subject.organizationalUnitName or ''
        self._it_serial_number = str(cert.get_serial_number())
        self._ib_common_name = issuer.commonName or ''
        self._ib_organization = issuer.organizationName or ''
        self._ib_org_unit = issuer.organizationalUnitName or ''
        issued = datetime.strptime(cert.get_notBefore().decode('ascii'),
                                   '%Y%m%d%H%M%SZ')
        self._issued = issued.strftime('%c %Z')
        expires = datetime.strptime(cert.get_notAfter().decode('ascii'),
                                    '%Y%m%d%H%M%SZ')
        self._expires = expires.strftime('%c %Z')
        self._sha1 = cert.digest('sha1').decode('utf-8')
        self._sha256 = cert.digest('sha256').decode('utf-8')

        # Set labels
        self._ui.label_cert_for_account.set_text(self._headline)
        self._ui.data_it_common_name.set_text(self._it_common_name)
        self._ui.data_it_organization.set_text(self._it_organization)
        self._ui.data_it_organizational_unit.set_text(self._it_org_unit)
        self._ui.data_it_serial_number.set_text(self._it_serial_number)
        self._ui.data_ib_common_name.set_text(self._ib_common_name)
        self._ui.data_ib_organization.set_text(self._ib_organization)
        self._ui.data_ib_organizational_unit.set_text(self._ib_org_unit)
        self._ui.data_issued_on.set_text(self._issued)
        self._ui.data_expires_on.set_text(self._expires)
        self._ui.data_sha1.set_text(self._sha1)
        self._ui.data_sha256.set_text(self._sha256)

        self.set_transient_for(transient_for)
        self._ui.connect_signals(self)
        self.show_all()