Makes one wonder if that's why Application.SetGlobal() exists. =p lol
On Fri, May 11, 2012 at 10:15 PM, Xavier Lapointe <[email protected]>wrote: > Tried your solution but could not get it to work :( > > > Found a way, but I would need to understand the internal mechanism to > reproduce it more cleanly. > > from win32com.client import constants >> constants.__dicts__.append({'PLUGIN_GLOBAL_SCOPE': None,'project': >> {},'category': '','entities': []}) >> container = [d for d in constants.__dicts__ if 'PLUGIN_GLOBAL_SCOPE' in >> d][0] > > > > Far from being ideal ... > > > 2012/5/11 Alok Gandhi <[email protected]> > >> One last thing, I checked one plugin where this works, of course in >> windows, but in my code I do not use 'global ' keyword when accesing the >> global dict. Something like this: >> globalDict = {} >> >> def _setGlobalDict(inObj=None, meshData=None): >> if inObj: >> globalDict['obj'] = inObj # no use of 'global' here. >> >> if meshData: >> globalDict['data'] = meshData >> >> return True >> >> and then I call _setGlobalDict() wherever I need to. >> >> >> On Fri, May 11, 2012 at 9:37 PM, Xavier Lapointe < >> [email protected]> wrote: >> >>> I'll add some context: >>> >>> - everything lives in the same plugin >>> - I tried storing it in a container coming from an imported module >>> - tried accessing and setting the global variable directly in the >>> globals() dictionary >>> - Grumble Gumble. >>> >>> >>> >>> >>> 2012/5/11 Alok Gandhi <[email protected]> >>> >>>> Yes if PPG is not getting refreshed then this seems weird. The only >>>> thing that comes to mind is maybe the custom command execution is making >>>> things go wrong. What if you use a function declared inside the plugin >>>> instead of calling the custom command ? or maybe the custom command should >>>> be implemented in the same plugin as the PPG, this does not make sense but >>>> is worth a try. >>>> >>>> >>>> On Fri, May 11, 2012 at 9:24 PM, Xavier Lapointe < >>>> [email protected]> wrote: >>>> >>>>> Hm, yes I could store it in a parameter or another way ... just this >>>>> feels hacky to get something basic done (granted no refresh happend during >>>>> the plugin execution). >>>>> >>>>> This should work, like Matt mentioned :/ >>>>> >>>>> Oh well. >>>>> >>>>> >>>>> >>>>> >>>>> 2012/5/11 Alok Gandhi <[email protected]> >>>>> >>>>>> I am not sure whether this works under windows as well, the plugin >>>>>> script can get refreshed and all your global variables will be >>>>>> re-initialized. The only good approaches that I have been using is to >>>>>> store >>>>>> the varaibles in UIITems lists. This works well for the 3D com objects as >>>>>> well. Another idea would be to pass on objects returning through a safe >>>>>> array from the commands itself. >>>>>> >>>>>> >>>>>> On Fri, May 11, 2012 at 9:13 PM, Xavier Lapointe < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> >>>>>>> hit another PPG UI Item *** >>>>>>> >>>>>>> ... All happening under the same Property page. >>>>>>> >>>>>>> 2012/5/11 Xavier Lapointe <[email protected]> >>>>>>> >>>>>>>> Hey guys, >>>>>>>> >>>>>>>> This one really surprised me. I tend to avoid global variable in >>>>>>>> Softimage plugins as much as I can, but sometimes it might be >>>>>>>> convenient. >>>>>>>> >>>>>>>> So basically, I wanted to use a global variable ( simple Python >>>>>>>> Dictionary ) to keep some stuff in reference while interacting with a >>>>>>>> PPG. >>>>>>>> I remember clearly that it was working well under Windows, so >>>>>>>> I assume this is a python 2.5 Linux issue (if this is an issue - >>>>>>>> please tell me if this is normal under Soft with python 2.5). >>>>>>>> >>>>>>>> Here's basically what I was trying to do: >>>>>>>> >>>>>>>> [imports ....] >>>>>>>>> >>>>>>>>> # Global Scope >>>>>>>> >>>>>>>>> LAST_SELECTION = { >>>>>>>>> 'project': {}, >>>>>>>>> 'category': '', >>>>>>>>> 'entities': [], >>>>>>>>> } >>>>>>>>> >>>>>>>>> def CustomCommand_Execute(): >>>>>>>>> global LAST_SELECTION >>>>>>>>> [Do some modifications to LAST_SELECTION] >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Following this pattern: >>>>>>>> >>>>>>>> - Prompt the PPG >>>>>>>> - Interact with the UI >>>>>>>> - The custom command is fired - do some modifications to >>>>>>>> LAST_SELECTION >>>>>>>> - hit another PPG UI >>>>>>>> - Hell the LAST_SELECTION global is back to the inital value! >>>>>>>> >>>>>>>> I've been tracing the LAST_SELECTION variable with id(), and it's >>>>>>>> changing every time I interact with the UI; showing clearly that there >>>>>>>> is >>>>>>>> something nasty going on under the hood (?) >>>>>>>> >>>>>>>> Any idea to get this working? >>>>>>>> >>>>>>>> Alan mentioned the >>>>>>>> Application.SetGlobal/Application.GetGlobal functions ... but still, >>>>>>>> this >>>>>>>> should be working natively, isn't? >>>>>>>> >>>>>>>> Thanks! >>>>>>>> >>>>>>>> -- >>>>>>>> Xavier >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Xavier >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Xavier >>>>> >>>> >>>> >>>> >>>> -- >>>> >>>> >>> >>> >>> -- >>> Xavier >>> >> >> >> >> -- >> >> > > > -- > Xavier >

