Scripts - persistent data?



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 15/01/2012 at 01:12, xxxxxxxx wrote:

    OK I appreciate that scripts are not the thing to use if you want to store a lot of data

    but, if you want to store something like a bunch of settings until the script is run again

    is their a 'correct' way to do this?



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 15/01/2012 at 01:45, xxxxxxxx wrote:

    Do it like any other program does it, save the settings in a configuration file, or somewhat alike.
    Maybe you should store the file in %APPDATA%/Maxon/CInema 4D R13/prefs, but then you should provide a deinstallation of your script.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 15/01/2012 at 03:51, xxxxxxxx wrote:

    thanks niklas

    that was my thought to  - but I didn't want preempt any suggestion by putting it in the question



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 15/01/2012 at 03:54, xxxxxxxx wrote:

    Maybe something like this. ^^

     _# -- Imports -------------------------------------------------------------------_  
      
     **import** **c4d**  
     **import** **os.path**                   **as** **path**  
     **import** **xml.etree.ElementTree**     **as** **etree**  
      
     _# -- Configuration -------------------------------------------------------------_  
      
     **class** **InvalidXMLConfiguration** ( **Exception** ) :  
      _""" Raised when a the configuration contains errors. """_  
      
     **class** **Config_** (object) :  
      _""" An object storing the configuration for the plugin. """_  
      
      __did_load    = False  
      __config_path = path.join(c4d.GeGetC4dPath(c4d.C4D_PATH_PREFS), \  
                                'my_plugin.cfg')  
      
      my_plugin_does_stuff = 'The default value here.'  
      my_plugin_is_awesome = True  
      
      **def** __init__(self) :  
          **if** **not** self.__did_load:  
              self.__load_config(self)  
      
      **def** __setattr__(self, name, value) :  
          setattr(Config_, name, value)  
      
      **def** __getattr__(self, name) :  
          **return** getattr(Config_, name)  
      
      
      **def** __load_config(self) :  
          _""" Load the configuration here. """_  
      
          get = **lambda** x: x. text **if** x **else** None  
          fl  = open(self.__config_path)  
          xml = etree.ElementTree(file = fl)  
          self.my_plugin_does_stuff = get(xml.find('my_plugin_does_stuff')) **or** \  
                                      self.my_plugin_does_stuff  
          self.my_plugin_is_awesome = get(xml.find('my_plugin_is_awesome')) **or** \  
                                      self.my_plugin_is_awesome  
          _# .._  
      
    Config = Config_()
    


  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 15/01/2012 at 07:56, xxxxxxxx wrote:

    oh wow - that's one for reference folder
    will do my best to get my head around it
      :)

    thanks Niklas

    Paul


Log in to reply