Skip to content
Snippets Groups Projects
mainwindow_controller.py 2.7 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jakub Štercl's avatar
    Jakub Štercl committed
    from PyQt5 import QtWidgets as Qt
    
    from controllers.distribution_overview_controller import DistributionOverview
    
    Jakub Štercl's avatar
    Jakub Štercl committed
    from controllers.distribution_setup_controller import DistributionSetup
    
    Jakub Štercl's avatar
    Jakub Štercl committed
    from controllers.group_edit_controller import GroupEdit
    
    from controllers.groups_overview_controller import GroupsOverview
    from globals import Global
    
    from windows import mainwindow
    
    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)
    
    Jakub Štercl's avatar
    Jakub Štercl committed
            self.goToGroupsOverview()
            #self.goToDistributionOverview()
    
            self._last_changed = 0
    
    
        def _goToWidget(self, widget):
            self.stackedWidget.addWidget(widget)
            self.stackedWidget.setCurrentWidget(widget)
    
    
        def dataChanged(self):
    
            """
            all controllers have to call this when they change data in db
            it prompts every controller before current widget in stack to reload data when getting back to view
            """
    
            self._last_changed = self.stackedWidget.currentIndex()
    
    Jakub Štercl's avatar
    Jakub Štercl committed
    
    
        def goToGroupsOverview(self):
    
    Jakub Štercl's avatar
    Jakub Štercl committed
    
    
        @pyqtSlot()
        def goToGroupEdit(self, group=None):
            """
            change active window to GroupEdit()
            :param group: if unfilled (or None), create new group
            """
            if group is None:
    
                self._last_changed = self.stackedWidget.currentIndex() + 1
    
                group = Global.db.createNewGroup()
            self._goToWidget(GroupEdit(self, group))
    
        def goToDistributionSetup(self, group):
            """
            change active window to DistributionSetup()
            :param group: 
            """
            self._goToWidget(DistributionSetup(self, group))
    
        def goToDistributionOverview(self):
            group = Global.db.getGroupByName("Stará skupina :)")
            members = group.members
            teams = {
                    "team 1": [members[0], members[1]],
                    "team 2": [members[2], members[3], members[4]],
                    "team 3": [],
                    "team 4": [members[5]],
                    "team 5": [members[6], members[7]],
                     }
            self._goToWidget(DistributionOverview(self, teams))
    
    
            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)