Re: [Zope-dev] 'Subclassing' another product

2000-12-21 Thread Morten W. Petersen

[Steve Spicklemire]

| does that help?

Yep.

Thanks & Cheers,

Morten

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )




Re: [Zope-dev] 'Subclassing' another product

2000-12-19 Thread Steve Spicklemire


Hi Morten,


   There are two ways to subclass products. You can use straightforward
Python subclassing:

e.g.,In your custom Product.. here is an example from Zwiff:

> import Products.PythonMethod.Guarded
> 
> from Globals import HTMLFile, MessageDialog
> from App import Common
> 
> manage_addZwiffForm = HTMLFile('addForm',globals())
> 
> def manage_addZwiff(self, id, title, params, body, REQUEST=None):
> """Add A Zwiff to a folder  just like PythonMethod.. 
> """
> it = Zwiff(id, title, params, body)
> self._setObject(id, it)
> return self.manage_main(self, REQUEST)
> 
> def handleMovieOutput(movie, RESPONSE):
> 
> fname = tempfile.mktemp()
> 
> movie.save(fname)
> 
> f = open(fname)
> s = f.read()
> f.close()
> 
> RESPONSE.setHeader('Content-type', 'application/x-shockwave-flash')
> 
> os.remove(fname)
> 
> return s
> 
> class Zwiff (Products.PythonMethod.PythonMethod.PythonMethod ):
> 
> meta_type = 'Zwiff'
> 
> def makeFunction(self, compile=0):
> from Products.PythonMethod.Guarded import GuardedBlock, safefuncs, theGuard
> if compile:
> self._checkCBlock(GuardedBlock)
> if self.errors:
> raise "Python Method Error", string.join(self.errors, '\n')
> return self._newfun(compile, {'$guard': theGuard},
>   __builtins__=mysafebin, _=safefuncs)
> 
> 

So the class Zwiff is a subclass of PythonMethod. Look at Zwiff for the full
source: http://www.zope.org/Members/sspickle/Zwiff

Or you can create a ZClass that subclasses from a 'base class'. To do
this you've got to register the base class with the ZClass machinery
(e.g., here is the code for ZCVSMixin that does this  ZCVSMixin
is a base class... CVSFolder is a full blown product that happens
to be a subclass of ZCVSMixin... )

> 
> 
> import ZCVSMixin
> import CVSFolder
> 
> __doc__ = ZCVSMixin.__doc__
> __version__ = ZCVSMixin.__version__
> 
> def initialize(context):
> context.registerClass(
> CVSFolder.CVSFolder,
> constructors=(CVSFolder.manage_addCVSFolderForm,
>   CVSFolder.manage_addCVSFolder),
> icon='fish.gif',
> )
> context.registerBaseClass(ZCVSMixin.ZCVSMixin)
> 

does that help?

take care,
-steve

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )




[Zope-dev] 'Subclassing' another product

2000-12-19 Thread Morten W. Petersen

I think I read somewhere that it was, from version 2.2
of Zope, possible to 'subclass' products.  Is this
just somebody janking my chain, or is it actually possible?

If it is possible, would someone care to explain?

Thanks.

-Morten

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )