Skip to content

Commit

Permalink
Userconfig: startscript/exitscript/ipython logging
Browse files Browse the repository at this point in the history
  • Loading branch information
heeres committed Jul 30, 2012
1 parent 38d9ab2 commit 15a460b
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 8 deletions.
29 changes: 24 additions & 5 deletions init/99_init_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,34 @@
os.chdir(qt.config['startdir'])

if qt.config['startscript'] is not None:
if os.path.isfile(str(qt.config['startscript'])):
print 'Executing (user startscript): %s' % qt.config['startscript']
execfile(qt.config['startscript'])
else:
logging.warning('Did not find startscript "%s", skipping' % qt.config['startscript'])
_scripts = qt.config['startscript']
if type(_scripts) not in (types.ListType, types.TupleType):
_scripts = [_scripts, ]
for _s in _scripts:
if os.path.isfile(_s):
print 'Executing (user startscript): %s' % _s
execfile(_s)
else:
logging.warning('Did not find startscript "%s", skipping', _s)

if qt.config['exitscript'] is not None:
_scripts = qt.config['exitscript']
if type(_scripts) not in (types.ListType, types.TupleType):
_scripts = [_scripts, ]
for _s in _scripts:
if os.path.isfile(_s):
qt.flow.register_exit_script(_s)
else:
logging.warning('Did not find exitscript "%s", will not be executed', _s)

# Add script directories. Read index and put in namespace
if qt.config['scriptdirs'] is not None:
for dirname in qt.config['scriptdirs']:
qt.scripts.add_directory(dirname)
qt.scripts.scripts_to_namespace(globals())

# Start IPython command logging if requested
if qt.config['ipython_logfile'] not in (None, ''):
_ip = get_ipython()
_ip.IP.logger.logstart(logfname=qt.config['ipython_logfile'], logmode='append')

6 changes: 6 additions & 0 deletions source/qtflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,12 @@ def measurement_idle(self, delay=0.0, exact=False, emit_interval=1):
time.sleep(max(0, delay - dt))
return

def _run_script(self, scriptfile):
return execfile(scriptfile)

def register_exit_script(self, scriptfile):
self.register_exit_handler(lambda: self._run_script(scriptfile))

def register_exit_handler(self, func):
if func not in self._exit_handlers:
self._exit_handlers.append(func)
Expand Down
11 changes: 8 additions & 3 deletions userconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
config.remove([
'datadir',
'startdir',
'startscript',
'scriptdirs',
'user_ins_dir',
'startgui',
Expand All @@ -31,8 +30,11 @@
## This sets a default directory for qtlab to start in
#config['startdir'] = 'd:/scripts'

## This sets a default script to run after qtlab started
#config['startscript'] = 'initscript.py'
## A default script (or list of scripts) to run after qtlab started
config['startscript'] = [] #e.g. 'initscript1.py'

## A default script (or list of scripts) to run when qtlab closes
config['exitscript'] = [] #e.g. ['closescript1.py', 'closescript2.py']

# Add directories containing scripts here. All scripts will be added to the
# global namespace as functions.
Expand All @@ -59,3 +61,6 @@
#config['gnuplot_terminal'] = 'x11'
#config['gnuplot_terminal'] = 'wxt'
#config['gnuplot_terminal'] = 'windows'

# Enter a filename here to log all IPython commands
config['ipython_logfile'] = '' #e.g. 'command.log'

0 comments on commit 15a460b

Please sign in to comment.