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

Reply via email to