Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# file
nUpdates, newInfo = self.updatePthFile(pathVersion,
"PsychoPy-%s" % v)
if nUpdates == -1: # there was an error (likely permissions)
undoStr += 'self.updatePthFile(unzipTarget, currPath)\n'
exec(undoStr) # undo previous changes
return newInfo
try:
# create the new installation dir AFTER renaming existing dir
os.makedirs(unzipTarget)
undoStr += 'os.remove(%s)\n' % unzipTarget
except Exception: # revert path rename and inform user
exec(undoStr) # undo previous changes
if onWin32:
msg = _translate(
"Right-click the app and 'Run as admin'):\n%s")
else:
msg = _translate("Failed to create directory for new version"
" (permissions error?):\n%s")
return msg % unzipTarget
# do the actual extraction
for name in zfile.namelist(): # for each file within the zip
# check that this file is part of psychopy (not metadata or docs)
if name.count('/psychopy/') < 1:
continue
try:
targetFile = os.path.join(unzipTarget,
name.split('/psychopy/')[1])
targetContainer = os.path.split(targetFile)[0]
if not os.path.isdir(targetContainer):
"""Defines Save File as Behavior
"""
shortFilename = self.getShortFilename()
expName = self.exp.getExpName()
if (not expName) or (shortFilename == expName):
usingDefaultName = True
else:
usingDefaultName = False
if filename is None:
filename = self.filename
initPath, filename = os.path.split(filename)
_w = "PsychoPy experiments (*.psyexp)|*.psyexp|Any file (*.*)|*"
if sys.platform != 'darwin':
_w += '.*'
wildcard = _translate(_w)
returnVal = False
dlg = wx.FileDialog(
self, message=_translate("Save file as ..."), defaultDir=initPath,
defaultFile=filename, style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT,
wildcard=wildcard)
if dlg.ShowModal() == wx.ID_OK:
newPath = dlg.GetPath()
# update exp name
# if user has not manually renamed experiment
if usingDefaultName:
newShortName = os.path.splitext(
os.path.split(newPath)[1])[0]
self.exp.setExpName(newShortName)
# actually save
self.fileSave(event=None, filename=newPath)
if newName == '':
msg = _translate("Missing name")
OK = False
else:
namespace = parent.frame.exp.namespace
used = namespace.exists(newName)
sameAsOldName = bool(newName == parent.params['name'].val)
if used and not sameAsOldName:
msg = _translate("That name is in use (by %s). Try another name.") % used
OK = False
elif not namespace.isValid(newName): # valid as a var name
msg = _translate("Name must be alpha-numeric or _, no spaces")
OK = False
# warn but allow, chances are good that its actually ok
elif namespace.isPossiblyDerivable(newName):
msg = _translate(namespace.isPossiblyDerivable(newName))
OK = True
parent.warningsDict['name'] = msg
return msg, OK
msg = _translate('%(photomType)s found on %(photomPort)s')
self.comPortLabel.SetLabel(msg %
{'photomType': self.photom.type,
'photomPort': self.photom.portString})
else:
self.comPortLabel.SetLabel(_translate('No photometers found'))
self.photom = None
# does this device need a dark calibration?
if (hasattr(self.photom, 'getNeedsCalibrateZero') and
self.photom.getNeedsCalibrateZero()):
# prompt user if we need a dark calibration for the device
if self.photom.getNeedsCalibrateZero():
wx.Dialog(self, title=_translate(
'Dark calibration of ColorCAL'))
msg = _translate('Your ColorCAL needs to be calibrated first.'
' Please block all light from getting into '
'the lens and press OK.')
while self.photom.getNeedsCalibrateZero():
txt = _translate('Dark calibration of ColorCAL')
dlg = dialogs.MessageDialog(self, message=msg,
title=txt,
type='Info')
# info dlg has only an OK button
resp = dlg.ShowModal()
if resp == wx.ID_CANCEL:
self.photom = None
self.comPortLabel.SetLabel('')
return 0
elif resp == wx.ID_OK:
self.photom.calibrateZero()
# this failed at least once. Try again.
_translate("save a Builder or Coder file")
# baseNoArch.spec,[connections],line129
_translate("save a Builder or Coder file under a new name")
# baseNoArch.spec,[connections],line131
_translate("Coder: print the file")
# baseNoArch.spec,[connections],line134
_translate("close the Builder or Coder window")
# baseNoArch.spec,[keyBindings],line136
_translate("end the application (PsychoPy)")
# baseNoArch.spec,[keyBindings],line138
_translate("open the preferences dialog")
# baseNoArch.spec,[keyBindings],line140
_translate("export Builder experiment to HTML")
# baseNoArch.spec,[keyBindings],line142
_translate("Coder: cut")
# baseNoArch.spec,[keyBindings],line144
_translate("Coder: copy")
# baseNoArch.spec,[keyBindings],line146
_translate("Coder: paste")
# baseNoArch.spec,[keyBindings],line148
_translate("Coder: duplicate")
def __init__(self, firstrun=False, interactive=True, log=True):
"""Check drivers, show GUIs, run diagnostics, show report.
"""
super(ConfigWizard, self).__init__()
self.firstrun = firstrun
self.prefs = prefs
self.appName = 'PsychoPy3'
self.name = self.appName + _translate(' Configuration Wizard')
self.reportPath = os.path.join(
self.prefs.paths['userPrefsDir'], 'firstrunReport.html')
# self.iconfile = os.path.join(self.prefs.paths['resources'],
# 'psychopy.png')
# dlg.SetIcon(wx.Icon(self.iconfile, wx.BITMAP_TYPE_PNG)) # no error
# but no effect
dlg = gui.Dlg(title=self.name)
dlg.addText('')
if firstrun:
dlg.addText(_translate("Welcome to PsychoPy3!"), color='blue')
dlg.addText('')
dlg.addText(_translate("It looks like you are running PsychoPy "
"for the first time."))
dlg.addText(_translate("This wizard will help you get started "
"quickly and smoothly."))
proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
categNames = sorted(categs)
if 'Basic' in categNames:
# move it to be the first category we see
categNames.insert(0, categNames.pop(categNames.index('Basic')))
# move into _localized after merge branches:
categLabel = {'Basic': _translate('Basic'),
'Data': _translate('Data'),
'Screen': _translate('Screen'),
'Dots': _translate('Dots'),
'Grating': _translate('Grating'),
'Advanced': _translate('Advanced'),
'Custom': _translate('Custom'),
'Carrier': _translate('Carrier'),
'Envelope': _translate('Envelope'),
'Appearance': _translate('Appearance'),
'Save': _translate('Save'),
'Online':_translate('Online')}
for categName in categNames:
theseParams = categs[categName]
page = wx.Panel(self.ctrls, -1)
ctrls = self.addCategoryOfParams(theseParams, parent=page)
if categName in categLabel:
cat = categLabel[categName]
else:
cat = categName
self.ctrls.AddPage(page, cat)
# so the validator finds this set of controls
self.panels.append(page)
if 'customize_everything' in self.params:
if self.params['customize_everything'].val.strip():
# set focus to the custom panel
'func': self.onClose},
{'id': wx.ID_EXIT, 'label': _translate("&Quit\t%s") % keys['quit'],
'status': _translate('Quitting PsychoPy'),
'func': self.onQuit},
]
viewMenuItems = [
{'id': wx.ID_ANY, 'label': _translate("Open &Builder view"),
'status': _translate("Opening Builder"), 'func': self.viewBuilder},
{'id': wx.ID_ANY, 'label': _translate("Open &Coder view"),
'status': _translate('Opening Coder'), 'func': self.viewCoder},
]
runMenuItems = [
{'id': wx.ID_ANY,
'label': _translate("Run\t%s") % keys['runScript'],
'status': _translate('Running experiment'),
'func': self.panel.runLocal},
{'id': wx.ID_ANY,
'label': _translate('Run JS for local debug'),
'status': _translate('Launching local debug of online study'),
'func': self.panel.runOnlineDebug},
{'id': wx.ID_ANY,
'label': _translate('Run JS on Pavlovia'),
'status': _translate('Launching online study at Pavlovia'),
'func': self.panel.runOnline},
]
menus = [
{'menu': fileMenu, 'menuItems': fileMenuItems, 'separators': ['clear all', 'load list']},
{'menu': viewMenu, 'menuItems': viewMenuItems, 'separators': []},
{'menu': runMenu, 'menuItems': runMenuItems, 'separators': []},
def makeFileMenu(self):
fileMenu = wx.Menu()
app = wx.GetApp()
keyCodes = app.keys
# add items to file menu
fileMenu.Append(wx.ID_CLOSE,
_translate("&Close View\t%s") % keyCodes['close'],
_translate("Close current window"))
self.Bind(wx.EVT_MENU, self.closeFrame, id=wx.ID_CLOSE)
# -------------quit
fileMenu.AppendSeparator()
fileMenu.Append(wx.ID_EXIT,
_translate("&Quit\t%s") % keyCodes['quit'],
_translate("Terminate the program"))
self.Bind(wx.EVT_MENU, app.quit, id=wx.ID_EXIT)
return fileMenu
self.userMenu.AppendSeparator()
item = self.userMenu.Append(wx.ID_ANY,
_translate("Log in to Pavlovia...\t{}")
.format(keys['pavlovia_logIn']))
parent.Bind(wx.EVT_MENU, self.onLogInPavlovia, id=item.GetId())
self.AppendSubMenu(self.userMenu, _translate("User"))
# search
item = self.Append(wx.ID_ANY,
_translate("Search Pavlovia\t{}")
.format(keys['projectsFind']))
parent.Bind(wx.EVT_MENU, self.onSearch, id=item.GetId())
# new
item = self.Append(wx.ID_ANY,
_translate("New...\t{}").format(keys['projectsNew']))
parent.Bind(wx.EVT_MENU, self.onNew, id=item.GetId())