summaryrefslogtreecommitdiff
path: root/src/edit_group_form.py
blob: c4a86223581c9b5d569ab280e9431eea4dedc967 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import sys
from PyQt5.QtWidgets import QApplication, QComboBox, QDialog, QFormLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt

import src.globals as Globals
from src.group import Group
import src.db_sqlite as DB

class editGroupForm(QDialog):
    """
    Form to edit/update a group
    """
    def __init__(self, id):
        self.id = id
        super().__init__()
        self.initializeUI()

    def initializeUI(self):
        self.resize(400, 1)
        self.setWindowTitle("Edit Group")
        self.displayWidgets()
        self.exec()

    def displayWidgets(self):
        group_form_layout = QFormLayout()
        group = list(filter(lambda g: g.id == self.id, Globals.groups))[0]

        title = QLabel("Edit Group")
        title.setFont(QFont("Arial", 18))
        title.setAlignment(Qt.AlignCenter)
        group_form_layout.addRow(title)

        self.group_name = QLineEdit()
        self.group_name.setText(group.name)
        group_form_layout.addRow("Name:", self.group_name)

        self.group_column = QComboBox()
        self.group_column.addItems(["Left", "Right"])
        self.group_column.setCurrentIndex(0 if group.column.lower() == "left" else 1)
        group_form_layout.addRow("Column:", self.group_column)

        self.group_link = QLineEdit() # TODO see if there is a widget specifically for URLs
        self.group_link.setText(group.link)
        group_form_layout.addRow("Link:", self.group_link)

        # Submit and cancel buttons
        buttons_h_box = QHBoxLayout()
        buttons_h_box.addStretch()
        close_button = QPushButton("Cancel")
        close_button.clicked.connect(self.close)
        buttons_h_box.addWidget(close_button)
        submit_button = QPushButton("Submit")
        submit_button.clicked.connect(self.handleSubmit)
        buttons_h_box.addWidget(submit_button)
        buttons_h_box.addStretch()

        group_form_layout.addRow(buttons_h_box)

        self.setLayout(group_form_layout)

    def handleSubmit(self):
        name_text = self.group_name.text()
        column_text = self.group_column.currentText()
        link_text = self.group_link.text()

        if not name_text:
            QMessageBox.warning(self, "Error Message",
                                "Name cannot be blank",
                                QMessageBox.Close,
                                QMessageBox.Close)
            return

        # Update DB
        group = list(filter(lambda g: g.id == self.id, Globals.groups))[0]
        group.name = name_text
        group.column = column_text
        group.link = link_text
        DB.updateGroup(group)

        # Update global variables
        Globals.groups = list(filter(lambda g: g.id != self.id, Globals.groups))
        Globals.groups.append(Group(self.id, name_text, column_text, link_text, group.hidden))
        self.close()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = editGroupForm()
    sys.exit(app.exec_())