コード例 #1
0
    def add_journal_button(self):
        if not self._journal:
            palette = ExtensionPalette()
            self._journal = get_journal()
            self._listview = self._journal.get_list_view()
            self._volumes_toolbar = self._journal.get_volumes_toolbar()

            self._volume_button = ExtensionButton(ACCOUNT_ICON, ICONS_PATH)
            self._volume_button.connect('toggled', self._journal_toggled)
            self._volume_button.connect('load-files', self._load_files)
            self._volume_button.connect('data-upload', self._upload_file)
            self._volumes_toolbar.add_extension_button(self._volume_button,
                                                       ACCOUNT_NAME, palette)

            palette.set_item_cb(self.update_files)
コード例 #2
0
ファイル: account.py プロジェクト: i5o/sugar-gdrive
    def add_journal_button(self):
        if not self._journal:
            palette = ExtensionPalette()
            self._journal = get_journal()
            self._listview = self._journal.get_list_view()
            self._volumes_toolbar = self._journal.get_volumes_toolbar()

            self._volume_button = ExtensionButton(ACCOUNT_ICON, ICONS_PATH)
            self._volume_button.connect('toggled', self._journal_toggled)
            self._volume_button.connect('load-files', self._load_files)
            self._volume_button.connect('data-upload', self._upload_file)
            self._volumes_toolbar.add_extension_button(self._volume_button,
                ACCOUNT_NAME, palette)

            palette.set_item_cb(self.update_files)
コード例 #3
0
ファイル: account.py プロジェクト: i5o/sugar-gdrive
class Account(account.Account):

    def __init__(self):
        self.upload = accountsmanager.get_service('sugargdrive')
        self._shared_journal_entry = None
        self._journal = None
        self._model = None
        self._alert = None
        self._listview = None
        self._volume_button = None

    def get_description(self):
        return ACCOUNT_DESCRIPTION

    def add_journal_button(self):
        if not self._journal:
            palette = ExtensionPalette()
            self._journal = get_journal()
            self._listview = self._journal.get_list_view()
            self._volumes_toolbar = self._journal.get_volumes_toolbar()

            self._volume_button = ExtensionButton(ACCOUNT_ICON, ICONS_PATH)
            self._volume_button.connect('toggled', self._journal_toggled)
            self._volume_button.connect('load-files', self._load_files)
            self._volume_button.connect('data-upload', self._upload_file)
            self._volumes_toolbar.add_extension_button(self._volume_button,
                ACCOUNT_NAME, palette)

            palette.set_item_cb(self.update_files)

    def get_token_state(self):
        return self.STATE_VALID

    def get_shared_journal_entry(self):
        if self._shared_journal_entry is None:
            self._shared_journal_entry = _SharedJournalEntry(self)

        return self._shared_journal_entry

    def _journal_toggled(self, widget):
        self._journal.get_window().set_cursor(None)
        option = widget.props.active
        if option:
            new_option = False
        else:
            new_option = True
        self._listview.use_options(new_option)

    def _load_files(self, *kwargs):
        if not self._model:
            journal_button = self._volumes_toolbar._volume_buttons[0]
            self._model = FilesModel(self.upload, self._display_alert_cb,
                self._load_files, journal_button, self._listview)
        self._model.clear()
        self._listview.tree_view.set_model(self._model)

        def internal_callback():
            files = []
            if os.path.exists(USER_FILES):
                f = open(USER_FILES, 'r')
                try:
                    data = json.load(f)
                except:
                    files = []
                    os.remove(USER_FILES)
                    self._journal.get_window().set_cursor(None)
                    f.close()
                    data = []

                isdict = False
                if isinstance(data, dict):
                    isdict = True

                if isdict:
                    data = data['items']

                for userfile in data:
                    txt = '<span weight="bold">%s</span>' % (
                        GLib.markup_escape_text(userfile['title']))
                    icon_name = _get_icon_for_mime(userfile['mimeType'])
                    link = userfile['alternateLink']

                    itter = self._model.insert(-1, [
                        '', False, icon_name,
                        profile.get_color(), txt, '', '', 50,
                        profile.get_color(), profile.get_color(),
                        profile.get_color(), True, link,
                        userfile['mimeType'],
                        userfile['id'],
                        userfile['title']])

                    files.append(itter)

            if len(files) == 0 or not os.path.exists(USER_FILES):
                self._listview._show_message(_('No files in your '
                    'account, please update your file list '
                    'clicking in the toolbar menu option.'),
                    icon_name=ACCOUNT_ICON)
            else:
                self._listview._clear_message()

            self._journal.get_window().set_cursor(None)

        self._listview._show_message(_('Loading files...'),
                icon_name=ACCOUNT_ICON)
        cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
        self._journal.get_window().set_cursor(cursor)
        GObject.idle_add(internal_callback)

    def _upload_file(self, widget, metadata):
        account = self._shared_journal_entry._menu
        account.connect('transfer-state-changed', self._display_alert_cb)
        account.upload_file(None, metadata)

    def _display_alert_cb(self, widget, title, message):
        if self._alert is None:
            self._alert = NotifyAlert()
            self._alert.connect('response', self.__alert_response_cb)
            journalwindow.get_journal_window().add_alert(self._alert)
            self._alert.show()

        self._alert.props.title = title
        self._alert.props.msg = message

    def __alert_response_cb(self, alert, response_id):
        journalwindow.get_journal_window().remove_alert(alert)
        self._alert = None

    def update_files(self, widget):
        self._listview._show_message(_('Updating file list...'),
                icon_name=ACCOUNT_ICON)
        cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
        self._journal.get_window().set_cursor(cursor)
        if not self._volume_button.props.active:
            self._volume_button.set_active(True)
            self._journal_toggled(self._volume_button)

        def internal_callback():
            inst = self.upload.Upload()
            inst.update_files(self._display_alert_cb, self._load_files)
            self._listview._clear_message()
            self._journal.get_window().set_cursor(None)

        GObject.idle_add(internal_callback)
コード例 #4
0
class Account(account.Account):
    def __init__(self):
        self.upload = accountsmanager.get_service('sugargdrive')
        self._shared_journal_entry = None
        self._journal = None
        self._model = None
        self._alert = None
        self._listview = None
        self._volume_button = None

    def get_description(self):
        return ACCOUNT_DESCRIPTION

    def add_journal_button(self):
        if not self._journal:
            palette = ExtensionPalette()
            self._journal = get_journal()
            self._listview = self._journal.get_list_view()
            self._volumes_toolbar = self._journal.get_volumes_toolbar()

            self._volume_button = ExtensionButton(ACCOUNT_ICON, ICONS_PATH)
            self._volume_button.connect('toggled', self._journal_toggled)
            self._volume_button.connect('load-files', self._load_files)
            self._volume_button.connect('data-upload', self._upload_file)
            self._volumes_toolbar.add_extension_button(self._volume_button,
                                                       ACCOUNT_NAME, palette)

            palette.set_item_cb(self.update_files)

    def get_token_state(self):
        return self.STATE_VALID

    def get_shared_journal_entry(self):
        if self._shared_journal_entry is None:
            self._shared_journal_entry = _SharedJournalEntry(self)

        return self._shared_journal_entry

    def _journal_toggled(self, widget):
        self._journal.get_window().set_cursor(None)
        option = widget.props.active
        if option:
            new_option = False
        else:
            new_option = True
        self._listview.use_options(new_option)

    def _load_files(self, *kwargs):
        if not self._model:
            journal_button = self._volumes_toolbar._volume_buttons[0]
            self._model = FilesModel(self.upload, self._display_alert_cb,
                                     self._load_files, journal_button,
                                     self._listview)
        self._model.clear()
        self._listview.tree_view.set_model(self._model)

        def internal_callback():
            files = []
            if os.path.exists(USER_FILES):
                f = open(USER_FILES, 'r')
                try:
                    data = json.load(f)
                except:
                    files = []
                    os.remove(USER_FILES)
                    self._journal.get_window().set_cursor(None)
                    f.close()
                    data = []

                isdict = False
                if isinstance(data, dict):
                    isdict = True

                if isdict:
                    data = data['items']

                for userfile in data:
                    txt = '<span weight="bold">%s</span>' % (
                        GLib.markup_escape_text(userfile['title']))
                    icon_name = _get_icon_for_mime(userfile['mimeType'])
                    link = userfile['alternateLink']

                    itter = self._model.insert(-1, [
                        '', False, icon_name,
                        profile.get_color(), txt, '', '', 50,
                        profile.get_color(),
                        profile.get_color(),
                        profile.get_color(), True, link, userfile['mimeType'],
                        userfile['id'], userfile['title']
                    ])

                    files.append(itter)

            if len(files) == 0 or not os.path.exists(USER_FILES):
                self._listview._show_message(_(
                    'No files in your '
                    'account, please update your file list '
                    'clicking in the toolbar menu option.'),
                                             icon_name=ACCOUNT_ICON)
            else:
                self._listview._clear_message()

            self._journal.get_window().set_cursor(None)

        self._listview._show_message(_('Loading files...'),
                                     icon_name=ACCOUNT_ICON)
        cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
        self._journal.get_window().set_cursor(cursor)
        GObject.idle_add(internal_callback)

    def _upload_file(self, widget, metadata):
        account = self._shared_journal_entry._menu
        account.connect('transfer-state-changed', self._display_alert_cb)
        account.upload_file(None, metadata)

    def _display_alert_cb(self, widget, title, message):
        if self._alert is None:
            self._alert = NotifyAlert()
            self._alert.connect('response', self.__alert_response_cb)
            journalwindow.get_journal_window().add_alert(self._alert)
            self._alert.show()

        self._alert.props.title = title
        self._alert.props.msg = message

    def __alert_response_cb(self, alert, response_id):
        journalwindow.get_journal_window().remove_alert(alert)
        self._alert = None

    def update_files(self, widget):
        self._listview._show_message(_('Updating file list...'),
                                     icon_name=ACCOUNT_ICON)
        cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
        self._journal.get_window().set_cursor(cursor)
        if not self._volume_button.props.active:
            self._volume_button.set_active(True)
            self._journal_toggled(self._volume_button)

        def internal_callback():
            inst = self.upload.Upload()
            inst.update_files(self._display_alert_cb, self._load_files)
            self._listview._clear_message()
            self._journal.get_window().set_cursor(None)

        GObject.idle_add(internal_callback)