-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheditdlg.py
83 lines (71 loc) · 3.23 KB
/
editdlg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# -*- coding: utf-8 -*-
from Ui_editdlg import Ui_Dialog
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class EditDialog(QDialog, Ui_Dialog):
def __init__(self, parent=None, record=None, *after_calls):
super(EditDialog, self).__init__(parent)
self.setupUi(self)
self.parent = parent
self.record = record
self.after_calls = after_calls
self.comboBox_Category.setModel(parent.categoryModel)
if self.record:
self.setWindowTitle(QString(u'编辑 - ID:%1').arg(self.record.id))
# buttonbox
cancelbutton = self.buttonBox.button(QDialogButtonBox.Cancel)
cancelbutton.setText(QString(u'取消'))
okbutton = self.buttonBox.button(QDialogButtonBox.Ok)
okbutton.setText(QString(u'确定'))
okbutton.setShortcut(QString(u'Return'))
self.fill_data()
self.comboBox_Name.setFocus()
def fill_data(self):
'''
fill the edits with record
'''
self.spinBox_Number.setValue(self.record.number)
self.comboBox_Name.setEditText(QString(u'%1').arg(self.record.name))
self.doubleSpinBox_OutCome.setValue(self.record.outcome)
self.doubleSpinBox_InCome.setValue(self.record.income)
self.doubleSpinBox_Total.setValue(self.record.total)
self.comboBox_Category.setEditText(QString(u'%1').arg(self.record.category))
self.dateEdit_Date.setDate(QDate(self.record.date))
def accept(self):
'''
modify the record and close this dialog
'''
self.record.number = self.spinBox_Number.value()
self.record.name = unicode(self.comboBox_Name.currentText().toUtf8(),
'utf8',
'ignore')
self.record.outcome = self.doubleSpinBox_OutCome.value()
self.record.income = self.doubleSpinBox_InCome.value()
self.record.total = self.doubleSpinBox_Total.value()
self.record.category = unicode(self.comboBox_Category.currentText().toUtf8(),
'utf8',
'ignore')
self.record.date = self.dateEdit_Date.date().toPyDate()
self.parent.model.save()
self.parent.categoryModel.updateCategorys(self.record.category)
for after_call in self.after_calls:
after_call()
self.close()
def update_doubleSpinBox_Total(self):
income = self.doubleSpinBox_InCome.value()
outcome = self.doubleSpinBox_OutCome.value()
if not hasattr(self, 'totalbase'):
self.totalbase = self.record.total + self.record.outcome - self.record.income
self.doubleSpinBox_Total.setValue(self.totalbase + income - outcome)
@pyqtSignature("double")
def on_doubleSpinBox_OutCome_valueChanged(self, outcome):
self.update_doubleSpinBox_Total()
@pyqtSignature("double")
def on_doubleSpinBox_InCome_valueChanged(self, income):
self.update_doubleSpinBox_Total()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
dlg = EditDialog()
dlg.show();
sys.exit(app.exec_())