Features/GTK3/Porting/Record: Difference between revisions

Created page with "'''Replace:''' def getStringFromPixbuf(pixbuf): data = [""] pixbuf.save_to_callback(_saveDataToBufferCb, "png", {}, data) return base64.b64encode(str(data[0])) ..."
 
No edit summary
 
(5 intermediate revisions by 2 users not shown)
Line 23: Line 23:
'''Replace:'''
'''Replace:'''


thumbImg.save(thumbPath, "jpeg", {"quality":"85"} )
thumbImg.save(thumbPath, "jpeg", {"quality":"85"} )  


'''By:'''
'''By:'''
Line 32: Line 32:


def load_colored_svg(filename, stroke, fill):
def load_colored_svg(filename, stroke, fill):
     path = os.path.join(constants.GFX_PATH, filename)
     path = os.path.join(constants.GFX_PATH, filename)
     data = open(path, 'r').read()
     data = open(path, 'r').read()
Line 41: Line 42:
     data = re.sub('<!ENTITY stroke_color .*>', entity, data)
     data = re.sub('<!ENTITY stroke_color .*>', entity, data)


     '''return rsvg.Handle(data=data).get_pixbuf()'''
     return rsvg.Handle(data=data).get_pixbuf()


'''By:'''
'''By:'''
Line 58: Line 59:
     data = re.sub('<!ENTITY stroke_color .*>', entity, data)
     data = re.sub('<!ENTITY stroke_color .*>', entity, data)


     '''return Rsvg.Handle.new_from_data(data.encode('utf-8')).get_pixbuf()'''
     return Rsvg.Handle.new_from_data(data.encode('utf-8')).get_pixbuf()


'''Not implement:'''
'''Not implement:'''
Line 66: Line 67:
'''Due to:''' [http://bugs.sugarlabs.org/ticket/4345]
'''Due to:''' [http://bugs.sugarlabs.org/ticket/4345]


'''When an application fails and you want to close from the corresponding button occurs:'''
When an application fails and you want to close from the corresponding button occurs:
 
Traceback (most recent call last):
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/sugar3/activity/activity.py", line 890, in _keep_failed_dialog_response_cb
File "/usr/lib/python2.7/site-packages/sugar3/activity/activity.py", line 890, in _keep_failed_dialog_response_cb
Line 73: Line 75:
And the activity is not closed, nor can restart sugar as alert reappears again and again, you need to stop.
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:'''
This error is caused by the following:
When a class B inherits from class A, and
When a class B inherits from class A, and
in B is overwritten a function of A,
in B is overwritten a function of A,
Line 79: Line 81:
but instead runs the function of the class B,
but instead runs the function of the class B,
even when explicitly call function A from B.
even when explicitly call function A from B.


'''Stop using Pixmap instead use Pixbuf:'''
'''Stop using Pixmap instead use Pixbuf:'''
Line 121: Line 122:
         ctx.set_source_rgb(0, 0, 0)
         ctx.set_source_rgb(0, 0, 0)
         ctx.fill()
         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"
        tl[gst.TAG_ALBUM] = "olpc"
        tl[gst.TAG_DATE] = utils.getDateString(int(time.time()))
        stringType = constants.MEDIA_INFO[type]['istr']
       
        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")
        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']
           
        taglist.add_value(
            Gst.TagMergeMode.REPLACE,
            Gst.TAG_TITLE,
            _('%(type)s by %(name)s') % {'type': stringType,
                'name': self.model.get_nickname()})
               
        return taglist
GObject.get_data() and set_data() are deprecated. Use normal Python attributes instead
button.set_data('handler-ids', (clicked_handler, remove_handler, clipboard_handler))
'''No joint implementation:'''
self.connect('size_allocate', self._size_allocate_cb)
def _size_allocate_cb(self, widget, requisition):
. . .
and
def do_size_allocate(self, allocation):
. . .
'''Replace:'''
taglist.add_value(
      Gst.TagMergeMode.REPLACE,
      Gst.TAG_DATE,
      utils.getDateString(int(time.time())))
def getDateString( when ):
   
    return strftime( "%c", time.localtime(when) )
'''By:'''
datetime = GLib.DateTime.new_now_local()
date = GLib.Date()
date.set_day(datetime.get_day_of_month())
date.set_month(datetime.get_month())
date.set_year(datetime.get_year())
taglist.add_value(
      Gst.TagMergeMode.REPLACE,
      Gst.TAG_DATE,
      date)