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
>

Reply via email to