Changes to avoid segault on exit

This commit is contained in:
Olivier Keshavjee 2015-06-21 18:35:42 +02:00
parent c477639ccf
commit 1be5165291
5 changed files with 94 additions and 41 deletions

View file

@ -33,13 +33,18 @@ def run():
style = settings.value("applicationStyle")
app.setStyle(style)
launch()
def launch():
from mainWindow import MainWindow
main = MainWindow()
main.show()
app.exec_()
app.deleteLater()
qApp.exec_()
qApp.deleteLater()
if __name__ == "__main__":
run()

View file

@ -180,23 +180,30 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.btnRmSubPlot.clicked.connect(self.mdlPlots.removeSubPlot)
self.btnRmPlotPerso.clicked.connect(self.mdlPlots.removePlotPerso)
self.mprPlots = QDataWidgetMapper()
self.mprPlots.setModel(self.mdlPlots)
mapping = [
#(self.txtPlotName, Plot.name.value),
#self.mprPlots = QDataWidgetMapper()
#self.mprPlots.setModel(self.mdlPlots)
#mapping = [
##(self.txtPlotName, Plot.name.value),
#(self.txtPlotDescription, Plot.description.value),
#(self.txtPlotResult, Plot.result.value),
#]
#for w, i in mapping:
#self.mprPlots.addMapping(w, i)
#self.mprPlots.addMapping(self.sldPlotImportance, Plot.importance.value, "importance")
#self.sldPlotImportance.importanceChanged.connect(self.mprPlots.submit)
#self.tabMain.currentChanged.connect(self.mprPlots.submit)
#self.mprPlots.setCurrentIndex(0)
#self.lstPlots.selectionModel().currentChanged.connect(self.mprPlots.setCurrentModelIndex)
for w, c in [
(self.txtPlotName, Plot.name.value),
(self.txtPlotDescription, Plot.description.value),
(self.txtPlotResult, Plot.result.value),
]
for w, i in mapping:
self.mprPlots.addMapping(w, i)
self.mprPlots.addMapping(self.sldPlotImportance, Plot.importance.value, "importance")
self.sldPlotImportance.importanceChanged.connect(self.mprPlots.submit)
self.tabMain.currentChanged.connect(self.mprPlots.submit)
self.mprPlots.setCurrentIndex(0)
self.lstPlots.selectionModel().currentChanged.connect(self.mprPlots.setCurrentModelIndex)
self.txtPlotName.setModel(self.mprPlots)
self.lstPlots.selectionModel().currentChanged.connect(self.txtPlotName.setCurrentModelIndex)
(self.sldPlotImportance, Plot.importance.value),
]:
w.setModel(self.mdlPlots)
w.setColumn(c)
self.lstPlots.selectionModel().currentChanged.connect(w.setCurrentModelIndex)
self.tabPlot.setEnabled(False)
self.lstPlots.selectionModel().currentChanged.connect(lambda: self.tabPlot.setEnabled(self.lstPlots.selectionModel().currentIndex().isValid()))

View file

@ -535,7 +535,7 @@ class Ui_MainWindow(object):
self.label_25 = QtWidgets.QLabel(self.infos_2)
self.label_25.setObjectName("label_25")
self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_25)
self.txtPlotName = QtWidgets.QLineEdit(self.infos_2)
self.txtPlotName = lineEditView(self.infos_2)
self.txtPlotName.setObjectName("txtPlotName")
self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.txtPlotName)
self.label_31 = QtWidgets.QLabel(self.infos_2)
@ -547,15 +547,9 @@ class Ui_MainWindow(object):
self.label_27 = QtWidgets.QLabel(self.infos_2)
self.label_27.setObjectName("label_27")
self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_27)
self.txtPlotDescription = QtWidgets.QPlainTextEdit(self.infos_2)
self.txtPlotDescription.setObjectName("txtPlotDescription")
self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.txtPlotDescription)
self.label_28 = QtWidgets.QLabel(self.infos_2)
self.label_28.setObjectName("label_28")
self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.label_28)
self.txtPlotResult = QtWidgets.QPlainTextEdit(self.infos_2)
self.txtPlotResult.setObjectName("txtPlotResult")
self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.txtPlotResult)
self.verticalLayout_12 = QtWidgets.QVBoxLayout()
self.verticalLayout_12.setObjectName("verticalLayout_12")
self.lstPlotPerso = QtWidgets.QListView(self.infos_2)
@ -594,6 +588,12 @@ class Ui_MainWindow(object):
self.sldPlotImportance.setSizePolicy(sizePolicy)
self.sldPlotImportance.setObjectName("sldPlotImportance")
self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.sldPlotImportance)
self.txtPlotDescription = textEditView(self.infos_2)
self.txtPlotDescription.setObjectName("txtPlotDescription")
self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.txtPlotDescription)
self.txtPlotResult = textEditView(self.infos_2)
self.txtPlotResult.setObjectName("txtPlotResult")
self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.txtPlotResult)
self.tabPlot.addTab(self.infos_2, "")
self.tab_15 = QtWidgets.QWidget()
self.tab_15.setObjectName("tab_15")
@ -1117,10 +1117,10 @@ class Ui_MainWindow(object):
self.menubar.addAction(self.menuHelp.menuAction())
self.retranslateUi(MainWindow)
self.tabMain.setCurrentIndex(1)
self.tabMain.setCurrentIndex(3)
self.tabSummary.setCurrentIndex(0)
self.tabPersos.setCurrentIndex(0)
self.tabPlot.setCurrentIndex(1)
self.tabPlot.setCurrentIndex(0)
self.comboBox_2.setCurrentIndex(0)
self.stkPlotSummary.setCurrentIndex(0)
self.tabRedacInfos.setCurrentIndex(0)
@ -1272,11 +1272,11 @@ class Ui_MainWindow(object):
self.actSettings.setText(_translate("MainWindow", "Settings"))
self.actSettings.setShortcut(_translate("MainWindow", "F8"))
from ui.views.treeView import treeView
from ui.editors.editorWidget import editorWidget
from ui.views.lineEditView import lineEditView
from ui.views.basicItemView import basicItemView
from ui.views.metadataView import metadataView
from ui.views.textEditView import textEditView
from ui.views.outlineView import outlineView
from ui.views.treeView import treeView
from ui.views.textEditView import textEditView
from ui.views.lineEditView import lineEditView
from ui.sldImportance import sldImportance
from ui.views.metadataView import metadataView
from ui.views.basicItemView import basicItemView

View file

@ -1047,9 +1047,6 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPlainTextEdit" name="txtPlotDescription"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_28">
<property name="text">
@ -1057,9 +1054,6 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPlainTextEdit" name="txtPlotResult"/>
</item>
<item row="2" column="1">
<layout class="QVBoxLayout" name="verticalLayout_12">
<item>
@ -1131,6 +1125,12 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="textEditView" name="txtPlotDescription"/>
</item>
<item row="4" column="1">
<widget class="textEditView" name="txtPlotResult"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_15">

View file

@ -1,11 +1,8 @@
#!/usr/bin/env python
#--!-- coding: utf8 --!--
from qt import *
from functions import *
from ui.sldImportance_ui import *
class sldImportance(QWidget, Ui_sldImportance):
@ -15,6 +12,9 @@ class sldImportance(QWidget, Ui_sldImportance):
def __init__(self, parent=None):
QWidget.__init__(self)
self.setupUi(self)
self._column = 0
self._updating = False
self._index = None
self.lastValue = -1
self.sld.valueChanged.connect(self.changed)
@ -33,6 +33,12 @@ class sldImportance(QWidget, Ui_sldImportance):
self.importanceChanged.emit(str(v))
if self._index and not self._updating:
if str(v) != self._model.data(self._index):
self._updating = True
self._model.setData(self._index, str(v))
self._updating = False
def setValue(self, v):
if v != self.lastValue:
self.sld.setValue(int(v) if v else 0)
@ -41,5 +47,40 @@ class sldImportance(QWidget, Ui_sldImportance):
def setProperty():
pass
# MODEL / VIEW
def setColumn(self, column):
self._column = column
def setModel(self, model):
self._model = model
self._model.dataChanged.connect(self.update)
def update(self, topLeft, bottomRight):
if self._updating:
return
if self._index:
if topLeft.row() <= self._index.row() <= bottomRight.row():
self.updateValue()
def setCurrentModelIndex(self, index):
if index.isValid():
if index.column() != self._column:
index = index.sibling(index.row(), self._column)
self._index = index
self.updateValue()
def updateValue(self):
if self._index:
val = toInt(self._model.data(self._index))
if self.sld.value() != val:
self._updating = True
self.setValue(val)
self._updating = False
importance = pyqtProperty(str, fget=getImportance, fset=setValue, notify=importanceChanged)