コード例 #1
0
    def __init__(self, handle):
        ''' Initialize the toolbar '''
        try:
            super(ReflectActivity, self).__init__(handle)
        except dbus.exceptions.DBusException as e:
            _logger.error(str(e))

        logging.error('setting reflection data to []')
        self.reflection_data = []

        self.connect('realize', self.__realize_cb)

        self.font_size = 8

        self.max_participants = 4
        self._setup_toolbars()

        color = profile.get_color()
        color_stroke = color.get_stroke_color()
        color_fill = color.get_fill_color()

        lighter = utils.lighter_color([color_stroke, color_fill])
        darker = 1 - lighter

        if lighter == 0:
            self.bg_color = style.Color(color_stroke)
            self.fg_color = style.Color(color_fill)
        else:
            self.bg_color = style.Color(color_fill)
            self.fg_color = style.Color(color_stroke)

        self.modify_bg(Gtk.StateType.NORMAL, self.bg_color.get_gdk_color())

        self.bundle_path = activity.get_bundle_path()
        self.tmp_path = os.path.join(activity.get_activity_root(), 'instance')

        self.sharing = False
        self._copy_entry = None
        self._paste_entry = None
        self._webkit = None
        self._clipboard_text = ''
        self._fixed = None

        self.initiating = True
        if self.shared_activity:
            # We're joining
            if not self.get_shared():
                self.initiating = False

                self.busy_cursor()
                share_icon = Icon(icon_name='zoom-neighborhood')
                self._joined_alert = Alert()
                self._joined_alert.props.icon = share_icon
                self._joined_alert.props.title = _('Please wait')
                self._joined_alert.props.msg = _('Starting connection...')
                self.add_alert(self._joined_alert)

                # Wait for joined signal
                self.connect("joined", self._joined_cb)

        self._open_reflect_windows()

        self._setup_presence_service()

        # Joiners wait to receive data from sharer
        # Otherwise, load reflections from local store
        if not self.shared_activity:
            self.busy_cursor()
            GObject.idle_add(self._load_reflections)
コード例 #2
0
 def _add_new_from_journal(self, dsobj):
     self.reflection_data.append({
         'title': _('Untitled'),
         'obj_id': dsobj.object_id
     })
     if hasattr(dsobj, 'metadata'):
         if 'creation_time' in dsobj.metadata:
             self.reflection_data[-1]['creation_time'] = \
                 dsobj.metadata['creation_time']
         else:
             self.reflection_data[-1]['creation_time'] = \
                 int(time.time())
         if 'timestamp' in dsobj.metadata:
             self.reflection_data[-1]['modification_time'] = \
                 dsobj.metadata['timestamp']
         else:
             self.reflection_data[-1]['modification_time'] = \
                 self.reflection_data[-1]['creation_time']
         if 'activity' in dsobj.metadata:
             self.reflection_data[-1]['activities'] = \
                 [utils.bundle_id_to_icon(dsobj.metadata['activity'])]
         if 'title' in dsobj.metadata:
             self.reflection_data[-1]['title'] = \
                 dsobj.metadata['title']
         if 'description' in dsobj.metadata:
             self.reflection_data[-1]['content'] = \
                 [{'text': dsobj.metadata['description']}]
         else:
             self.reflection_data[-1]['content'] = []
         if 'tags' in dsobj.metadata:
             self.reflection_data[-1]['tags'] = []
             tags = dsobj.metadata['tags'].split()
             for tag in tags:
                 if tag[0] != '#':
                     self.reflection_data[-1]['tags'].append('#' + tag)
                 else:
                     self.reflection_data[-1]['tags'].append(tag)
         if 'comments' in dsobj.metadata:
             try:
                 comments = json.loads(dsobj.metadata['comments'])
             except BaseException:
                 comments = []
             self.reflection_data[-1]['comments'] = []
             for comment in comments:
                 try:
                     data = {
                         'nick': comment['from'],
                         'comment': comment['message']
                     }
                     if 'icon-color' in comment:
                         colors = comment['icon-color'].split(',')
                         darker = 1 - utils.lighter_color(colors)
                         data['color'] = colors[darker]
                     else:
                         data['color'] = '#000000'
                     self.reflection_data[-1]['comments'].append(data)
                 except BaseException:
                     _logger.debug('could not parse comment %s' % comment)
         if 'mime_type' in dsobj.metadata and \
            dsobj.metadata['mime_type'][0:5] == 'image':
             new_path = os.path.join(self.tmp_path, dsobj.object_id)
             try:
                 shutil.copy(dsobj.file_path, new_path)
             except Exception as e:
                 logging.error("Couldn't copy %s to %s: %s" %
                               (dsobj.file_path, new_path, e))
             self.reflection_data[-1]['content'].append({'image': new_path})
         elif 'preview' in dsobj.metadata:
             pixbuf = utils.get_pixbuf_from_journal(dsobj, 300, 225)
             if pixbuf is not None:
                 path = os.path.join(self.tmp_path,
                                     dsobj.object_id + '.png')
                 utils.save_pixbuf_to_file(pixbuf, path)
                 self.reflection_data[-1]['content'].append({'image': path})
         self.reflection_data[-1]['stars'] = 0
コード例 #3
0
    def _setup_workspace(self):
        ''' Prepare to render the datastore entries. '''
        self._colors = profile.get_color().to_string().split(',')

        # Use the lighter color for the text background
        if lighter_color(self._colors) == 0:
            tmp = self._colors[0]
            self._colors[0] = self._colors[1]
            self._colors[1] = tmp

        self._width = gtk.gdk.screen_width()
        self._height = gtk.gdk.screen_height()
        self._scale = gtk.gdk.screen_height() / 900.

        if self._hw[0:2] == 'xo':
            titlef = 18
            descriptionf = 12
        else:
            titlef = 36
            descriptionf = 24

        # Generate the sprites we'll need...
        self._sprites = Sprites(self._canvas)

        self._title = Sprite(
            self._sprites, 0, 0,
            svg_str_to_pixbuf(
                genblank(self._width, int(TITLEH * self._scale),
                         self._colors)))
        self._title.set_label_attributes(int(titlef * self._scale),
                                         rescale=False)
        self._preview = Sprite(
            self._sprites, int(
                (self._width - int(PREVIEWW * self._scale)) / 2),
            int(PREVIEWY * self._scale),
            svg_str_to_pixbuf(
                genblank(int(PREVIEWW * self._scale),
                         int(PREVIEWH * self._scale), self._colors)))

        self._full_screen = Sprite(
            self._sprites, int((self._width - int(FULLW * self._scale)) / 2),
            int(PREVIEWY * self._scale),
            svg_str_to_pixbuf(
                genblank(int(FULLW * self._scale), int(FULLH * self._scale),
                         self._colors)))

        self._description = Sprite(
            self._sprites, int(DESCRIPTIONX * self._scale),
            int(DESCRIPTIONY * self._scale),
            svg_str_to_pixbuf(
                genblank(int(self._width - (2 * DESCRIPTIONX * self._scale)),
                         int(DESCRIPTIONH * self._scale), self._colors)))
        self._description.set_label_attributes(int(descriptionf * self._scale))

        self._description2 = Sprite(
            self._sprites, int(SHORTX * self._scale),
            int(SHORTY * self._scale),
            svg_str_to_pixbuf(
                genblank(int(self._width - (2 * SHORTX * self._scale)),
                         int(SHORTH * self._scale), self._colors)))
        self._description2.set_label_attributes(int(descriptionf *
                                                    self._scale))

        self._my_canvas = Sprite(
            self._sprites, 0, 0,
            gtk.gdk.Pixmap(self._canvas.window, self._width, self._height, -1))
        self._my_gc = self._my_canvas.images[0].new_gc()
        self._my_canvas.set_layer(BOTTOM)

        self._clear_screen()

        self._find_starred()
        self.i = 0
        self._show_slide()

        self._playing = False
        self._rate = 10
コード例 #4
0
ファイル: activity.py プロジェクト: AbrahmAB/reflect
    def __init__(self, handle):
        ''' Initialize the toolbar '''
        try:
            super(ReflectActivity, self).__init__(handle)
        except dbus.exceptions.DBusException as e:
            _logger.error(str(e))

        logging.error('setting reflection data to []')
        self.reflection_data = []

        self.connect('realize', self.__realize_cb)

        self.font_size = 8

        self.max_participants = 4
        self._setup_toolbars()

        color = profile.get_color()
        color_stroke = color.get_stroke_color()
        color_fill = color.get_fill_color()

        lighter = utils.lighter_color([color_stroke, color_fill])
        darker = 1 - lighter

        if lighter == 0:
            self.bg_color = style.Color(color_stroke)
            self.fg_color = style.Color(color_fill)
        else:
            self.bg_color = style.Color(color_fill)
            self.fg_color = style.Color(color_stroke)

        self.modify_bg(Gtk.StateType.NORMAL, self.bg_color.get_gdk_color())

        self.bundle_path = activity.get_bundle_path()
        self.tmp_path = os.path.join(activity.get_activity_root(), 'instance')

        self.sharing = False
        self._copy_entry = None
        self._paste_entry = None
        self._webkit = None
        self._clipboard_text = ''
        self._fixed = None

        self.initiating = True
        if self.shared_activity:
            # We're joining
            if not self.get_shared():
                self.initiating = False

                self.busy_cursor()
                share_icon = Icon(icon_name='zoom-neighborhood')
                self._joined_alert = Alert()
                self._joined_alert.props.icon = share_icon
                self._joined_alert.props.title = _('Please wait')
                self._joined_alert.props.msg = _('Starting connection...')
                self.add_alert(self._joined_alert)

                # Wait for joined signal
                self.connect("joined", self._joined_cb)

        self._open_reflect_windows()

        self._setup_presence_service()

        # Joiners wait to receive data from sharer
        # Otherwise, load reflections from local store
        if not self.shared_activity:
            self.busy_cursor()
            GObject.idle_add(self._load_reflections)
コード例 #5
0
ファイル: activity.py プロジェクト: AbrahmAB/reflect
 def _add_new_from_journal(self, dsobj):
     self.reflection_data.append({
         'title': _('Untitled'), 'obj_id': dsobj.object_id})
     if hasattr(dsobj, 'metadata'):
         if 'creation_time' in dsobj.metadata:
             self.reflection_data[-1]['creation_time'] = \
                 dsobj.metadata['creation_time']
         else:
             self.reflection_data[-1]['creation_time'] = \
                 int(time.time())
         if 'timestamp' in dsobj.metadata:
             self.reflection_data[-1]['modification_time'] = \
                 dsobj.metadata['timestamp']
         else:
             self.reflection_data[-1]['modification_time'] = \
                 self.reflection_data[-1]['creation_time']
         if 'activity' in dsobj.metadata:
             self.reflection_data[-1]['activities'] = \
                 [utils.bundle_id_to_icon(dsobj.metadata['activity'])]
         if 'title' in dsobj.metadata:
             self.reflection_data[-1]['title'] = \
                 dsobj.metadata['title']
         if 'description' in dsobj.metadata:
             self.reflection_data[-1]['content'] = \
                 [{'text': dsobj.metadata['description']}]
         else:
             self.reflection_data[-1]['content'] = []
         if 'tags' in dsobj.metadata:
             self.reflection_data[-1]['tags'] = []
             tags = dsobj.metadata['tags'].split()
             for tag in tags:
                 if tag[0] != '#':
                     self.reflection_data[-1]['tags'].append('#' + tag)
                 else:
                     self.reflection_data[-1]['tags'].append(tag)
         if 'comments' in dsobj.metadata:
             try:
                 comments = json.loads(dsobj.metadata['comments'])
             except:
                 comments = []
             self.reflection_data[-1]['comments'] = []
             for comment in comments:
                 try:
                     data = {'nick': comment['from'],
                             'comment': comment['message']}
                     if 'icon-color' in comment:
                         colors = comment['icon-color'].split(',')
                         darker = 1 - utils.lighter_color(colors)
                         data['color'] = colors[darker]
                     else:
                         data['color'] = '#000000'
                     self.reflection_data[-1]['comments'].append(data)
                 except:
                     _logger.debug('could not parse comment %s'
                                   % comment)
         if 'mime_type' in dsobj.metadata and \
            dsobj.metadata['mime_type'][0:5] == 'image':
             new_path = os.path.join(self.tmp_path,
                                     dsobj.object_id)
             try:
                 shutil.copy(dsobj.file_path, new_path)
             except Exception as e:
                 logging.error("Couldn't copy %s to %s: %s" %
                               (dsobj.file_path, new_path, e))
             self.reflection_data[-1]['content'].append(
                 {'image': new_path})
         elif 'preview' in dsobj.metadata:
             pixbuf = utils.get_pixbuf_from_journal(dsobj, 300, 225)
             if pixbuf is not None:
                 path = os.path.join(self.tmp_path,
                                     dsobj.object_id + '.png')
                 utils.save_pixbuf_to_file(pixbuf, path)
                 self.reflection_data[-1]['content'].append(
                     {'image': path})
         self.reflection_data[-1]['stars'] = 0
コード例 #6
0
    def _setup_workspace(self):
        ''' Prepare to render the datastore entries. '''

        # Use the lighter color for the text background
        if lighter_color(self.colors) == 0:
            tmp = self.colors[0]
            self.colors[0] = self.colors[1]
            self.colors[1] = tmp

        self._width = gtk.gdk.screen_width()
        self._height = gtk.gdk.screen_height()
        self._scale = gtk.gdk.screen_height() / 900.

        if not HAVE_TOOLBOX and self._hw[0:2] == 'xo':
            titlef = 18
            descriptionf = 12
        else:
            titlef = 36
            descriptionf = 24

        self._find_starred()
        for ds in self.dsobjects:
            if 'title' in ds.metadata:
                title = ds.metadata['title']
            else:
                title = None
            pixbuf = None
            media_object = False
            mimetype = None
            if 'mime_type' in ds.metadata:
                mimetype = ds.metadata['mime_type']
            if mimetype[0:5] == 'image':
                pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(
                    ds.file_path, MAXX, MAXY)
                    # ds.file_path, 300, 225)
                media_object = True
            else:
                pixbuf = get_pixbuf_from_journal(ds, MAXX, MAXY)  # 300, 225)
            if 'description' in ds.metadata:
                desc = ds.metadata['description']
            else:
                desc = None
            self.slides.append(Slide(True, ds.object_id, self.colors,
                                     title, pixbuf, desc))

        # Generate the sprites we'll need...
        self._sprites = Sprites(self._canvas)

        self._help = Sprite(
            self._sprites,
            int((self._width - int(PREVIEWW * self._scale)) / 2),
            int(PREVIEWY * self._scale),
            gtk.gdk.pixbuf_new_from_file_at_size(
                os.path.join(activity.get_bundle_path(), 'help.png'),
                int(PREVIEWW * self._scale), int(PREVIEWH * self._scale)))
        self._help.hide()

        self._genblanks(self.colors)

        self._title = Sprite(self._sprites, 0, 0, self._title_pixbuf)
        self._title.set_label_attributes(int(titlef * self._scale),
                                         rescale=False)
        self._preview = Sprite(self._sprites,
            int((self._width - int(PREVIEWW * self._scale)) / 2),
            int(PREVIEWY * self._scale), self._preview_pixbuf)

        self._description = Sprite(self._sprites,
                                   int(DESCRIPTIONX * self._scale),
                                   int(DESCRIPTIONY * self._scale),
                                   self._desc_pixbuf)
        self._description.set_label_attributes(int(descriptionf * self._scale))

        self._my_canvas = Sprite(self._sprites, 0, 0, self._canvas_pixbuf)
        self._my_canvas.set_layer(BOTTOM)

        self._clear_screen()

        self.i = 0
        self._show_slide()

        self._playing = False
        self._rate = 10