def __init__(self, parent): QtGui.QMainWindow.__init__(self) self.WebinyNotifier = parent self.settings = Settings() self.geometry = None self.ui = UiMainWindow() self.ui.setupUi(self) # Setup table models self._requestModel = RequestTableModel(Request.all(), self) self._messagesModel = MessagesTableModel([]) self._serverModel = TreeViewModel([])
class MainWindow(QtGui.QMainWindow): model = None def __init__(self, parent): QtGui.QMainWindow.__init__(self) self.WebinyNotifier = parent self.settings = Settings() self.geometry = None self.ui = UiMainWindow() self.ui.setupUi(self) # Setup table models self._requestModel = RequestTableModel(Request.all(), self) self._messagesModel = MessagesTableModel([]) self._serverModel = TreeViewModel([]) def changeEvent(self, event): if self.isMinimized(): self.geometry = bytearray(self.saveGeometry()) else: if self.geometry is not None: self.restoreGeometry(self.geometry) self.geometry = None def show(self): # Requests table self.ui.getRequestsTable().verticalHeader().setVisible(False) self.ui.getRequestsTable().setModel(self._requestModel) self.ui.getRequestsTable().resizeColumnsToContents() self.ui.getRequestsTable().horizontalHeader().setStretchLastSection(True) # Messages table self.ui.getMessagesTable().verticalHeader().setVisible(False) self.ui.getMessagesTable().setModel(self._messagesModel) self.ui.getMessagesTable().resizeColumnsToContents() self.ui.getMessagesTable().horizontalHeader().setStretchLastSection(True) for view in [ self.ui.contextTreeView, self.ui.extraTreeView, self.ui.getTreeView, self.ui.postTreeView, self.ui.serverTreeView, ]: view.setModel(TreeViewModel([])) view.expanded.connect(view.itemManipulated) view.collapsed.connect(view.itemManipulated) # Attach events for Requests adn Messages row selection self.ui.getRequestsTable().selectionModel().selectionChanged.connect(self._loadMessages) self.ui.getMessagesTable().selectionModel().selectionChanged.connect(self._loadMessageData) self.connect(self.ui.getRequestsTable(), QtCore.SIGNAL("requestDeleted"), self._requestDeleted) # Show window super(MainWindow, self).show() def on_actionClose_triggered(self): self.hide() def on_actionSettings_triggered(self): self.WebinyNotifier.openSettings() def on_actionLog_triggered(self): self.WebinyNotifier.openLog() def refreshRequestModel(self): self._requestModel.reset() self.ui.getRequestsTable().resizeColumnsToContents() self.ui.getRequestsTable().horizontalHeader().setStretchLastSection(True) def selectFirstRow(self): self.ui.getRequestsTable().selectRow(0) def _loadMessages(self, item): self._hideAllTabs() if not item.indexes(): return request = self._requestModel.getRequestAtIndex(item.indexes()[0].row()) self._messagesModel.refreshModelFromRequest(item, request) self.ui.getMessagesTable().resizeColumnsToContents() self.ui.getMessagesTable().horizontalHeader().setStretchLastSection(True) # Set tree views self._setTreeView(3, self.ui.getTab, "$_GET", self.ui.getTreeView, request.getGet()) self._setTreeView(4, self.ui.postTab, "$_POST", self.ui.postTreeView, request.getPost()) self._setTreeView(5, self.ui.serverTab, "$_SERVER", self.ui.serverTreeView, request.getServer()) self.ui.notificationTabs.setCurrentIndex(0) if not request.getRead(): request.markAsRead() self._requestModel.setData(item, request, QtCore.Qt.FontRole) def _loadMessageData(self, item): message = self._messagesModel.getMessageAtIndex(item.indexes()[0].row()) self._setTreeView(1, self.ui.contextTab, "Context", self.ui.contextTreeView, message.getContext()) self._setTreeView(2, self.ui.extraTab, "Extra", self.ui.extraTreeView, message.getExtra()) def _setTreeView(self, index, tab, tabName, view, data): if len(data) > 0: self._showTab(index, tab, tabName) view.setModel(TreeViewModel(data)) view.setAlternatingRowColors(True) view.resizeColumnToContents(0) else: self.ui.notificationTabs.removeTab(self.ui.notificationTabs.indexOf(tab)) def _showTab(self, index, tab, name): self.ui.notificationTabs.insertTab(index, tab, name) def _requestDeleted(self, indexes): # Order row indexes in ascending order indexes.sort(reverse=True) # delete in loop for i in indexes: Request.delete(i) self._requestModel.refreshModel() self.ui.getRequestsTable().selectRow(i) if len(self._requestModel.arrayData) == 0: self._messagesModel.arrayData = [] self._messagesModel.reset() # Hide all tabs if no more requests exist self._hideAllTabs() def _hideAllTabs(self): self.ui.notificationTabs.removeTab(1) self.ui.notificationTabs.removeTab(2) self.ui.notificationTabs.removeTab(3) self.ui.notificationTabs.removeTab(4)