Activity Team/Compatibility Tips: Difference between revisions

 
(9 intermediate revisions by 3 users not shown)
Line 16: Line 16:
  except:
  except:
     # early versions of Sugar (656) didn't support get_activity_root()
     # early versions of Sugar (656) didn't support get_activity_root()
     path = "/home/olpc/.sugar/default/org.sugarlabs.[your activity name]"
     path = "/home/olpc/.sugar/default/[your activity bundle id as specified in activity.info]"


=== svg: ===
e.g.,
    path = "/home/olpc/.sugar/default/org.laptop.TurtleArtActivity"
 
=== SVG ===
Some earlier OLPC builds (e.g., 656) use an older version of the gtk svg libraries that don't process svg files that use the <svg:tag> syntax. It seems that removing svg: resolves the rendering problem.
Some earlier OLPC builds (e.g., 656) use an older version of the gtk svg libraries that don't process svg files that use the <svg:tag> syntax. It seems that removing svg: resolves the rendering problem.


Line 26: Line 29:
Another issue is with SVG paths. Some SVG editors, e.g., inkscape, sometimes omit the l in a path that uses relative line-tos. These paths will not render properly on old OLPC builds.
Another issue is with SVG paths. Some SVG editors, e.g., inkscape, sometimes omit the l in a path that uses relative line-tos. These paths will not render properly on old OLPC builds.


  <path d="m 100,100 10,10> won't work
  <path d="m 100,100 10,10 /> won't work
  <path d="m 100,100 l 10,10> will work
  <path d="m 100,100 l 10,10 /> will work
 
In recent Fedora/Sugar builds (F13/0.88) another SVG problem has been occurring. If you define a path without explicitly defining stroke and fill colors, it will render as black, even if you define stroke and fill colors in your initial <svg> block.
 
<svg ... stroke="&stoke_color;" fill="&fill_color;" ... >
<path ... /> won't work
<path ... stroke="&stoke_color;" fill="&fill_color;" /> will work
</svg>


=== artwork ===
=== artwork ===
Line 59: Line 69:
=== import tarfile ===
=== import tarfile ===
At some point, the behavior of the Python tarfile library seems to have changed (I've not yet hunted down the documentation.) In any case, on Build 767, it was generating .tar suffixes and on later builds (newer Python libraries?) it was generating .gtar suffixes. I got burnt by this in Turtle Art so now I check for both.
At some point, the behavior of the Python tarfile library seems to have changed (I've not yet hunted down the documentation.) In any case, on Build 767, it was generating .tar suffixes and on later builds (newer Python libraries?) it was generating .gtar suffixes. I got burnt by this in Turtle Art so now I check for both.
if file_path[-5:] == ".gtar" or file_path[-4:] == ".tar":
or


  if file_path.endswith(('.gtar', '.tar')):
  if file_path.endswith(('.gtar', '.tar')):
Line 73: Line 79:
Sugar toolbars changed in Sucrose v0.86. You can detect which version you are running by checking for an ImportError:
Sugar toolbars changed in Sucrose v0.86. You can detect which version you are running by checking for an ImportError:


  try: # 0.86 toolbar widgets
  try: # 0.86 toolbar widgets
    from sugar.bundle.activitybundle import ActivityBundle
    from sugar.activity.widgets import ActivityToolbarButton, StopButton
    from sugar.activity.widgets import ActivityToolbarButton
    from sugar.graphics.toolbarbox import ToolbarBox, ToolbarButton
    from sugar.activity.widgets import StopButton
    has_toolbarbox = True
    from sugar.graphics.toolbarbox import ToolbarBox
    from sugar.graphics.toolbarbox import ToolbarButton
    _new_sugar_system = True
  except ImportError:
  except ImportError:
    _new_sugar_system = False
    has_toolbarbox = False
 


Use the flag to determine whether to create old-style or new toolbars:
Use the flag to determine whether to create old-style or new toolbars:


  if _new_sugar_system:
  if has_toolbarbox:
     # Use 0.86+ toolbar design
     # Use 0.86+ toolbar design
     toolbar_box = ToolbarBox()
     toolbar_box = ToolbarBox()
Line 108: Line 112:


         self.activity.fullscreen_button.connect('clicked', self.activity._do_fullscreen_cb)
         self.activity.fullscreen_button.connect('clicked', self.activity._do_fullscreen_cb)
=== Python versions ===
Some Sugar systems are running on older versions of Python. Take care to make sure you don't run into syntax errors do to changes in the Python language. For example, I was burned on the following:
    except Exception as e: # works fine with Python 2.6 but raises a syntax error with Python 2.5
    except Exception, e:  # works fine in both cases.
See python.org for more information on incompatibilities between versions.
=== GNOME toolkit versions ===
In older versions of gtk, e.g., 2.16.0, the set_size_request method does not work properly for label.
    label = gtk.Label(string)
    label.set_line_wrap(True)
    label.set_size_request(width, -1)
Works fine on 2.22.0
''I'll try to track down the relevant gtk patch.''