offlate/offlate/ui/gitlabedit.py

gitlabedit.py

1
#   Copyright (c) 2018 Julien Lepiller <julien@lepiller.eu>
2
#
3
#   This program is free software: you can redistribute it and/or modify
4
#   it under the terms of the GNU Affero General Public License as
5
#   published by the Free Software Foundation, either version 3 of the
6
#   License, or (at your option) any later version.
7
#
8
#   This program is distributed in the hope that it will be useful,
9
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
10
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
#   GNU Affero General Public License for more details.
12
#
13
#   You should have received a copy of the GNU Affero General Public License
14
#   along with this program.  If not, see <https://www.gnu.org/licenses/>.
15
####
16
17
from PyQt5.QtWidgets import *
18
from PyQt5.QtGui import *
19
from PyQt5.QtCore import *
20
21
class GitlabEdit(QWidget):
22
    textChanged = pyqtSignal()
23
24
    def __init__(self, parent = None):
25
        super(GitlabEdit, self).__init__(parent)
26
        self.initUI()
27
28
    def addLine(self, server, token):
29
        items = [QTreeWidgetItem([server, token])]
30
        self.treeWidget.addTopLevelItems(items)
31
32
    def addLineSlot(self):
33
        server = self.serverEdit.text()
34
        token = self.tokenEdit.text()
35
        items = [QTreeWidgetItem([server, token])]
36
        self.treeWidget.addTopLevelItems(items)
37
        self.textChanged.emit()
38
39
    def deleteLineSlot(self):
40
        self.treeWidget.takeTopLevelItem(self.treeWidget.currentIndex().row())
41
        self.textChanged.emit()
42
43
    def content(self):
44
        number = self.treeWidget.topLevelItemCount()
45
        items = []
46
        for i in range(0, number):
47
            item = self.treeWidget.topLevelItem(i)
48
            items.append({"server": item.text(0), "token": item.text(1)})
49
        return items
50
51
    def initUI(self):
52
        vbox = QVBoxLayout()
53
        hbox = QHBoxLayout()
54
        self.setLayout(vbox)
55
        self.treeWidget = QTreeWidget()
56
        self.treeWidget.setColumnCount(2)
57
        vbox.addWidget(self.treeWidget)
58
        self.serverEdit = QLineEdit()
59
        self.serverEdit.setPlaceholderText(self.tr("server"))
60
        self.tokenEdit = QLineEdit()
61
        self.tokenEdit.setPlaceholderText(self.tr("token"))
62
        addbutton = QPushButton(self.tr("Add"))
63
        addbutton.clicked.connect(self.addLineSlot)
64
        removebutton = QPushButton(self.tr("Remove"))
65
        removebutton.clicked.connect(self.deleteLineSlot)
66
        hbox.addWidget(self.serverEdit)
67
        hbox.addWidget(self.tokenEdit)
68
        hbox.addWidget(addbutton)
69
        hbox.addWidget(removebutton)
70
        vbox.addLayout(hbox)
71