示例#1
0
    def feed(self):
        """
        Populate table with result of executed query
        :return: None
        """
        self.resultTable.clear()
        self.resultTable.maxRenderRecords = self.context.editor['result.renderCount']
        try:
            self.resultTable.setColumnCount(len(self.context.xpqe['execute.header']))
            self.resultTable.setRowCount(min(self.resultTable.maxRenderRecords, len(self.result)))
            self.resultTable.setHorizontalHeaderLabels(self.context.xpqe['execute.header'])
            self.resultTable.setSortingEnabled(True)

            for itr, column in enumerate(self.context.xpqe['execute.header']):
                self.resultTable.horizontalHeaderItem(itr).setToolTip(column)

            for itr_r, row in enumerate(self.result[:self.resultTable.maxRenderRecords]
                                        if len(self.result) >= self.resultTable.maxRenderRecords else self.result):
                self.resultTable.setRowHeight(itr_r, 18)
                for itr_c, cell in enumerate(row.items()):
                    cell_value = str('' if cell[1] is None else cell[1])
                    cell_value_4tooltip = str('NULL' if cell[1] is None else cell[1])
                    item = QTableWidgetItem(cell_value)
                    item.setToolTip(cell_value_4tooltip)
                    self.resultTable.setItem(itr_r, itr_c, item)

            self.resultTable.resultCount.setText('Showing {:,} of {:,} records'.format(
                self.resultTable.maxRenderRecords if self.cursor.rowcount > self.resultTable.maxRenderRecords else self.cursor.rowcount,
                self.cursor.rowcount
            ))

        except Exception as e:
            self.log.error(e)
示例#2
0
    def draw_file_header_table(self):
        header_lang = self.parent_.lang.headers_info[1]['file_header']
        table = QTableWidget(count_positions(header_lang[2]), 3)

        table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        table.verticalHeader().setVisible(False)
        table.setHorizontalHeaderLabels(header_lang[1])

        fill_table(table, self.parent_.exe_file.file_header, header_lang[2])

        fields = self.parent_.exe_file.file_header

        date_index = (list(fields.keys()).index('creatingTime'))
        form = header_lang[2]['creatingTime'][1] if isinstance(
            header_lang[2]['creatingTime'],
            tuple) else fields['creatingTime'][2]
        item = QTableWidgetItem(fields['creatingTime'][1](form))
        item.setToolTip(item.text())
        table.setItem(date_index, 2, item)

        char_index = (list(fields.keys()).index('characteristics'))
        item = QPushButton('click me')
        item.clicked.connect(self.characteristics.show)
        table.setIndexWidget(table.model().index(char_index, 2), item)

        return table
示例#3
0
    def _set_col_name(self, idx: int, app_v: ApplicationView):
        col = QTableWidgetItem()
        col.setText(app_v.model.base_data.name if app_v.model.base_data.
                    name else '...')
        col.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
        col.setToolTip(self.window.locale_keys['app.name'].lower())

        if self.disk_cache and app_v.model.supports_disk_cache(
        ) and os.path.exists(app_v.model.get_disk_icon_path()):
            with open(app_v.model.get_disk_icon_path(), 'rb') as f:
                icon_bytes = f.read()
                pixmap = QPixmap()
                pixmap.loadFromData(icon_bytes)
                icon = QIcon(pixmap)
                self.icon_cache.add_non_existing(
                    app_v.model.base_data.icon_url, {
                        'icon': icon,
                        'bytes': icon_bytes
                    })

        elif not app_v.model.base_data.icon_url:
            icon = QIcon(app_v.model.get_default_icon_path())
        else:
            icon_data = self.icon_cache.get(app_v.model.base_data.icon_url)
            icon = icon_data['icon'] if icon_data else QIcon(
                app_v.model.get_default_icon_path())

        col.setIcon(icon)
        self.setItem(idx, 0, col)
示例#4
0
class GalleryDownloaderItem(QObject):
	"""
	Receives a HenItem
	"""
	d_item_ready = pyqtSignal(object)
	def __init__(self, hitem):
		super().__init__()
		assert isinstance(hitem, pewnet.HenItem)
		self.item = hitem
		url = self.item.gallery_url

		self.profile_item = QTableWidgetItem(self.item.name)
		self.profile_item.setToolTip(url)
		def set_profile(item):
			self.profile_item.setIcon(QIcon(item.thumb))
		self.item.thumb_rdy.connect(set_profile)

		# status
		self.status_item = QTableWidgetItem('Downloading...')
		self.status_item.setToolTip(url)
		def set_finished(item):
			self.status_item.setText('Finished downloading!')
			self.d_item_ready.emit(self)
		self.item.file_rdy.connect(set_finished)

		# other
		self.cost_item = QTableWidgetItem(self.item.cost)
		self.cost_item.setToolTip(url)
		self.size_item = QTableWidgetItem(self.item.size)
		self.size_item.setToolTip(url)
		type = 'Archive' if hitem.download_type == 0 else 'Torrent'
		self.type_item = QTableWidgetItem(type)
		self.type_item.setToolTip(url)
    def displayUploads(self, upload_list):
        keys = ["State",
                "Status",
                "File"]
        hidden = ["State"]
        self.ui.uploadList.setRowCount(len(upload_list))
        self.ui.uploadList.setColumnCount(len(keys))

        rows = 0
        for row in upload_list:
            cols = 0
            for key in keys:
                item = QTableWidgetItem()
                value = row.get(key)
                text = str(value) or ""
                item.setText(text)
                item.setToolTip("<span>" + text + "</span>")
                self.ui.uploadList.setItem(rows, cols, item)
                if key in hidden:
                    self.ui.uploadList.hideColumn(cols)
                cols += 1
            rows += 1

        self.ui.uploadList.setHorizontalHeaderLabels(keys)  # add header names
        self.ui.uploadList.horizontalHeader().setDefaultAlignment(Qt.AlignLeft)  # set alignment
        self.ui.uploadList.resizeColumnToContents(0)
 def updatePaybackPeriod(self, value):
     '''takes a string. Updates relevant portion in table'''
     if float(value) < 0:
         value ='Payback not earned.'
     widget = QTableWidgetItem(value)
     widget.setToolTip(self.paybackToolTip)
     self.tableGeneral.setItem(6, 0, widget)
示例#7
0
def setup_his_tab(my_app):
    """ fills history tab"""

    a = my_app
    a.tbl_his.clear()

    # update with latest results
    db = DBHis(ctx.db_his)
    r = db.get_recent_records()
    for i, h in enumerate(r):
        mac, sn = h[1], h[2]
        lat, lon, ts = h[3], h[4], h[5]
        it = QTableWidgetItem(sn)
        it.setToolTip(mac)
        a.tbl_his.setItem(i, 0, it)
        s = '{}'.format(lat)
        s += ',{}'.format(lon) if lon else ''
        a.tbl_his.setItem(i, 1, QTableWidgetItem(s))
        # 2021/03/01 14:56:34 -> '21/03/01 14:56'
        a.tbl_his.setItem(i, 2, QTableWidgetItem(ts[2:-3]))
    a.tbl_his.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
    labels = ['serial', 'last position', 'last time']
    a.tbl_his.setHorizontalHeaderLabels(labels)

    # columns table hack
    header = a.tbl_his.horizontalHeader()
    header.setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents)
示例#8
0
 def adornInfoReceived(self, adorn_info):
     aid2info = {}
     for each in adorn_info['item_list']:
         text = eq2s_func.CookItemText(each, short=True).text
         text = '{}<br>{}'.format(each['displayname'], text)
         aid2info[each['id']] = text
         # print(each['id'], '\n', text, '\n')
     for each in self.adornIDList:
         # get the table position of each adornment
         tablePos = eq2s_func.slot2position(each[1])
         # attach adorn text into each table item
         try:
             if tablePos[0] == 'l':
                 t = self.leftEquipTable.item(tablePos[1], 0).toolTip()
                 t += '<br>{}'.format(aid2info[each[0]])
                 self.leftEquipTable.item(tablePos[1], 0).setToolTip(t)
                 self.leftEquipTable.item(tablePos[1], 1).setToolTip(t)
             elif tablePos[0] == 'r':
                 t = self.rightEquipTable.item(tablePos[1], 0).toolTip()
                 t += '<br>{}'.format(aid2info[each[0]])
                 self.rightEquipTable.item(tablePos[1], 0).setToolTip(t)
                 self.rightEquipTable.item(tablePos[1], 1).setToolTip(t)
         except AttributeError:
             badPosition = QTableWidgetItem(
                 'Missing Item from DBG Databases')
             badPosition.setTextAlignment(Qt.AlignCenter)
             badPosition.setToolTip(aid2info[each[0]])
             if tablePos[0] == 'l':
                 self.leftEquipTable.setItem(tablePos[1], 0, badPosition)
             elif tablePos[0] == 'r':
                 self.rightEquipTable.setItem(tablePos[1], 1, badPosition)
示例#9
0
    def fillAchTable(self, achs):
        tm = []
        untm = []
        tm_achs = {}
        for each in achs:
            if each['completed_timestamp']:
                tm.append(each['completed_timestamp'])
                tm_achs[each['completed_timestamp']] = each
            else:
                untm.append(each)
        r = 0
        for each in sorted(tm, reverse=True):
            ct = QTableWidgetItem(
                datetime.fromtimestamp(each).isoformat().replace('T', ' '))
            ct.setTextAlignment(Qt.AlignCenter)
            self.achTable.setItem(r, 0, ct)
            nm = QTableWidgetItem(tm_achs[each]['name'])
            nm.setTextAlignment(Qt.AlignCenter)
            nm.setToolTip(tm_achs[each]['desc'])
            self.achTable.setItem(r, 1, nm)
            pts = QTableWidgetItem(str(tm_achs[each]['points']))
            pts.setTextAlignment(Qt.AlignCenter)
            self.achTable.setItem(r, 2, pts)
            tp = QTableWidgetItem(tm_achs[each]['category'])
            tp.setTextAlignment(Qt.AlignCenter)
            self.achTable.setItem(r, 3, tp)
            cate = QTableWidgetItem(tm_achs[each]['subcategory'])
            cate.setTextAlignment(Qt.AlignCenter)
            self.achTable.setItem(r, 4, cate)
            r += 1

        for each in untm:
            try:
                ct = QTableWidgetItem('Uncompleted')
                ct.setTextAlignment(Qt.AlignCenter)
                self.achTable.setItem(r, 0, ct)
                nm = QTableWidgetItem(each['name'])
                nm.setTextAlignment(Qt.AlignCenter)
                nm.setToolTip(each['desc'])
                self.achTable.setItem(r, 1, nm)
                pts = QTableWidgetItem(str(each['points']))
                pts.setTextAlignment(Qt.AlignCenter)
                self.achTable.setItem(r, 2, pts)
                tp = QTableWidgetItem(each['category'])
                tp.setTextAlignment(Qt.AlignCenter)
                self.achTable.setItem(r, 3, tp)
                cate = QTableWidgetItem(each['subcategory'])
                cate.setTextAlignment(Qt.AlignCenter)
                self.achTable.setItem(r, 4, cate)
            except KeyError:
                pass
            r += 1
        self.achTable.horizontalHeader().setSectionResizeMode(
            0, QHeaderView.ResizeToContents)
        self.achTable.horizontalHeader().setSectionResizeMode(
            2, QHeaderView.ResizeToContents)
        self.achTable.horizontalHeader().setSectionResizeMode(
            3, QHeaderView.ResizeToContents)
        self.achTable.horizontalHeader().setSectionResizeMode(
            4, QHeaderView.ResizeToContents)
示例#10
0
文件: apps_table.py 项目: jayvdb/bauh
    def _set_col_name(self, col: int, pkg: PackageView):
        item = QTableWidgetItem()
        item.setText(pkg.model.name if pkg.model.name else '...')
        item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
        item.setToolTip(self.i18n['app.name'].lower())

        if self.disk_cache and pkg.model.supports_disk_cache(
        ) and pkg.model.get_disk_icon_path() and os.path.exists(
                pkg.model.get_disk_icon_path()):
            with open(pkg.model.get_disk_icon_path(), 'rb') as f:
                icon_bytes = f.read()
                pixmap = QPixmap()
                pixmap.loadFromData(icon_bytes)
                icon = QIcon(pixmap)
                self.icon_cache.add_non_existing(pkg.model.icon_url, {
                    'icon': icon,
                    'bytes': icon_bytes
                })

        elif not pkg.model.icon_url:
            icon = QIcon(pkg.model.get_default_icon_path())
        else:
            icon_data = self.icon_cache.get(pkg.model.icon_url)
            icon = icon_data['icon'] if icon_data else QIcon(
                pkg.model.get_default_icon_path())

        item.setIcon(icon)
        self.setItem(pkg.table_index, col, item)
示例#11
0
    def updateTableSlot(self, val):
        """线程通过该槽,刷新进度条,表格内容"""
        if val:
            self.taskVal += val
            self.progressVal = self.taskVal / len(self.tableContents) * 100
            self.progressBar.setValue(self.progressVal)
            self.label.setText("%s/%s" %
                               (self.taskVal, len(self.tableContents)))
        self.tableWidget.setRowCount(len(self.tableContents))  # 行数

        for n, i in enumerate(self.tableContents):
            items = i.dump()
            for j in range(self.tableWidget.columnCount()):
                item = QTableWidgetItem(items[j])
                if j in [0, 1]:
                    item.setToolTip(item.text())
                self.tableWidget.setItem(n, j, item)
            self.setStatusColor(n)

        self.setBackgroundColor(self.bgColor)

        if self.progressVal == 100:
            self.wtime[1] = int(time.time())
            self.statusbar.showMessage(
                self.tr("finished (work time %ds)") %
                (self.wtime[1] - self.wtime[0]))
示例#12
0
    def _set_col_description(self, col: int, pkg: PackageView):
        item = QTableWidgetItem()
        item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)

        if pkg.model.description is not None or not pkg.model.is_application(
        ) or pkg.model.status == PackageStatus.READY:
            desc = pkg.model.description
        else:
            desc = '...'

        if desc and desc != '...' and len(desc) > DESC_MAX_SIZE:
            desc = strip_html(desc[0:DESC_MAX_SIZE - 1]) + '...'

        if not desc:
            desc = ' ' * DESC_MAX_SIZE

        if len(desc) < DESC_MAX_SIZE:
            desc = desc + ' ' * (DESC_MAX_SIZE - len(desc))

        item.setText(desc)

        if pkg.model.description:
            item.setToolTip(pkg.model.description)

        self.setItem(pkg.table_index, col, item)
示例#13
0
 def show_local_music_page_data(self):
     self.label_2.setText("%d首音乐" % len(self.curWholeMusicList.musics))
     self.tb_local_music.clearContents()
     self.tb_local_music.setRowCount(len(self.curMusicList.musics))
     self.set_tb_local_music_layout()
     for i in range(len(self.curMusicList.musics)):
         music = self.curMusicList.get(i)
         item = QTableWidgetItem()
         item.setTextAlignment(Qt.AlignRight | Qt.AlignVCenter)
         item.setText(str(i + 1) + " ")
         self.tb_local_music.setItem(i, 0, item)
         item = QTableWidgetItem(music.title)
         item.setToolTip(str(music.title))
         self.tb_local_music.setItem(i, 1, item)
         item = QTableWidgetItem(music.artist)
         item.setToolTip(str(music.artist))
         self.tb_local_music.setItem(i, 2, item)
         item = QTableWidgetItem(music.album)
         item.setToolTip(str(music.album))
         self.tb_local_music.setItem(i, 3, item)
         item = QTableWidgetItem(util.format_time(music.duration))
         item.setToolTip(util.format_time(music.duration))
         self.tb_local_music.setItem(i, 4, item)
         item = QTableWidgetItem(music.size)
         item.setToolTip(str(music.size))
         self.tb_local_music.setItem(i, 5, item)
     self.setIconItem()
    def fillTableGrouped(self, tableWidget, curaDataMerge):
        row = 0
        no = curaDataMerge.getSize()
        tableWidget.setRowCount(no)
        if 'values' in curaDataMerge.sections:
            d = curaDataMerge.sections['values']
            for gkey in self.AllKeys:
                for key in self.AllKeys[gkey]:
                    if key not in d:
                        continue

                    item = QTableWidgetItem(gkey.capitalize())
                    tableWidget.setItem(row, groupColumn, item)
                    # for k1, v1 in section.items():
                    info = findKeyInfo(self.infoJson, key)
                    if info is not None:
                        item = QTableWidgetItem(info['label'])
                        desc = info['description'].replace('.', '.\n')

                        item.setToolTip(desc.strip())
                        tableWidget.setItem(row, nameColumn, item)
                    else:
                        tableWidget.setItem(row, nameColumn, QTableWidgetItem(""))

                    self.fillTableValues(row, d, key, tableWidget)

                    row = row + 1
示例#15
0
 def add_row(self, row: list) -> None:
     if self.scrapeThread.isInterruptionRequested():
         self.scrapeThread.terminate()
     else:
         self.cols = 0
         self.table.setRowCount(self.rows + 1)
         if self.table.cursor() != Qt.PointingHandCursor:
             self.table.setCursor(Qt.PointingHandCursor)
         for item in row:
             table_item = QTableWidgetItem(item)
             table_item.setToolTip(
                 '%s\n\nDouble-click to view hoster links.' % row[1])
             table_item.setFont(QFont('Open Sans', weight=QFont.Normal))
             if self.cols == 2:
                 if sys.platform == 'win32':
                     table_item.setFont(
                         QFont('Open Sans Semibold', pointSize=10))
                 elif sys.platform == 'darwin':
                     table_item.setFont(
                         QFont('Open Sans Bold', weight=QFont.Bold))
                 else:
                     table_item.setFont(
                         QFont('Open Sans',
                               weight=QFont.DemiBold,
                               pointSize=10))
                 table_item.setText('  ' + table_item.text())
             elif self.cols in (0, 3):
                 table_item.setTextAlignment(Qt.AlignCenter)
             self.table.setItem(self.rows, self.cols, table_item)
             self.update_metabar()
             self.cols += 1
         self.rows += 1
示例#16
0
    def __init__(self, app: dict, icon_cache: Cache, locale_keys: dict):
        super(HistoryDialog, self).__init__()

        self.setWindowTitle('{} - {} '.format(
            locale_keys['popup.history.title'], app['model'].base_data.name))

        layout = QVBoxLayout()
        self.setLayout(layout)

        table_history = QTableWidget()
        table_history.setFocusPolicy(Qt.NoFocus)
        table_history.setShowGrid(False)
        table_history.verticalHeader().setVisible(False)
        table_history.setAlternatingRowColors(True)

        table_history.setColumnCount(len(app['history'][0]))
        table_history.setRowCount(len(app['history']))
        table_history.setHorizontalHeaderLabels([
            locale_keys['flatpak.info.' + key].capitalize()
            for key in sorted(app['history'][0].keys())
        ])

        for row, commit in enumerate(app['history']):

            current_app_commit = app['model'].commit == commit['commit']

            for col, key in enumerate(sorted(commit.keys())):
                item = QTableWidgetItem()
                item.setText(commit[key])
                item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)

                if current_app_commit:
                    item.setBackground(
                        QColor('#ffbf00' if row != 0 else '#32CD32'))
                    tip = '{}. {}.'.format(
                        locale_keys['popup.history.selected.tooltip'],
                        locale_keys['version.{}'.format(
                            'updated' if row ==
                            0 else 'outdated')].capitalize())

                    item.setToolTip(tip)

                table_history.setItem(row, col, item)

        layout.addWidget(table_history)

        header_horizontal = table_history.horizontalHeader()
        for i in range(0, table_history.columnCount()):
            header_horizontal.setSectionResizeMode(i, QHeaderView.Stretch)

        new_width = reduce(operator.add, [
            table_history.columnWidth(i)
            for i in range(table_history.columnCount())
        ])
        self.resize(new_width, table_history.height())

        icon_data = icon_cache.get(app['model'].base_data.icon_url)

        if icon_data and icon_data.get('icon'):
            self.setWindowIcon(icon_data.get('icon'))
示例#17
0
    def populate_table(self, search_by, column_count: int, headers: list):
        self.finance_result_table.clearContents()
        content = []

        if search_by == "flat":
            content = get_search_content(
                search_by=search_by,
                search_attribute=self.flat_combo.currentText())

        elif search_by == "date":
            date = self.date_line.date().toPyDate()
            content = get_search_content(search_by=search_by,
                                         search_attribute=fix_date(str(date)))

        elif search_by == "month":
            content = get_search_content(search_by=search_by,
                                         search_attribute=str(
                                             self.month_combo.currentIndex()))

        self.finance_result_table.setRowCount(len(content))
        self.finance_result_table.setColumnCount(column_count)

        self.finance_result_table.setHorizontalHeaderLabels(headers)
        header = self.finance_result_table.horizontalHeader()
        header.setSectionResizeMode(QHeaderView.Stretch)

        for index, row in enumerate(content):
            for inner_index, row_content in enumerate(row):
                table_item = QTableWidgetItem(str(row_content))
                table_item.setToolTip(str(row_content))

                if 'A - ' in str(row_content) or inner_index == 0:
                    table_item.setTextAlignment(Qt.AlignCenter)
                self.finance_result_table.setItem(index, inner_index,
                                                  table_item)
示例#18
0
 def fillEachPieceOfEquip(self, equip, side, pos):
     tooltip = eq2s_func.CookItemText(equip['item'])
     try:
         epnm = QTableWidgetItem(equip['item']['displayname'])
         epnm.setToolTip(tooltip.text)
         epnm.setData(1001, equip['item']['iconid'])
         epnm.setData(1002, equip['item']['displayname'])
         if side == 'l':
             epnm.setTextAlignment(Qt.AlignRight)
         else:
             epnm.setTextAlignment(Qt.AlignLeft)
         epicon = QTableWidgetItem()
         icon = QIcon()
         icon.addPixmap(eq2s_func.get_pixmap_in_db(equip['item']['iconid']))
         epicon.setIcon(icon)
         epicon.setToolTip(tooltip.text)
         epicon.setData(1001, equip['item']['iconid'])
         epicon.setData(1002, equip['item']['displayname'])
         if side == 'l':
             self.leftEquipTable.setItem(pos, 0, epnm)
             self.leftEquipTable.setItem(pos, 1, epicon)
         elif side == 'r':
             self.rightEquipTable.setItem(pos, 0, epicon)
             self.rightEquipTable.setItem(pos, 1, epnm)
     except KeyError:
         pass
 def updateOverallGainPercent(self, value):
     '''takes a string. Updates relevant portion in table'''
     widget = QTableWidgetItem(value)
     widget.setToolTip(self.gainPctToolTip)
     if float(value.replace(',', '')) > 0:
         widget.setForeground(QBrush(QColor(0,255,0)))
     else:
         widget.setForeground(QBrush(QColor(255,0,0)))
     self.tableGeneral.setItem(5, 0, widget)
示例#20
0
    def _set_col_name(self, col: int, pkg: PackageView):
        item = QTableWidgetItem()
        item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)

        name = pkg.model.get_display_name()
        if name:
            item.setToolTip('{}: {}'.format(self.i18n['app.name'].lower(),
                                            pkg.model.get_name_tooltip()))
        else:
            name = '...'
            item.setToolTip(self.i18n['app.name'].lower())

        if len(name) > NAME_MAX_SIZE:
            name = name[0:NAME_MAX_SIZE - 3] + '...'

        if len(name) < NAME_MAX_SIZE:
            name = name + ' ' * (NAME_MAX_SIZE - len(name))

        item.setText(name)

        icon_path = pkg.model.get_disk_icon_path()
        if pkg.model.installed and pkg.model.supports_disk_cache(
        ) and icon_path:
            if icon_path.startswith('/'):
                if os.path.isfile(icon_path):
                    with open(icon_path, 'rb') as f:
                        icon_bytes = f.read()
                        pixmap = QPixmap()
                        pixmap.loadFromData(icon_bytes)
                        icon = QIcon(pixmap)
                        self.icon_cache.add_non_existing(
                            pkg.model.icon_url, {
                                'icon': icon,
                                'bytes': icon_bytes
                            })
                else:
                    icon = QIcon(pkg.model.get_default_icon_path())
            else:
                try:
                    icon = QIcon.fromTheme(icon_path)
                    self.icon_cache.add_non_existing(pkg.model.icon_url, {
                        'icon': icon,
                        'bytes': None
                    })

                except:
                    icon = QIcon(pkg.model.get_default_icon_path())

        elif not pkg.model.icon_url:
            icon = QIcon(pkg.model.get_default_icon_path())
        else:
            icon_data = self.icon_cache.get(pkg.model.icon_url)
            icon = icon_data['icon'] if icon_data else QIcon(
                pkg.model.get_default_icon_path())

        item.setIcon(icon)
        self.setItem(pkg.table_index, col, item)
示例#21
0
class GalleryDownloaderItem(QObject):
	"""
	Receives a HenItem
	"""
	d_item_ready = pyqtSignal(object)
	def __init__(self, hitem):
		super().__init__()
		assert isinstance(hitem, pewnet.HenItem)
		self.d_item_ready.connect(self.done)
		self.item = hitem
		url = self.item.gallery_url

		self.profile_item = QTableWidgetItem(self.item.name)
		self.profile_item.setData(Qt.UserRole+1, hitem)
		self.profile_item.setToolTip(url)
		def set_profile(item):
			self.profile_item.setIcon(QIcon(item.thumb))
		self.item.thumb_rdy.connect(set_profile)

		# status
		self.status_item = QTableWidgetItem('In queue...')
		self.status_item.setToolTip(url)
		def set_finished(item):
			self.status_item.setText('Finished!')
			self.d_item_ready.emit(self)
		self.item.file_rdy.connect(set_finished)

		# other
		self.cost_item = QTableWidgetItem(self.item.cost)
		self.cost_item.setToolTip(url)
		self.size_item = QTableWidgetItem(self.item.size)
		self.size_item.setToolTip(url)
		type = 'Archive' if hitem.download_type == 0 else 'Torrent'
		self.type_item = QTableWidgetItem(type)
		self.type_item.setToolTip(url)

		self.status_timer = QTimer()
		self.status_timer.timeout.connect(self.check_progress)
		self.status_timer.start(500)

	def check_progress(self):
		if self.item.current_state == self.item.DOWNLOADING:
			btomb = 1048576
			self.status_item.setText("{0:.2f}/{1:.2f} MB".format(self.item.current_size/btomb,
															  self.item.total_size/btomb))
			self.size_item.setText("{0:.2f} MB".format(self.item.total_size/btomb))
		elif self.item.current_state == self.item.CANCELLED:
			self.status_item.setText("Cancelled!")
			self.status_timer.stop()

	def done(self):
		self.status_timer.stop()
		if self.item.download_type == 0:
			self.status_item.setText("Sent to library!")
		else:
			self.status_item.setText("Sent to torrent client!")
示例#22
0
class GalleryDownloaderItem(QObject):
	"""
	Receives a HenItem
	"""
	d_item_ready = pyqtSignal(object)
	def __init__(self, hitem):
		super().__init__()
		assert isinstance(hitem, pewnet.HenItem)
		self.d_item_ready.connect(self.done)
		self.item = hitem
		url = self.item.gallery_url

		self.profile_item = QTableWidgetItem(self.item.name)
		self.profile_item.setData(Qt.UserRole+1, hitem)
		self.profile_item.setToolTip(url)
		def set_profile(item):
			self.profile_item.setIcon(QIcon(item.thumb))
		self.item.thumb_rdy.connect(set_profile)

		# status
		self.status_item = QTableWidgetItem('In queue...')
		self.status_item.setToolTip(url)
		def set_finished(item):
			self.status_item.setText('Finished!')
			self.d_item_ready.emit(self)
		self.item.file_rdy.connect(set_finished)

		# other
		self.cost_item = QTableWidgetItem(self.item.cost)
		self.cost_item.setToolTip(url)
		self.size_item = QTableWidgetItem(self.item.size)
		self.size_item.setToolTip(url)
		type = 'Archive' if hitem.download_type == 0 else 'Torrent'
		self.type_item = QTableWidgetItem(type)
		self.type_item.setToolTip(url)

		self.status_timer = QTimer()
		self.status_timer.timeout.connect(self.check_progress)
		self.status_timer.start(500)

	def check_progress(self):
		if self.item.current_state == self.item.DOWNLOADING:
			btomb = 1048576
			self.status_item.setText("{0:.2f}/{1:.2f} MB".format(self.item.current_size/btomb,
															  self.item.total_size/btomb))
			self.size_item.setText("{0:.2f} MB".format(self.item.total_size/btomb))
		elif self.item.current_state == self.item.CANCELLED:
			self.status_item.setText("Cancelled!")
			self.status_timer.stop()

	def done(self):
		self.status_timer.stop()
		if self.item.download_type == 0:
			self.status_item.setText("Sent to library!")
		else:
			self.status_item.setText("Sent to torrent client!")
示例#23
0
def create_replay_table_widget_item(text: str, editable: bool = False, tooltip: str = None):
    item = QTableWidgetItem(text)

    if tooltip is None:
        item.setToolTip(text)
    else:
        item.setToolTip(tooltip)
    if not editable:
        item.setFlags(item.flags() & ~QtCore.Qt.ItemIsEditable)
    return item
示例#24
0
 def set_data(self, data):
     for i, n in enumerate(data):
         for j, m in enumerate(n):
             item = QTableWidgetItem(str(m))
             item.setTextAlignment(Qt.AlignCenter)
             try:
                 item.setToolTip(self.config.names[(i, j)])
             except KeyError:
                 pass
             self.tablewidget.setItem(i, j, item)
示例#25
0
    def update_item_view(self):
        """Update item details view with data from currently selected item."""
        try:
            selected = self.ui.items.selectedItems()[0].name
        except IndexError:
            return

        try:
            item = self.items.get_item(selected)
        except TypeError:
            logging.warning("Unable to load asset "+selected)
            return

        image_file = self.items.get_item_image(selected)
        if image_file == None:
            inv_icon_file = self.items.get_item_icon(selected)
            if inv_icon_file != None:
                icon = QPixmap.fromImage(ImageQt(inv_icon_file)).scaled(32, 32)
            else:
                icon = QPixmap.fromImage(QImage.fromData(self.items.missing_icon())).scaled(32, 32)
        else:
            icon = QPixmap.fromImage(ImageQt(image_file)).scaledToHeight(64)

        # last ditch
        try:
            self.ui.item_icon.setPixmap(icon)
        except TypeError:
            logging.warning("Unable to load item image: "+selected)
            self.ui.item_icon.setPixmap(QPixmap())

        # TODO: update qt objectnames, already not making sense
        try:
            self.ui.item_name.setText(item[0]["shortdescription"])
        except KeyError:
            self.ui.item_name.setText("Missing short description")

        try:
            self.ui.short_desc.setText(item[0]["description"])
        except KeyError:
            self.ui.short_desc.setText("Missing description")

        # populate default variant table
        row = 0
        self.ui.info.setRowCount(len(item[0]))
        for key in sorted(item[0].keys()):
            try:
                text = str(key) + ": " + str(item[0][key])
                table_item = QTableWidgetItem(text)
                table_item.setToolTip(text)
                self.ui.info.setItem(row, 0, table_item)
            except TypeError:
                pass
            row += 1

        self.item_browse_select = selected
示例#26
0
 def fillTable(self, dataframe):
     self.setColumnCount(len(dataframe.columns))
     self.setRowCount(len(dataframe.index))
     for i in range(len(dataframe.index)):
         for j in range(len(dataframe.columns)):
             item = QTableWidgetItem(str(dataframe.iloc[i, j]))
             item.setToolTip(str(dataframe.iloc[i, j]))
             self.setItem(i, j, item)
     self.setHorizontalHeaderLabels(dataframe.columns)
     self.setColumnWidth(0, 300)
     self.setColumnWidth(1, 150)
	def createDialog(self):
		##ADD NEW VI AND THEIR OPTIONS##

		VI = [ ["Color",["10m (B3)", "20m(B3,B6)", "60m (B1,B3,B6)"]],
					["OTCI", ["10m (B4)", "20m (B4,B5,B6)","60m (B5,B6,B6)"]],
					["MCARI",["10m (B3,B4)","20m (B3,B4,B5)","60m (B3,B4,B5)"]],
					["IRECI",["10m (B4)","20m (B4,B5,B6,B7)","60m (B4,B5,B6,B7)"]],
					["CCCI",["20m (B5,B6,B7)", "60m (B5,B6,B7)"]],
					["NDRE",["20m (B5,B6,B7)", "60m (B5,B6,B7)"]],
					["MTCI", ["10m (B4)", "20m (B4,B5,B6)","60m(B4,B5,B6)"]],
					["CI_redEdge",["20m (B5,B7)","60m (B5,B7)"]],
					["CI_greenEdge",["10m (B3)","20m (B3,B7)","60m (B3,B7)"]],
					["EVI",["10m (B2,B3,B4)","20m (B2,B3,B4)", "60m (B2,B3,B4)"]],
					["NRERI",["10m (B4)","20m (B5,B6,B7)", "60m (B5,B6,B7)"]],
					["NDVI705",["20m (B5,B6)", "60m (B5,B6)"]],
					["mNDVI705",["20m (B5,B6)", "60m (B1,B5,B6)"]],
					["NDI45", ["10m (B4)", "20m (B4,B5)","60m (B4,B5)"]],
					["RDVI", ["10m (B4)", "20m (B4,B7)","60m (B4,B7)"]],
					["TCARI", ["10m (B3,B4)", "20m (B3,B4,B5)", "60m (B3,B4,B5)"]],
					["OSAVI", ["10m (B4)", "20m (B4,B7)", "60m (B4,B7)"]],
					["TCARI/OSAVI", ["10m (B3,B4)", "20m (B3,B4,B5,B7)", "60m (B3,B4,B5,B7)"]]
					]

		self.dlg.tableWidget.setRowCount(0)#Delete al rows before insert
		
		for row in range(len(VI)):
			element = VI[row]

			item = QTableWidgetItem(element[0])

			self.dlg.tableWidget.insertRow(row)
			self.dlg.tableWidget.setItem(row,0,item)#VI name
			for options_n in range(len(element[1])):

				opt = QTableWidgetItem(element[1][options_n])
				opt.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
				opt.setCheckState(Qt.Unchecked)

				self.dlg.tableWidget.setItem(row,options_n+1,opt)#VI options

			if element[0] == "CCCI":
				#add input boxes for min max resample
				item = QTableWidgetItem("0.62")
				item2 = QTableWidgetItem("0.24")
				item.setFlags(Qt.ItemIsEditable | Qt.ItemIsEnabled )
				item2.setFlags(Qt.ItemIsEditable | Qt.ItemIsEnabled)
				item.setToolTip("Max value")
				item2.setToolTip("Min value")

				self.dlg.tableWidget.setItem(row,len(element[1])+1,item)
				self.dlg.tableWidget.setItem(row,len(element[1])+2,item2)


		self.createdOptions = True
示例#28
0
    def _set_col_description(self, idx: int, app_v: ApplicationView):
        col = QTableWidgetItem()
        col.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
        desc = app_v.get_async_attr('description', strip_html=True)

        if desc:
            col.setText(desc[0:25] + '...')

        if app_v.model.status == ApplicationStatus.READY:
            col.setToolTip(desc)

        self.setItem(idx, 2, col)
示例#29
0
    def displayMembers(self):
        rank = {}
        for each in self.guildDitail['rank_list']:
            rank[each['id']] = each['name']

        mlist = {0:[], 1:[], 2:[], 3:[], 4:[], 5:[], 6:[], 7:[], 8:[]}
        for each in self.guildDitail['member_list']:
            m = {}
            if isinstance(each['name'], dict):
                m = {'name': each['name']['first']}
            elif isinstance(each['name'], str):
                m = {'name': each['name']}
            try:
                m['adclass'] = each['type']['class']
                m['adlv'] = each['type']['level']
                m['join'] = datetime.fromtimestamp(each['guild']['joined']).isoformat()
                m['id'] = each['id']
            except:
                pass
            if 'id' in m.keys():
                mlist[each['guild']['rank']].append(m)
            else:
                mlist[8].append(m)
        self.guild_members_table.setRowCount(len(self.guildDitail['member_list']))
        r = 0
        for e in range(8):
            for m in mlist[e]:
                try:
                    rankitem = QTableWidgetItem(rank[e])
                    rankitem.setTextAlignment(Qt.AlignCenter)
                    self.guild_members_table.setItem(r, 0, rankitem)
                    nmitem = QTableWidgetItem(m['name'])
                    nmitem.setTextAlignment(Qt.AlignCenter)
                    nmitem.setData(1000, m['id'])
                    nmitem.setToolTip('Click for character\'s detail')
                    self.guild_members_table.setItem(r, 1, nmitem)
                    if 'adclass' in m.keys():
                        adcls = QTableWidgetItem(m['adclass'])
                        adcls.setTextAlignment(Qt.AlignCenter)
                        self.guild_members_table.setItem(r, 2, adcls)
                        adlv = QTableWidgetItem(str(m['adlv']))
                        adlv.setTextAlignment(Qt.AlignCenter)
                        self.guild_members_table.setItem(r, 3, adlv)
                        jt = QTableWidgetItem(m['join'])
                        jt.setTextAlignment(Qt.AlignCenter)
                        self.guild_members_table.setItem(r, 4, jt)
                except:
                    pass
                r += 1
        self.guild_members_table.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents)
        self.guild_members_table.horizontalHeader().setSectionResizeMode(2, QHeaderView.ResizeToContents)
        self.guild_members_table.horizontalHeader().setSectionResizeMode(3, QHeaderView.ResizeToContents)
        self.guild_members_table.horizontalHeader().setSectionResizeMode(4, QHeaderView.ResizeToContents)
示例#30
0
    def getFileTableQWidgetItem(self, dp: DataPoint):
        shownName = dp.videoName.replace('m0', '')
        shownName = '   '.join(shownName.split('_')[2:])
        name = QTableWidgetItem(shownName)
        name.setData(Qt.UserRole, dp.videoPath)
        name.setToolTip(dp.videoPath)

        done = QTableWidgetItem(' ')
        if dp.hasBeenProcessed:
            done = QTableWidgetItem('   ✓')
        done.setData(Qt.UserRole, dp.videoPath)
        done.setToolTip(dp.videoPath)
        return name, done
示例#31
0
    def update_item_view(self):
        """Update item details view with data from currently selected item."""
        try:
            selected = self.ui.items.selectedItems()[0].name
        except IndexError:
            return

        try:
            item = self.items.get_item(selected)
        except TypeError:
            logging.warning("Unable to load asset " + selected)
            return

        inv_icon_file = self.items.get_item_icon(selected)
        if inv_icon_file is not None:
            icon = QPixmap.fromImage(ImageQt(inv_icon_file))
        else:
            image_file = self.items.get_item_image(selected)
            if image_file is not None:
                icon = QPixmap.fromImage(ImageQt(image_file))
            else:
                icon = QPixmap.fromImage(
                    QImage.fromData(self.assets.items().missing_icon()))

        # last ditch
        try:
            icon = self.scale_image_icon(icon, 64, 64)
            self.ui.item_icon.setPixmap(icon)
        except TypeError:
            logging.warning("Unable to load item image: " + selected)
            self.ui.item_icon.setPixmap(QPixmap())

        self.ui.short_desc.setText(generate_item_info(item[0]))

        # populate default variant table

        try:
            row = 0
            self.ui.info.setRowCount(len(item[0]))
            for key in sorted(item[0].keys()):
                text = str(key) + ": " + str(item[0][key])
                table_item = QTableWidgetItem(text)
                table_item.setToolTip(text)
                self.ui.info.setItem(row, 0, table_item)
                row += 1
        except TypeError:
            self.ui.info.setRowCount(0)
            logging.error("No item data")

        self.item_browse_select = selected
示例#32
0
    def show_musics_data(self):
        self.music_list_name.setText(self.curMusicList.name)
        self.music_list_date.setText("%s创建" % self.curMusicList.created)
        self.lb_music_count.setText(
            "<p>歌曲数</p><p style='text-align: right'>%d</p>" %
            len(self.curMusicList.musics))
        self.lb_played_count.setText(
            "<p>播放数</p><p style='text-align: right'>%d</p>" %
            self.curMusicList.play_count)

        self.musics.clearContents()
        self.musics.setRowCount(len(self.curMusicList.musics))
        musics__ = self.curMusicList
        for i in range(len(musics__.musics)):
            music = musics__.get(i)
            item = QTableWidgetItem()
            item.setData(Qt.UserRole, music)
            item.setTextAlignment(Qt.AlignRight | Qt.AlignVCenter)
            item.setText(str(i + 1) + " ")
            self.musics.setItem(i, 0, item)
            item = QTableWidgetItem(str(music.title))
            item.setToolTip(music.title)
            self.musics.setItem(i, 1, item)
            item = QTableWidgetItem(music.artist)
            item.setToolTip(music.artist)
            self.musics.setItem(i, 2, item)
            item = QTableWidgetItem(music.album)
            item.setToolTip(music.album)
            self.musics.setItem(i, 3, item)
            item = QTableWidgetItem(util.format_time(music.duration))
            item.setToolTip(util.format_time(music.duration))
            self.musics.setItem(i, 4, item)
示例#33
0
    def show_musics_data(self):

        self.musics_table.clearContents()
        self.musics_table.setRowCount(len(self.cur_music_list.musics_table))
        musics__ = self.cur_music_list
        for i in range(len(musics__.musics_table)):
            music = musics__.get(i)
            item = QTableWidgetItem()
            item.setData(Qt.UserRole, music)
            item.setTextAlignment(Qt.AlignRight | Qt.AlignVCenter)
            item.setText(str(i + 1) + " ")
            self.musics_table.setItem(i, 0, item)
            item = QTableWidgetItem(str(music.title))
            item.setToolTip(music.title)
            self.musics_table.setItem(i, 1, item)
            item = QTableWidgetItem(music.artist)
            item.setToolTip(music.artist)
            self.musics_table.setItem(i, 2, item)
            item = QTableWidgetItem(music.album)
            item.setToolTip(music.album)
            self.musics_table.setItem(i, 3, item)
            item = QTableWidgetItem(util.format_time(music.duration))
            item.setToolTip(util.format_time(music.duration))
            self.musics_table.setItem(i, 4, item)
        # 若当前播放的音乐属于该歌单, 则为其设置喇叭图标
        self.set_icon_item()
示例#34
0
    def update_item_view(self):
        """Update item details view with data from currently selected item."""
        try:
            selected = self.ui.items.selectedItems()[0].name
        except IndexError:
            return

        try:
            item = self.items.get_item(selected)
        except TypeError:
            logging.warning("Unable to load asset "+selected)
            return

        inv_icon_file = self.items.get_item_icon(selected)
        if inv_icon_file is not None:
            icon = QPixmap.fromImage(ImageQt(inv_icon_file))
        else:
            image_file = self.items.get_item_image(selected)
            if image_file is not None:
                icon = QPixmap.fromImage(ImageQt(image_file))
            else:
                icon = QPixmap.fromImage(QImage.fromData(self.assets.items().missing_icon()))

        # last ditch
        try:
            icon = self.scale_image_icon(icon, 64, 64)
            self.ui.item_icon.setPixmap(icon)
        except TypeError:
            logging.warning("Unable to load item image: "+selected)
            self.ui.item_icon.setPixmap(QPixmap())

        self.ui.short_desc.setText(generate_item_info(item[0]))

        # populate default variant table

        try:
            row = 0
            self.ui.info.setRowCount(len(item[0]))
            for key in sorted(item[0].keys()):
                text = str(key) + ": " + str(item[0][key])
                table_item = QTableWidgetItem(text)
                table_item.setToolTip(text)
                self.ui.info.setItem(row, 0, table_item)
                row += 1
        except TypeError:
            self.ui.info.setRowCount(0)
            logging.error("No item data")

        self.item_browse_select = selected
示例#35
0
    def update_item_view(self):
        """Update item details view with data from currently selected item."""
        try:
            selected = self.ui.items.selectedItems()[0].text()
        except IndexError:
            return

        item = self.items.get_item(selected)
        # don't like so many queries but should be ok for the browser
        icon_file = self.items.get_item_image(selected)
        # fallback on inventory icon
        if icon_file == None:
            icon = inv_icon(selected)
        else:
            icon = QPixmap(icon_file).scaledToHeight(64)

        # last ditch, just use x.png
        try:
            self.ui.item_icon.setPixmap(icon)
        except TypeError:
            self.ui.item_icon.setPixmap(QPixmap(self.items.missing_icon()))

        # TODO: update qt objectnames, already not making sense
        try:
            self.ui.item_name.setText(item[0]["shortdescription"])
        except KeyError:
            self.ui.item_name.setText("Missing short description")

        try:
            self.ui.short_desc.setText(item[0]["description"])
        except KeyError:
            self.ui.short_desc.setText("Missing description")

        # populate default variant table
        row = 0
        self.ui.info.setRowCount(len(item[0]))
        for key in sorted(item[0].keys()):
            try:
                text = str(key) + ": " + str(item[0][key])
                table_item = QTableWidgetItem(text)
                table_item.setToolTip(text)
                self.ui.info.setItem(row, 0, table_item)
            except TypeError:
                pass
            row += 1

        self.item_browse_select = selected
示例#36
0
文件: gui.py 项目: FZUG/repo-checker
    def updateTableSlot(self, val):
        """线程通过该槽,刷新进度条,表格内容"""
        if val:
            self.taskVal += val
            self.progressVal = self.taskVal / len(self.tableContents) * 100
            self.progressBar.setValue(self.progressVal)
            self.label.setText("%s/%s" % (self.taskVal, len(self.tableContents)))
        self.tableWidget.setRowCount(len(self.tableContents))  # 行数

        for n, i in enumerate(self.tableContents):
            items = i.dump()
            for j in range(self.tableWidget.columnCount()):
                item = QTableWidgetItem(items[j])
                if j in [0, 1]:
                    item.setToolTip(item.text())
                self.tableWidget.setItem(n, j, item)
            self.setStatusColor(n)

        self.setBackgroundColor(self.bgColor)

        if self.progressVal == 100:
            self.wtime[1] = int(time.time())
            self.statusbar.showMessage(self.tr(
                "finished (work time %ds)") % (self.wtime[1] - self.wtime[0]))
示例#37
0
 def _update_dictionaries(self, config_dictionaries=None, loaded_dictionaries=None,
                          reverse_order=None, record=True, save=True,
                          reset_undo=False, keep_selection=True):
     if reverse_order is None:
         reverse_order = self._reverse_order
     if config_dictionaries is None:
         config_dictionaries = self._config_dictionaries
     if config_dictionaries == self._config_dictionaries and \
        reverse_order == self._reverse_order and \
        loaded_dictionaries is None:
         return
     if save:
         self._engine.config = { 'dictionaries': config_dictionaries }
     if record:
         self._states.append(self._config_dictionaries)
         self.action_Undo.setEnabled(True)
     if keep_selection:
         selected = [
             self._config_dictionaries[row].path
             for row in self._get_selection()
         ]
     self._config_dictionaries = config_dictionaries
     if loaded_dictionaries is None:
         loaded_dictionaries = self._loaded_dictionaries
     else:
         self._loaded_dictionaries = loaded_dictionaries
     self._reverse_order = reverse_order
     self._updating = True
     self.table.setRowCount(len(config_dictionaries))
     favorite_set = False
     for n, dictionary in enumerate(config_dictionaries):
         row = n
         if self._reverse_order:
             row = len(config_dictionaries) - row - 1
         item = QTableWidgetItem(dictionary.short_path)
         item.setFlags((item.flags() | Qt.ItemIsUserCheckable) & ~Qt.ItemIsEditable)
         item.setCheckState(Qt.Checked if dictionary.enabled else Qt.Unchecked)
         item.setToolTip(dictionary.path)
         self.table.setItem(row, 0, item)
         item = QTableWidgetItem(str(n + 1))
         if dictionary.path not in loaded_dictionaries:
             icon = 'loading'
         else:
             d = loaded_dictionaries.get(dictionary.path)
             if isinstance(d, ErroredDictionary):
                 icon = 'error'
                 item.setToolTip(str(d.exception))
             elif d.readonly:
                 icon = 'readonly'
             elif not favorite_set and dictionary.enabled:
                 icon = 'favorite'
                 favorite_set = True
             else:
                 icon = 'normal'
         item.setIcon(QIcon(':/dictionary_%s.svg' % icon))
         self.table.setVerticalHeaderItem(row, item)
     if keep_selection:
         row_list = []
         for path in selected:
             for n, d in enumerate(config_dictionaries):
                 if d.path == path:
                     row_list.append(n)
                     break
         self._set_selection(row_list)
     if reset_undo:
         self.action_Undo.setEnabled(False)
         self._states = []
     self._updating = False
     self.on_selection_changed()
示例#38
0
 def __init__(self, parent=None):
     """Init class."""
     super(MainWindow, self).__init__()
     self.setWindowTitle(__doc__.strip().capitalize())
     self.statusBar().showMessage(" Choose one App and move the sliders !")
     self.setMinimumSize(480, 240)
     self.setMaximumSize(640, 2048)
     self.setWindowIcon(QIcon.fromTheme("preferences-system"))
     self.center()
     QShortcut("Ctrl+q", self, activated=lambda: self.close())
     self.menuBar().addMenu("&File").addAction("Exit", exit)
     windowMenu = self.menuBar().addMenu("&Window")
     windowMenu.addAction("Minimize", lambda: self.showMinimized())
     windowMenu.addAction("Maximize", lambda: self.showMaximized())
     windowMenu.addAction("Restore", lambda: self.showNormal())
     windowMenu.addAction("FullScreen", lambda: self.showFullScreen())
     windowMenu.addAction("Center", lambda: self.center())
     windowMenu.addAction("Top-Left", lambda: self.move(0, 0))
     windowMenu.addAction("To Mouse", lambda: self.move_to_mouse_position())
     windowMenu.addSeparator()
     windowMenu.addAction(
         "Increase size", lambda:
         self.resize(self.size().width() * 1.4, self.size().height() * 1.4))
     windowMenu.addAction("Decrease size", lambda: self.resize(
         self.size().width() // 1.4, self.size().height() // 1.4))
     windowMenu.addAction("Minimum size", lambda:
                          self.resize(self.minimumSize()))
     windowMenu.addAction("Maximum size", lambda:
                          self.resize(self.maximumSize()))
     windowMenu.addAction("Horizontal Wide", lambda: self.resize(
         self.maximumSize().width(), self.minimumSize().height()))
     windowMenu.addAction("Vertical Tall", lambda: self.resize(
         self.minimumSize().width(), self.maximumSize().height()))
     windowMenu.addSeparator()
     windowMenu.addAction("Disable Resize", lambda:
                          self.setFixedSize(self.size()))
     windowMenu.addAction("Set Interface Font...", lambda:
                          self.setFont(QFontDialog.getFont()[0]))
     helpMenu = self.menuBar().addMenu("&Help")
     helpMenu.addAction("About Qt 5", lambda: QMessageBox.aboutQt(self))
     helpMenu.addAction("About Python 3",
                        lambda: open_new_tab('https://www.python.org'))
     helpMenu.addAction("About" + __doc__,
                        lambda: QMessageBox.about(self, __doc__, HELP))
     helpMenu.addSeparator()
     helpMenu.addAction(
         "Keyboard Shortcut",
         lambda: QMessageBox.information(self, __doc__, "<b>Quit = CTRL+Q"))
     helpMenu.addAction("View Source Code",
                        lambda: call('xdg-open ' + __file__, shell=True))
     helpMenu.addAction("View GitHub Repo", lambda: open_new_tab(__url__))
     helpMenu.addAction("Report Bugs", lambda: open_new_tab(
         'https://github.com/juancarlospaco/pyority/issues?state=open'))
     helpMenu.addAction("Check Updates", lambda: Downloader(self))
     container, child_container = QWidget(), QWidget()
     container_layout = QVBoxLayout(container)
     child_layout = QHBoxLayout(child_container)
     self.setCentralWidget(container)
     # widgets
     group0 = QGroupBox("My Apps")
     group1, group2 = QGroupBox("CPU Priority"), QGroupBox("HDD Priority")
     child_layout.addWidget(group0)
     child_layout.addWidget(group1)
     child_layout.addWidget(group2)
     container_layout.addWidget(child_container)
     # table
     self.table = QTableWidget()
     self.table.setColumnCount(1)
     self.table.verticalHeader().setVisible(True)
     self.table.horizontalHeader().setVisible(False)
     self.table.setShowGrid(False)
     self.table.setAlternatingRowColors(True)
     self.table.setIconSize(QSize(64, 64))
     self.table.setSelectionMode(QAbstractItemView.SingleSelection)
     self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
     # Graphic effect
     glow = QGraphicsDropShadowEffect(self)
     glow.setOffset(0)
     glow.setBlurRadius(9)
     glow.setColor(QColor(99, 255, 255))
     self.table.setGraphicsEffect(glow)
     glow.setEnabled(True)
     processes = self.generate_process_list()
     self.table.setRowCount(len(processes))
     for index, process in enumerate(processes):
         item = QTableWidgetItem(
             QIcon.fromTheme(process.name().split()[0].split('/')[0]),
             process.name().split()[0].split('/')[0].strip())
         item.setData(Qt.UserRole, process)
         item.setToolTip("{}, {}, {}, {}".format(
             process.name(), process.nice(),
             process.ionice()[1], process.pid))
         self.table.setItem(index, 0, item)
     self.table.clicked.connect(lambda: self.sliderhdd.setDisabled(False))
     self.table.clicked.connect(lambda: self.slidercpu.setDisabled(False))
     self.table.clicked.connect(lambda: self.slidercpu.setValue(
         int(tuple(self.table.currentItem().toolTip().split(","))[1])))
     self.table.clicked.connect(lambda: self.sliderhdd.setValue(
         int(tuple(self.table.currentItem().toolTip().split(","))[2])))
     self.table.resizeColumnsToContents()
     # self.table.resizeRowsToContents()
     # sliders
     self.slidercpu = QSlider()
     self.slidercpu.setRange(0, 19)
     self.slidercpu.setSingleStep(1)
     self.slidercpu.setTickPosition(3)
     self.slidercpu.setDisabled(True)
     self.slidercpu.setInvertedAppearance(True)
     self.slidercpu.setInvertedControls(True)
     self.slidercpu.valueChanged.connect(self.set_cpu_value)
     self.slidercpu.valueChanged.connect(
         lambda: self.slidercpu.setToolTip(str(self.slidercpu.value())))
     # Timer to start
     self.slidercpu_timer = QTimer(self)
     self.slidercpu_timer.setSingleShot(True)
     self.slidercpu_timer.timeout.connect(self.on_slidercpu_timer_timeout)
     QLabel(self.slidercpu).setPixmap(
         QIcon.fromTheme("list-add").pixmap(16))
     QVBoxLayout(group1).addWidget(self.slidercpu)
     self.sliderhdd = QSlider()
     self.sliderhdd.setRange(0, 7)
     self.sliderhdd.setSingleStep(1)
     self.sliderhdd.setTickPosition(3)
     self.sliderhdd.setDisabled(True)
     self.sliderhdd.setInvertedAppearance(True)
     self.sliderhdd.setInvertedControls(True)
     self.sliderhdd.valueChanged.connect(self.set_hdd_value)
     self.sliderhdd.valueChanged.connect(
         lambda: self.sliderhdd.setToolTip(str(self.sliderhdd.value())))
     # Timer to start
     self.sliderhdd_timer = QTimer(self)
     self.sliderhdd_timer.setSingleShot(True)
     self.sliderhdd_timer.timeout.connect(self.on_sliderhdd_timer_timeout)
     QLabel(self.sliderhdd).setPixmap(
         QIcon.fromTheme("list-add").pixmap(16))
     QVBoxLayout(group2).addWidget(self.sliderhdd)
     QVBoxLayout(group0).addWidget(self.table)
示例#39
0
    def init_table(self):
        """Generates a table with the song scores."""

        # Prepare table for inserting items
        self.table.clearContents()
        self.table.setSortingEnabled(False)

        # Current table row
        current_row = 0
        for song in self.stats.find("SongScores"):
            # Current table row
            current_column = 0

            # Get the song's group and title
            # location[0] should always be "Songs"
            location = song.attrib['Dir'].split('/')

            # Create group cell
            group = QTableWidgetItem(location[1])
            self.table.setItem(current_row, current_column, group)
            current_column = current_column + 1

            # Create title cell
            title = QTableWidgetItem(location[2])
            self.table.setItem(current_row, current_column, title)
            current_column = current_column + 1

            # step_counter will be used for traversing the scores in a song
            step_counter = 0
            for diff in self.difficulties:
                try:
                    if (song[step_counter].attrib['Difficulty'] == diff and
                        song[step_counter].attrib['StepsType'] == self.mode):
                        try:
                            grade = smformat.highscore_grade(song[step_counter], self.theme)
                            percent = float(parse.highscore_stat(song[step_counter], "PercentDP")) * 100
                            if self.theme == "sm5" and self.icons_enabled is True:
                                cell = QTableWidgetItem('{:.2f}%'.format(percent))
                                cell.setIcon(QIcon(smtracker.__path__[0] + '/images/' + grade + '.png'))
                            else:
                                cell = QTableWidgetItem('{} ({:.2f}%)'.format(grade, percent))

                            # Get the timings for our song
                            timings = parse.highscore_timings(song[step_counter])

                            # TODO: Figure out if there's a cleaner way of
                            # doing this
                            tooltip = """Marvelous: {}
Perfect: {}
Great: {}
Good: {}
Boo: {}
Miss: {}
-----
Modifiers: {}
-----
SN2 Score: {}
DDRA Score: {}
IIDX EX Score: {}""".format(timings['W1'], timings['W2'], timings['W3'], timings['W4'],
                   timings['W5'], timings['Miss'],
                   parse.highscore_stat(song[step_counter], "Modifiers"),
                   parse.calculate_score_supernova2(song[step_counter]),
                   parse.calculate_score_ddra(song[step_counter]),
                   parse.calculate_score_iidx(song[step_counter]))
                            cell.setToolTip(tooltip)
                            self.table.setItem(current_row, current_column, cell)
                        # This exception is reached if a Song was played, but
                        # has no score (AutoPlay, PlayerAutoPlay)
                        except AttributeError:
                            cell = QTableWidgetItem()
                            self.table.setItem(current_row, current_column, cell)
                        step_counter = step_counter + 1
                    # If there are no scores for the current difficulty,
                    # add an empty cell instead
                    else:
                        cell = QTableWidgetItem()
                        self.table.setItem(current_row, current_column, cell)
                # This exception is reached if we already reached the last
                # score on a song (using step_counter)
                except IndexError:
                    cell = QTableWidgetItem()
                    self.table.setItem(current_row, current_column, cell)
                current_column = current_column + 1
            current_row = current_row + 1

        # Final table adjustments
        self.table.resizeColumnsToContents()
        self.table.setSortingEnabled(True)
        self.table.sortByColumn(0, Qt.AscendingOrder)
示例#40
0
    def createRow(self, param, name_editable=False, value_editable=True, comments_editable=True, index=-1):
        """
        Create a row in the table for a param.
        Input:
            param: ParamNode
        Return:
            BaseRowItem derived object
        """
        row = self.rowCount()
        if index >= 0:
            row = index
        self.insertRow(row)
        name_item = QTableWidgetItem(param.name)
        name_item.setData(Qt.UserRole, param)

        if not name_editable:
            name_item.setFlags(Qt.ItemIsEnabled)

        if param.required:
            color = QColor(255, 204, 153)
            brush = QBrush(color)
            name_item.setBackground(brush)
        elif param.user_added:
            color = QColor("cyan")
            brush = QBrush(color)
            name_item.setBackground(brush)

        name_item.setText(param.name)
        self.setItem(row, 0, name_item)

        if param.cpp_type == "bool":
            checkbox = QCheckBox()
            if param.value == "true":
                checkbox.setCheckState(Qt.Checked)
            else:
                checkbox.setCheckState(Qt.Unchecked)
            checkbox.pressed.connect(self.changed)
            self.setCellWidget(row, 1, checkbox)
        else:
            value_item = QTableWidgetItem(param.value)
            if not value_editable or param.name == "type":
                value_item.setFlags(Qt.ItemIsEnabled)
            else:
                name_item.setToolTip(param.toolTip())

            self.setItem(row, 1, value_item)

        comments_item = QTableWidgetItem(param.comments)
        if not comments_editable:
            comments_item.setFlags(Qt.ItemIsEnabled)
        self.setItem(row, 3, comments_item)

        watch_blocks = self._getChildrenOfNodeOptions(param.cpp_type)
        if param.cpp_type == "FileName" or param.cpp_type == "MeshFileName" or param.cpp_type == "FileNameNoExtension":
            self._createFilenameOption(param)
        elif watch_blocks:
            self._createBlockWatcher(param, watch_blocks)
        elif param.options:
            self._createOptions(param)
        elif param.user_added:
            button = QPushButton("Remove")
            button.clicked.connect(lambda checked: self._removeButtonClicked(name_item))
            self.setCellWidget(row, 2, button)
        else:
            option_item = QTableWidgetItem()
            option_item.setFlags(Qt.NoItemFlags)
            self.setItem(row, 2, option_item)