1
2
3
4
5
6
7
8
9
10
11 from PyQt4.QtCore import *
12 from PyQt4.QtGui import *
13
14 from tools import *
15 from constants import *
16
17 T_SELECT = 0
18 T_NAME = 1
19 T_START = 2
20 T_DESCRIPTION = 3
21 T_COLUMN_COUNT = 4
24
26 '''
27 Rapor Çerçeveleri ayar ekranının ilk ayarlarını yapar.
28 '''
29 QDialog.__init__(self, parent, fl)
30
31 self._plugin = plugin
32
33 self.createDialogWidgets()
34
35
36 self._frameAttributes = {}
37 self._allFrames = []
38
39
40 self.connectSignals()
41
42
43 self._frameTable = None
44 self._frameModel = None
45
47 '''
48 İşlem düğmlerini gerekli yerlere bağlar.
49 '''
50 self.connect(self.btn_Tamam, SIGNAL('clicked()'), self.btn_Tamam_clicked)
51 self.connect(self.btn_Vazgec, SIGNAL('clicked()'), self.btn_Vazgec_clicked)
52
54 '''
55 Çerçeve kodu verilen bir çerçevenin başlama satırını verir.
56 '''
57 frameCodes = map(lambda x: x[Constants.DESIGN_FRAME_CODE], self._allFrames)
58 index = frameCodes.index(frameCode)
59
60 return self._frameModel.frameStart(index)
61
71
73 '''
74 Rapor çerçevelerini ve özelliklerini döndürür.
75 '''
76 return self._allFrames
77
79 '''
80 Rapor tanım dosyasına göre çerçeveleri bulur.
81 '''
82
83
84
85 detailGroupOrder = Constants.DETAIL_FRAMES_ORDER + 0.001
86 detailFields = reportMeta.get('detayalanlari') or {}
87
88 detailFrames = []
89 for detailKey in detailFields:
90
91
92
93 detailName = detailFields[detailKey]['detayadi']
94 detailFrames += [
95 ('_%s%s' % (detailKey, Constants.FRAME_CODE_DETAIL_HEADER_SUFFIX), '%s %s' % (tr(detailName), tr('Başlığı')),
96 Constants.DETAIL_FRAMES_HEADER_HEIGHT, detailGroupOrder + 0.0001),
97
98 ('_%s%s' % (detailKey, Constants.FRAME_CODE_DETAIL_ROWS_SUFFIX), '%s %s' % (tr(detailName), tr('Satırları')),
99 Constants.DETAIL_FRAMES_ROWS_HEIGHT, detailGroupOrder + 0.0002),
100
101 ('_%s%s' % (detailKey, Constants.FRAME_CODE_DETAIL_FOOTER_SUFFIX), '%s %s' % (tr(detailName), tr('Altlığı')),
102 Constants.DETAIL_FRAMES_FOOTER_HEIGHT, detailGroupOrder + 0.0003),
103 ]
104
105 detailGroupOrder += 0.001
106
107
108 allFrames = Constants.DESIGN_FRAMES[:Constants.DETAIL_FRAMES_ORDER] + \
109 detailFrames + \
110 Constants.DESIGN_FRAMES[Constants.DETAIL_FRAMES_ORDER:]
111
112 return allFrames
113
151
161
205
207 '''
208 Editörde aktif olan çerçevelerin seçili olmasını sağlar.
209 '''
210 self._frameModel.setChosenFrames(activeFrames)
211
213 '''
214 Kullanıcının eklediği, çıkardığı çerçevelere göre değişikliği kaydeder.
215 '''
216 self.emit(SIGNAL("framesChanged(PyQt_PyObject)"), self._frameModel.chosenFrames())
217 self.close()
218
220 '''
221 Kullanıcının yaptığı değişiklikleri onaylamadan çıkmasını sağlar.
222 '''
223 self.close()
224
227
229 '''
230 Çerçeveleri listeler.
231 '''
232 QAbstractTableModel.__init__(self)
233
234 self._allFrames = allFrames
235 self._plugin = plugin
236 self._chosenFrames = []
237 self._frameStarts = [0] * len(allFrames)
238
244
246 '''
247 Çerçevenin seçili olup olmadığını verir.
248 '''
249 if frameCode in self._chosenFrames:
250 return True
251
252 else:
253 return False
254
256 '''
257 Seçili çerçeveleri belirler.
258 '''
259 self._chosenFrames = chosenFrames
260
262 '''
263 Seçili çerçeveleri döndürür.
264 '''
265 return self._chosenFrames
266
268 '''
269 İstenilen sıradaki çerçevenin başladığı yeri verir.
270 '''
271 return self._frameStarts[row]
272
274 '''
275 Çerçevenin başladığı satırı set eder.
276 '''
277 self._frameStarts[row] = value
278
280 '''
281 Hücrelerin durumlarını verir.
282 '''
283 flag = Qt.ItemIsEnabled
284
285 if index.column() == T_START:
286 flag |= Qt.ItemIsEditable
287
288 if index.column() == T_SELECT:
289 flag |= Qt.ItemIsUserCheckable
290
291 return flag
292
293 - def rowCount(self, parent=QModelIndex()):
294 '''
295 Kaç tane çerçeve olduğunu döndürür.
296 '''
297 return len(self._allFrames)
298
300 '''
301 Kaç tane sütun olduğunu söyler
302 '''
303 return T_COLUMN_COUNT
304
305 - def setData(self, index, value, role=Qt.EditRole):
306 '''
307 Editördeki değer değiştikten sonra, model'e yeni değeri tanıtıyoruz.
308 '''
309 row = index.row()
310 column = index.column()
311
312 if role == Qt.CheckStateRole:
313 frameCode = self.frameCode(row)
314 if frameCode in self._chosenFrames:
315 self._chosenFrames.remove(frameCode)
316
317 else:
318 self._chosenFrames.append(frameCode)
319
320 elif role == Qt.EditRole:
321 self._frameStarts[row] = value
322
323 self.emit(SIGNAL("dataChanged(const QModelIndex &, const QModelIndex &)"),
324 index, index)
325
326 return True
327
328 @returnQVariant
329 - def data(self, index, role):
363
364 @returnQVariant
366 '''
367 Sütunların başlıklarını döndürür.
368 '''
369 if role == Qt.DisplayRole and orientation == Qt.Horizontal:
370
371 if section == T_NAME:
372 return tr("Frame Name")
373
374 elif section == T_DESCRIPTION:
375 return tr("Description")
376
377 elif section == T_START:
378 return tr("Start Point")
379
382
384 '''
385 Özellik editörünün değiştirme ve özel işlerini yapar.
386 '''
387 QItemDelegate.__init__(self)
388
389 self._plugin = plugin
390
406
408 '''
409 Kesik çizgilerin çizilmesini engeller.
410 '''
411 pass
412
414 '''
415 Çerçevenin ismine basıldığında, seçili durumunu değiştirir.
416 n '''
417 if index.column() != T_NAME:
418 return QItemDelegate.editorEvent(self, event, model, option, index)
419
420 if event.type() == QEvent.MouseButtonPress:
421 selectIndex = model.createIndex(index.row(), T_SELECT)
422
423 if model.isSelected(model.frameCode(index.row())):
424 model.setData(selectIndex, Qt.Unchecked, Qt.CheckStateRole)
425
426 else:
427 model.setData(selectIndex, Qt.Checked, Qt.CheckStateRole)
428
429 return True
430
431 return False
432
440
442 '''
443 Editör kapandığında model'in datasını set eder.
444 '''
445 value = editor.value()
446 model.setData(index, value)
447