[sugar] Re: [PATCH] Bundle API now provides write functionality.

Dan Williams dcbw at redhat.com
Fri Mar 2 12:26:16 EST 2007


Marco,

Andrew commented yesterday that the use-case is so that Develop can
write the activity's .info file without having to duplicate code.

The reason I like this patch is that it doesn't duplicate code.

The reason I don't like the "set*" parts of this patch is that it
provides API to let any activity modify it's own .info file at any time,
which should be _clearly_ forbidden.  If you give people API, they will
use it.

So I don't know.  On the balance, I feel like .info files should be
read-only and those activities that need to modify one should do it
themselves.  We've got a .info spec anyway, so it should be relatively
stable.

Dan

On Fri, 2007-03-02 at 12:21 +0100, Marco Pesenti Gritti wrote:
> On Wed, 2007-02-28 at 23:23 -0500, Andrew Clunis wrote:
> > * now provides property setters and write_info() method, which will write
> >   the activity metadata back to activity.info.
> > * now supports the comment and host_version fields.
> > * various cleanups.
> > ---
> >  sugar/activity/bundle.py |  128 ++++++++++++++++++++++++++++++++++++++--------
> >  1 files changed, 105 insertions(+), 23 deletions(-)
> > 
> > diff --git a/sugar/activity/bundle.py b/sugar/activity/bundle.py
> > index 6a6ebdd..482b105 100644
> > --- a/sugar/activity/bundle.py
> > +++ b/sugar/activity/bundle.py
> > @@ -8,18 +8,25 @@ _PYTHON_FACTORY='sugar-activity-factory'
> >  
> >  class Bundle:
> >      """Info about an activity bundle. Wraps the activity.info file."""
> > +    
> > +    section = 'Activity'
> > +    
> 
> Please move this up to the module and call it _SECTION.
> 
> >+        if cp.has_option(self.section, 'host_version'):
> >+            self._host_version = int(cp.get(self.section,
> >'host_version'))
> 
> This is actually a required field. Though I'm not quite sure the spec
> about this is finalized so it's not worth breaking activities. Just put
> a "FIXME this should be a required field" or something.
> 
> >      def get_icon(self):
> > +        """Get the activity icon file name"""
> > +        activity_path = os.path.join(self._path, 'activity')
> > +        icon = os.path.join(activity_path, self._icon_name + ".svg")
> > +        return icon
> > +    
> 
> Use get_icon_path and """Get the activity icon path"""
> 
> > +    def get_icon_name(self):
> >          """Get the activity icon name"""
> > -        return self._icon
> > +        return self._icon_name
> > +    
> > +    def set_icon_name(self, icon_name):
> > +        """Set the activity icon name"""
> > +        self._icon_name = icon_name
> >  
> >      def get_activity_version(self):
> >          """Get the activity version"""
> >          return self._activity_version
> > +    
> > +    def set_activity_version(self, activity_version):
> > +        """Set the activity version"""
> > +        self._activity_version = activity_version
> > +        
> > +    def get_host_version(self):
> > +        """Get the host version required for this activity"""
> > +        return self._host_version
> > +    
> > +    def set_host_version(self, host_version):
> > +        """Set the host version required for this activity"""
> > +        self._host_version = host_version
> >  
> >      def get_exec(self):
> >          """Get the command to execute to launch the activity factory"""
> >          return self._exec
> > +    
> > +    def set_exec(self, exec_name):
> > +        """Set the command to execute to launch the activity factory"""
> > +        self._exec = exec_name
> >  
> >      def get_class(self):
> >          """Get the main Activity class"""
> > -        return self._exec
> > +        return self._class
> > +    
> > +    def set_class(self, klass):
> > +        """Set the main Activity class"""
> > +        self._class = klass
> >  
> >      def get_show_launcher(self):
> >          """Get whether there should be a visible launcher for the activity"""
> >          return self._show_launcher
> > +    
> > +    def set_show_launcher(self, show_launcher):
> > +        self._show_launcher = show_launcher
> > +
> > +    def write_info(self):
> > +        """Write changed configuration parameters back to the activity.info
> > +        file"""
> > +        cp = ConfigParser()
> > +        info_fd = open(self._info_path, "wb")
> > +        cp.add_section(self.section)
> > +        cp.set(self.section, "name", self._name)
> > +        cp.set(self.section, "icon", self._icon_name)
> > +        cp.set(self.section, "service_name"er, self._service_name)
> > +        if self._comment is not None:
> > +            cp.set(self.section, "comment", self._comment)
> 
> There is no "comment" in the spec.
> 
> http://wiki.laptop.org/go/Activity_Bundles
> 
> What's the use case?
> 
> Marco
> 
> _______________________________________________
> Sugar mailing list
> Sugar at laptop.org
> http://mailman.laptop.org/mailman/listinfo/sugar



More information about the Sugar-devel mailing list