Skip to content
Snippets Groups Projects
Commit d659cd69 authored by valerio's avatar valerio
Browse files

Added one more process events to exit function

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2692 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 7bd65087
No related branches found
No related tags found
No related merge requests found
import __main__ import __main__
import sys import sys
import optparse import optparse
from ost import io, mol, seq, geom, conop, gui from ost import io, mol, seq, geom, conop, gui
import ost import ost
try: try:
from ost import img from ost import img
import ost.img.alg import ost.img.alg
_img_present=True _img_present=True
except ImportError: except ImportError:
_img_present=False _img_present=False
pass pass
import httplib import httplib
from PyQt4 import QtGui, QtCore from PyQt4 import QtGui, QtCore
from ost.gui.scene.init_inspector import _InitInspector from ost.gui.scene.init_inspector import _InitInspector
from ost.gui.init_menubar import _InitMenuBar from ost.gui.init_menubar import _InitMenuBar
from ost.gui.init_spacenav import _InitSpaceNav from ost.gui.init_spacenav import _InitSpaceNav
from ost.gui.init_context_menu import _InitContextMenu from ost.gui.init_context_menu import _InitContextMenu
from ost.gui.init_splash import _InitSplash from ost.gui.init_splash import _InitSplash
from ost.gui.dng import termuse from ost.gui.dng import termuse
from PyQt4.QtGui import * from PyQt4.QtGui import *
def _my_exit(code): def _my_exit(code):
QtGui.QApplication.instance().quit() QtGui.QApplication.instance().quit()
sys._exit(code) gui.GostyApp.Instance().ProcessEvents()
sys._exit(code)
sys._exit=sys.exit
sys.exit=_my_exit sys._exit=sys.exit
sys.exit=_my_exit
def _InitRuleBasedBuilder():
compound_lib_path=os.path.join(ost.GetSharedDataPath(), 'compounds.chemlib') def _InitRuleBasedBuilder():
if os.path.exists(compound_lib_path): compound_lib_path=os.path.join(ost.GetSharedDataPath(), 'compounds.chemlib')
conop_inst=conop.Conopology.Instance() if os.path.exists(compound_lib_path):
compound_lib=conop.CompoundLib.Load(compound_lib_path) conop_inst=conop.Conopology.Instance()
conop_inst.RegisterBuilder(conop.RuleBasedBuilder(compound_lib), 'RBB') compound_lib=conop.CompoundLib.Load(compound_lib_path)
conop_inst.SetDefaultBuilder('RBB') conop_inst.RegisterBuilder(conop.RuleBasedBuilder(compound_lib), 'RBB')
conop_inst.SetDefaultBuilder('RBB')
# switch to rule-based builder for high fidelity if compounds.chemlib is
# available # switch to rule-based builder for high fidelity if compounds.chemlib is
_InitRuleBasedBuilder() # available
_InitRuleBasedBuilder()
def _CheckRestore():
settings = QtCore.QSettings() def _CheckRestore():
restore = settings.value("restore_settings",QtCore.QVariant(False)).toBool() settings = QtCore.QSettings()
if not restore: restore = settings.value("restore_settings",QtCore.QVariant(False)).toBool()
settings.clear() if not restore:
settings.setValue("restore_settings",QtCore.QVariant(True)) settings.clear()
settings.setValue("restore_settings",QtCore.QVariant(True))
def _InitPanels(app):
panels = app.perspective.panels def _InitPanels(app):
panels.AddWidgetToPool('ost.gui.FileBrowser', -1) panels = app.perspective.panels
panels.AddWidgetToPool('ost.gui.PythonShell', 1) panels.AddWidgetToPool('ost.gui.FileBrowser', -1)
panels.AddWidgetToPool('ost.gui.RemoteLoader', -1) panels.AddWidgetToPool('ost.gui.PythonShell', 1)
panels.AddWidgetToPool('ost.gui.SceneWin', 1) panels.AddWidgetToPool('ost.gui.RemoteLoader', -1)
panels.AddWidgetToPool('ost.gui.SequenceViewer', 1) panels.AddWidgetToPool('ost.gui.SceneWin', 1)
panels.AddWidgetToPool('ost.gui.MessageWidget', 1) panels.AddWidgetToPool('ost.gui.SequenceViewer', 1)
if not panels.Restore("ui/perspective/panels"): panels.AddWidgetToPool('ost.gui.MessageWidget', 1)
panels.AddWidget(gui.PanelPosition.LEFT_PANEL, app.scene_win) if not panels.Restore("ui/perspective/panels"):
panels.AddWidgetByName(gui.PanelPosition.LEFT_PANEL, panels.AddWidget(gui.PanelPosition.LEFT_PANEL, app.scene_win)
'ost.gui.FileBrowser', False) panels.AddWidgetByName(gui.PanelPosition.LEFT_PANEL,
panels.AddWidgetByName(gui.PanelPosition.LEFT_PANEL, 'ost.gui.FileBrowser', False)
'ost.gui.RemoteLoader', False) panels.AddWidgetByName(gui.PanelPosition.LEFT_PANEL,
panels.AddWidget(gui.PanelPosition.BOTTOM_PANEL, app.seq_viewer) 'ost.gui.RemoteLoader', False)
panels.AddWidget(gui.PanelPosition.BOTTOM_PANEL, app.py_shell) panels.AddWidget(gui.PanelPosition.BOTTOM_PANEL, app.seq_viewer)
panels.AddWidget(gui.PanelPosition.RIGHT_PANEL, app.message_widget) panels.AddWidget(gui.PanelPosition.BOTTOM_PANEL, app.py_shell)
return False panels.AddWidget(gui.PanelPosition.RIGHT_PANEL, app.message_widget)
return True return False
return True
def _InitFrontEnd():
_CheckRestore() def _InitFrontEnd():
app=gui.GostyApp.Instance() _CheckRestore()
app.SetAppTitle("DNG") app=gui.GostyApp.Instance()
main_area=app.perspective.main_area app.SetAppTitle("DNG")
_InitMenuBar(app) main_area=app.perspective.main_area
_InitSpaceNav(app) _InitMenuBar(app)
_InitContextMenu(app) _InitSpaceNav(app)
main_area.AddPersistentWidget("3D Scene", "gl_win" , app.gl_win, int(QtCore.Qt.WindowMaximized)) _InitContextMenu(app)
app.perspective.Restore() main_area.AddPersistentWidget("3D Scene", "gl_win" , app.gl_win, int(QtCore.Qt.WindowMaximized))
additional_modules=getattr(__main__, 'ADDITIONAL_GUI_MODULES', []) app.perspective.Restore()
for module_name in additional_modules: additional_modules=getattr(__main__, 'ADDITIONAL_GUI_MODULES', [])
__import__(module_name) for module_name in additional_modules:
app.ProcessEvents() __import__(module_name)
app.ProcessEvents()
_InitInspector(app)
_InitInspector(app)
if not _InitPanels(app):
_InitSplash() if not _InitPanels(app):
_InitSplash()
def _load_files():
for pdb_id in options.pdb_ids: def _load_files():
pdb_id, sel=_SplitIDSel(pdb_id) for pdb_id in options.pdb_ids:
selection=_get_selection_query(sel) pdb_id, sel=_SplitIDSel(pdb_id)
gui.FileLoader.LoadFrom(pdb_id,"pdb.org",selection) selection=_get_selection_query(sel)
gui.FileLoader.LoadFrom(pdb_id,"pdb.org",selection)
input_files=[_SplitIDSel(arg) for arg in loading_list]
for f in input_files: input_files=[_SplitIDSel(arg) for arg in loading_list]
selection=_get_selection_query(f[1]) for f in input_files:
gui.FileLoader.LoadObject(f[0],selection) selection=_get_selection_query(f[1])
gui.FileLoader.LoadObject(f[0],selection)
def _get_selection_query(sel):
if len(options.query)>0: def _get_selection_query(sel):
if len(sel)>0: if len(options.query)>0:
return '(%s) and (%s)' % (options.query, sel) if len(sel)>0:
else: return '(%s) and (%s)' % (options.query, sel)
return options.query else:
elif len(sel)>0: return options.query
return sel elif len(sel)>0:
return "" return sel
return ""
def _execute_script():
script=script_argv[0] def _execute_script():
sys_argv_backup=sys.argv script=script_argv[0]
sys.argv=script_argv sys_argv_backup=sys.argv
try: sys.argv=script_argv
execfile(script, __main__.__dict__) try:
finally: execfile(script, __main__.__dict__)
sys.argv=sys_argv_backup finally:
sys.argv=sys_argv_backup
def show_help(option, opt, value, parser):
parser.print_help() def show_help(option, opt, value, parser):
QtGui.QApplication.instance().exit() parser.print_help()
sys.exit(-1) QtGui.QApplication.instance().exit()
sys.exit(-1)
def parse_script_option(option, opt, value, parser):
script_argv.append(value) def parse_script_option(option, opt, value, parser):
for arg in parser.rargs: script_argv.append(value)
script_argv.append(arg) for arg in parser.rargs:
del parser.rargs[0:len(parser.rargs)] script_argv.append(arg)
del parser.rargs[0:len(parser.rargs)]
def _SplitIDSel(name):
pos=name.find('[') def _SplitIDSel(name):
if pos>-1: pos=name.find('[')
return name[:pos], name[pos+1:-1] if pos>-1:
return name, '' return name[:pos], name[pos+1:-1]
return name, ''
loading_list=[]
script_argv=[] loading_list=[]
images=[] script_argv=[]
viewers=[] images=[]
usage = 'usage: dng [options] [files to load]' viewers=[]
class OstOptionParser(optparse.OptionParser): usage = 'usage: dng [options] [files to load]'
def __init__(self, **kwargs): class OstOptionParser(optparse.OptionParser):
optparse.OptionParser.__init__(self, **kwargs) def __init__(self, **kwargs):
def exit(self, status_code, error_message): optparse.OptionParser.__init__(self, **kwargs)
print error_message, def exit(self, status_code, error_message):
QtGui.QApplication.instance().exit() print error_message,
sys.exit(-1) QtGui.QApplication.instance().exit()
sys.exit(-1)
parser=OstOptionParser(usage=usage,conflict_handler="resolve")
parser.add_option("-h", "--help", action="callback", callback=show_help, help="show this help message and exit") parser=OstOptionParser(usage=usage,conflict_handler="resolve")
parser.add_option("-v", "--verbosity_level", action="store", type="int", dest="vlevel", default=0, help="sets the verbosity level [default: %default]") parser.add_option("-h", "--help", action="callback", callback=show_help, help="show this help message and exit")
parser.add_option("-s", "--script", action="callback", default=[], dest="script", type="string", callback=parse_script_option, help="executes a script (syntax: -s SCRIPT [options] [args]) Anything that follows this option is passed to the script") parser.add_option("-v", "--verbosity_level", action="store", type="int", dest="vlevel", default=0, help="sets the verbosity level [default: %default]")
parser.add_option("-p", "--pdb_id", dest="pdb_ids", default=[],action="append", help="PDB file ID. The file will be retrieved from PDB") parser.add_option("-s", "--script", action="callback", default=[], dest="script", type="string", callback=parse_script_option, help="executes a script (syntax: -s SCRIPT [options] [args]) Anything that follows this option is passed to the script")
parser.add_option("-b", "--builder", dest="builder", default="HEURISTIC", help="Type of builder used by the progam (either RULE_BASED or HEURISTIC) [default: %default]") parser.add_option("-p", "--pdb_id", dest="pdb_ids", default=[],action="append", help="PDB file ID. The file will be retrieved from PDB")
parser.add_option("-c", "--compound_library", dest="complib", default="compounds.chemlib", help="Compound library for the RULE_BASED builder (only used if --builder option is set to RULE_BASED, otherwise ignored [default: %default]") parser.add_option("-b", "--builder", dest="builder", default="HEURISTIC", help="Type of builder used by the progam (either RULE_BASED or HEURISTIC) [default: %default]")
parser.add_option("-q", "--query", dest="query", default="", help="Selection query to be highlighted automatically upon loading (only used together with -p option or when a PDB file is loaded, otherwise ignored [default: None]") parser.add_option("-c", "--compound_library", dest="complib", default="compounds.chemlib", help="Compound library for the RULE_BASED builder (only used if --builder option is set to RULE_BASED, otherwise ignored [default: %default]")
parser.disable_interspersed_args() parser.add_option("-q", "--query", dest="query", default="", help="Selection query to be highlighted automatically upon loading (only used together with -p option or when a PDB file is loaded, otherwise ignored [default: None]")
(options, args) = parser.parse_args() parser.disable_interspersed_args()
(options, args) = parser.parse_args()
if len(parser.rargs)!=0:
for rargs_string in parser.rargs: if len(parser.rargs)!=0:
if not rargs_string.endswith('.py'): for rargs_string in parser.rargs:
loading_list.append(rargs_string) if not rargs_string.endswith('.py'):
else: loading_list.append(rargs_string)
print 'Error: one of the files to load is a Python script, use -s flag to execute it\n' else:
QtGui.QApplication.instance().exit() print 'Error: one of the files to load is a Python script, use -s flag to execute it\n'
sys.exit(-1) QtGui.QApplication.instance().exit()
sys.exit(-1)
if len(options.script)!=0:
script_argv=options.script if len(options.script)!=0:
script_argv=options.script
if options.builder=="RULE_BASED":
from ost import conop if options.builder=="RULE_BASED":
compound_lib=conop.CompoundLib.Load(options.complib) from ost import conop
rbb=conop.RuleBasedBuilder(compound_lib) compound_lib=conop.CompoundLib.Load(options.complib)
conop.Conopology.Instance().RegisterBuilder(rbb,'rbb') rbb=conop.RuleBasedBuilder(compound_lib)
conop.Conopology.Instance().SetDefaultBuilder('rbb') conop.Conopology.Instance().RegisterBuilder(rbb,'rbb')
conop.Conopology.Instance().SetDefaultBuilder('rbb')
home = os.getenv('HOME') or os.getenv('USERPROFILE')
_ostrc=os.path.join(home, '.ostrc') home = os.getenv('HOME') or os.getenv('USERPROFILE')
if os.path.exists(_ostrc): _ostrc=os.path.join(home, '.ostrc')
try: if os.path.exists(_ostrc):
exec(open(_ostrc)) try:
except Exception, e: exec(open(_ostrc))
print e except Exception, e:
else: print e
rcfile=open(_ostrc,"w") else:
print >> rcfile, '# This python file is parsed by ost and dng at startup' rcfile=open(_ostrc,"w")
print >> rcfile, '# Its content is made available in the global namespace' print >> rcfile, '# This python file is parsed by ost and dng at startup'
print >> rcfile, '# It can be used to define custom variables and functions' print >> rcfile, '# Its content is made available in the global namespace'
print >> rcfile, '# For example:' print >> rcfile, '# It can be used to define custom variables and functions'
print >> rcfile, '# IMPORTANT_DIR="path/to/important/dir"' print >> rcfile, '# For example:'
rcfile.close() print >> rcfile, '# IMPORTANT_DIR="path/to/important/dir"'
rcfile.close()
PushVerbosityLevel(options.vlevel)
_InitFrontEnd() PushVerbosityLevel(options.vlevel)
_InitFrontEnd()
if len(loading_list)!=0 or len(options.pdb_ids)!=0:
_load_files() if len(loading_list)!=0 or len(options.pdb_ids)!=0:
scene.Autoslab() _load_files()
if len(script_argv)!=0: scene.Autoslab()
_execute_script() if len(script_argv)!=0:
_execute_script()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment