From ad6e73556019662d827cf860dc4c14d3b74bb005 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Fri, 29 Jan 2010 14:46:01 +0000 Subject: fixed Python block problems --- diff --git a/constants.py b/constants.py index 777450e..543b1e3 100644 --- a/constants.py +++ b/constants.py @@ -188,7 +188,7 @@ PRIMITIVES = {'clean':'clean', 'forward':'forward', 'back':'back', 'arc':'arc', 'bottompos':'bottompos', 'width':'hres', 'height':'vres', 'hideblocks':'hideblocks', 'push':'push', 'pop':'pop', 'keyboard':'keyboard', 'kbinput':'kbinput', 'myfunc':'myfunc', - 'nop':'nop', 'printheap':'printheap', 'clearheap':'clearheap', + 'nop':'userdefined', 'printheap':'printheap', 'clearheap':'clearheap', 'red':'red', 'orange':'orange', 'yellow':'yellow', 'green':'green', 'cyan':'cyan', 'blue':'blue', 'purple':'purple'} diff --git a/talogo.py b/talogo.py index e7b3f7d..b2a0251 100644 --- a/talogo.py +++ b/talogo.py @@ -655,7 +655,7 @@ def box(lc,x): raise logoerror("#emptybox") def loadmyblock(lc,x): - # execute code inported from the Journal + # Execute code imported from the Journal if lc.tw.myblock is not None: y = myfunc_import(lc, lc.tw.myblock, x) else: diff --git a/taproject.py b/taproject.py index 562fbf9..f0fb314 100644 --- a/taproject.py +++ b/taproject.py @@ -65,15 +65,24 @@ def new_project(tw): tw.save_file_name = None def load_file(tw, create_new_project=True): - fname = _get_load_name(tw) + fname = _get_load_name(tw, '.ta') if fname==None: return - if fname[-3:]=='.ta': + if fname[-3:] == '.ta': fname=fname[0:-3] - load_files(tw,fname+'.ta', create_new_project) + load_files(tw, fname+'.ta', create_new_project) if create_new_project is True: tw.save_file_name = os.path.basename(fname) +# From Suger, we use the Journal, but from outside of Sugar, we load from a file +def load_python_code(tw): + fname = _get_load_name(tw, '.py') + if fname==None: + return + f = open(fname, 'r') + tw.myblock = f.read() + f.close() + # # We try to maintain read-compatibility with all versions of Turtle Art. # Try pickle first; then two different versions of json. @@ -102,13 +111,13 @@ def _json_load(text): # json converts tuples to lists, so we need to convert back, return _tuplify(listdata) -def _get_load_name(tw): +def _get_load_name(tw, suffix): dialog = gtk.FileChooserDialog("Load...", None, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) - return _do_dialog(tw, dialog) + return _do_dialog(tw, dialog, suffix) # Unpack serialized data sent across a share. def load_string(tw, text): @@ -233,7 +242,7 @@ def _get_save_name(tw): dialog.set_default_response(gtk.RESPONSE_OK) if tw.save_file_name is not None: dialog.set_current_name(tw.save_file_name+'.ta') - return _do_dialog(tw,dialog) + return _do_dialog(tw, dialog, '.ta') def save_data(tw, fname): f = file(fname, "w") @@ -288,10 +297,10 @@ def get_id(c): return None return c.id -def _do_dialog(tw,dialog): +def _do_dialog(tw, dialog, suffix): result = None filter = gtk.FileFilter() - filter.add_pattern("*.ta") + filter.add_pattern('*'+suffix) filter.set_name("Turtle Art") dialog.add_filter(filter) dialog.set_current_folder(tw.load_save_folder) diff --git a/tawindow.py b/tawindow.py index eefd3f5..0868102 100644 --- a/tawindow.py +++ b/tawindow.py @@ -917,7 +917,7 @@ class TurtleArtWindow(): self._import_from_journal(self.selected_spr) ''' elif blk.name=='nop' and self.myblock==None: - self.activity.import_py() + self._import_py() else: self._run_stack(blk) @@ -1204,6 +1204,16 @@ class TurtleArtWindow(): self.drag_group = None """ + Import Python code into a block + """ + def _import_py(self): + if self.running_sugar(): + self.activity.import_py() + else: + load_python_code(self) + self.set_userdefined() + + """ Make sure a 'number' block contains a number. """ def _number_check(self): -- cgit v0.9.1