Skip to content
Snippets Groups Projects
mainwindow_controller.py 1.86 KiB
Newer Older
Jakub Štercl's avatar
Jakub Štercl committed
from PyQt5 import QtWidgets as Qt
Jakub Štercl's avatar
Jakub Štercl committed
from controllers.group_edit_controller import GroupEdit
from controllers.groups_overview_controller import GroupsOverview
Jakub Štercl's avatar
Jakub Štercl committed
from model.qtmodels.group_table_model import GroupTableModel
from model.qtmodels.person_table_model import PersonTableModel
Jakub Štercl's avatar
Jakub Štercl committed
from windows import mainwindow
from globals import Global
Jakub Štercl's avatar
Jakub Štercl committed


Jakub Štercl's avatar
Jakub Štercl committed
class MainWindow(Qt.QMainWindow, mainwindow.Ui_MainWindow):

    def __init__(self, parent=None):
Jakub Štercl's avatar
Jakub Štercl committed
        super(MainWindow, self).__init__(parent)
Jakub Štercl's avatar
Jakub Štercl committed
        self.setupUi(self)
        self.btnBack.clicked.connect(self.goBack)
        self.goToGroupsOverview()
        self._last_changed = 0

    # all controllers have to call this when they change data in db
    # it prompts every controller before current widget in stack to reload data
    def dataChanged(self):
        self._last_changed = self.stackedWidget.currentIndex()
Jakub Štercl's avatar
Jakub Štercl committed

    def goToGroupsOverview(self):
        groups_overview = GroupsOverview(self)
        self.stackedWidget.addWidget(groups_overview)
        self.stackedWidget.setCurrentWidget(groups_overview)
Jakub Štercl's avatar
Jakub Štercl committed

    # if group_id unfilled - create new group
    def goToGroupEdit(self, group=GroupEdit.NEW_GROUP):
        if group == GroupEdit.NEW_GROUP:
            self._last_changed = self.stackedWidget.currentIndex() + 1
        group_edit = GroupEdit(self, group)
        self.stackedWidget.addWidget(group_edit)
        self.stackedWidget.setCurrentWidget(group_edit)

    def goBack(self):
        current_index = self.stackedWidget.currentIndex()
        if current_index <= 0:
            # we're on groups overview (do nothing)
        if current_index <= self._last_changed:
            self.stackedWidget.widget(current_index - 1).reloadData()
            self._last_changed -= 1
        self.stackedWidget.removeWidget(self.stackedWidget.currentWidget())
        self.stackedWidget.setCurrentIndex(current_index - 1)