def __init__(self, parentName, exp, expName='', fullScr=True, winSize=(1024, 768), screen=1, monitor='testMonitor', showMouse=False, saveLogFile=True, showExpInfo=True, expInfo="{'participant':'', 'session':'001'}", units='use prefs', logging='exp', color='$[0,0,0]', colorSpace='rgb', enableEscape=True, blendMode='avg', saveXLSXFile=False, saveCSVFile=False, saveWideCSVFile=True, savePsydatFile=True, savedDataFolder='', useVersion='', filename=None, exportHTML='on Sync'): self.type = 'Settings' self.exp = exp # so we can access the experiment if necess self.exp.requirePsychopyLibs(['visual', 'gui']) self.parentName = parentName self.url = "http://www.psychopy.org/builder/settings.html" # if filename is the default value fetch the builder pref for the # folder instead if filename is None: filename = ("u'xxxx/%s_%s_%s' % (expInfo['participant'], expName," " expInfo['date'])") if filename.startswith("u'xxxx"): folder = self.exp.prefsBuilder['savedDataFolder'].strip() filename = filename.replace("xxxx", folder) # params self.params = {} self.order = ['expName', 'Show info dlg', 'Experiment info', 'Data filename', 'Save excel file', 'Save csv file', 'Save wide csv file', 'Save psydat file', 'Save log file', 'logging level', 'Monitor', 'Screen', 'Full-screen window', 'Window size (pixels)', 'color', 'colorSpace', 'Units', 'HTML path'] # basic params self.params['expName'] = Param( expName, valType='str', allowedTypes=[], hint=_translate("Name of the entire experiment (taken by default" " from the filename on save)"), label=_localized["expName"]) self.params['Show info dlg'] = Param( showExpInfo, valType='bool', allowedTypes=[], hint=_translate("Start the experiment with a dialog to set info" " (e.g.participant or condition)"), label=_localized["Show info dlg"], categ='Basic') self.params['Enable Escape'] = Param( enableEscape, valType='bool', allowedTypes=[], hint=_translate("Enable the <esc> key, to allow subjects to quit" " / break out of the experiment"), label=_localized["Enable Escape"]) self.params['Experiment info'] = Param( expInfo, valType='code', allowedTypes=[], hint=_translate("The info to present in a dialog box. Right-click" " to check syntax and preview the dialog box."), label=_localized["Experiment info"], categ='Basic') self.params['Use version'] = Param( useVersion, valType='str', # search for options locally only by default, otherwise sluggish allowedVals=_versionFilter(versionOptions(), wx.__version__) + [''] + _versionFilter(availableVersions(), wx.__version__), hint=_translate("The version of PsychoPy to use when running " "the experiment."), label=_localized["Use version"], categ='Basic') self.params['Force stereo'] = Param( enableEscape, valType='bool', allowedTypes=[], hint=_translate("Force audio to stereo (2-channel) output"), label=_localized["Force stereo"]) # screen params self.params['Full-screen window'] = Param( fullScr, valType='bool', allowedTypes=[], hint=_translate("Run the experiment full-screen (recommended)"), label=_localized["Full-screen window"], categ='Screen') self.params['Window size (pixels)'] = Param( winSize, valType='code', allowedTypes=[], hint=_translate("Size of window (if not fullscreen)"), label=_localized["Window size (pixels)"], categ='Screen') self.params['Screen'] = Param( screen, valType='num', allowedTypes=[], hint=_translate("Which physical screen to run on (1 or 2)"), label=_localized["Screen"], categ='Screen') self.params['Monitor'] = Param( monitor, valType='str', allowedTypes=[], hint=_translate("Name of the monitor (from Monitor Center). Right" "-click to go there, then copy & paste a monitor " "name here."), label=_localized["Monitor"], categ="Screen") self.params['color'] = Param( color, valType='str', allowedTypes=[], hint=_translate("Color of the screen (e.g. black, $[1.0,1.0,1.0]," " $variable. Right-click to bring up a " "color-picker.)"), label=_localized["color"], categ='Screen') self.params['colorSpace'] = Param( colorSpace, valType='str', hint=_translate("Needed if color is defined numerically (see " "PsychoPy documentation on color spaces)"), allowedVals=['rgb', 'dkl', 'lms', 'hsv', 'hex'], label=_localized["colorSpace"], categ="Screen") self.params['Units'] = Param( units, valType='str', allowedTypes=[], allowedVals=['use prefs', 'deg', 'pix', 'cm', 'norm', 'height', 'degFlatPos', 'degFlat'], hint=_translate("Units to use for window/stimulus coordinates " "(e.g. cm, pix, deg)"), label=_localized["Units"], categ='Screen') self.params['blendMode'] = Param( blendMode, valType='str', allowedTypes=[], allowedVals=['add', 'avg'], hint=_translate("Should new stimuli be added or averaged with " "the stimuli that have been drawn already"), label=_localized["blendMode"], categ='Screen') self.params['Show mouse'] = Param( showMouse, valType='bool', allowedTypes=[], hint=_translate("Should the mouse be visible on screen?"), label=_localized["Show mouse"], categ='Screen') # data params self.params['Data filename'] = Param( filename, valType='code', allowedTypes=[], hint=_translate("Code to create your custom file name base. Don" "'t give a file extension - this will be added."), label=_localized["Data filename"], categ='Data') self.params['Save log file'] = Param( saveLogFile, valType='bool', allowedTypes=[], hint=_translate("Save a detailed log (more detailed than the " "excel/csv files) of the entire experiment"), label=_localized["Save log file"], categ='Data') self.params['Save wide csv file'] = Param( saveWideCSVFile, valType='bool', allowedTypes=[], hint=_translate("Save data from loops in comma-separated-value " "(.csv) format for maximum portability"), label=_localized["Save wide csv file"], categ='Data') self.params['Save csv file'] = Param( saveCSVFile, valType='bool', allowedTypes=[], hint=_translate("Save data from loops in comma-separated-value " "(.csv) format for maximum portability"), label=_localized["Save csv file"], categ='Data') self.params['Save excel file'] = Param( saveXLSXFile, valType='bool', allowedTypes=[], hint=_translate("Save data from loops in Excel (.xlsx) format"), label=_localized["Save excel file"], categ='Data') self.params['Save psydat file'] = Param( savePsydatFile, valType='bool', allowedVals=[True], hint=_translate("Save data from loops in psydat format. This is " "useful for python programmers to generate " "analysis scripts."), label=_localized["Save psydat file"], categ='Data') self.params['logging level'] = Param( logging, valType='code', allowedVals=['error', 'warning', 'data', 'exp', 'info', 'debug'], hint=_translate("How much output do you want in the log files? " "('error' is fewest messages, 'debug' is most)"), label=_localized["logging level"], categ='Data') # HTML output params # self.params['OSF Project ID'] = ProjIDParam( # '', valType='str', # automatically updates to allow choices # hint=_translate("The ID of this project (e.g. 5bqpc)"), # label="OSF Project ID", categ='Online') self.params['HTML path'] = Param( 'html', valType='str', allowedTypes=[], hint=_translate("Place the HTML files will be saved locally "), label="Output path", categ='Online') self.params['JS libs'] = Param( 'packaged', valType='str', allowedVals=['packaged'], hint=_translate("Should we package a copy of the JS libs or use" "remote copies (http:/www.psychopy.org/js)?"), label="JS libs", categ='Online') self.params['Completed URL'] = Param( '', valType='str', hint=_translate("Where should participants be redirected after the experiment on completion\n" " INSERT COMPLETION URL E.G.?"), label="Completed URL", categ='Online') self.params['Incomplete URL'] = Param( '', valType='str', hint=_translate("Where participants are redirected if they do not complete the task\n" " INSERT INCOMPLETION URL E.G.?"), label="Incomplete URL", categ='Online') self.params['exportHTML'] = Param( exportHTML, valType='str', allowedVals=['on Save', 'on Sync', 'manually'], hint=_translate("When to export experiment to the HTML folder."), label=_localized["Export HTML"], categ='Online')
def __init__(self, parentName, exp, expName='', fullScr=True, winSize=(1024, 768), screen=1, monitor='testMonitor', showMouse=False, saveLogFile=True, showExpInfo=True, expInfo="{'participant':'', 'session':'001'}", units='use prefs', logging='exp', color='$[0,0,0]', colorSpace='rgb', enableEscape=True, blendMode='avg', saveXLSXFile=False, saveCSVFile=False, saveWideCSVFile=True, savePsydatFile=True, savedDataFolder='', useVersion='', filename=None, exportHTML='on Save'): self.type = 'Settings' self.exp = exp # so we can access the experiment if necess self.exp.requirePsychopyLibs(['visual', 'gui']) self.parentName = parentName self.url = "http://www.psychopy.org/builder/settings.html" # if filename is the default value fetch the builder pref for the # folder instead if filename is None: filename = ("u'xxxx/%s_%s_%s' % (expInfo['participant'], expName," " expInfo['date'])") if filename.startswith("u'xxxx"): folder = self.exp.prefsBuilder['savedDataFolder'].strip() filename = filename.replace("xxxx", folder) # params self.params = {} self.order = ['expName', 'Show info dlg', 'Experiment info', 'Data filename', 'Save excel file', 'Save csv file', 'Save wide csv file', 'Save psydat file', 'Save log file', 'logging level', 'Monitor', 'Screen', 'Full-screen window', 'Window size (pixels)', 'color', 'colorSpace', 'Units', 'HTML path'] # basic params self.params['expName'] = Param( expName, valType='str', allowedTypes=[], hint=_translate("Name of the entire experiment (taken by default" " from the filename on save)"), label=_localized["expName"]) self.params['Show info dlg'] = Param( showExpInfo, valType='bool', allowedTypes=[], hint=_translate("Start the experiment with a dialog to set info" " (e.g.participant or condition)"), label=_localized["Show info dlg"], categ='Basic') self.params['Enable Escape'] = Param( enableEscape, valType='bool', allowedTypes=[], hint=_translate("Enable the <esc> key, to allow subjects to quit" " / break out of the experiment"), label=_localized["Enable Escape"]) self.params['Experiment info'] = Param( expInfo, valType='code', allowedTypes=[], hint=_translate("The info to present in a dialog box. Right-click" " to check syntax and preview the dialog box."), label=_localized["Experiment info"], categ='Basic') self.params['Use version'] = Param( useVersion, valType='str', # search for options locally only by default, otherwise sluggish allowedVals=versionOptions() + [''] + availableVersions(), hint=_translate("The version of PsychoPy to use when running " "the experiment."), label=_localized["Use version"], categ='Basic') self.params['Force stereo'] = Param( enableEscape, valType='bool', allowedTypes=[], hint=_translate("Force audio to stereo (2-channel) output"), label=_localized["Force stereo"]) # screen params self.params['Full-screen window'] = Param( fullScr, valType='bool', allowedTypes=[], hint=_translate("Run the experiment full-screen (recommended)"), label=_localized["Full-screen window"], categ='Screen') self.params['Window size (pixels)'] = Param( winSize, valType='code', allowedTypes=[], hint=_translate("Size of window (if not fullscreen)"), label=_localized["Window size (pixels)"], categ='Screen') self.params['Screen'] = Param( screen, valType='num', allowedTypes=[], hint=_translate("Which physical screen to run on (1 or 2)"), label=_localized["Screen"], categ='Screen') self.params['Monitor'] = Param( monitor, valType='str', allowedTypes=[], hint=_translate("Name of the monitor (from Monitor Center). Right" "-click to go there, then copy & paste a monitor " "name here."), label=_localized["Monitor"], categ="Screen") self.params['color'] = Param( color, valType='str', allowedTypes=[], hint=_translate("Color of the screen (e.g. black, $[1.0,1.0,1.0]," " $variable. Right-click to bring up a " "color-picker.)"), label=_localized["color"], categ='Screen') self.params['colorSpace'] = Param( colorSpace, valType='str', hint=_translate("Needed if color is defined numerically (see " "PsychoPy documentation on color spaces)"), allowedVals=['rgb', 'dkl', 'lms', 'hsv', 'hex'], label=_localized["colorSpace"], categ="Screen") self.params['Units'] = Param( units, valType='str', allowedTypes=[], allowedVals=['use prefs', 'deg', 'pix', 'cm', 'norm', 'height', 'degFlatPos', 'degFlat'], hint=_translate("Units to use for window/stimulus coordinates " "(e.g. cm, pix, deg)"), label=_localized["Units"], categ='Screen') self.params['blendMode'] = Param( blendMode, valType='str', allowedTypes=[], allowedVals=['add', 'avg'], hint=_translate("Should new stimuli be added or averaged with " "the stimuli that have been drawn already"), label=_localized["blendMode"], categ='Screen') self.params['Show mouse'] = Param( showMouse, valType='bool', allowedTypes=[], hint=_translate("Should the mouse be visible on screen?"), label=_localized["Show mouse"], categ='Screen') # data params self.params['Data filename'] = Param( filename, valType='code', allowedTypes=[], hint=_translate("Code to create your custom file name base. Don" "'t give a file extension - this will be added."), label=_localized["Data filename"], categ='Data') self.params['Save log file'] = Param( saveLogFile, valType='bool', allowedTypes=[], hint=_translate("Save a detailed log (more detailed than the " "excel/csv files) of the entire experiment"), label=_localized["Save log file"], categ='Data') self.params['Save wide csv file'] = Param( saveWideCSVFile, valType='bool', allowedTypes=[], hint=_translate("Save data from loops in comma-separated-value " "(.csv) format for maximum portability"), label=_localized["Save wide csv file"], categ='Data') self.params['Save csv file'] = Param( saveCSVFile, valType='bool', allowedTypes=[], hint=_translate("Save data from loops in comma-separated-value " "(.csv) format for maximum portability"), label=_localized["Save csv file"], categ='Data') self.params['Save excel file'] = Param( saveXLSXFile, valType='bool', allowedTypes=[], hint=_translate("Save data from loops in Excel (.xlsx) format"), label=_localized["Save excel file"], categ='Data') self.params['Save psydat file'] = Param( savePsydatFile, valType='bool', allowedVals=[True], hint=_translate("Save data from loops in psydat format. This is " "useful for python programmers to generate " "analysis scripts."), label=_localized["Save psydat file"], categ='Data') self.params['logging level'] = Param( logging, valType='code', allowedVals=['error', 'warning', 'data', 'exp', 'info', 'debug'], hint=_translate("How much output do you want in the log files? " "('error' is fewest messages, 'debug' is most)"), label=_localized["logging level"], categ='Data') # HTML output params # self.params['OSF Project ID'] = ProjIDParam( # '', valType='str', # automatically updates to allow choices # hint=_translate("The ID of this project (e.g. 5bqpc)"), # label="OSF Project ID", categ='Online') self.params['HTML path'] = Param( 'html', valType='str', allowedTypes=[], hint=_translate("Place the HTML files will be saved locally "), label="Output path", categ='Online') self.params['JS libs'] = Param( 'packaged', valType='str', allowedVals=['packaged'], hint=_translate("Should we package a copy of the JS libs or use" "remote copies (http:/www.psychopy.org/js)?"), label="JS libs", categ='Online') self.params['Completion URL'] = Param( 'completionURL', valType='str', hint=_translate("Where should participants be redirected after the experiment" " INSERT COMPLETION URL E.G.?"), label="Completion URL", categ='Online') self.params['exportHTML'] = Param( exportHTML, valType='str', allowedVals=['on Save', 'on Sync', 'manually'], hint=_translate("When to export experiment to the HTML folder."), label=_localized["Export HTML"], categ='Online')