@ -47,6 +47,8 @@ class PromptWidget(QtWidgets.QDialog):
self . comboBox = QtWidgets . QComboBox ( self )
self . comboBox . setEditable ( True )
self . comboBox . currentTextChanged . connect ( self . check ) #not called when text is changed programatically
if PromptWidget . wordlist :
completer = QtWidgets . QCompleter ( PromptWidget . wordlist )
completer . setModelSorting ( QtWidgets . QCompleter . CaseInsensitivelySortedModel )
@ -65,22 +67,36 @@ class PromptWidget(QtWidgets.QDialog):
layout . addWidget ( self . comboBox )
errorString = QtCore . QCoreApplication . translate ( " PromptWidget " , " Command not accepted!<br>Parameters, --switches and relative paths are not allowed.<br>Use nsm-proxy or write a starter-script instead. " )
errorString = QtCore . QCoreApplication . translate ( " PromptWidget " , " Command not found or not accepted!<br>Parameters, --switches and relative paths are not allowed.<br>Use nsm-proxy or write a starter-script instead. " )
errorString = " <i> " + errorString + " </i> "
self . errorLabel = QtWidgets . QLabel ( errorString )
layout . addWidget ( self . errorLabel )
self . errorLabel . hide ( ) #shown in process
self . errorLabel . hide ( ) #shown in process or check
buttonBox = QtWidgets . QDialogButtonBox ( QtWidgets . QDialogButtonBox . Ok | QtWidgets . QDialogButtonBox . Cancel )
buttonBox . accepted . connect ( self . process )
buttonBox . rejected . connect ( self . reject )
layout . addWidget ( buttonBox )
self . buttonBox = QtWidgets . QDialogButtonBox ( QtWidgets . QDialogButtonBox . Ok | QtWidgets . QDialogButtonBox . Cancel )
self . buttonBox . accepted . connect ( self . process )
self . buttonBox . rejected . connect ( self . reject )
layout . addWidget ( self . buttonBox )
self . exec ( ) #blocks until the dialog gets closed
def abortHandler ( self ) :
pass
def check ( self , currentText ) :
""" Called every keypress.
We do preliminary error and collision checking here , so the engine does not have to throw
an error """
self . errorLabel . hide ( ) #start in good faith
ok = self . buttonBox . button ( QtWidgets . QDialogButtonBox . Ok )
if currentText in PromptWidget . wordlist : #this is taken literally. Any extra char or whitespace counts as false
ok . setEnabled ( True )
else :
ok . setEnabled ( False )
self . errorLabel . show ( )
def process ( self ) :
""" Careful! Calling this eats python errors without notice.
Make sure your objects exists and your syntax is correct """