diff options
author | Marion <marion.zepf@gmail.com> | 2013-09-08 12:16:11 (GMT) |
---|---|---|
committer | Marion <marion.zepf@gmail.com> | 2013-09-08 12:16:11 (GMT) |
commit | 728aeea62cbdd45332cc2fa804604fb95c3df97f (patch) | |
tree | 4cf60aee95a58b1bced6a5a91fe38befd7124823 /plugins | |
parent | 7b4a71f103bce1eb408e545e62c162d234574e92 (diff) |
add Primitive for the 'show' block
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/turtle_blocks_extras/turtle_blocks_extras.py | 81 |
1 files changed, 4 insertions, 77 deletions
diff --git a/plugins/turtle_blocks_extras/turtle_blocks_extras.py b/plugins/turtle_blocks_extras/turtle_blocks_extras.py index dca52a5..041dc24 100644 --- a/plugins/turtle_blocks_extras/turtle_blocks_extras.py +++ b/plugins/turtle_blocks_extras/turtle_blocks_extras.py @@ -203,7 +203,6 @@ boolean operators from Numbers palette')) special_name=_('text'), help_string=_('string value')) - primitive_dictionary['show'] = self._prim_show palette.add_block('show', style='basic-style-1arg', label=_('show'), @@ -213,8 +212,8 @@ boolean operators from Numbers palette')) help_string=_('draws text or show media from the \ Journal')) self.tw.lc.def_prim('show', 1, - lambda self, x: - primitive_dictionary['show'](x, True)) + Primitive(self.tw.lc.show, + arg_descs=[ArgSlot(TYPE_OBJECT), ConstantArg(True)])) palette.add_block('showaligned', hidden=True, @@ -227,8 +226,8 @@ Journal')) help_string=_('draws text or show media from the \ Journal')) self.tw.lc.def_prim('showaligned', 1, - lambda self, x: - primitive_dictionary['show'](x, False)) + Primitive(self.tw.lc.show, + arg_descs=[ArgSlot(TYPE_OBJECT), ConstantArg(False)])) primitive_dictionary['setscale'] = self._prim_setscale palette.add_block('setscale', @@ -1353,78 +1352,6 @@ Journal objects')) if self.tw.lc.update_values: self.tw.lc.update_label_value('scale', scale) - def _prim_show(self, string, center=False): - """ Show is the general-purpose media-rendering block. """ - if type(string) == str or type(string) == unicode: - if string in ['media_', 'descr_', 'audio_', 'video_', - 'media_None', 'descr_None', 'audio_None', - 'video_None']: - pass - elif string[0:6] in ['media_', 'descr_', 'audio_', 'video_']: - self.tw.lc.filepath = None - self.tw.lc.pixbuf = None # Camera writes directly to pixbuf - self.tw.lc.dsobject = None - if string[6:].lower() in media_blocks_dictionary: - media_blocks_dictionary[string[6:].lower()]() - elif os.path.exists(string[6:]): # is it a path? - self.tw.lc.filepath = string[6:] - elif self.tw.running_sugar: # is it a datastore object? - from sugar.datastore import datastore - try: - self.tw.lc.dsobject = datastore.get(string[6:]) - except: - debug_output("Couldn't find dsobject %s" % - (string[6:]), self.tw.running_sugar) - if self.tw.lc.dsobject is not None: - self.tw.lc.filepath = self.tw.lc.dsobject.file_path - if self.tw.lc.pixbuf is not None: - self.tw.lc.insert_image(center=center, pixbuf=True) - elif self.tw.lc.filepath is None: - if self.tw.lc.dsobject is not None: - self.tw.showlabel( - 'nojournal', - self.tw.lc.dsobject.metadata['title']) - else: - self.tw.showlabel('nojournal', string[6:]) - debug_output("Couldn't open %s" % (string[6:]), - self.tw.running_sugar) - elif string[0:6] == 'media_': - self.tw.lc.insert_image(center=center) - elif string[0:6] == 'descr_': - mimetype = None - if self.tw.lc.dsobject is not None and \ - 'mime_type' in self.tw.lc.dsobject.metadata: - mimetype = self.tw.lc.dsobject.metadata['mime_type'] - description = None - if self.tw.lc.dsobject is not None and \ - 'description' in self.tw.lc.dsobject.metadata: - description = self.tw.lc.dsobject.metadata[ - 'description'] - self.tw.lc.insert_desc(mimetype, description) - elif string[0:6] == 'audio_': - self.tw.lc.play_sound() - elif string[0:6] == 'video_': - self.tw.lc.play_video() - if self.tw.lc.dsobject is not None: - self.tw.lc.dsobject.destroy() - else: # assume it is text to display - x, y = self.tw.lc.x2tx(), self.tw.lc.y2ty() - if center: - y -= self.tw.canvas.textsize - self.tw.turtles.get_active_turtle().draw_text(string, x, y, - int(self.tw.canvas.textsize * - self.tw.lc.scale / 100.), - self.tw.canvas.width - x) - elif type(string) == float or type(string) == int: - string = round_int(string) - x, y = self.tw.lc.x2tx(), self.tw.lc.y2ty() - if center: - y -= self.tw.canvas.textsize - self.tw.turtles.get_active_turtle().draw_text(string, x, y, - int(self.tw.canvas.textsize * - self.tw.lc.scale / 100.), - self.tw.canvas.width - x) - def _prim_showlist(self, sarray): """ Display list of media objects """ x = (self.tw.turtles.get_active_turtle().get_xy()[0] / |