Save settings: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
m (CmdException) |
||
Line 12: | Line 12: | ||
<source lang="python"> | <source lang="python"> | ||
from pymol import cmd | from pymol import cmd, CmdException | ||
def save_settings(filename='~/.pymolrc-settings.py', quiet=1): | def save_settings(filename='~/.pymolrc-settings.py', quiet=1): |
Revision as of 13:06, 8 November 2011
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 ]
The Script
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)