Difference between revisions of "Save settings"

From PyMOLWiki
Jump to navigation Jump to search
m (CmdException)
(moved script to github)
Line 1: Line 1:
 +
{{Infobox script-repo
 +
|type      = Python Module
 +
|filename  = save_settings.py
 +
|author    = [[User:Speleo3|Thomas Holder]]
 +
|license  = BSD-2-Clause
 +
}}
 +
 
[[save_settings]] is a prototype implementation to save all settings with non-default values to a file.
 
[[save_settings]] is a prototype implementation to save all settings with non-default values to a file.
  
Line 8: Line 15:
  
 
  save_settings [ filename ]
 
  save_settings [ filename ]
 
== The Script ==
 
 
<source lang="python">
 
from pymol import cmd, CmdException
 
 
def save_settings(filename='~/.pymolrc-settings.py', quiet=1):
 
    '''
 
DESCRIPTION
 
 
    Dumps all settings with non-default values to ~/.pymolrc-settings.py
 
 
    Feature Request: Save settings for later use - ID: 1009951
 
    https://sourceforge.net/tracker/?func=detail&aid=1009951&group_id=4546&atid=354546
 
    '''
 
    from pymol.setting import get_name_list
 
    quiet = int(quiet)
 
    if not filename.endswith('.py'):
 
        print 'Error: filename must end with ".py"'
 
        raise CmdException
 
    # temporatily load default settings and remember them
 
    cmd.reinitialize('store_defaults')
 
    cmd.reinitialize('original_settings')
 
    original = [(name, cmd.get(name)) for name in get_name_list()]
 
    cmd.reinitialize('settings')
 
    # dump to file
 
    filename = cmd.exp_path(filename)
 
    f = open(filename, 'w')
 
    print >> f, '# AUTOGENERATED FILE'
 
    print >> f, 'from pymol import cmd, invocation'
 
    print >> f, 'if invocation.options.show_splash:'
 
    print >> f, '    print "Loading settings from",', repr(filename)
 
    count = 0
 
    for name, o_value in original:
 
        value = cmd.get(name)
 
        if value != o_value:
 
            print >> f, 'cmd.set("%s", %s)' % (name, repr(value))
 
            if not quiet:
 
                print 'set %s, %s # default: %s' % (name, value, o_value)
 
            count += 1
 
    f.close()
 
    if not quiet:
 
        print 'Dumped %d settings to %s' % (count, filename)
 
 
cmd.extend('save_settings', save_settings)
 
</source>
 
  
 
== See Also ==
 
== See Also ==

Revision as of 04:51, 14 February 2012

Type Python Module
Download save_settings.py
Author(s) Thomas Holder
License BSD-2-Clause
This code has been put under version control in the project Pymol-script-repo

save_settings is a prototype implementation to save all settings with non-default values to a file.

By default settings will be stored to ~/.pymolrc-settings.py which is automatically recognised and loaded by PyMOL on startup. You have to manually delete the file if you no more want those settings to be loaded.

This answers a feature request on sourceforge.

Usage

save_settings [ filename ]

See Also