Features/GTK3/Porting/Record: Difference between revisions

No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
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:'''
'''Replace:'''


Line 197: 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 224: Line 60:


     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 230: Line 65:
super(Record, self).close()
super(Record, self).close()


'''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 287: Line 123:
         ctx.fill()
         ctx.fill()


'''New Gst.TagList:


'''New Gst.TagList:'''
Replace:'''
 
'''Replace:'''


         taglist = self._get_tags(constants.TYPE_AUDIO)
         taglist = self._get_tags(constants.TYPE_AUDIO)
Line 331: Line 166:


     def _get_tags(self, type):
     def _get_tags(self, type):
         tl = gst.TagList()
         tl = gst.TagList()
         tl[gst.TAG_ARTIST] = self.model.get_nickname()
         tl[gst.TAG_ARTIST] = self.model.get_nickname()
         tl[gst.TAG_COMMENT] = "olpc"
         tl[gst.TAG_COMMENT] = "olpc"
        #this is unfortunately, unreliable
         tl[gst.TAG_ALBUM] = "olpc"
        #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()))
         tl[gst.TAG_DATE] = utils.getDateString(int(time.time()))
         stringType = constants.MEDIA_INFO[type]['istr']
         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,
         tl[gst.TAG_TITLE] = _('%(type)s by %(name)s') % {'type': stringType,
                 'name': self.model.get_nickname()}
                 'name': self.model.get_nickname()}
Line 360: Line 193:
             Gst.TAG_COMMENT,
             Gst.TAG_COMMENT,
             "olpc")
             "olpc")
           
        #this is unfortunately, unreliable
        #record.Record.log.debug("self.ca.metadata['title']->" + str(self.ca.metadata['title']) )


         taglist.add_value(
         taglist.add_value(
Line 374: Line 204:
             utils.getDateString(int(time.time())))
             utils.getDateString(int(time.time())))
              
              
         stringType = constants.MEDIA_INFO[type]['istr'] #self.ca.metadata['title']
         stringType = constants.MEDIA_INFO[type]['istr']
              
              
         taglist.add_value(
         taglist.add_value(
Line 383: Line 213:
                  
                  
         return taglist
         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)