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
>
--