Changeset 6011788 in sasview for src/sas/qtgui/Perspectives/Fitting/ViewDelegate.py
- Timestamp:
- May 15, 2017 5:21:45 AM (8 years ago)
- Branches:
- ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
- Children:
- 2241130
- Parents:
- ad6b4e2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/Perspectives/Fitting/ViewDelegate.py
rad6b4e2 r6011788 4 4 import sas.qtgui.Utilities.GuiUtils as GuiUtils 5 5 6 # Table view columns 7 PROPERTY=0 8 VALUE=1 9 MIN=2 10 MAX=3 11 UNIT=4 6 # Main parameter table view columns 7 PARAM_PROPERTY=0 8 PARAM_VALUE=1 9 PARAM_MIN=2 10 PARAM_MAX=3 11 PARAM_UNIT=4 12 13 # polydispersity functions 14 POLYDISPERSE_FUNCTIONS=['rectangle', 'array', 'lognormal', 'gaussian', 'schulz'] 15 # polydispersity columns 16 POLY_PARAMETER=0 17 POLY_PD=1 18 POLY_MIN=2 19 POLY_MAX=3 20 POLY_NPTS=4 21 POLY_NSIGS=5 22 POLY_FUNCTION=6 23 24 class CustomLineEdit(QtGui.QLineEdit): 25 editingFinished = QtCore.pyqtSignal() 26 def __init__(self, parent=None, old_value=None): 27 super(CustomLineEdit, self).__init__(parent) 28 self.setAutoFillBackground(True) 29 self.old_value = old_value 30 def focusOutEvent(self, event): 31 self.editingFinished.emit() 12 32 13 33 class ModelViewDelegate(QtGui.QStyledItemDelegate): … … 19 39 Overwrite generic painter for certain columns 20 40 """ 21 if index.column() == UNIT or index.column() == MIN or index.column() == MAX:41 if index.column() in (PARAM_UNIT, PARAM_MIN, PARAM_MAX): 22 42 # Units - present in nice HTML 23 43 options = QtGui.QStyleOptionViewItemV4(option) … … 50 70 QtGui.QStyledItemDelegate.paint(self, painter, option, index) 51 71 52 #def sizeHint(self, option, index): 53 # options = QtGui.QStyleOptionViewItemV4(option) 54 # self.initStyleOption(options,index) 72 def createEditor(self, widget, option, index): 73 """ 74 Overwrite generic editor for certain columns 75 """ 76 if not index.isValid(): 77 return 0 78 if index.column() == PARAM_VALUE: #only in the value column 79 editor = QtGui.QLineEdit(widget) 80 validator = QtGui.QDoubleValidator() 81 editor.setValidator(validator) 82 return editor 83 elif index.column() in (PARAM_MIN, PARAM_MAX): 84 # Save current value in case we need to revert 85 #self._old_value = index.data().toFloat()[0] 86 self._old_value = index.data().toString() 87 editor = CustomLineEdit(widget, old_value=self._old_value) 88 editor.editingFinished.connect(self.commitAndCloseEditor) 89 return editor 55 90 56 # doc = QtGui.QTextDocument() 57 # doc.setHtml(options.text) 58 # doc.setTextWidth(options.rect.width()) 59 # return QtCore.QSize(doc.idealWidth(), doc.size().height()) 91 return super(ModelViewDelegate, self).createEditor(widget, option, index) 92 93 #def setEditorData(self, editor, index): 94 # if index.column() == MIN: 95 # #value = index.data().toString()[0] 96 # value = index.model().data(index, QtCore.Qt.DisplayRole).toString() 97 # print "VALUE = ", value 98 # editor.setText('['+value+']') 99 # return editor 100 101 # return super(ModelViewDelegate, self).setEditorData(editor, index) 102 103 def commitAndCloseEditor(self): 104 editor = self.sender() 105 content = editor.text() 106 try: 107 value_float = float(content) 108 except ValueError: 109 # TODO: Notify the user 110 # <scary popup> 111 # Do nothing 112 return 113 self.commitData.emit(editor) 114 self.closeEditor.emit(editor, QtGui.QAbstractItemDelegate.NoHint) 115 116 117 class PolyViewDelegate(QtGui.QStyledItemDelegate): 118 """ 119 Custom delegate for appearance and behavior control of the polydisperisty view 120 """ 121 def createEditor(self, parent, option, index): 122 # TODO: set it to correct index on creation 123 if index.column() == POLY_FUNCTION: 124 editor = QtGui.QComboBox(parent) 125 for function in POLYDISPERSE_FUNCTIONS: 126 editor.addItem(function) 127 return editor 128 else: 129 QtGui.QStyledItemDelegate.createEditor(self, parent, option, index)
Note: See TracChangeset
for help on using the changeset viewer.