source: geniuswebcore/geniusweb/simplerunner/gui/SelectionModel.py@ 92

Last change on this file since 92 was 90, checked in by Bart Vastenhouw, 3 years ago

Refactor to help reusing partiesserver.

File size: 1.5 KB
Line 
1from typing import List
2
3from PyQt5.QtCore import QAbstractTableModel, QModelIndex, QVariant
4from PyQt5.QtCore import Qt
5
6from geniusweb.protocol.session.TeamInfo import TeamInfo
7from geniusweb.references.PartyWithProfile import PartyWithProfile
8
9
10class SelectionModel(QAbstractTableModel):
11 '''
12 The selected parties, profiles etc
13 '''
14
15 colnames = ["Party", "Parameters", "Profile"]
16
17 def __init__(self):
18 super().__init__()
19 self._teams:List[TeamInfo] = []
20 # pyqt does not use listeners
21
22 def getTeams(self) -> List[TeamInfo]:
23 return self._teams
24
25 def addTeam(self, team:TeamInfo):
26 self._teams.append(team)
27 self.beginResetModel()
28 self.endResetModel()
29
30 # Override
31 def rowCount(self, parent=QModelIndex()):
32 return len(self._teams)
33
34 # Override
35 def columnCount(self, parent=QModelIndex()):
36 return 3
37
38 def data(self, index, role=None):
39 if role == Qt.ItemDataRole.DisplayRole:
40 party:PartyWithProfile = self._teams[index.row()].getParties()[0]
41 if index.column() == 0:
42 return str(party.getParty().getPartyRef().getURI())
43 if index.column() == 1:
44 return str(party.getParty().getParameters())
45 if index.column() == 2:
46 return str(party.getProfile().getURI())
47 return "???"
48 return None # without this you get checkboxes everywhere in table...
49
50 def headerData(self, column:int, orientation, role=Qt.ItemDataRole.DisplayRole):
51 if role != Qt.ItemDataRole.DisplayRole:
52 return QVariant()
53 if orientation == Qt.Orientation.Horizontal:
54 return QVariant(self.colnames[column])
Note: See TracBrowser for help on using the repository browser.