Newer
Older
Jakub Štercl
committed
from PyQt5.QtCore import pyqtSlot
from controllers.distribution_setup import DistributionSetup
from controllers.groups_overview_controller import GroupsOverview
Jakub Štercl
committed
from model.qtmodels.groups_table_model import GroupsTableModel
from model.qtmodels.members_table_model import MembersTableModel
from utils.groups_table import GroupsTable
from globals import Global
class MainWindow(Qt.QMainWindow, mainwindow.Ui_MainWindow):
def __init__(self, parent=None):
self.btnBack.clicked.connect(self.goBack)
self.goToGroupsOverview()
self._last_changed = 0
Jakub Štercl
committed
def _goToWidget(self, widget):
self.stackedWidget.addWidget(widget)
self.stackedWidget.setCurrentWidget(widget)
Jakub Štercl
committed
"""
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()
def goToGroupsOverview(self):
Jakub Štercl
committed
self._goToWidget(GroupsOverview(self))
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
Jakub Štercl
committed
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 goBack(self):
current_index = self.stackedWidget.currentIndex()
if current_index <= 0:
# we're on groups overview (do nothing)
return
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)