Re: Pushing for Pythoncard 1.0

John Henry <[email protected]> Wed, 20 Mar 2013 22:00:55 -0700 (PDT)
Newsgroups gmane.comp.python.pythoncard
Message-ID <[email protected]>
Haven't done this for a while.  It's basically something like this (untested):

import wx
import new

from PythonCard import log
from PythonCard import model, dialog

"""
This is how to invoke:
Control_factory(self, attribute={"type":"Button", "name":"Button1",  
"label":"Button1","position":(5,35)},  
eventHandlers={"mouseClick":on_Button_mouseClick})
def on_Button_mouseClick(self, event):
    return
"""
class Control_factory():
    def addHandler(self, aMethod):
        # Add the Handler to our Handler list.
        try:
            _handlers=self._handlers
        except:
            self._handlers={}
        if aMethod.name not in self._handlers:
            log.debug("addHandler: " + aMethod.name)
            #self._handlers[aMethod.name] = event.Handler(aMethod)
            self._handlers[aMethod.name] = aMethod

    def delHandler(self, aMethod):
        # Add the Handler to our Handler list.
        if aMethod.name in self._handlers:
            log.debug("delHandler: " + aMethod.name)
            del self._handlers[aMethod.name]
            del aMethod

    def __init__(self, parent, attribute, eventHandlers):
        name=attribute['name']
        self.methods=[]
        for eventName in eventHandlers.keys():
            eventFct=eventHandlers[eventName]
            def function(parent, background, event):
                if eventFct==None:
                    return None
                return eventFct(event)
            function.name = "on_%s_%s" % (name,eventName)
            method = new.instancemethod(function, parent, parent.__class__)
            setattr(parent, function.name, method)
            self.addHandler(method)
            self.methods.append(method)
        parent.components[name] = attribute
        return
    
    def getMethods(self):
        return self.methods


Control_factory(self, attribute={"type":"ImageButton", "name":"stop", 
"position":(10,10), 'border':'transparent', 'command':u'stop','file':'', 
'visible':False, },  eventHandlers={"mouseClick":on_stop_mouseClick})


On 9/27/2012 11:35 PM, Alec Bennett wrote:

Hello very quiet Pythoncard email list! 
>
>
>I'm trying to add an ImageButton dynamically to a resource file, and can't 
>figure out how to do so.
>
>
>Suppose the ImageButton looked like this:
>
>
>{'type':'ImageButton', 
>    'name':'stop', 
>    'position':(10, 10), 
>    'border':'transparent', 
>    'command':u'stop', 
>    'file':'', 
>    'visible':False, 
>    },
>
>
>And I refer to the components in this resource file like this:
>
>
>self.childWindow.components.whateverButton.visible = False (etc.)
>
>
>Any idea how I would add this ImageButton component, short of writing to the 
>actual resource file?
>
>
>Thanks for any help.
>
>
>
>
>
>
>
>
>
>
>
>
>------------------------------------------------------------------------------ 
>Got visibility? Most devs has no idea what their production app looks like. Find 
>out how fast your code is with AppDynamics Lite. 
>http://ad.doubleclick.net/clk;262219671;13503038;y? 
>http://info.appdynamics.com/FreeJavaPerformanceDownload.html
>
>
>_______________________________________________ Pythoncard-users mailing list 
>[email protected] 
>https://lists.sourceforge.net/lists/listinfo/pythoncard-users 
>
 --
John Henry

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar