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)
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)
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)