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() | |||
'''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() | |||
'''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: | |||
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: | |||
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) | |||