Skip to content
Snippets Groups Projects
Commit 40a806c3 authored by stefan's avatar stefan
Browse files

Improvements for QueryEditorWidget (display error, highlight error)

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2631 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 214d4333
No related branches found
No related tags found
No related merge requests found
......@@ -45,7 +45,7 @@ class PresetEditorListModel(QtCore.QAbstractListModel):
name=data.GetName()
selection=str(data.GetSelection())
if(len(selection)>0):
return QtCore.QVariant(str("%s (%s)"%(name,selection)))
return QtCore.QVariant(str("%s (%s)"%(name,selection.replace(os.linesep, " "))))
else:
return QtCore.QVariant(str("%s (all)"%name))
return QtCore.QVariant()
......
......@@ -5,13 +5,22 @@ class QueryEditorWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.selection_edit_ = QtGui.QLineEdit()
selection_label = QtGui.QLabel("Selection",self)
self.default_font_= QtGui.QTextCharFormat()
self.default_font_.setForeground(QtGui.QBrush(QtGui.QColor(0,0,0)))
self.error_font_= QtGui.QTextCharFormat()
self.error_font_.setForeground(QtGui.QBrush(QtGui.QColor(255,0,0)))
self.selection_edit_ = QtGui.QTextEdit(self)
self.selection_edit_.setMinimumHeight(50)
self.selection_edit_.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.MinimumExpanding))
self.selection_edit_.updateGeometry()
selection_label = QtGui.QLabel("Selection",self)
self.status_=QtGui.QLabel("",self);
self.status_.setWordWrap(True)
self.status_.setMargin(0)
self.status_.setHidden(True)
self.status_.setAlignment(QtCore.Qt.AlignRight)
self.status_.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding))
self.checkboxes_ = dict()
for k,v in mol.QueryFlag.__dict__["values"].iteritems():
checkbox = QtGui.QCheckBox(str(v),self)
......@@ -26,17 +35,14 @@ class QueryEditorWidget(QtGui.QWidget):
flag_label = QtGui.QLabel("Query flags")
grid = QtGui.QGridLayout(self)
grid.setContentsMargins(0,5,0,0)
grid.addWidget(selection_label,0,0,1,1)
grid.addWidget(selection_label,0,0,1,1,QtCore.Qt.AlignTop|QtCore.Qt.AlignLeft)
grid.addWidget(self.selection_edit_,0,1,1,1)
grid.setRowMinimumHeight(1,0)
grid.addWidget(self.status_,1,0,1,2)
grid.addWidget(flag_label,2,0,1,1)
grid.addLayout(v_checkbox_layout,2,1,1,1)
grid.setRowStretch(2, 1)
#group_box = QtGui.QGroupBox("Selection",self)
#group_box.setLayout(h_layout)
self.connect(self.selection_edit_,QtCore.SIGNAL("textChanged(const QString& )"),self.UpdateMessage)
grid.addWidget(self.status_,1,0,1,2,QtCore.Qt.AlignRight)
grid.addWidget(flag_label,2,0,3,1,QtCore.Qt.AlignTop|QtCore.Qt.AlignLeft)
grid.addLayout(v_checkbox_layout,2,1,3,1)
grid.setRowStretch(0,1)
self.changing_text_=False;
self.connect(self.selection_edit_,QtCore.SIGNAL("textChanged()"),self.UpdateMessage)
def GetQueryFlags(self):
flag = 0
......@@ -46,10 +52,10 @@ class QueryEditorWidget(QtGui.QWidget):
return flag
def GetQuery(self):
return mol.Query(str(self.selection_edit_.text()))
return mol.Query(str(self.selection_edit_.toPlainText()))
def GetQueryText(self):
return str(self.selection_edit_.text())
return str(self.selection_edit_.toPlainText())
def SetQueryFlags(self,flags):
for k,v in self.checkboxes_.iteritems():
......@@ -62,12 +68,26 @@ class QueryEditorWidget(QtGui.QWidget):
self.selection_edit_.setText(query)
def UpdateMessage(self):
q=self.GetQuery()
if q.IsValid():
if self.changing_text_:
return
self.changing_text_ = True
query=self.GetQuery()
cursor=self.selection_edit_.textCursor()
cursor.select(QtGui.QTextCursor.Document)
cursor.setCharFormat(self.default_font_)
if query.IsValid():
self.status_.setText("")
self.status_.setHidden(True)
else:
d=q.GetErrorDescription()
else:
d=query.GetErrorDescription()
self.status_.setText("<font color='red'>%s</font>"%d.msg)
self.status_.setVisible(True)
\ No newline at end of file
self.status_.setVisible(True)
self.status_.setFixedSize(self.width(),self.status_.height())
cursor.movePosition(QtGui.QTextCursor.Start)
cursor.movePosition(QtGui.QTextCursor.NextCharacter, QtGui.QTextCursor.MoveAnchor, d.range.Loc)
cursor.movePosition(QtGui.QTextCursor.NextCharacter, QtGui.QTextCursor.KeepAnchor, d.range.Length)
cursor.setCharFormat(self.error_font_)
self.changing_text_ = False
\ No newline at end of file
......@@ -42,6 +42,7 @@ void export_Query()
class_<QueryErrorDesc>("QueryErrorDesc", no_init)
.def_readonly("msg", &QueryErrorDesc::msg)
.def_readonly("range", &QueryErrorDesc::range)
;
enum_<QueryFlag::Flag>("QueryFlag")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment