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 |