class _SharedJournalEntry(account.SharedJournalEntry): __gsignals__ = { 'transfer-state-changed': (GObject.SignalFlags.RUN_FIRST, None, ([str])), } def __init__(self, account): self._account = account self._alert = None def get_share_menu(self, get_uid_list): menu = _ShareMenu(self._account, get_uid_list, True) self._connect_transfer_signals(menu) return menu def _connect_transfer_signals(self, transfer_widget): transfer_widget.connect('transfer-state-changed', self.__display_alert_cb) def __display_alert_cb(self, widget, message): if self._alert is None: self._alert = NotifyAlert() self._alert.props.title = ACCOUNT_NAME self._alert.connect('response', self.__alert_response_cb) journalwindow.get_journal_window().add_alert(self._alert) self._alert.show() self._alert.props.msg = message def __alert_response_cb(self, alert, response_id): journalwindow.get_journal_window().remove_alert(alert) self._alert = None
def add_view(self, widget): if len(self._view_icons) >= 5: for x in self.activity._alerts: self.activity.remove_alert(x) alert = NotifyAlert(10) alert.props.title = _('Limit reached') alert.props.msg = _('You have reached the maximum limit of ' 'favorites views, please delete some before ' 'continuing.') self.activity.add_alert(alert) alert.connect('response', lambda x, y: self.activity.remove_alert(x)) return current = len(self._view_buttons) + 1 label = _('Favorites view %d') % current button = ToolbarButton(label=label, icon_name='view-radial') page = FavoritePage(button, self, 'view-radial', 'emblem-favorite', label) button.set_page(page) self._view_icons[button] = 'view-radial' self._favorite_icons[button] = 'emblem-favorite' self._view_buttons[button] = button if self.favorite_names_enabled: self._favorite_names[button] = label self.insert(button, -1) self.save_to_gconf() self.show_all()
def action(alert, response): self.remove_alert(alert) if response is not Gtk.ResponseType.OK: return try: f = open(file_path, 'r') # Test if the file is valid project. json.loads(f.read()) f.close() self.read_file(file_path) self.game.run(True) except: title = _('Load project from journal') if not journal: title = _('Load example') msg = _( 'Error: Cannot open Physics project from this file.') alert = NotifyAlert(5) alert.props.title = title alert.props.msg = msg alert.connect( 'response', lambda alert, response: self.remove_alert(alert)) self.add_alert(alert)
def _create_timed_alert(self, title, msg, timeout=10): alert = NotifyAlert(timeout) alert.props.title = title alert.props.msg = msg alert.connect('response', self._alert_cancel_cb) self.add_alert(alert)
def _load_project(self, button): chooser = ObjectChooser(parent=self) result = chooser.run() if result == Gtk.ResponseType.ACCEPT: dsobject = chooser.get_selected_object() file_path = dsobject.get_file_path() try: f = open(file_path, 'r') # Test if the file is valid project. json.loads(f.read()) f.close() self.read_file(file_path) self.game.run(True) except: title = _('Load project from journal') msg = _( 'Error: Cannot open Physics project from this file.') alert = NotifyAlert(5) alert.props.title = title alert.props.msg = msg alert.connect( 'response', lambda alert, response: self.remove_alert(alert)) self.add_alert(alert) chooser.destroy()
def action(alert, response): self.remove_alert(alert) if not response is Gtk.ResponseType.OK: return try: f = open(file_path, 'r') # Test if the file is valid project. json.loads(f.read()) f.close() self.read_file(file_path) self.game.run(True) except: title = _('Load project from journal') if not journal: title = _('Load example') msg = _( 'Error: Cannot open Physics project from this file.') alert = NotifyAlert(5) alert.props.title = title alert.props.msg = msg alert.connect( 'response', lambda alert, response: self.remove_alert(alert)) self.add_alert(alert)
def add_view(self, widget): if len(self._view_icons) >= 5: for x in self.activity._alerts: self.activity.remove_alert(x) alert = NotifyAlert(10) alert.props.title = _('Limit reached') alert.props.msg = _('You have reached the maximum limit of ' 'favorites views, please delete some before ' 'continuing.') self.activity.add_alert(alert) alert.connect('response', lambda x, y: self.activity.remove_alert(x)) return current = len(self._view_buttons) + 1 label = _('Favorites view %d') % current button = ToolbarButton(label=label, icon_name='view-radial') page = FavoritePage(button, self, 'view-radial', 'emblem-favorite', label) button.set_page(page) self._view_icons[button] = 'view-radial' self._favorite_icons[button] = 'emblem-favorite' self._view_buttons[button] = button self._favorite_names[button] = label self.insert(button, -1) self.save_to_gsettings() self.show_all()
class _SharedJournalEntry(SharedJournalEntry): __gsignals__ = { 'transfer-state-changed': (GObject.SignalFlags.RUN_FIRST, None, ([str, str])), } def __init__(self, account): self._account = account self._alert = None def get_share_menu(self, get_uid_list): menu = _ShareMenu(self._account, get_uid_list, True) self._connect_transfer_signals(menu) return menu 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 _connect_transfer_signals(self, transfer_widget): transfer_widget.connect('transfer-state-changed', self.__display_alert_cb)
def _alert(self, title, msg=None): a = NotifyAlert() a.props.title = title a.props.msg = msg self.activity.add_alert(a) a.connect('response', lambda a, r: self.activity.remove_alert(a)) a.show()
def __display_alert_cb(self, widget, message): if self._alert is None: self._alert = NotifyAlert() self._alert.props.title = ACCOUNT_NAME self._alert.connect('response', self.__alert_response_cb) journalwindow.get_journal_window().add_alert(self._alert) self._alert.show() self._alert.props.msg = message
def alert(self, title, text=None, timeout=5): if text != None: alert = NotifyAlert(timeout=timeout) alert.props.title = title alert.props.msg = text self.add_alert(alert) alert.connect('response', self.alert_cancel_cb) alert.show()
def show_accelerator_alert(self): self.grab_focus() self._alert = NotifyAlert() self._alert.props.title = _('Tablet mode detected.') self._alert.props.msg = _('Hold your XO flat and tilt to play!') self.add_alert(self._alert) self._alert.connect('response', self._alert_cancel_cb) self._alert.show()
class FacebookAccount(account.Account): ACCESS_TOKEN_KEY = "/desktop/sugar/collaboration/facebook_access_token" ACCESS_TOKEN_KEY_EXPIRATION_DATE = \ "/desktop/sugar/collaboration/facebook_access_token_expiration_date" def __init__(self): self._client = GConf.Client.get_default() facebook.FbAccount.set_access_token(self._access_token()) self._alert = None def get_description(self): return ACCOUNT_NAME def is_configured(self): return self._access_token() is not None def is_active(self): expiration_date = \ self._client.get_int(self.ACCESS_TOKEN_KEY_EXPIRATION_DATE) return expiration_date != 0 and expiration_date > time.time() def get_share_menu(self, journal_entry_metadata): fb_share_menu = _FacebookShareMenu(journal_entry_metadata, self.is_active()) self._connect_transfer_signals(fb_share_menu) return fb_share_menu def get_refresh_menu(self): fb_refresh_menu = _FacebookRefreshMenu(self.is_active()) self._connect_transfer_signals(fb_refresh_menu) return fb_refresh_menu def _connect_transfer_signals(self, transfer_widget): transfer_widget.connect('transfer-state-changed', self._transfer_state_changed_cb) def _transfer_state_changed_cb(self, widget, state_message): logging.debug('_transfer_state_changed_cb') # First, remove any existing alert if self._alert is None: logging.debug('creating new alert') self._alert = NotifyAlert() self._alert.props.title = ACCOUNT_NAME self._alert.connect('response', self._alert_response_cb) journalwindow.get_journal_window().add_alert(self._alert) self._alert.show() logging.debug(state_message) self._alert.props.msg = state_message def _alert_response_cb(self, alert, response_id): journalwindow.get_journal_window().remove_alert(alert) self._alert = None def _access_token(self): return self._client.get_string(self.ACCESS_TOKEN_KEY)
def __init__(self, handle): ''' Initiate activity. ''' super(FractionBounceActivity, self).__init__(handle) self.nick = profile.get_nick_name() if profile.get_color() is not None: self._colors = profile.get_color().to_string().split(',') else: self._colors = ['#A0FFA0', '#FF8080'] self.max_participants = 4 # sharing self._playing = True self._setup_toolbars() self._setup_dispatch_table() canvas = self._setup_canvas() # Read any custom fractions from the project metadata if 'custom' in self.metadata: custom = self.metadata['custom'] else: custom = None self._current_ball = 'soccerball' self._toolbar_was_expanded = False # Initialize the canvas self._bounce_window = Bounce(canvas, activity.get_bundle_path(), self) Gdk.Screen.get_default().connect('size-changed', self._configure_cb) # Restore any custom fractions if custom is not None: fractions = custom.split(',') for f in fractions: self._bounce_window.add_fraction(f) if self.shared_activity: # We're joining if not self.get_shared(): xocolors = XoColor(profile.get_color().to_string()) share_icon = Icon(icon_name='zoom-neighborhood', xo_color=xocolors) self._joined_alert = NotifyAlert() self._joined_alert.props.icon = share_icon self._joined_alert.props.title = _('Please wait') self._joined_alert.props.msg = _('Starting connection...') self._joined_alert.connect('response', self._alert_cancel_cb) self.add_alert(self._joined_alert) self._label.set_label(_('Wait for the sharer to start.')) # Wait for joined signal self.connect("joined", self._joined_cb) self._setup_sharing()
def _alert(self, title, text=None): alert = NotifyAlert(timeout=5) alert.props.title = title alert.props.msg = text self.add_alert(alert) alert.connect('response', self._alert_cancel_cb) alert.show() self._has_alert = True self._fixed_resize_cb()
def internal_callback(): try: urllib.urlretrieve(link, self.file_path, reporthook=self.progress_changed) except Exception, info: alert = NotifyAlert(5) alert.props.title = _('Error') alert.props.msg = info alert.connect('response', lambda x, y: self.activity.remove_alert(x)) self.activity.add_alert(alert)
def notify_alert(self): alert = NotifyAlert() alert.props.title = _('Saving icon...') msg = _('A restart is required before your new icon will appear.') alert.props.msg = msg def remove_alert(alert, response_id): self.remove_alert(alert) alert.connect('response', remove_alert) self.add_alert(alert)
def _delete_log_cb(self, widget): if self.viewer.active_log: logfile = self.viewer.active_log.logfile try: os.remove(logfile) except OSError, err: notify = NotifyAlert() notify.props.title = _('Error') notify.props.msg = _('%(error)s when deleting %(file)s') % \ {'error': err.strerror, 'file': logfile} notify.connect('response', _notify_response_cb, self) self.add_alert(notify)
def _delete_log_cb(self, widget): if self.viewer.active_log: logfile = self.viewer.active_log.logfile try: os.remove(logfile) except OSError as err: notify = NotifyAlert() notify.props.title = _('Error') notify.props.msg = _('%(error)s when deleting %(file)s') % \ {'error': err.strerror, 'file': logfile} notify.connect('response', _notify_response_cb, self) self.add_alert(notify)
def save_to_gsettings(self, icon=False, name=False): gsettings = Gio.Settings(_DESKTOP_CONF_DIR) homeviews = [] for button in self._view_buttons: homeview = {'layout': 'ring-layout', 'view-icon': self._view_icons[button], 'favorite-icon': self._favorite_icons[button], 'view-label': self._favorite_names[button]} homeviews.append(homeview) variant = GLib.Variant('aa{ss}', homeviews) gsettings.set_value(_HOMEVIEWS_KEY, variant) if icon: for x in self.activity._alerts: self.activity.remove_alert(x) alert = NotifyAlert(5) alert.props.title = _('Icon') alert.props.msg = _('For see icons, restart sugar is needed.') self.activity.add_alert(alert) alert.connect('response', lambda x, y: self.activity.remove_alert(x)) if name: for x in self.activity._alerts: self.activity.remove_alert(x) alert = NotifyAlert(5) alert.props.title = _('View Name') alert.props.msg = _('For seeing View name changes, ' 'restarting Sugar is required.') self.activity.add_alert(alert) alert.connect('response', lambda x, y: self.activity.remove_alert(x))
def remove_confirmation(self, alert, response_id, path, cp_path, vbox, title): print cp_path, title if response_id == Gtk.ResponseType.OK: try: shutil.rmtree(path) shutil.rmtree(os.path.join(cp_path, title)) alert_ = NotifyAlert(5) alert_.props.title = _('Removed') alert_.props.msg = _('Extension removed.' ' Please restart sugar for see efects') alert_.connect('response', lambda x, y: self.activity.remove_alert(x)) self.activity.add_alert(alert_) self.remove(vbox) except: alert_ = NotifyAlert(5) alert_.props.title = _('Error') alert_.props.msg = _('Error removing extension.') alert_.connect('response', lambda x, y: self.activity.remove_alert(x)) self.activity.add_alert(alert_) else: pass self.activity.remove_alert(alert)
def _confirm_save(self): ''' Called from confirmation alert ''' client.set_string('/desktop/sugar/user/color', '%s,%s' % ( self._game.colors[0], self._game.colors[1])) alert = NotifyAlert() alert.props.title = _('Saving colors') alert.props.msg = _('A restart is required before your new colors ' 'will appear.') def _notification_alert_response_cb(alert, response_id, self): self.remove_alert(alert) alert.connect('response', _notification_alert_response_cb, self) self.add_alert(alert) alert.show()
def _create_image(self, text): fd = open('/tmp/cloud_data.txt', 'w') data = json_dump({ 'repeat': self._repeat_tags, 'layout': self._layout, 'font': self._font_name, 'colors': self._color_scheme }) fd.write(data) fd.close() fd = open('/tmp/cloud_text.txt', 'w') fd.write(text) fd.close() path = os.path.join('/tmp/cloud_large.png') try: subprocess.check_call( [os.path.join(activity.get_bundle_path(), 'wordcloud.py')]) except subprocess.CalledProcessError as e: self.get_window().set_cursor( Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR)) alert = NotifyAlert(5) alert.props.title = _('WordCloud error') logging.error(e) logging.error(e.returncode) if e.returncode == 255: logging.error('STOP WORD ERROR') MESSAGE = _('All of your words are "stop words."' ' Please try adding more words.') else: logging.error('MEMORY ERROR') MESSAGE = _('Oops. There was a problem. Please try again.') alert.props.msg = MESSAGE alert.connect('response', self._remove_alert_cb) self.add_alert(alert) return self.get_window().set_cursor(Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR)) self._show_image(path) dsobject = datastore.create() dsobject.metadata['title'] = _('Word Cloud') dsobject.metadata['icon-color'] = profile.get_color().to_string() dsobject.metadata['mime_type'] = 'image/png' dsobject.set_file_path(path) datastore.write(dsobject) dsobject.destroy()
def _add_alert(self, title, text=None): self.grab_focus() self._alert = ErrorAlert() self._alert.props.title = title self._alert.props.msg = text self.add_alert(self._alert) self._alert.connect('response', self._alert_cancel_cb) self._alert.show()
def _on_send_button_clicked_cb(self, button): window = self._activity.get_window() old_cursor = window.get_cursor() window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.WATCH)) Gdk.flush() identifier = str(int(time.time())) filename = '%s.zip' % identifier filepath = os.path.join(activity.get_activity_root(), filename) success = True # FIXME: subprocess or thread try: self._collector.write_logs(archive=filepath, logbytes=0) except BaseException: success = False self.popdown(True) if not success: title = _('Logs not captured') msg = _('The logs could not be captured.') notify = NotifyAlert() notify.props.title = title notify.props.msg = msg notify.connect('response', _notify_response_cb, self._activity) self._activity.add_alert(notify) jobject = datastore.create() metadata = { 'title': _('log-%s') % filename, 'title_set_by_user': '******', 'suggested_filename': filename, 'mime_type': 'application/zip', } for k, v in list(metadata.items()): jobject.metadata[k] = v jobject.file_path = filepath datastore.write(jobject) self._last_log = jobject.object_id jobject.destroy() activity.show_object_in_journal(self._last_log) os.remove(filepath) window.set_cursor(old_cursor) Gdk.flush()
def _on_send_button_clicked_cb(self, button): window = self._activity.get_window() old_cursor = window.get_cursor() window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.WATCH)) Gdk.flush() identifier = str(int(time.time())) filename = '%s.zip' % identifier filepath = os.path.join(activity.get_activity_root(), filename) success = True # FIXME: subprocess or thread try: self._collector.write_logs(archive=filepath, logbytes=0) except: success = False self.popdown(True) if not success: title = _('Logs not captured') msg = _('The logs could not be captured.') notify = NotifyAlert() notify.props.title = title notify.props.msg = msg notify.connect('response', _notify_response_cb, self._activity) self._activity.add_alert(notify) jobject = datastore.create() metadata = { 'title': _('log-%s') % filename, 'title_set_by_user': '******', 'suggested_filename': filename, 'mime_type': 'application/zip', } for k, v in metadata.items(): jobject.metadata[k] = v jobject.file_path = filepath datastore.write(jobject) self._last_log = jobject.object_id jobject.destroy() activity.show_object_in_journal(self._last_log) os.remove(filepath) window.set_cursor(old_cursor) Gdk.flush()
class _SharedJournalEntry(account.SharedJournalEntry): __gsignals__ = { 'transfer-state-changed': (GObject.SignalFlags.RUN_FIRST, None, ([str])), } def __init__(self, fbaccount): self._account = fbaccount self._alert = None def get_share_menu(self, journal_entry_metadata): menu = _ShareMenu( self._account.facebook, journal_entry_metadata, self._account.get_token_state() == self._account.STATE_VALID) self._connect_transfer_signals(menu) return menu def get_refresh_menu(self): menu = _RefreshMenu( self._account.facebook, self._account.get_token_state() == self._account.STATE_VALID) self._connect_transfer_signals(menu) return menu def _connect_transfer_signals(self, transfer_widget): transfer_widget.connect('transfer-state-changed', self._transfer_state_changed_cb) def _transfer_state_changed_cb(self, widget, state_message): logging.debug('_transfer_state_changed_cb') # First, remove any existing alert if self._alert is None: self._alert = NotifyAlert() self._alert.props.title = ACCOUNT_NAME self._alert.connect('response', self._alert_response_cb) journalwindow.get_journal_window().add_alert(self._alert) self._alert.show() logging.debug(state_message) self._alert.props.msg = state_message def _alert_response_cb(self, alert, response_id): journalwindow.get_journal_window().remove_alert(alert) self._alert = None
def _create_image(self, text): fd = open('/tmp/cloud_data.txt', 'w') data = json_dump({'repeat': self._repeat_tags, 'layout': self._layout, 'font': self._font_name, 'colors': self._color_scheme}) fd.write(data) fd.close() fd = open('/tmp/cloud_text.txt', 'w') fd.write(text) fd.close() path = os.path.join('/tmp/cloud_large.png') try: subprocess.check_call( [os.path.join(activity.get_bundle_path(), 'wordcloud.py')]) except subprocess.CalledProcessError as e: self.get_window().set_cursor( Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR)) alert = NotifyAlert(5) alert.props.title = _('WordCloud error') logging.error(e) logging.error(e.returncode) if e.returncode == 255: logging.error('STOP WORD ERROR') MESSAGE = _('All of your words are "stop words."' ' Please try adding more words.') else: logging.error('MEMORY ERROR') MESSAGE = _('Oops. There was a problem. Please try again.') alert.props.msg = MESSAGE alert.connect('response', self._remove_alert_cb) self.add_alert(alert) return self.get_window().set_cursor(Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR)) self._show_image(path) dsobject = datastore.create() dsobject.metadata['title'] = _('Word Cloud') dsobject.metadata['icon-color'] = profile.get_color().to_string() dsobject.metadata['mime_type'] = 'image/png' dsobject.set_file_path(path) datastore.write(dsobject) dsobject.destroy()
def async_copy_activity_tree(): try: shutil.copytree(self._document_path, os.path.join(user_activities_path, new_basename), symlinks=True) customizebundle.generate_bundle(nick, new_basename) if copy_alert: self.get_toplevel().remove_alert(copy_alert) alert = NotifyAlert(10) alert.props.title = _('Duplicated') alert.props.msg = _('The activity has been duplicated') alert.connect('response', self.__alert_response_cb) self.get_toplevel().add_alert(alert) finally: self.__set_busy_cursor(False)
def __copy_to_home_cb(self, menu_item, copy_alert=None): """Make a local copy of the activity bundle in user_activities_path""" user_activities_path = get_user_activities_path() nick = customizebundle.generate_unique_id() new_basename = '%s_copy_of_%s' % ( nick, os.path.basename(self._document_path)) if not os.path.exists(os.path.join(user_activities_path, new_basename)): self.__set_busy_cursor(True) def async_copy_activity_tree(): try: shutil.copytree(self._document_path, os.path.join( user_activities_path, new_basename), symlinks=True) customizebundle.generate_bundle(nick, new_basename) if copy_alert: self.get_toplevel().remove_alert(copy_alert) alert = NotifyAlert(10) alert.props.title = _('Duplicated') alert.props.msg = _('The activity has been duplicated') alert.connect('response', self.__alert_response_cb) self.get_toplevel().add_alert(alert) finally: self.__set_busy_cursor(False) GLib.idle_add(async_copy_activity_tree) else: if copy_alert: self.get_toplevel().remove_alert(copy_alert) self.__set_busy_cursor(False) alert = NotifyAlert(10) alert.props.title = _('Duplicated activity already exists') alert.props.msg = _('Delete your copy before trying to duplicate' ' the activity again') alert.connect('response', self.__alert_response_cb) self.get_toplevel().add_alert(alert)
def async_copy_activity_tree(): try: shutil.copytree(self._document_path, os.path.join( user_activities_path, new_basename), symlinks=True) customizebundle.generate_bundle(nick, new_basename) if copy_alert: self.get_toplevel().remove_alert(copy_alert) alert = NotifyAlert(10) alert.props.title = _('Duplicated') alert.props.msg = _('The activity has been duplicated') alert.connect('response', self.__alert_response_cb) self.get_toplevel().add_alert(alert) finally: self.__set_busy_cursor(False)
def check_md5sum(self): md5sum = commands.getoutput('md5sum %s' % self.file_path) md5sum = md5sum.split()[0] if md5sum == self.md5sum: alert = NotifyAlert(10) alert.props.title = _('Downloaded') alert.props.msg = _('The extension has been downloaded' ' and installed.') for alert_ in self.activity._alerts: self.activity.remove_alert(alert_) alert.connect('response', lambda x, y: self.activity.remove_alert(x)) self.activity.add_alert(alert) os.chdir(os.path.join(env.get_profile_path())) os.system('tar -xf %s' % self.file_path) window = self.get_window() window.set_cursor(None) GObject.source_remove(self.gobject_id) return True
def open_from_journal(self): chooser = ObjectChooser() result = chooser.run() alert = NotifyAlert(5) if result == Gtk.ResponseType.ACCEPT: jobject = chooser.get_selected_object() if jobject and jobject.file_path: os.chdir(env.get_profile_path()) output = commands.getoutput('tar -xf %s' % jobject.file_path) if 'end' in output or 'error' in output: alert.props.title = _('Error') alert.props.msg = _('Error extracting the extension.') else: alert.props.title = _('Sucess') alert.props.msg = _('The extension has been installed.') else: alert.props.title = _('Error') alert.props.msg = _('Error extracting the extension.') self.add_alert(alert) alert.connect('response', lambda x, y: self.remove_alert(x))
def _alert(self, title, text=None): alert = NotifyAlert(timeout=20) alert.props.title = title alert.props.msg = text self.add_alert(alert) alert.connect('response', self._alert_cancel_cb) alert.show()
def _transfer_state_changed_cb(self, widget, state_message): logging.debug('_transfer_state_changed_cb') # First, remove any existing alert if self._alert is None: self._alert = NotifyAlert() self._alert.props.title = ACCOUNT_NAME self._alert.connect('response', self._alert_response_cb) journalwindow.get_journal_window().add_alert(self._alert) self._alert.show() logging.debug(state_message) self._alert.props.msg = state_message
def alert(self, title, text=None, timeout=5): if text != None: alert = NotifyAlert(timeout=timeout) alert.props.title = title alert.props.msg = text self.add_alert(alert) alert.connect('response', self.cancel_alert) alert.show()
def _save_ogg_eos_cb(self, bus, message, pipe): bus.remove_signal_watch() pipe.set_state(Gst.State.NULL) title = '%s saved as audio' % self.metadata['title'] jobject = datastore.create() jobject.metadata['title'] = title jobject.metadata['keep'] = '0' jobject.metadata['mime_type'] = 'audio/ogg' jobject.file_path = self._ogg_tempfile.name datastore.write(jobject) self._wav_tempfile.close() self._ogg_tempfile.close() alert = NotifyAlert(10) alert.props.title = _('Audio recorded') alert.props.msg = _('The audio file was saved in the Journal') alert.connect('response', self.__alert_response_cb) self.add_alert(alert) return False
class _SharedJournalEntry(account.SharedJournalEntry): __gsignals__ = { 'transfer-state-changed': (GObject.SignalFlags.RUN_FIRST, None, ([str])), } def __init__(self, webaccount): self._account = webaccount self._alert = None def get_share_menu(self, get_uid_list): menu = _ShareMenu(self._account, get_uid_list, True) self._connect_transfer_signals(menu) logging.debug('url cache: %s' % (self._account.url_cache)) return menu def get_refresh_menu(self): menu = _RefreshMenu(self._account, False) self._connect_transfer_signals(menu) return menu def _connect_transfer_signals(self, transfer_widget): transfer_widget.connect('transfer-state-changed', self.__display_alert_cb) def __display_alert_cb(self, widget, message): if self._alert is None: self._alert = NotifyAlert() self._alert.props.title = ACCOUNT_NAME self._alert.connect('response', self.__alert_response_cb) journalwindow.get_journal_window().add_alert(self._alert) self._alert.show() self._alert.props.msg = message def __alert_response_cb(self, alert, response_id): journalwindow.get_journal_window().remove_alert(alert) self._alert = None
def notify_alert(self, title, msg): """Raise standard notify alert""" alert = NotifyAlert(title=title, msg=msg) def response(alert, response_id, self): self.remove_alert(alert) alert.connect('response', response, self) alert.show_all() self.add_alert(alert)
def alert_reset(self, mode): def _alert_response_cb(alert, response_id): self.remove_alert(alert) alert = NotifyAlert() alert.props.title = _('Time Reset') alert.props.msg = _('The timer mode was reset to %s' % mode) alert.connect('response', _alert_response_cb) alert.show() self.add_alert(alert)
def alert_time(self): def _alert_response_cb(alert, response_id): self.remove_alert(alert) alert = NotifyAlert() alert.props.title = _('Time Up!') alert.props.msg = _('Your time is up.') alert.connect('response', _alert_response_cb) alert.show() self.add_alert(alert)
def get_alert(self, title, text): """ Show an alert above the activity. """ alert = NotifyAlert(timeout=5) alert.props.title = title alert.props.msg = text self.add_alert(alert) alert.connect('response', self.__alert_cancel_cb) alert.show()
def _notify_new_game(self, prompt): ''' Called from New Game button since loading a new game can be slooow!! ''' alert = NotifyAlert(3) alert.props.title = prompt alert.props.msg = _('A new game is loading.') def _notification_alert_response_cb(alert, response_id, self): self.remove_alert(alert) alert.connect('response', _notification_alert_response_cb, self) self.add_alert(alert) alert.show()
def _notify_alert(self, title='', msg='', action=None): def _notification_alert_response_cb(alert, response_id, self, action): self.remove_alert(alert) if action is not None: action() self._restore_cursor() alert = NotifyAlert() alert.props.title = title alert.connect('response', _notification_alert_response_cb, self, action) alert.props.msg = msg self.add_alert(alert) alert.show()
def _confirm_save(self): color1 = self.colors[0].upper() color2 = self.colors[1].upper() settings = Gio.Settings("org.sugarlabs.user") settings.set_string("color", "%s,%s" % (color1, color2)) alert = NotifyAlert() alert.props.title = _('Saving colors') alert.props.msg = _( 'A restart is required before your new colors will appear.') alert.connect("response", self._notify_response_cb) self.add_alert(alert) alert.show_all()
def save_to_gconf(self, icon=False, name=False): view_icons = [] favorite_icons = [] favorite_names = [] for button in self._view_buttons: view_icons.append(self._view_icons[button]) favorite_icons.append(self._favorite_icons[button]) if self.favorite_names_enabled: favorite_names.append(self._favorite_names[button]) client = GConf.Client.get_default() SugarExt.gconf_client_set_string_list(client, _FAVORITE_KEY, favorite_icons) SugarExt.gconf_client_set_string_list(client, _VIEW_KEY, view_icons) if self.favorite_names_enabled: SugarExt.gconf_client_set_string_list(client, _FAVORITE_NAME_KEY, favorite_names) if icon: for x in self.activity._alerts: self.activity.remove_alert(x) alert = NotifyAlert(5) alert.props.title = _('Icon') alert.props.msg = _('For see icons, restart sugar is needed.') self.activity.add_alert(alert) alert.connect('response', lambda x, y: self.activity.remove_alert(x)) if name: for x in self.activity._alerts: self.activity.remove_alert(x) alert = NotifyAlert(5) alert.props.title = _('View Name') alert.props.msg = _('For seeing View name changes, ' 'restarting Sugar is required.') self.activity.add_alert(alert) alert.connect('response', lambda x, y: self.activity.remove_alert(x))
def check_image_qr(self, path): myCode = QR(filename=path) if myCode.decode(): self.qr_link = myCode.data_to_string() self.copy_link.set_sensitive(True) alert = NotifyAlert(10) alert.props.title = _("Code found") alert.props.msg = _("Click on toolbar button for " "copy link to clipboard.") alert.connect("response", lambda x, y: self.activity.remove_alert(x)) self.activity.add_alert(alert) else: self.qr_link = None self.copy_link.set_sensitive(False) alert = NotifyAlert(10) alert.props.title = _("Code not found") alert.props.msg = _("Try again, please focus the Qr " "Code in the camera.") alert.connect("response", lambda x, y: self.activity.remove_alert(x)) self.activity.add_alert(alert) self.stop_play.set_sensitive(False)
def _create_custom_food_cb(self, button): def _notification_alert_response_cb(alert, response_id, self): self.remove_alert(alert) name = self.name_entry.get_text() try: calories = int(self.calories_entry.get_text()) except: _logger.debug(self.calories_entry.get_text) calories = None pyramid = self.food_spinner.get_active() if name == '' or name == _('food name'): alert = NotifyAlert() alert.props.title = _('Add a new food item.') alert.connect('response', _notification_alert_response_cb, self) alert.props.msg = _('You must enter a name for the new food item.') self.add_alert(alert) alert.show() return elif calories is None or calories < 0: alert = NotifyAlert() alert.props.title = _('Add a new food item.') alert.connect('response', _notification_alert_response_cb, self) alert.props.msg = _('You must enter calories for the new food \ item.') self.add_alert(alert) alert.show() return elif self._custom_food_jobject is None: alert = NotifyAlert() alert.props.title = _('Add a new food item.') alert.connect('response', _notification_alert_response_cb, self) alert.props.msg = _('You must load an image for the new food \ item.') self.add_alert(alert) alert.show() return _logger.debug(self._custom_food_jobject.file_path) FOOD.append([name, calories, pyramid, 'apple.png']) self._game.word_card_append(self._game.food_cards, self._game.pixbuf) self._game.food_cards[-1].type = len(FOOD) - 1 self._game.food_cards[-1].set_label(name) self._game.picture_append(self._custom_food_jobject.file_path) self._game.small_picture_append(self._custom_food_jobject.file_path) alert = NotifyAlert() alert.props.title = _('Add a new food item.') alert.connect('response', _notification_alert_response_cb, self) alert.props.msg = _('%s has been loaded.') % (name) self.add_alert(alert) alert.show() self.name_entry.set_text(_('food name')) self.calories_entry.set_text(_('calories')) self._custom_food_image_path = None self._game.build_food_groups() self._game.new_game() self.metadata['name-%d' % (self._custom_food_counter)] = name self.metadata['calories-%d' % (self._custom_food_counter)] = \ str(calories) self.metadata['pyramid-%d' % (self._custom_food_counter)] = str(pyramid) self.metadata['jobject-%d' % (self._custom_food_counter)] = \ self._custom_food_jobject.object_id self._custom_food_counter += 1 _logger.debug('writing %d to counter' % (self._custom_food_counter)) self.metadata['counter'] = str(self._custom_food_counter) return