예제 #1
0
파일: mainplate.py 프로젝트: yenru0/tanswer
 def list_prevent_multiple(item: QListWidgetItem, fileinfo: FileInfo):
     t = [self.ui.list_select.item(i) for i in range(self.ui.list_select.count())
          if self.ui.list_select.item(i).checkState() == Qt.Checked]
     if len(t) > 1:
         for i in t:
             if i != item:
                 i.setCheckState(Qt.Unchecked)
     if item.checkState() == Qt.Checked:
         self.fileload(fileinfo, item.data(Qt.UserRole))
     else:
         fileinfo.disable()
예제 #2
0
class OutputWidget(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, None)
        self.layout = QGridLayout()

        self.label = QLabel("Files selected:")
        self.layout.addWidget(self.label, 0, 0, 1, 4)

        self.file_list = QListWidget()
        self.select_all = QListWidgetItem("(De)select all")
        self.select_all.setFlags(self.select_all.flags()
                                 | Qt.ItemIsUserCheckable)
        self.select_all.setCheckState(Qt.Unchecked)
        self.file_list.addItem(self.select_all)

        self.layout.addWidget(self.file_list, 1, 0, 1, 4)
        self.layout.addWidget(QLabel("First line:"), 2, 0)
        self.first_line = QLineEdit("", self)
        self.first_line.setValidator(QIntValidator(1, 100000))
        self.layout.addWidget(self.first_line, 2, 1)
        self.layout.addWidget(QLabel("Last line:"), 2, 2)
        self.last_line = QLineEdit("", self)
        self.last_line.setValidator(QIntValidator(1, 100000))
        self.layout.addWidget(self.last_line, 2, 3)
        self.convert_button = QPushButton("EXPORT")
        self.convert_button.clicked.connect(parent.on_convert)
        self.convert_button.setStyleSheet("background-color: green")
        self.layout.addWidget(self.convert_button, 3, 0, 1, 4)
        self.setLayout(self.layout)
        self.list_items = {}

        self.file_list.itemChanged.connect(self.on_item_changed)

    def add_to_list(self, file):
        if (self.list_items.get(file)):
            return False
        list_item = QListWidgetItem(file)
        list_item.setFlags(list_item.flags() | Qt.ItemIsUserCheckable)
        list_item.setCheckState(Qt.Checked)
        self.file_list.addItem(list_item)
        self.list_items[file] = list_item
        return True

    def remove_from_list(self, file):
        list_item = self.list_items.pop(file, None)
        if (not list_item):
            return False
        self.file_list.takeItem(self.file_list.row(list_item))
        if (len(self.list_items) == 0):
            self.select_all.setCheckState(Qt.Unchecked)
        return True

    def output_info(self):
        res = {
            "files":
            self.files_selected(),
            "first_line":
            (0 if not self.last_line.text() else int(self.first_line.text())),
            "last_line":
            (0 if not self.last_line.text() else int(self.last_line.text()))
        }
        return res

    def on_item_changed(self, item):
        if (item is self.select_all):
            for list_item in self.list_items.values():
                list_item.setCheckState(self.select_all.checkState())

    def files_selected(self):
        res = []
        for list_item in self.list_items.values():
            if (list_item.checkState() == Qt.Checked):
                res.append(list_item.text())
        return res