Difference between revisions of "Features/GTK3/Porting/Record"

From Sugar Labs
< Features‎ | GTK3‎ | Porting
Jump to navigation Jump to search
(Blanked the page)
Line 1: Line 1:
= Some changes =
 
  
'''Replace:'''
 
 
def getStringFromPixbuf(pixbuf):
 
    data = [""]
 
    pixbuf.save_to_callback(_saveDataToBufferCb, "png", {}, data)
 
    return base64.b64encode(str(data[0]))
 
 
 
def _saveDataToBufferCb(buf, data):
 
    data[0] += buf
 
    return True
 
 
'''With:'''
 
 
def getStringFromPixbuf(pixbuf):
 
    """Converts a pixbuf in a string."""
 
 
 
    # Save_to_bufferv return: (bool, string)
 
    data = pixbuf.save_to_bufferv('png', [], [])
 
   
 
    return base64.b64encode(data[1])
 
 
'''Replace:'''
 
 
thumbImg.save(thumbPath, "jpeg", {"quality":"85"} )
 
 
'''With:'''
 
 
thumbImg.savev(thumbPath, "jpeg", {"quality":"85"} )
 
 
'''Replace:'''
 
 
def load_colored_svg(filename, stroke, fill):
 
    path = os.path.join(constants.GFX_PATH, filename)
 
    data = open(path, 'r').read()
 
 
    entity = '<!ENTITY fill_color "%s">' % fill
 
    data = re.sub('<!ENTITY fill_color .*>', entity, data)
 
 
    entity = '<!ENTITY stroke_color "%s">' % stroke
 
    data = re.sub('<!ENTITY stroke_color .*>', entity, data)
 
 
    """return rsvg.Handle(data=data).get_pixbuf()"""
 
 
'''With:'''
 
 
def load_colored_svg(filename, stroke, fill):
 
    """Loads an svg, will change the fill and
 
    stroke colors and returns the pixbuf."""
 
   
 
    path = os.path.join(constants.GFX_PATH, filename)
 
    data = open(path, 'r').read()
 
 
    entity = '<!ENTITY fill_color "%s">' % fill
 
    data = re.sub('<!ENTITY fill_color .*>', entity, data)
 
 
    entity = '<!ENTITY stroke_color "%s">' % stroke
 
    data = re.sub('<!ENTITY stroke_color .*>', entity, data)
 
 
    """return Rsvg.Handle.new_from_data(data.encode('utf-8')).get_pixbuf()"""
 
 
'''Not implement:'''
 
 
super(Record, self).close()
 
 
Due to: [http://bugs.sugarlabs.org/ticket/4345 SL#4345]
 
 
New Gst.TagList:
 
 
'''Replace:'''
 
 
        taglist = self._get_tags(constants.TYPE_AUDIO)
 
 
        if self._audio_pixbuf:
 
            pixbuf_b64 = utils.getStringFromPixbuf(self._audio_pixbuf)
 
            taglist[gst.TAG_EXTENDED_COMMENT] = "coverart=" + pixbuf_b64
 
 
        vorbis_enc = audioline.get_by_name('audioVorbisenc')
 
        vorbis_enc.merge_tags(taglist, gst.TAG_MERGE_REPLACE_ALL)
 
 
'''With:'''
 
 
        taglist = self._get_tags(constants.TYPE_AUDIO)
 
       
 
        if self._audio_pixbuf:
 
            pixbuf_b64 = utils.getStringFromPixbuf(self._audio_pixbuf)
 
           
 
            taglist.add_value(
 
                Gst.TagMergeMode.REPLACE,
 
                Gst.TAG_EXTENDED_COMMENT,
 
                "coverart=" + pixbuf_b64)
 
               
 
        vorbis_enc = audioline.get_by_name('audioVorbisenc')
 
        vorbis_enc.merge_tags(taglist, Gst.TagMergeMode.REPLACE_ALL)
 
 
'''Replace:'''
 
 
        taglist = self._get_tags(constants.TYPE_VIDEO)
 
        vorbis_enc = muxline.get_by_name('muxVorbisenc')
 
        vorbis_enc.merge_tags(taglist, gst.TAG_MERGE_REPLACE_ALL)
 
 
'''With:'''
 
 
        taglist = self._get_tags(constants.TYPE_VIDEO)
 
        vorbis_enc = muxline.get_by_name('muxVorbisenc')
 
        vorbis_enc.merge_tags(taglist, Gst.TagMergeMode.REPLACE_ALL)
 
 
'''Replace:'''
 
 
    def _get_tags(self, type):
 
        tl = gst.TagList()
 
        tl[gst.TAG_ARTIST] = self.model.get_nickname()
 
        tl[gst.TAG_COMMENT] = "olpc"
 
        #this is unfortunately, unreliable
 
        #record.Record.log.debug("self.ca.metadata['title']->" + str(self.ca.metadata['title']) )
 
        tl[gst.TAG_ALBUM] = "olpc" #self.ca.metadata['title']
 
        tl[gst.TAG_DATE] = utils.getDateString(int(time.time()))
 
        stringType = constants.MEDIA_INFO[type]['istr']
 
       
 
        # Translators: photo by photographer, e.g. "Photo by Mary"
 
        tl[gst.TAG_TITLE] = _('%(type)s by %(name)s') % {'type': stringType,
 
                'name': self.model.get_nickname()}
 
        return tl
 
 
'''With:'''
 
 
    def _get_tags(self, type):
 
       
 
        taglist = Gst.TagList.new_empty()
 
       
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_ARTIST,
 
            self.model.get_nickname())
 
           
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_COMMENT,
 
            "olpc")
 
           
 
        #this is unfortunately, unreliable
 
        #record.Record.log.debug("self.ca.metadata['title']->" + str(self.ca.metadata['title']) )
 
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_ALBUM,
 
            "olpc") #self.ca.metadata['title']
 
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_DATE,
 
            utils.getDateString(int(time.time())))
 
           
 
        stringType = constants.MEDIA_INFO[type]['istr'] #self.ca.metadata['title']
 
           
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_TITLE,
 
            _('%(type)s by %(name)s') % {'type': stringType,
 
                'name': self.model.get_nickname()})
 
               
 
        return taglist
 
 
'''Replace:'''
 
 
def getStringFromPixbuf(pixbuf):
 
    data = [""]
 
    pixbuf.save_to_callback(_saveDataToBufferCb, "png", {}, data)
 
    return base64.b64encode(str(data[0]))
 
 
 
def _saveDataToBufferCb(buf, data):
 
    data[0] += buf
 
    return True
 
 
'''By:'''
 
 
def getStringFromPixbuf(pixbuf):
 
    """Converts a pixbuf in a string."""
 
   
 
    # Save_to_bufferv return: (bool, string)
 
    data = pixbuf.save_to_bufferv('png', [], [])
 
   
 
    return base64.b64encode(data[1])
 
 
'''Replace:'''
 
 
thumbImg.save(thumbPath, "jpeg", {"quality":"85"} )
 
 
'''By:'''
 
 
thumbImg.savev(thumbPath, "jpeg", {"quality":"85"} )
 
 
'''Replace:'''
 
 
def load_colored_svg(filename, stroke, fill):
 
    path = os.path.join(constants.GFX_PATH, filename)
 
    data = open(path, 'r').read()
 
 
    entity = '<!ENTITY fill_color "%s">' % fill
 
    data = re.sub('<!ENTITY fill_color .*>', entity, data)
 
 
    entity = '<!ENTITY stroke_color "%s">' % stroke
 
    data = re.sub('<!ENTITY stroke_color .*>', entity, data)
 
 
    return rsvg.Handle(data=data).get_pixbuf()
 
 
'''By:'''
 
 
def load_colored_svg(filename, stroke, fill):
 
    """Loads an svg, will change the fill and
 
    stroke colors and returns the pixbuf."""
 
   
 
    path = os.path.join(constants.GFX_PATH, filename)
 
    data = open(path, 'r').read()
 
 
    entity = '<!ENTITY fill_color "%s">' % fill
 
    data = re.sub('<!ENTITY fill_color .*>', entity, data)
 
 
    entity = '<!ENTITY stroke_color "%s">' % stroke
 
    data = re.sub('<!ENTITY stroke_color .*>', entity, data)
 
 
    return Rsvg.Handle.new_from_data(data.encode('utf-8')).get_pixbuf()
 
 
 
'''Not implement:'''
 
 
super(Record, self).close()
 
 
'''Due to:''' http://bugs.sugarlabs.org/ticket/4345
 
 
When an application fails and you want to close from the corresponding button occurs:
 
Traceback (most recent call last):
 
File "/usr/lib/python2.7/site-packages/sugar3/activity/activity.py", line 890, in _keep_failed_dialog_response_cb
 
self.close(skip_save=True)
 
TypeError: close() got an unexpected keyword argument 'skip_save'
 
And the activity is not closed, nor can restart sugar as alert reappears again and again, you need to stop.
 
 
This error is caused by the following:
 
When a class B inherits from class A, and
 
in B is overwritten a function of A,
 
A function is no longer running,
 
but instead runs the function of the class B,
 
even when explicitly call function A from B.
 
 
'''Stop using Pixmap instead use Pixbuf:'''
 
 
'''Replace:'''
 
 
    def _generate_image(self, num):
 
        w = 55
 
        h = w
 
        pixmap = gdk.Pixmap(self.get_window(), w, h, -1)
 
        ctx = pixmap.cairo_create()
 
        ctx.rectangle(0, 0, w, h)
 
        ctx.set_source_rgb(0, 0, 0)
 
        ctx.fill()
 
 
'''By:'''
 
    def _generate_image(self, num):
 
 
        w = 55
 
        h = w
 
       
 
        x, y = self.get_property('window').get_position()
 
        rect = self.get_allocation()
 
        width, height = rect.width, rect.height
 
     
 
        thumb_surface = Gdk.Window.create_similar_surface(
 
            self.get_property('window'),
 
            cairo.CONTENT_COLOR,
 
            width, height)
 
     
 
        ctx = cairo.Context(thumb_surface)
 
       
 
        Gdk.cairo_set_source_window(
 
            cairo_context,
 
            self.get_property('window'),
 
            x, y)
 
           
 
        ctx.paint()
 
       
 
        ctx.rectangle(x, y, w, h)
 
        ctx.set_source_rgb(0, 0, 0)
 
        ctx.fill()
 
 
 
'''New Gst.TagList:'''
 
 
'''Replace:'''
 
 
        taglist = self._get_tags(constants.TYPE_AUDIO)
 
 
        if self._audio_pixbuf:
 
            pixbuf_b64 = utils.getStringFromPixbuf(self._audio_pixbuf)
 
            taglist[gst.TAG_EXTENDED_COMMENT] = "coverart=" + pixbuf_b64
 
 
        vorbis_enc = audioline.get_by_name('audioVorbisenc')
 
        vorbis_enc.merge_tags(taglist, gst.TAG_MERGE_REPLACE_ALL)
 
 
'''By:'''
 
 
        taglist = self._get_tags(constants.TYPE_AUDIO)
 
       
 
        if self._audio_pixbuf:
 
            pixbuf_b64 = utils.getStringFromPixbuf(self._audio_pixbuf)
 
           
 
            taglist.add_value(
 
                Gst.TagMergeMode.REPLACE,
 
                Gst.TAG_EXTENDED_COMMENT,
 
                "coverart=" + pixbuf_b64)
 
               
 
        vorbis_enc = audioline.get_by_name('audioVorbisenc')
 
        vorbis_enc.merge_tags(taglist, Gst.TagMergeMode.REPLACE_ALL)
 
 
'''Replace:'''
 
 
        taglist = self._get_tags(constants.TYPE_VIDEO)
 
        vorbis_enc = muxline.get_by_name('muxVorbisenc')
 
        vorbis_enc.merge_tags(taglist, gst.TAG_MERGE_REPLACE_ALL)
 
 
'''By:'''
 
 
        taglist = self._get_tags(constants.TYPE_VIDEO)
 
        vorbis_enc = muxline.get_by_name('muxVorbisenc')
 
        vorbis_enc.merge_tags(taglist, Gst.TagMergeMode.REPLACE_ALL)
 
 
'''Replace:'''
 
 
    def _get_tags(self, type):
 
        tl = gst.TagList()
 
        tl[gst.TAG_ARTIST] = self.model.get_nickname()
 
        tl[gst.TAG_COMMENT] = "olpc"
 
        #this is unfortunately, unreliable
 
        #record.Record.log.debug("self.ca.metadata['title']->" + str(self.ca.metadata['title']) )
 
        tl[gst.TAG_ALBUM] = "olpc" #self.ca.metadata['title']
 
        tl[gst.TAG_DATE] = utils.getDateString(int(time.time()))
 
        stringType = constants.MEDIA_INFO[type]['istr']
 
       
 
        # Translators: photo by photographer, e.g. "Photo by Mary"
 
        tl[gst.TAG_TITLE] = _('%(type)s by %(name)s') % {'type': stringType,
 
                'name': self.model.get_nickname()}
 
        return tl
 
 
'''By:'''
 
 
    def _get_tags(self, type):
 
       
 
        taglist = Gst.TagList.new_empty()
 
       
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_ARTIST,
 
            self.model.get_nickname())
 
           
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_COMMENT,
 
            "olpc")
 
           
 
        #this is unfortunately, unreliable
 
        #record.Record.log.debug("self.ca.metadata['title']->" + str(self.ca.metadata['title']) )
 
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_ALBUM,
 
            "olpc") #self.ca.metadata['title']
 
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_DATE,
 
            utils.getDateString(int(time.time())))
 
           
 
        stringType = constants.MEDIA_INFO[type]['istr'] #self.ca.metadata['title']
 
           
 
        taglist.add_value(
 
            Gst.TagMergeMode.REPLACE,
 
            Gst.TAG_TITLE,
 
            _('%(type)s by %(name)s') % {'type': stringType,
 
                'name': self.model.get_nickname()})
 
               
 
        return taglist
 

Revision as of 10:38, 19 December 2012