def from_data(self, data: TreeWidgetItemData):
     for key, value in data.to_dict().items():
         self.insertRow(self.rowCount())
         key_item = QTableWidgetItem(key)
         key_item.setFlags(Qt.ItemIsEnabled | Qt.ItemNeverHasChildren)
         value_item = QTableWidgetItem(str(value))
         value_item.setFlags(Qt.ItemIsEnabled | Qt.ItemNeverHasChildren)
         self.setItem(self.rowCount() - 1, 0, key_item)
         self.setItem(self.rowCount() - 1, 1, value_item)
Beispiel #2
0
    def update_locations(self):
        self.locations_table.setUpdatesEnabled(False)
        self.locations_table.setRowCount(0)

        for i in range(2):
            if i == 0:
                if self.scope() == QSettings.SystemScope:
                    continue

                actualScope = QSettings.UserScope
            else:
                actualScope = QSettings.SystemScope

            for j in range(2):
                if j == 0:
                    if not self.application():
                        continue

                    actualApplication = self.application()
                else:
                    actualApplication = ''

                settings = QSettings(self.format(), actualScope,
                                     self.organization(), actualApplication)

                row = self.locations_table.rowCount()
                self.locations_table.setRowCount(row + 1)

                item0 = QTableWidgetItem()
                item0.setText(settings.fileName())

                item1 = QTableWidgetItem()
                disable = not (settings.childKeys() or settings.childGroups())

                if row == 0:
                    if settings.isWritable():
                        item1.setText("Read-write")
                        disable = False
                    else:
                        item1.setText("Read-only")
                    self.button_box.button(QDialogButtonBox.Ok).setDisabled(disable)
                else:
                    item1.setText("Read-only fallback")

                if disable:
                    item0.setFlags(item0.flags() & ~Qt.ItemIsEnabled)
                    item1.setFlags(item1.flags() & ~Qt.ItemIsEnabled)

                self.locations_table.setItem(row, 0, item0)
                self.locations_table.setItem(row, 1, item1)

        self.locations_table.setUpdatesEnabled(True)
Beispiel #3
0
    def redraw_table(self, data):
        table = self.input_table if self.input else self.output_table
        self.input = not self.input

        # clear the table and resize
        table.clearContents()
        table.rowCount = len(data)  # type: ignore
        table.columnCount = len(self.table_headers)  # type: ignore

        # set the values of each entry
        for row_id, row in enumerate(data):
            for col_id, val in enumerate(row):
                item = QTableWidgetItem(str(val))
                item.setFlags(Qt.ItemFlag.ItemIsEnabled)
                table.setItem(row_id, col_id, item)

        # resize the table to fit the content
        table.resizeColumnsToContents()
Beispiel #4
0
    def updateTables(self):
        self.ui.table.setRowCount(len(
            self.repos))  # redraw table to update for any changes
        for i, r in enumerate(self.repos):
            self.ui.table.setItem(i, 1, QTableWidgetItem(r[0]))
            colourcell = QTableWidgetItem(f"0x{str(hex(r[1]))[2:].zfill(6)}")
            colourcell.setBackground(QColor(r[1]))
            colourcell.setFlags(colourcell.flags() & ~Qt.ItemIsEditable)
            self.ui.table.setItem(i, 0, colourcell)

        # total objects in nested dict, length of all values + number of columns
        self.ui.initable.setRowCount(
            sum(len(v)
                for v in self.inicontents.values()) + len(self.inicontents))
        secfont = QFont()
        secfont.setFamily(u"Sans Serif")
        secfont.setBold(True)
        pos = 0
        for sec in self.inicontents:
            item = QTableWidgetItem(sec)
            item.setFont(secfont)
            item.setFlags(item.flags() & ~Qt.ItemIsEditable)
            self.ui.initable.setItem(pos, 0, item)
            item = QTableWidgetItem()  # empty tile next to section header
            item.setFlags(
                item.flags() &
                ~Qt.ItemIsEditable)  # done to prevent editing the blank space
            self.ui.initable.setItem(pos, 1, item)
            pos += 1
            for k, v in zip(self.inicontents[sec].keys(),
                            self.inicontents[sec].values()):
                self.ui.initable.setItem(pos, 0, QTableWidgetItem(k))
                self.ui.initable.setItem(pos, 1, QTableWidgetItem(v))
                pos += 1
Beispiel #5
0
    def __init__(self, parent, file_path, callback, persepolis_setting):
        super().__init__(persepolis_setting)
        self.persepolis_setting = persepolis_setting
        self.callback = callback
        self.file_path = file_path
        self.parent = parent

        global icons
        icons = ':/' + \
            str(self.persepolis_setting.value('settings/icons')) + '/'

        # read text file lines and put links in list format.
        f = open(self.file_path)
        f_links_list = f.readlines()
        f.close()

        f_links_list.reverse()

        # check links! links must be started with http or https or ftp
        link_list = []
        for link in f_links_list:
            text = link.strip()
            if ("tp:/" in text[2:6]) or ("tps:/" in text[2:7]):
                link_list.append(text)

        k = 1
        for link in link_list:
            self.links_table.insertRow(0)

            # file_name
            file_name = '***'
            dict = {'link': link}

            # spider finds file name
            new_spider = QueueSpiderThread(dict)
            self.parent.threadPool.append(new_spider)
            self.parent.threadPool[len(self.parent.threadPool) - 1].start()
            self.parent.threadPool[len(self.parent.threadPool) -
                                   1].QUEUESPIDERRETURNEDFILENAME.connect(
                                       partial(self.parent.queueSpiderCallBack,
                                               child=self,
                                               row_number=len(link_list) - k))
            k = k + 1

            item = QTableWidgetItem(file_name)

            # add checkbox to the item
            item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
            item.setCheckState(Qt.Checked)

            # insert file_name
            self.links_table.setItem(0, 0, item)

            # insert link
            item = QTableWidgetItem(str(link))
            self.links_table.setItem(0, 1, item)

        # get categories name and add them to add_queue_comboBox
        categories_list = self.parent.persepolis_db.categoriesList()

        for queue in categories_list:
            if queue != 'All Downloads':
                self.add_queue_comboBox.addItem(queue)

        self.add_queue_comboBox.addItem(QIcon(icons + 'add_queue'),
                                        'Create new queue')

        # entry initialization

        # get values from persepolis_setting
        global connections
        connections = int(
            self.persepolis_setting.value('settings/connections'))
        global download_path
        download_path = str(
            self.persepolis_setting.value('settings/download_path'))

        self.connections_spinBox.setValue(connections)
        self.download_folder_lineEdit.setText(download_path)
        self.download_folder_lineEdit.setEnabled(False)

        # ip_lineEdit initialization
        settings_ip = self.persepolis_setting.value(
            'add_link_initialization/ip', None)
        if settings_ip:
            self.ip_lineEdit.setText(str(settings_ip))

        # proxy user lineEdit initialization
        settings_proxy_user = self.persepolis_setting.value(
            'add_link_initialization/proxy_user', None)
        if settings_proxy_user:
            self.proxy_user_lineEdit.setText(str(settings_proxy_user))

        # port_spinBox initialization
        settings_port = self.persepolis_setting.value(
            'add_link_initialization/port', 0)

        self.port_spinBox.setValue(int(int(settings_port)))

        # download UserName initialization
        settings_download_user = self.persepolis_setting.value(
            'add_link_initialization/download_user', None)
        if settings_download_user:
            self.download_user_lineEdit.setText(str(settings_download_user))

        # connect folder_pushButton
        self.folder_pushButton.clicked.connect(self.changeFolder)

        # connect OK and cancel button
        self.cancel_pushButton.clicked.connect(self.close)
        self.ok_pushButton.clicked.connect(self.okButtonPressed)

        # connect select_all_pushButton  deselect_all_pushButton
        self.select_all_pushButton.clicked.connect(self.selectAll)

        self.deselect_all_pushButton.clicked.connect(self.deselectAll)

        #frames and checkBoxes
        self.proxy_frame.setEnabled(False)
        self.proxy_checkBox.toggled.connect(self.proxyFrame)

        self.download_frame.setEnabled(False)
        self.download_checkBox.toggled.connect(self.downloadFrame)

        self.limit_frame.setEnabled(False)
        self.limit_checkBox.toggled.connect(self.limitFrame)

        # set focus to ok button
        self.ok_pushButton.setFocus()

        # add_queue_comboBox event
        self.add_queue_comboBox.currentIndexChanged.connect(self.queueChanged)

        # setting window size and position
        size = self.persepolis_setting.value('TextQueue/size', QSize(700, 500))
        position = self.persepolis_setting.value('TextQueue/position',
                                                 QPoint(300, 300))
        self.resize(size)
        self.move(position)
Beispiel #6
0
    def __init__(self, parent, list_of_links, callback, persepolis_setting):
        super().__init__(persepolis_setting)
        self.persepolis_setting = persepolis_setting
        self.callback = callback
        self.parent = parent
        self.list_of_links = list_of_links

        global icons
        icons = ':/' + \
            str(self.persepolis_setting.value('settings/icons')) + '/'

        self.list_of_links.reverse()

        k = 1
        for dict in self.list_of_links:
            # add row to the links_table
            self.links_table.insertRow(0)

            # file_name
            if 'out' in dict:
                if dict['out']:
                    file_name = dict['out']
                else:
                    file_name = '***'
            else:
                file_name = '***'

            if file_name == '***':
                # spider finds file name
                new_spider = QueueSpiderThread(dict)
                self.parent.threadPool.append(new_spider)
                self.parent.threadPool[len(self.parent.threadPool) - 1].start()
                self.parent.threadPool[len(self.parent.threadPool) -
                                       1].QUEUESPIDERRETURNEDFILENAME.connect(
                                           partial(
                                               self.parent.queueSpiderCallBack,
                                               child=self,
                                               row_number=len(
                                                   self.list_of_links) - k))
            k = k + 1

            item = QTableWidgetItem(file_name)
            # add checkbox to the item
            item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
            item.setCheckState(Qt.Checked)

            # insert file_name
            self.links_table.setItem(0, 0, item)

            # find link
            link = dict['link']
            item = QTableWidgetItem(str(link))

            # insert link
            self.links_table.setItem(0, 1, item)

# get categories name and add them to add_queue_comboBox
        categories_list = self.parent.persepolis_db.categoriesList()

        for queue in categories_list:
            if queue != 'All Downloads':
                self.add_queue_comboBox.addItem(queue)

        self.add_queue_comboBox.addItem(QIcon(icons + 'add_queue'),
                                        'Create new queue')

        # entry initialization
        global connections
        connections = int(
            self.persepolis_setting.value('settings/connections'))
        global download_path
        download_path = str(
            self.persepolis_setting.value('settings/download_path'))

        # initialization
        self.connections_spinBox.setValue(connections)
        self.download_folder_lineEdit.setText(download_path)
        self.download_folder_lineEdit.setEnabled(False)

        # ip_lineEdit initialization
        settings_ip = self.persepolis_setting.value(
            'add_link_initialization/ip', None)
        if settings_ip:
            self.ip_lineEdit.setText(str(settings_ip))

# proxy user lineEdit initialization
        settings_proxy_user = self.persepolis_setting.value(
            'add_link_initialization/proxy_user', None)
        if settings_proxy_user:
            self.proxy_user_lineEdit.setText(str(settings_proxy_user))

# port_spinBox initialization
        settings_port = self.persepolis_setting.value(
            'add_link_initialization/port', 0)

        self.port_spinBox.setValue(int(int(settings_port)))

        # download UserName initialization
        settings_download_user = self.persepolis_setting.value(
            'add_link_initialization/download_user', None)
        if settings_download_user:
            self.download_user_lineEdit.setText(str(settings_download_user))

# connect folder_pushButton
        self.folder_pushButton.clicked.connect(self.changeFolder)

        # connect OK and cancel button

        self.cancel_pushButton.clicked.connect(self.close)
        self.ok_pushButton.clicked.connect(self.okButtonPressed)

        # connect select_all_pushButton  deselect_all_pushButton
        self.select_all_pushButton.clicked.connect(self.selectAll)

        self.deselect_all_pushButton.clicked.connect(self.deselectAll)

        #frames and checkBoxes
        self.proxy_frame.setEnabled(False)
        self.proxy_checkBox.toggled.connect(self.proxyFrame)

        self.download_frame.setEnabled(False)
        self.download_checkBox.toggled.connect(self.downloadFrame)

        self.limit_frame.setEnabled(False)
        self.limit_checkBox.toggled.connect(self.limitFrame)

        # set focus to ok button
        self.ok_pushButton.setFocus()

        # add_queue_comboBox event
        self.add_queue_comboBox.currentIndexChanged.connect(self.queueChanged)

        # set window size and position
        size = self.persepolis_setting.value('TextQueue/size', QSize(700, 500))
        position = self.persepolis_setting.value('TextQueue/position',
                                                 QPoint(300, 300))
        self.resize(size)
        self.move(position)
Beispiel #7
0
    def __init__(self, propEditorWidget: QTableWidget,
                 tracker: videotrackr.video.video_tracker, DEBUG):
        self.debug_logger = logger(DEBUG)

        self.editor = propEditorWidget
        self.tracker = tracker

        self.editor.setRowCount(6)

        hframesLabel = QTableWidgetItem(ui_strings.HISTORY_FRAMES)
        hframesLabel.setFlags(Qt.ItemIsEnabled)
        self.editor.setItem(0, 0, hframesLabel)
        hframes = QTableWidgetItem(str(self.tracker.data.history_frames))
        hframes.setFlags(Qt.ItemIsEditable | Qt.ItemIsEnabled)
        self.editor.setItem(0, 1, hframes)

        distLabel = QTableWidgetItem(ui_strings.DIST_THRESHOLD)
        distLabel.setFlags(Qt.ItemIsEnabled)
        self.editor.setItem(1, 0, distLabel)
        dist = QTableWidgetItem(str(self.tracker.data.dist_threshold))
        dist.setFlags(Qt.ItemIsEditable | Qt.ItemIsEnabled)
        self.editor.setItem(1, 1, dist)

        shadowsLabel = QTableWidgetItem(ui_strings.SHADOWS)
        shadowsLabel.setFlags(Qt.ItemIsEnabled)
        self.editor.setItem(2, 0, shadowsLabel)
        shadows = QTableWidgetItem()
        shadows.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
        if self.tracker.data.shadows:
            shadows.setCheckState(Qt.Checked)
        else:
            shadows.setCheckState(Qt.Unchecked)
        self.editor.setItem(2, 1, shadows)

        minareaLabel = QTableWidgetItem(ui_strings.MIN_AREA)
        minareaLabel.setFlags(Qt.ItemIsEnabled)
        self.editor.setItem(3, 0, minareaLabel)
        minarea = QTableWidgetItem(str(self.tracker.data.min_area))
        minarea.setFlags(Qt.ItemIsEditable | Qt.ItemIsEnabled)
        self.editor.setItem(3, 1, minarea)

        maxareaLabel = QTableWidgetItem(ui_strings.MAX_AREA)
        maxareaLabel.setFlags(Qt.ItemIsEnabled)
        self.editor.setItem(4, 0, maxareaLabel)
        maxarea = QTableWidgetItem(str(self.tracker.data.max_area))
        maxarea.setFlags(Qt.ItemIsEditable | Qt.ItemIsEnabled)
        self.editor.setItem(4, 1, maxarea)

        zoomLabel = QTableWidgetItem(ui_strings.ZOOM_LEVEL)
        zoomLabel.setFlags(Qt.ItemIsEnabled)
        self.editor.setItem(5, 0, zoomLabel)
        zoom = QTableWidgetItem(str(self.tracker.data.zoom_level))
        zoom.setFlags(Qt.ItemIsEditable | Qt.ItemIsEnabled)
        self.editor.setItem(5, 1, zoom)

        self.editor.itemChanged.connect(self.update_properties)