示例#1
0
文件: ui_control.py 项目: tgbrow/DREW
 def updateZoneTable(self, zone, isNew):
     if (isNew):
         self.tables[TID_Z].insertRow(0)
         # "Name" item with xmlId data
         item = QTableWidgetItem()
         item.setTextAlignment(ITEM_ALIGN_FLAGS)
         item.setFlags(ITEM_INTERACT_FLAGS)
         item.setText(zone.name)
         item.setData(5, zone.xmlId)
         self.tables[TID_Z].setItem(0, 0, item)
         # "Module ID" item
         item = QTableWidgetItem()
         item.setTextAlignment(ITEM_ALIGN_FLAGS)
         item.setFlags(ITEM_INTERACT_FLAGS)
         item.setText(str(zone.hwId))
         self.tables[TID_Z].setItem(0, 1, item)
         # "Threshold" item
         item = QTableWidgetItem()
         item.setTextAlignment(ITEM_ALIGN_FLAGS)
         item.setFlags(ITEM_INTERACT_FLAGS)
         item.setText(str(zone.threshold))
         self.tables[TID_Z].setItem(0, 2, item)
     else:
         items = self.tables[TID_Z].selectedItems()
         items[0].setText(zone.name)
         items[1].setText(str(zone.hwId))
         items[2].setText(str(zone.threshold))
    def post_alert(self, id, msg, quiet=False):
        if id in self.__hidden_uavs:
            return #don't post alerts on UAVs I've said I don't care about

        if id not in self.__alerts:
            self.__alerts[id] = {}

        self.__alerts[id]["time"] = time.time()
        
        if "alerts" not in self.__alerts[id]:
            self.__alerts[id]["alerts"] = []

        if msg not in self.__alerts[id]["alerts"]:
            self.__alerts[id]['alerts'].append(msg)
            
            if quiet is False:
                self.__speech.say(msg + " alert on " + str(id))

        #already have alerts for this UAV?
        if 'row' in self.__alerts[id]:
            row = self.__alerts[id]['row']
        else:
            #put alert in alert table
            self.__ui.tbl_alerts.insertRow(self.__ui.tbl_alerts.rowCount())
            row = self.__ui.tbl_alerts.rowCount()-1
            next_item = QTableWidgetItem()
            next_item.setData(Qt.DisplayRole, id)
            self.__ui.tbl_alerts.setItem(row, self.__ALRT_ID_COL, next_item)
            self.__ui.tbl_alerts.setItem(row, self.__ALRT_MSGS_COL,
                    QTableWidgetItem())
       
            self.__alerts[id]['row'] = row

        self.__ui.tbl_alerts.item(row, self.__ALRT_MSGS_COL).setText(
                ",".join(self.__alerts[id]["alerts"]))
示例#3
0
	def append_items(self, item_data_list):
		for data in item_data_list:
			pathname = data["pathname"]
			path,name = os.path.split(pathname)
			character = ""
			if "character" in data:
				character = data["character"]

			count = self.table.rowCount()
			self.table.insertRow(count)
			# thumbnail
			img = QImage()
			img.load(pathname)
			thumbnail_item = QTableWidgetItem()
			thumbnail_item.setTextAlignment(Qt.AlignCenter);
			thumbnail_item.setData(Qt.DecorationRole, QPixmap.fromImage(img));
			self.table.setItem(count, 0, thumbnail_item)
			# name
			name_item = QTableWidgetItem(name)
			name_item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
			self.table.setItem(count, 1, name_item)
			# character
			self.table.setItem(count, 2, QTableWidgetItem(character))

			self.image_config.append({
				"image":pathname,
				"character":character,    
			})

		self.table.resizeColumnToContents(0)		
    def createGUI(self):
        tableData = [
            ("Alice", QColor('aliceblue')),
            ("Neptun", QColor('aquamarine')),
            ("Ferdinand", QColor('springgreen'))
        ]

        table = QTableWidget(3, 2)
        table.setHorizontalHeaderLabels(["Name", "Hair Color"])
        table.verticalHeader().setVisible(False)
        table.resize(150, 50)

        for i, (name, color) in enumerate(tableData):
            nameItem = QTableWidgetItem(name)
            colorItem = QTableWidgetItem()
            colorItem.setData(Qt.DisplayRole, color)
            table.setItem(i, 0, nameItem)
            table.setItem(i, 1, colorItem)

        table.resizeColumnToContents(0)
        table.horizontalHeader().setStretchLastSection(True)

        layout = QGridLayout()
        layout.addWidget(table, 0, 0)
        self.setLayout(layout)

        self.setWindowTitle("Color Editor Factory")
示例#5
0
文件: pay.py 项目: Meller008/CRM-Avi
    def set_table_info(self):
        self.table_items = my_sql.sql_select(self.query_table_select)
        if "mysql.connector.errors" in str(type(self.table_items)):
                QMessageBox.critical(self, "Ошибка sql получение таблицы", self.table_items.msg, QMessageBox.Ok)
                return False

        if not self.table_items:
            self.table_widget.clearContents()
            self.table_widget.setRowCount(0)
            return False

        self.table_widget.clearContents()
        self.table_widget.setRowCount(0)
        for table_typle in self.table_items:
            self.table_widget.insertRow(self.table_widget.rowCount())

            if table_typle[3] > 0:
                color = QBrush(QColor(150, 255, 161, 255))
            else:
                color = QBrush(QColor(252, 141, 141, 255))

            for column in range(1, len(table_typle)):
                if isinstance(table_typle[column], Decimal):
                    text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(table_typle[column]))
                elif isinstance(table_typle[column], datetime.date):
                    text = table_typle[column].strftime("%d.%m.%Y")
                else:
                    text = str(table_typle[column])

                item = QTableWidgetItem(text)
                item.setData(5, table_typle[0])
                item.setBackground(color)
                self.table_widget.setItem(self.table_widget.rowCount() - 1, column - 1, item)
示例#6
0
    def of_tree_select_order(self, order):
        query = """SELECT `order`.Id, clients.Name, clients_actual_address.Name, `order`.Number_Order, `order`.Date_Shipment, `order`.Number_Doc
                      FROM `order` LEFT JOIN clients ON `order`.Client_Id = clients.Id
                        LEFT JOIN clients_actual_address ON `order`.Clients_Adress_Id = clients_actual_address.Id
                      WHERE `order`.Id = %s"""
        sql_info = my_sql.sql_select(query, (order[1],))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self, "Ошибка sql получения информации о заказе", sql_info.msg, QMessageBox.Ok)
            return False

        if not sql_info:
            return False

        order = sql_info[0]

        self.tw_order.insertRow(self.tw_order.rowCount())
        table_item = QTableWidgetItem(str(order[1]))
        table_item.setData(-1, order[0])
        self.tw_order.setItem(self.tw_order.rowCount()-1, 0, table_item)

        table_item = QTableWidgetItem(str(order[2]))
        table_item.setData(-1, order[0])
        self.tw_order.setItem(self.tw_order.rowCount()-1, 1, table_item)

        table_item = QTableWidgetItem(str(order[3]))
        table_item.setData(-1, order[0])
        self.tw_order.setItem(self.tw_order.rowCount()-1, 2, table_item)

        table_item = QTableWidgetItem(order[4].strftime("%d.%m.%Y"))
        table_item.setData(-1, order[0])
        self.tw_order.setItem(self.tw_order.rowCount()-1, 3, table_item)

        table_item = QTableWidgetItem(str(order[5]))
        table_item.setData(-1, order[0])
        self.tw_order.setItem(self.tw_order.rowCount()-1, 4, table_item)
示例#7
0
    def addImage(self):
        fileNames, _ = QFileDialog.getOpenFileNames(self, "Open Images", '',
                "Images (*.png *.xpm *.jpg);;All Files (*)")

        for fileName in fileNames:
            row = self.imagesTable.rowCount()
            self.imagesTable.setRowCount(row + 1)

            imageName = QFileInfo(fileName).baseName()
            item0 = QTableWidgetItem(imageName)
            item0.setData(Qt.UserRole, fileName)
            item0.setFlags(item0.flags() & ~Qt.ItemIsEditable)

            item1 = QTableWidgetItem("Normal")
            item2 = QTableWidgetItem("Off")

            if self.guessModeStateAct.isChecked():
                if '_act' in fileName:
                    item1.setText("Active")
                elif '_dis' in fileName:
                    item1.setText("Disabled")
                elif '_sel' in fileName:
                    item1.setText("Selected")

                if '_on' in fileName:
                    item2.setText("On")

            self.imagesTable.setItem(row, 0, item0)
            self.imagesTable.setItem(row, 1, item1)
            self.imagesTable.setItem(row, 2, item2)
            self.imagesTable.openPersistentEditor(item1)
            self.imagesTable.openPersistentEditor(item2)

            item0.setCheckState(Qt.Checked)
示例#8
0
    def ui_calc(self):
        query = """SELECT pack.Cut_Id, pack.Number, CONCAT(product_article.Article, ' (', product_article_size.Size, ') [', product_article_parametrs.Name, ']'),
                            clients.Name, pack.Date_Make
                          FROM pack LEFT JOIN clients ON pack.Client_Id = clients.Id
                            LEFT JOIN product_article_parametrs ON pack.Article_Parametr_Id = product_article_parametrs.Id
                            LEFT JOIN product_article_size ON product_article_parametrs.Product_Article_Size_Id = product_article_size.Id
                            LEFT JOIN product_article ON product_article_size.Article_Id = product_article.Id
                            WHERE pack.Date_Make >= %s AND pack.Date_Make <= %s"""

        sql_info = my_sql.sql_select(query, (self.de_date_from.date().toString(Qt.ISODate), self.de_date_to.date().toString(Qt.ISODate)))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self, "Ошибка sql получения принятых пачек", sql_info.msg, QMessageBox.Ok)
            return False

        self.tableWidget.clearContents()
        self.tableWidget.setRowCount(0)

        if not sql_info:
            return False

        for table_typle in sql_info:
            self.tableWidget.insertRow(self.tableWidget.rowCount())
            for column in range(len(table_typle)):
                if isinstance(table_typle[column], datetime.date):
                    text = table_typle[column].strftime("%d.%m.%Y")
                else:
                    text = str(table_typle[column])
                item = QTableWidgetItem(text)
                item.setData(5, table_typle[0])
                self.tableWidget.setItem(self.tableWidget.rowCount() - 1, column , item)
示例#9
0
文件: ui_control.py 项目: tgbrow/DREW
 def updateDeviceTable(self, device, isNew):
     if (isNew):
         self.tables[TID_D].insertRow(0)
         # "Name" item with xmlId data
         item = QTableWidgetItem()
         item.setTextAlignment(ITEM_ALIGN_FLAGS)
         item.setFlags(ITEM_INTERACT_FLAGS)
         item.setText(device.name)
         item.setData(5, device.xmlId)
         self.tables[TID_D].setItem(0, 0, item)
         # "Bluetooth Address" item
         item = QTableWidgetItem()
         item.setTextAlignment(ITEM_ALIGN_FLAGS)
         item.setFlags(ITEM_INTERACT_FLAGS)
         item.setText(device.hwId)
         self.tables[TID_D].setItem(0, 1, item)
         # "Type" item
         item = QTableWidgetItem()
         item.setTextAlignment(ITEM_ALIGN_FLAGS)
         item.setFlags(ITEM_INTERACT_FLAGS)
         item.setText(DEVICE_TYPES[device.devType])
         self.tables[TID_D].setItem(0, 2, item)
     else:
         items = self.tables[TID_D].selectedItems()
         items[0].setText(device.name)
         items[2].setText(device.hwId)
         items[2].setText(DEVICE_TYPES[device.devType])
示例#10
0
    def set_table_info(self):
        self.table_items = my_sql.sql_select(self.query_table_select)
        if "mysql.connector.errors" in str(type(self.table_items)):
                QMessageBox.critical(self, "Ошибка sql получение таблицы", self.table_items.msg, QMessageBox.Ok)
                return False

        self.table_widget.clearContents()
        self.table_widget.setRowCount(0)

        if not self.table_items:
            return False

        for table_typle in self.table_items:
            self.table_widget.insertRow(self.table_widget.rowCount())
            for column in range(1, len(table_typle)):
                if isinstance(table_typle[column], Decimal):
                    text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(table_typle[column]))
                elif isinstance(table_typle[column], datetime.date):
                    text = table_typle[column].strftime("%d.%m.%Y")
                else:
                    text = str(table_typle[column])
                item = QTableWidgetItem(text)
                if column == 8:
                    if table_typle[0] in self.other_value:
                        item.setCheckState(Qt.Checked)
                    else:
                        item.setCheckState(Qt.Unchecked)
                item.setData(5, table_typle[0])
                self.table_widget.setItem(self.table_widget.rowCount() - 1, column - 1, item)
示例#11
0
文件: tree.py 项目: Meller008/CRM-Avi
    def set_table_info(self):
        self.table_widget.setSortingEnabled(False)
        self.table_items = my_sql.sql_select(self.query_table_select)
        if "mysql.connector.errors" in str(type(self.table_items)):
                QMessageBox.critical(self, "Ошибка sql получение таблицы", self.table_items.msg, QMessageBox.Ok)
                return False

        self.table_widget.clearContents()
        self.table_widget.setRowCount(0)

        if not self.table_items:
            return False

        for table_typle in self.table_items:
            self.table_widget.insertRow(self.table_widget.rowCount())
            for column in range(2, len(table_typle)):
                item = QTableWidgetItem(str(table_typle[column]))
                item.setData(5, table_typle[0])
                self.table_widget.setItem(self.table_widget.rowCount() - 1, column - 2, item)

        self.table_widget.setSortingEnabled(True)

        try:
            item = self.tree_widget.currentItem()
            if item.data(0, 5) >= 0:  # Проверка не выбрано ли показать все!
                self.ui_sorting(item)
        except:
            pass

        if self.select_item:
            self.open_id(self.select_item)
            self.select_item = None
示例#12
0
 def add_song(self, song_title, song_artist, song_path):
     title = QTableWidgetItem(song_title)
     title.setData(Qt.UserRole, song_path)
     title.setSizeHint(QSize(0, 30))
     artist = QTableWidgetItem(song_artist)
     row = self.ui.fileWidget.rowCount()
     self.ui.fileWidget.insertRow(row)
     self.ui.fileWidget.setItem(row, 0, title)
     self.ui.fileWidget.setItem(row, 1, artist)
示例#13
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!")
示例#14
0
 def add_adress(self):
     adress = ClientAdress()
     if adress.exec() == 0:
         return False
     row = self.tw_adres.rowCount()
     self.tw_adres.insertRow(row)
     table_item = QTableWidgetItem(adress.le_name.text())
     table_item.setData(-2, "new")
     self.tw_adres.setItem(row, 0, table_item)
     table_item = QTableWidgetItem(adress.le_adres.text())
     self.tw_adres.setItem(row, 1, table_item)
     table_item = QTableWidgetItem(adress.le_kpp.text())
     self.tw_adres.setItem(row, 2, table_item)
示例#15
0
    def table_sort(self):
        date = QDate.currentDate()
        for i in range(0, 50, 5):
            self.tw_sort.insertRow(self.tw_sort.rowCount())

            item = QTableWidgetItem()
            item.setData(Qt.DisplayRole, str(i))
            self.tw_sort.setItem(self.tw_sort.rowCount() - 1, 0, item)


            item = QTableWidgetItem()
            item.setData(Qt.DisplayRole, date.addDays(-i))
            self.tw_sort.setItem(self.tw_sort.rowCount() - 1, 1, item)
示例#16
0
    def ui_select_position(self):
        query = """SELECT Id, Class, Atr1, Atr2, Atr_Value FROM access WHERE Staff_Position_Id = %s ORDER BY Class"""
        sql_info = my_sql.sql_select(query, (self.cb_position.currentData(),))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self, "Ошибка sql при получении доступов", sql_info.msg, QMessageBox.Ok)
            return False

        self.worker = None
        self.position = self.cb_position.currentData()

        self.tw_access.clearContents()
        self.tw_access.setRowCount(0)

        for row, item in enumerate(sql_info):
            self.tw_access.insertRow(row)

            new_table_item = QTableWidgetItem(str(item[1]))
            new_table_item.setData(-2, item[0])
            self.tw_access.setItem(row, 0, new_table_item)

            new_table_item = QTableWidgetItem(str(item[2]))
            new_table_item.setData(-2, item[0])
            self.tw_access.setItem(row, 1, new_table_item)

            new_table_item = QTableWidgetItem(str(item[3]))
            new_table_item.setData(-2, item[0])
            self.tw_access.setItem(row, 2, new_table_item)

            new_table_item = QTableWidgetItem(str(item[4]))
            new_table_item.setData(-2, item[0])
            self.tw_access.setItem(row, 3, new_table_item)
    def add_uav_to_dashboard(self, uav_id):
        #add table row
        self.__ui.tbl_uav_list.insertRow(self.__ui.tbl_uav_list.rowCount())
        next_item = QTableWidgetItem()
        #sort ID column numerically, not lexicographically:
        next_item.setData(Qt.DisplayRole, uav_id)
        self.__ui.tbl_uav_list.setItem(
                self.__ui.tbl_uav_list.rowCount() - 1, self.__ID_COL, next_item)

        #this row has never been updated
        self.__uav_update_map[uav_id] = 0.0
        self.__uav_row_map[uav_id] = self.__ui.tbl_uav_list.rowCount()-1

        self.init_row(uav_id)
示例#18
0
 def drawFieldsTable(self): # Draws the fields table on startup and redraws it when changed
   fields = self.fields
   self.fieldsTable.setRowCount(0)
   for i in range(len(fields)):
     self.fieldsTable.setRowCount(i+1)
     item = QTableWidgetItem(fields[i].name())
     item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
     item.setData(Qt.UserRole, i) # set field index
     self.fieldsTable.setItem(i,0,item)
     item = QTableWidgetItem(fields[i].typeName())
     item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
     self.fieldsTable.setItem(i,1,item)
   self.fieldsTable.setColumnWidth(0, 128)
   self.fieldsTable.setColumnWidth(1, 64)
示例#19
0
 def add_number(self):
     number = ClientNumber()
     number.de_date_from.setDate(QDate.currentDate())
     if number.exec() == 0:
         return False
     row = self.tw_vendor_number.rowCount()
     self.tw_vendor_number.insertRow(row)
     table_item = QTableWidgetItem(number.le_vendor.text())
     table_item.setData(-2, "new")
     self.tw_vendor_number.setItem(row, 0, table_item)
     table_item = QTableWidgetItem(number.le_contract.text())
     self.tw_vendor_number.setItem(row, 1, table_item)
     table_item = QTableWidgetItem(number.de_date_from.date().toString("dd.MM.yyyy"))
     self.tw_vendor_number.setItem(row, 2, table_item)
示例#20
0
文件: pay.py 项目: Meller008/CRM-Avi
    def set_table_road(self):
        date_old = self.de_road_date.date()
        date_old = datetime.date(date_old.year(), date_old.month(), date_old.day())

        query = """SELECT One_year, Many_year FROM program_settings_road"""
        sql_info = my_sql.sql_select(query)
        if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql получение цен оплаты проезда", sql_info.msg, QMessageBox.Ok)
                return False

        self.one_year_price = sql_info[0][0]
        self.many_year_price = sql_info[0][1]

        query = """SELECT Id, First_Name, Last_Name, Date_Recruitment
                    FROM staff_worker_info
                    WHERE Date_Recruitment < %s AND `Leave` = 0"""
        sql_info = my_sql.sql_select(query, (date_old.replace(date_old.year-1), ))
        if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql получение сотрудников со стажем", sql_info.msg, QMessageBox.Ok)
                return False

        self.tw_road.clearContents()
        self.tw_road.setRowCount(0)

        for row, worker in enumerate(sql_info):
            self.tw_road.insertRow(row)

            delta_date = date_old - worker[3]

            if delta_date.days < 730:
                color = QBrush(QColor(252, 252, 139, 255))
                price = self.one_year_price
            else:
                color = QBrush(QColor(252, 190, 139, 255))
                price = self.many_year_price

            new_table_item = QTableWidgetItem(str(worker[2]) + " " + str(worker[1]))
            new_table_item.setData(-2, worker[0])
            new_table_item.setBackground(color)
            new_table_item.setFlags(Qt.ItemIsEnabled)
            self.tw_road.setItem(row, 0, new_table_item)

            new_table_item = QTableWidgetItem(worker[3].strftime("%d.%m.%Y"))
            new_table_item.setData(-2, worker[0])
            new_table_item.setBackground(color)
            new_table_item.setFlags(Qt.ItemIsEnabled)
            self.tw_road.setItem(row, 1, new_table_item)

            new_table_item = QTableWidgetItem(str(delta_date.days))
            new_table_item.setData(-2, worker[0])
            new_table_item.setBackground(color)
            new_table_item.setFlags(Qt.ItemIsEnabled)
            self.tw_road.setItem(row, 2, new_table_item)

            new_table_item = QTableWidgetItem(str(price))
            new_table_item.setData(-2, worker[0])
            new_table_item.setBackground(color)
            self.tw_road.setItem(row, 3, new_table_item)
示例#21
0
    def ui_calc(self):
        query = """SELECT staff_worker_info.Id, staff_worker_info.Last_Name,
                        min((cut.Weight_Rest * 100) / (cut.Weight_Rest + (SELECT SUM(Weight) FROM pack WHERE pack.Cut_Id = cut.Id))),
                        avg((cut.Weight_Rest * 100) / (cut.Weight_Rest + (SELECT SUM(Weight) FROM pack WHERE pack.Cut_Id = cut.Id))),
                        max((cut.Weight_Rest * 100) / (cut.Weight_Rest + (SELECT SUM(Weight) FROM pack WHERE pack.Cut_Id = cut.Id)))
                      FROM cut LEFT JOIN staff_worker_info ON cut.Worker_Id = staff_worker_info.Id
                      WHERE cut.Date_Cut >= %s AND  cut.Date_Cut <= %s
                      GROUP BY cut.Worker_Id"""
        sql_info = my_sql.sql_select(query, (self.de_date_from.date().toString(Qt.ISODate), self.de_date_to.date().toString(Qt.ISODate)))
        if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql получение значение обрези", sql_info.msg, QMessageBox.Ok)
                return False

        self.tw_work.clearContents()
        self.tw_work.setRowCount(0)

        if not sql_info:
            return False

        list_awg = []

        for table_typle in sql_info:
            self.tw_work.insertRow(self.tw_work.rowCount())
            list_awg.append(table_typle[3])
            for column in range(1, len(table_typle)):
                if isinstance(table_typle[column], Decimal):
                    text = str(round(float(table_typle[column]), 4))
                else:
                    text = str(table_typle[column])
                item = QTableWidgetItem(text)
                item.setData(5, table_typle[0])
                self.tw_work.setItem(self.tw_work.rowCount() - 1, column - 1, item)

        query = """SELECT min((cut.Weight_Rest * 100) / (cut.Weight_Rest + (SELECT SUM(Weight) FROM pack WHERE pack.Cut_Id = cut.Id))),
                        avg((cut.Weight_Rest * 100) / (cut.Weight_Rest + (SELECT SUM(Weight) FROM pack WHERE pack.Cut_Id = cut.Id))),
                        max((cut.Weight_Rest * 100) / (cut.Weight_Rest + (SELECT SUM(Weight) FROM pack WHERE pack.Cut_Id = cut.Id)))
                      FROM cut WHERE cut.Date_Cut >= %s AND  cut.Date_Cut <= %s"""
        sql_info = my_sql.sql_select(query, (self.de_date_from.date().toString(Qt.ISODate), self.de_date_to.date().toString(Qt.ISODate)))
        if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql получение значение обрези", sql_info.msg, QMessageBox.Ok)
                return False

        if not sql_info:
            return False

        self.le_min.setText(str(round(sql_info[0][0], 4)))
        self.le_awg.setText(str(round(sql_info[0][1], 4)))
        self.le_max.setText(str(round(sql_info[0][2], 4)))
 def remplirTableau(self):
     self.tableResultats.setRowCount(len(self.listeDonnees))
     for i, dictionnaire in enumerate(self.listeDonnees):
         # Creation des QTableWidgetItem
         colonne = 0
         for cle in self.listeCleDonnees:
             if(isinstance(dictionnaire[cle], datetime.date)):
                 self.tableResultats.setItem(i, colonne, QTableWidgetItem((str(dictionnaire[cle]))))
             elif (cle == "IdEquipement" or cle == "NumeroBonTravail"):
                 item = QTableWidgetItem()
                 item.setData(Qt.EditRole, int(dictionnaire[cle]))
                 self.tableResultats.setItem(i, colonne, item)
             else:
                 self.tableResultats.setItem(i, colonne, QTableWidgetItem((dictionnaire[cle])))
             colonne += 1
         self.tableResultats.resizeColumnsToContents()
示例#23
0
	def peupler_tableau(self):
		depenses = controleur_depenses.liste_depenses()
		self.fenetre.ui.tabDep.setRowCount(len(depenses))
		self.fenetre.ui.tabDep.setColumnCount(4)
		i=0
		for depense in depenses:
			nom = QTableWidgetItem(depense.nom)
			nom.setData(Qt.UserRole, depense.id)
			self.fenetre.ui.tabDep.setItem(i,0,nom)
			description = QTableWidgetItem(depense.description)
			self.fenetre.ui.tabDep.setItem(i,1,description)
			montant = QTableWidgetItem(str(depense.montant))
			self.fenetre.ui.tabDep.setItem(i,2,montant)
			categorie = QTableWidgetItem(depense.categorie.nom)
			self.fenetre.ui.tabDep.setItem(i,3,categorie)
			i+=1
示例#24
0
文件: analyst.py 项目: the0/pyfrbs
 def onAddValueClicked(self):
     rows = self.uiValuesTable.rowCount()
     self.uiValuesTable.setRowCount(rows + 1)
     item = QTableWidgetItem(self.uiInputCombo.currentText())
     item.setData(Qt.UserRole, self.uiInputCombo.currentData())
     self.uiValuesTable.setItem(rows, 0, item)
     item = QTableWidgetItem(self.uiValueEdit.text())
     self.uiValuesTable.setItem(rows, 1, item)
     self.uiValuesTable.setColumnWidth(0, self.uiValuesTable.width() / 3 * 2 - 1)
     self.uiValuesTable.setColumnWidth(1, self.uiValuesTable.width() / 3 - 1)
     self.uiOutputCombo.removeItem(self.uiInputCombo.currentIndex())
     self.uiOutputCombo.setCurrentIndex(-1)
     self.uiInputCombo.removeItem(self.uiInputCombo.currentIndex())
     self.uiInputCombo.setCurrentIndex(-1)
     self.uiRemoveValueButton.setEnabled(True)
     self.uiClearValueButton.setEnabled(True)
 def remplirTableau(self):
     self.tableResultats.setRowCount(len(self.listeResultat))
     if(any(self.listeResultat)):
         for i, dictionnaire in enumerate(self.listeResultat):
             # Creation des QTableWidgetItem
             colonne = 0
             for cle in self.listeCleDonnees:
                 if(cle == "Id"):
                     item = QTableWidgetItem()
                     item.setData(Qt.EditRole, int(dictionnaire[cle]))
                     self.tableResultats.setItem(i, colonne, item)
                 else:
                     self.tableResultats.setItem(i, colonne, QTableWidgetItem(str(dictionnaire[cle])))
                 colonne += 1
             self.tableResultats.resizeColumnsToContents()
     else:
         self.chargement.aucunResultat.emit()
示例#26
0
 def double_click_adress(self, select_items):
     row = select_items
     select_adres = (self.tw_adres.item(row, 0).data(-1), self.tw_adres.item(row, 0).text(), self.tw_adres.item(row, 1).text(), self.tw_adres.item(row, 2).text())
     adress = ClientAdress()
     adress.le_name.setText(select_adres[1])
     adress.le_adres.setText(select_adres[2])
     adress.le_kpp.setText(select_adres[3])
     if adress.exec() == 0:
         return False
     sql_status = "update" if (self.tw_adres.item(row, 0).data(-2) != "new") else "new"
     table_item = QTableWidgetItem(adress.le_name.text())
     table_item.setData(-1, select_adres[0])
     table_item.setData(-2, sql_status)
     self.tw_adres.setItem(row, 0, table_item)
     table_item = QTableWidgetItem(adress.le_adres.text())
     self.tw_adres.setItem(row, 1, table_item)
     table_item = QTableWidgetItem(adress.le_kpp.text())
     self.tw_adres.setItem(row, 2, table_item)
示例#27
0
def load_table(table, headers, data, checkFirstColumn=True):
    table.setHorizontalHeaderLabels(headers)
    table.horizontalHeader().setStretchLastSection(True)
    table.setSelectionBehavior(QAbstractItemView.SelectRows)
    for i in range(table.rowCount()):
        table.removeRow(0)
    for r, row in enumerate(data):
        table.insertRow(r)
        for index, colItem in enumerate(row):
            item = QTableWidgetItem(colItem)
            table.setItem(r, index, item)
            if index == 0 and checkFirstColumn:
                item.setData(Qt.UserRole, row)
                item.setCheckState(Qt.Unchecked)
                item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled |
                              Qt.ItemIsUserCheckable)
            else:
                item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
示例#28
0
def populateTableWidget(tableWidget):
    staticData = (
        ("Mass in B-Minor", "Baroque", "J.S. Bach", 5),
        ("Three More Foxes", "Jazz", "Maynard Ferguson", 4),
        ("Sex Bomb", "Pop", "Tom Jones", 3),
        ("Barbie Girl", "Pop", "Aqua", 5),
    )

    for row, (title, genre, artist, rating) in enumerate(staticData):
        item0 = QTableWidgetItem(title)
        item1 = QTableWidgetItem(genre)
        item2 = QTableWidgetItem(artist)
        item3 = QTableWidgetItem()
        item3.setData(0, StarRating(rating))
        tableWidget.setItem(row, 0, item0)
        tableWidget.setItem(row, 1, item1)
        tableWidget.setItem(row, 2, item2)
        tableWidget.setItem(row, 3, item3)
示例#29
0
    def add_item_from_model(self, music_model, tracks_type):
        artist_name = ''
        music_item = QTableWidgetItem(music_model['name'])
        album_item = QTableWidgetItem(music_model['album']['name'])
        if len(music_model['artists']) > 0:
            artist_name = music_model['artists'][0]['name']
        artist_item = QTableWidgetItem(artist_name)

        duration = music_model['duration']
        m = int(duration / 60000)
        s = int((duration % 60000) / 1000)
        duration = str(m) + ':' + str(s)
        duration_item = QTableWidgetItem(duration)

        music_item.setData(Qt.UserRole, music_model)
        row = self.rowCount()
        self.setRowCount(row + 1)

        self.setItem(row, 1, music_item)
        self.setItem(row, 2, artist_item)
        self.setItem(row, 3, album_item)
        self.setItem(row, 4, duration_item)

        if self._tracks_type is not 4:
            self.setColumnHidden(0, False)
            if MusicModel.mv_available(music_model):
                mv_label = QLabel('MV')
                mv_label.setObjectName('tracks_table_mv_btn')
                self.setCellWidget(row, 0, mv_label)
        else:
            self.setColumnHidden(0, True)

        if tracks_type is 0:
            btn = QLabel('✗')
            btn.setObjectName('tracks_table_remove_btn')
            self.setCellWidget(row, 5, btn)

        self.setRowHeight(row, 35)
        row_mid = dict()
        row_mid['mid'] = music_model['id']
        row_mid['row'] = row

        return True
示例#30
0
文件: tree.py 项目: Meller008/CRM-Avi
    def ui_sorting(self, select_tree):
        tree_id = select_tree.data(0, 5)
        if not self.table_items:
            return False

        self.table_widget.setSortingEnabled(False)
        if tree_id == -1:
            self.set_table_info()
        else:
            self.table_widget.clearContents()
            self.table_widget.setRowCount(0)
            for table_typle in self.table_items:
                if table_typle[1] == tree_id:
                    self.table_widget.insertRow(self.table_widget.rowCount())
                    for column in range(2, len(table_typle)):
                        item = QTableWidgetItem(str(table_typle[column]))
                        item.setData(5, table_typle[0])
                        self.table_widget.setItem(self.table_widget.rowCount() - 1, column - 2, item)

        self.table_widget.setSortingEnabled(True)
示例#31
0
文件: main.py 项目: 1314liuwei/PyQt5
    def __createItemsARow(self, rowNo, name, sex, birth, nation, isParty,
                          score):
        """创建行

        :param rowNo: 行号
        :param name: 学生名字
        :param sex: 学生性别
        :param birth: 出生日期
        :param nation: 民族
        :param isParty: 是否为党员
        :param score: 得分
        :return: None
        """
        ID = 2018101000 + rowNo  # 学号

        # 姓名
        item = QTableWidgetItem(name, CellType.ctName.value)
        item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)  # 设置对齐方式
        font = item.font()  # 设置字体
        font.setBold(True)
        item.setFont(font)
        item.setData(Qt.UserRole, ID)  # 关联数据
        self._ui.tableWidget.setItem(rowNo, FieldColNum.colName.value,
                                     item)  # 创建姓名单元格

        # 性别
        if sex == '男':
            icon = QIcon(':icon/images/boy.ico')  # 设置图标
        else:
            icon = QIcon(':icon/images/girl.ico')
        item = QTableWidgetItem(sex, CellType.ctSex.value)
        item.setIcon(icon)
        item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self._ui.tableWidget.setItem(rowNo, FieldColNum.colSex.value,
                                     item)  # 创建性别单元格

        # 生日
        strBirth = birth.toString('yyyy-MM-dd')  # 将时间转换成字符串
        item = QTableWidgetItem(strBirth, CellType.ctBirth.value)
        item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self._ui.tableWidget.setItem(rowNo, FieldColNum.colBirth.value,
                                     item)  # 创建生日单元格

        # 民族
        item = QTableWidgetItem(nation, CellType.ctNation.value)
        item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        if nation != '汉':
            item.setForeground(QBrush(Qt.blue))
        self._ui.tableWidget.setItem(rowNo, FieldColNum.colNation.value,
                                     item)  # 创建民族单元格

        # 得分
        item = QTableWidgetItem(str(score), CellType.ctScore.value)
        item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self._ui.tableWidget.setItem(rowNo, FieldColNum.colScore.value,
                                     item)  # 创建得分单元格

        # 是否是党员
        item = QTableWidgetItem('党员', CellType.ctPartyM.value)
        item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        if isParty:
            item.setCheckState(Qt.Checked)
        else:
            item.setCheckState(Qt.Unchecked)
        item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled
                      | Qt.ItemIsUserCheckable)
        item.setBackground(QBrush(Qt.yellow))
        self._ui.tableWidget.setItem(rowNo, FieldColNum.colPartM.value,
                                     item)  # 创建是否是党员单元格
示例#32
0
    def FillLocations(self, callingWidget):

        species = self.lblCommonName.text()
        currentItem = callingWidget.currentItem()

        filter = code_Filter.Filter()
        filter.setSpeciesName(species)

        if callingWidget.objectName() == "trDates":
            locationWidget = self.tblYearLocations

            # check if currentItem is a year
            if currentItem.parent() is None:
                filter.setStartDate(currentItem.text(0) + "-01-01")
                filter.setEndDate(currentItem.text(0) + "-12-31")

            # check if currentItem is a month
            elif currentItem.parent().parent() is None:
                month = currentItem.text(0)
                monthNumberString = self.mdiParent.db.monthNumberDict[month]
                lastDayOfThisMonth = self.mdiParent.db.GetLastDayOfMonth(
                    monthNumberString)
                year = currentItem.parent().text(0)
                filter.setStartDate(year + "-" + monthNumberString + "-01")
                filter.setEndDate(year + "-" + monthNumberString + "-" +
                                  lastDayOfThisMonth)

            # item is a just a single date
            else:
                filter.setStartDate(currentItem.text(0))
                filter.setEndDate(currentItem.text(0))

        if callingWidget.objectName() == "trMonthDates":

            locationWidget = self.tblMonthLocations

            # check if currentItem is a month
            if currentItem.parent() is None:
                monthNumberString = self.mdiParent.db.monthNumberDict[
                    currentItem.text(0)]
                lastDayOfThisMonth = self.mdiParent.db.GetLastDayOfMonth(
                    monthNumberString)
                filter.setStartSeasonalMonth(monthNumberString)
                filter.setStartSeasonalDay("01")
                filter.setEndSeasonalMonth(monthNumberString)
                filter.setEndSeasonalDay(lastDayOfThisMonth)

            # check if currentItem is a year
            elif currentItem.parent().parent() is None:
                year = currentItem.text(0)
                monthString = currentItem.parent().text(0)
                monthNumberString = self.mdiParent.db.monthNumberDict[
                    monthString]
                filter.setStartDate(year + "-" + monthNumberString + "-01")
                filter.setEndDate(year + "-" + monthNumberString + "-31")

            # item is a just a single date
            else:
                filter.setStartDate(currentItem.text(0))
                filter.setEndDate(currentItem.text(0))

        locations = self.mdiParent.db.GetLocations(filter, "Checklist")

        locationWidget.clear()
        locationWidget.setColumnCount(2)
        locationWidget.setRowCount(len(locations))
        locationWidget.horizontalHeader().setVisible(False)
        locationWidget.verticalHeader().setVisible(False)
        header = locationWidget.horizontalHeader()
        header.setSectionResizeMode(0, QHeaderView.Stretch)
        locationWidget.setShowGrid(False)

        metrics = locationWidget.fontMetrics()
        textHeight = metrics.boundingRect("A").height()

        R = 0
        for l in locations:
            locationItem = QTableWidgetItem()
            locationItem.setText(l[0])
            # store checklist ID in hidden data component of item
            locationItem.setData(Qt.UserRole, QVariant(l[2]))
            speciesCountItem = QTableWidgetItem()
            speciesCountItem.setData(Qt.DisplayRole, l[1])
            locationWidget.setItem(R, 0, locationItem)
            locationWidget.setItem(R, 1, speciesCountItem)
            locationWidget.setRowHeight(R, textHeight * 1.1)
            R = R + 1

        self.lblLocationsForDate.setText("Checklists (" +
                                         str(locationWidget.rowCount()) + ")")
示例#33
0
    def refresh(self, reason=""):
        if len(self.wallet.dao) == 0:
            return

        if not "p" in self.wallet.dao:
            return

        filtered = []

        for p in self.wallet.dao["p"]:
            p_item = self.wallet.dao["p"][p]
            if p_item["state"] == self.filter():
                filtered.append(p_item)

        if filtered == self.list and reason != "votes":
            return

        self.list = filtered

        self.clearContents()
        self.setRowCount(len(self.list));

        for i, item in enumerate(self.list):
            proposal = item
            hash = QTableWidgetItem()
            hash.setData(Qt.DisplayRole, proposal["hash"])
            self.setItem(i, FundColumns.HASH, hash);

            desc = QTableWidgetItem()
            desc.setData(Qt.DisplayRole, proposal["description"])
            self.setItem(i, FundColumns.DESCRIPTION, desc);

            yes = QTableWidgetItem()
            yes.setData(Qt.DisplayRole, proposal["votesYes"])
            yes.setData(Qt.TextAlignmentRole, Qt.AlignCenter)
            self.setItem(i, FundColumns.YES, yes);

            no = QTableWidgetItem()
            no.setData(Qt.DisplayRole, proposal["votesNo"])
            no.setData(Qt.TextAlignmentRole, Qt.AlignCenter)
            self.setItem(i, FundColumns.NO, no);

            abs = QTableWidgetItem()
            abs.setData(Qt.DisplayRole, proposal["votesAbs"])
            abs.setData(Qt.TextAlignmentRole, Qt.AlignCenter)
            self.setItem(i, FundColumns.ABS, abs);

            cv = QTableWidgetItem()
            cv.setData(Qt.DisplayRole, proposal["requestedAmount"])
            cv.setData(Qt.TextAlignmentRole, Qt.AlignCenter)
            self.setItem(i, FundColumns.AMOUNT, cv);

            st = QTableWidgetItem()
            st.setData(Qt.DisplayRole, self.state_to_string(proposal["state"]))
            st.setData(Qt.TextAlignmentRole, Qt.AlignCenter)
            self.setItem(i, FundColumns.STATE, st);

            current_vote = self.parent.find_vote(proposal["hash"])

            mv = QTableWidgetItem()

            if current_vote == 1:
                mv.setData(Qt.DisplayRole, _("Yes"))
            if current_vote == 0:
                mv.setData(Qt.DisplayRole, _("No"))
            if current_vote == -1:
                mv.setData(Qt.DisplayRole, _("Abstain"))
            if current_vote == None:
                mv.setData(Qt.DisplayRole, _("None"))

            mv.setData(Qt.TextAlignmentRole, Qt.AlignCenter)
            self.setItem(i, FundColumns.MYVOTE, mv);
示例#34
0
 def getTableItem(self, v, p):
     item = QTableWidgetItem(v)
     if p != 0:  # Common priority uses default label color.
         item.setForeground(self.color)
     item.setData(Qt.UserRole, p)
     return item
示例#35
0
    def FillLocationTotals(self,  filter):
        self.filter = deepcopy(filter)
        
        # find all years, months, and dates in db
        dbCountries = set()
        dbStates = set()
        dbCounties = set()
        dbLocations = set()
        countryDict = defaultdict()
        stateDict = defaultdict()
        countyDict = defaultdict()
        locationDict = defaultdict()
        
        minimalSightingList = self.mdiParent.db.GetMinimalFilteredSightingsList(filter)
        
        for s in minimalSightingList:
            
            # Consider only full species, not slash or spuh entries
            commonName = s["commonName"]
            if ("/" not in commonName) and ("sp." not in commonName):
                
                if self.mdiParent.db.TestSighting(s,  filter) is True:
                    dbCountries.add(s["country"])
                    dbStates.add(s["state"])
                    if s["county"] != "":
                        dbCounties.add(s["county"])
                    dbLocations.add(s["location"])
                    
                    # create dictionaries of country, state, county, and location sighting for faster lookup
                    if s["country"] not in countryDict.keys():
                        countryDict[s["country"]] = [s]
                    else:
                        countryDict[s["country"]].append(s)                
                    
                    if s["state"] not in stateDict.keys():
                        stateDict[s["state"]] = [s]
                    else:
                        stateDict[s["state"]].append(s)                
                                 
                    if s["county"] != "":
                        if s["county"] not in countyDict.keys():
                            countyDict[s["county"]] = [s]
                        else:
                            countyDict[s["county"]].append(s)       
                                 
                    if s["location"] not in locationDict.keys():
                        locationDict[s["location"]] = [s]
                    else:
                        locationDict[s["location"]].append(s)           
        
        # check if no sightings were found. Return false if none found. Abort and display message.
        if len(countryDict) + len(stateDict) + len(countyDict) + len(locationDict) == 0:
            return(False)
        
        # set numbers of rows for each tab's grid (years, months, dates)
        self.tblCountryTotals.setRowCount(len(dbCountries))
        self.tblCountryTotals.setColumnCount(4)
        self.tblStateTotals.setRowCount(len(dbStates))
        self.tblStateTotals.setColumnCount(4)
        self.tblCountyTotals.setRowCount(len(dbCounties))
        self.tblCountyTotals.setColumnCount(4)
        self.tblLocationTotals.setRowCount(len(dbLocations))
        self.tblLocationTotals.setColumnCount(4)     
        
        self.tblCountryTotals.setShowGrid(False)        
        self.tblStateTotals.setShowGrid(False)        
        self.tblCountyTotals.setShowGrid(False)        
        self.tblLocationTotals.setShowGrid(False)        
        
        countryArray = []
        for country in dbCountries:
            countrySpecies = set()
            countryChecklists = set()
            for s in countryDict[country]:
                countrySpecies.add(s["commonName"])
                countryChecklists.add(s["checklistID"])
            countryArray.append([len(countrySpecies),  country, len(countryChecklists)])
        countryArray.sort(reverse=True)
        R = 0
        for country in countryArray:            
            rankItem = QTableWidgetItem()
            rankItem.setData(Qt.DisplayRole, R+1)
            countryItem = QTableWidgetItem()
            countryItem.setText(self.mdiParent.db.GetCountryName(country[1]))
            countryTotalItem = QTableWidgetItem()
            countryTotalItem.setData(Qt.DisplayRole, country[0])
            countryTotalItem.setTextAlignment(Qt.AlignCenter|Qt.AlignVCenter)                     
            countryChecklistTotalItem = QTableWidgetItem()
            countryChecklistTotalItem.setData(Qt.DisplayRole, country[2])
            countryChecklistTotalItem.setTextAlignment(Qt.AlignCenter|Qt.AlignVCenter)                     
            self.tblCountryTotals.setItem(R, 0, rankItem)    
            self.tblCountryTotals.setItem(R, 1, countryItem)
            self.tblCountryTotals.setItem(R, 2, countryTotalItem)
            self.tblCountryTotals.setItem(R, 3, countryChecklistTotalItem)

            R = R + 1

        stateArray = []
        for state in dbStates:
            stateSpecies = set()
            stateChecklists = set()
            for s in stateDict[state]:
                stateSpecies.add(s["commonName"])
                stateChecklists.add(s["checklistID"])
            stateArray.append([len(stateSpecies),  state, len(stateChecklists)])
        stateArray.sort(reverse=True)
        R = 0
        for state in stateArray:            
            rankItem = QTableWidgetItem()
            rankItem.setData(Qt.DisplayRole, R+1)
            stateItem = QTableWidgetItem()
            stateItem.setText(self.mdiParent.db.GetStateName(state[1]))
            stateTotalItem = QTableWidgetItem()
            stateTotalItem.setData(Qt.DisplayRole, state[0])
            stateTotalItem.setTextAlignment(Qt.AlignCenter|Qt.AlignVCenter)                     
            stateChecklistTotalItem = QTableWidgetItem()
            stateChecklistTotalItem.setData(Qt.DisplayRole, state[2])
            stateChecklistTotalItem.setTextAlignment(Qt.AlignCenter|Qt.AlignVCenter)                     
            self.tblStateTotals.setItem(R, 0, rankItem)    
            self.tblStateTotals.setItem(R, 1, stateItem)
            self.tblStateTotals.setItem(R, 2, stateTotalItem)
            self.tblStateTotals.setItem(R, 3, stateChecklistTotalItem)
            R = R + 1

        countyArray = []
        for county in dbCounties:
            if county != "" and county is not None:
                countySpecies = set()
                countyChecklists = set()
                for s in countyDict[county]:
                    countySpecies.add(s["commonName"])
                    countyChecklists.add(s["checklistID"])
                countyArray.append([len(countySpecies),  county, len(countyChecklists)])
        countyArray.sort(reverse=True)
        R = 0
        for county in countyArray:            
            rankItem = QTableWidgetItem()
            rankItem.setData(Qt.DisplayRole, R+1)
            countyItem = QTableWidgetItem()
            countyItem.setText(county[1])
            countyTotalItem = QTableWidgetItem()
            countyTotalItem.setData(Qt.DisplayRole, county[0])
            countyTotalItem.setTextAlignment(Qt.AlignCenter|Qt.AlignVCenter)                                 
            countyChecklistTotalItem = QTableWidgetItem()
            countyChecklistTotalItem.setData(Qt.DisplayRole, county[2])
            countyChecklistTotalItem.setTextAlignment(Qt.AlignCenter|Qt.AlignVCenter)                                 
            self.tblCountyTotals.setItem(R, 0, rankItem)    
            self.tblCountyTotals.setItem(R, 1, countyItem)
            self.tblCountyTotals.setItem(R, 2, countyTotalItem)
            self.tblCountyTotals.setItem(R, 3, countyChecklistTotalItem)
            R = R + 1

        locationArray = []
        for location in dbLocations:
            if location != "":
                locationSpecies = set()
                locationChecklists = set()
                for s in locationDict[location]:
                    locationSpecies.add(s["commonName"])
                    locationChecklists.add(s["checklistID"])
                locationArray.append([len(locationSpecies),  location, len(locationChecklists)])
        locationArray.sort(reverse=True)
        rank = 0
        lastLocationTotal = 0
        R = 0
        for location in locationArray:            
            rankItem = QTableWidgetItem()
            if location[0] != lastLocationTotal:
                rank = R+1
            rankItem.setData(Qt.DisplayRole, rank)
            locationItem = QTableWidgetItem()
            locationItem.setText(location[1])
            locationTotalItem = QTableWidgetItem()
            locationTotalItem.setData(Qt.DisplayRole, location[0])
            locationTotalItem.setTextAlignment(Qt.AlignCenter|Qt.AlignVCenter)                                             
            locationChecklistTotalItem = QTableWidgetItem()
            locationChecklistTotalItem.setData(Qt.DisplayRole, location[2])
            locationChecklistTotalItem.setTextAlignment(Qt.AlignCenter|Qt.AlignVCenter)                                             
            self.tblLocationTotals.setItem(R, 0, rankItem)    
            self.tblLocationTotals.setItem(R, 1, locationItem)
            self.tblLocationTotals.setItem(R, 2, locationTotalItem)
            self.tblLocationTotals.setItem(R, 3, locationChecklistTotalItem)
            lastLocationTotal = location[0]
            R = R + 1

        # set headers and column stretching 
        for t in [self.tblCountryTotals, self.tblStateTotals, self.tblCountyTotals, self.tblLocationTotals]:
            t.setSortingEnabled(True)
            t.sortItems(0,0)
            t.horizontalHeader().setVisible(True)
            # remove first three characters from tbl widget name
            regionType = t.objectName()[3:]
            # remove "Totals" from widget name
            regionType = regionType[:-6]
            t.setHorizontalHeaderLabels(['Rank', regionType, 'Species', 'Checklists'])
            header = t.horizontalHeader()
            header.setSectionResizeMode(1, QHeaderView.Stretch)

        # set location and date range titles
        self.mdiParent.SetChildDetailsLabels(self, self.filter)

        # set window title
        self.setWindowTitle("Location Totals: " + self.lblLocation.text() + ": " + self.lblDateRange.text())

        if self.lblDetails.text() != "":
            self.lblDetails.setVisible(True)
        else:
            self.lblDetails.setVisible(False)
        
        self.scaleMe()
        self.resizeMe()

        return(True)
示例#36
0
        if pixmap.isNull():
            continue

        pixmap = pixmap.scaled(ICON_WIDTH, ICON_WIDTH, Qt.KeepAspectRatio,
                               Qt.SmoothTransformation)
        base_file_name = Path(file_name).name

        item = QListWidgetItem(QIcon(pixmap), base_file_name)
        item.setTextAlignment(Qt.AlignHCenter | Qt.AlignBottom)
        item.setSizeHint(QSize(ICON_WIDTH, ICON_HEIGHT + 20))
        list_widget.addItem(item)

        table_widget.setRowCount(table_widget.rowCount() + 1)
        table_widget.setRowHeight(row, ICON_HEIGHT)
        item_img = QTableWidgetItem()
        item_img.setData(Qt.DecorationRole, pixmap)
        item_img.setSizeHint(QSize(ICON_WIDTH, ICON_HEIGHT))
        table_widget.setItem(row, 0, item_img)
        table_widget.setItem(row, 1, QTableWidgetItem(base_file_name))
        table_widget.setItem(row, 2,
                             QTableWidgetItem(str(Path(file_name).parent)))
        row += 1

        QApplication.processEvents()

    list_widget.setWindowTitle(list_widget.windowTitle() + '. Elapsed: ' +
                               str(DT.datetime.now() -
                                   start_time).split('.')[0])
    table_widget.setWindowTitle(table_widget.windowTitle() + '. Elapsed: ' +
                                str(DT.datetime.now() -
                                    start_time).split('.')[0])
示例#37
0
    def update_schedule(self) -> None:
        self.clearSpans()
        self.clearContents()

        rows = self._schedule_ref.rows()
        columns = self._schedule_ref.columns()

        self.setRowCount(rows)
        self.setColumnCount(columns)

        i = 0
        for day_number, schedule_element in enumerate(self._schedule_ref):
            min_i = i
            for line in schedule_element:
                j = 0
                while j < columns:
                    text = ""
                    duration = 1

                    pairs = line.get(j)
                    if pairs is not None:
                        duration = pairs[0]["time"].duration()
                        for pair in pairs:
                            text += str(pair) + "\n"

                    item = QTableWidgetItem(text)
                    item.setTextAlignment(Qt.AlignTop | Qt.AlignLeft)
                    item.setData(Qt.UserRole, duration)
                    self.setItem(i, j, item)

                    j += duration
                i += 1

            for n in range(columns):
                for m in range(i - 1, min_i - 1, -1):
                    item = self.item(m, n)
                    if item is not None:
                        up_level, down_level = m, m
                        duration = item.data(Qt.UserRole)
                        # down
                        for p in range(m + 1, i):
                            free = True
                            for r in range(duration):
                                cmp_item = self.item(p, n + r)
                                if cmp_item is None or cmp_item.text() != "":
                                    free = False
                                    break
                            if free:
                                down_level = p
                                for r in range(duration):
                                    self.takeItem(p, n + r)
                            else:
                                break
                        # up
                        for p in range(m - 1, min_i - 1, -1):
                            free = True
                            for r in range(duration):
                                cmp_item = self.item(p, n + r)
                                if cmp_item is None or cmp_item.text() != "":
                                    free = False
                                    break
                            if free:
                                up_level = p
                                for r in range(duration):
                                    self.takeItem(p, n + r)
                            else:
                                break

                        if (abs(up_level - down_level) +
                                1) > 1 or duration > 1:
                            if self.columnSpan(up_level, n) == 1 or \
                                    self.rowSpan(up_level, n) == 1:
                                self.setItem(up_level, n, self.takeItem(m, n))
                                self.setSpan(up_level, n,
                                             abs(up_level - down_level) + 1,
                                             duration)

        self.resize_table()
示例#38
0
    def on_btnBrowse_clicked(self, checked, directoryPath=None, secType=None):
        """
        Selects base spectra
        :param directoryPath: optional path input
        :param secType: optional secondary spectrum type
        """
        self.dir = dir = directoryPath
        if self.dir is None:
            options = QFileDialog.ShowDirsOnly
            if sys.platform.startswith('win'):
                options = QFileDialog.DontUseNativeDialog
            self.dir = dir = QFileDialog.getExistingDirectory(
                self, 'Choose Base Spectra Directory',
                self.settings.getDataDirectory(), options)
        if dir:
            self.txtFilepath.setText(dir)
            self.tblSpectra.clearContents()
            filenames = [
                f for f in os.listdir(dir) if f.lower().endswith(".n42")
            ]
            if not filenames:
                QMessageBox.critical(self, 'Invalid Directory Selection',
                                     'No n42 Files in selected Directory')
                return

            #read the spectra into memory
            try:
                self.specMap = {}
                for filename in filenames:
                    v = readSpectrumFile(dir + os.sep + filename,
                                         self.sharedObject, self.txtStatus)
                    if v:
                        self.specMap[filename] = ReadFileObject(
                            v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7],
                            v[8], v[9])
            # get ecal, counts, and bckg spetrum parameters for one spectrum
                for filename in self.specMap.keys():
                    rfo = self.specMap[filename]
                    self.counts = rfo.counts
                    self.ecal = rfo.ecal
                    self.countsBckg = rfo.countsBckg
                    self.ecalBckg = rfo.ecalBckg
                    break
                    # make sure ecal, # of channels, and bckg spetrum parameters match for all spectra
                for filename in self.specMap.keys():
                    rfo = self.specMap[filename]
                    if self.counts.count(',') != rfo.counts.count(','):
                        self.txtStatus.append(
                            "Mismatch in # of channels between spectra")

                    self.txtStatus.setTextColor(self.redColor)
                    for i in range(len(self.ecal)):
                        if self.ecal[i] != rfo.ecal[i]:
                            self.txtStatus.append(
                                "Mismatch in " + str(i) +
                                "th energy calibration parameter between spectra"
                            )
                    self.txtStatus.setTextColor(self.blackColor)
                    if self.countsBckg:
                        if self.countsBckg.count(',') != rfo.countsBckg.count(
                                ','):
                            self.txtStatus.append(
                                "Mismatch in # of channels between background spectra"
                            )
                        for i in range(len(self.ecal)):
                            if self.ecalBckg[i] != rfo.ecalBckg[i]:
                                self.txtStatus.append(
                                    "Mismatch in " + str(i) +
                                    "th energy calibration parameter between background spectra"
                                )
            except Exception as e:
                traceback.print_exc()
                logging.exception("Handled Exception", exc_info=True)

            # populate material, filename table
            self.initializingTable = True
            spectraCounter = 0
            for filename in self.specMap.keys():
                #if readSpectrumFile(dir + os.sep + filename, self.sharedObject, self.txtStatus):
                spectraCounter = spectraCounter + 1
                # TODO: develop more elaborated algorithm to correctly import thing like "HEU" or "WGPu" w/o altering the capitalization
                #                    matName = '-'.join(splitext(filename)[0].split('_')[2:]).capitalize()
                matName = '-'.join(splitext(filename)[0].split('_')[2:])
                matTranslation = Session().query(MaterialNameTranslation).get(
                    matName)
                toName = matTranslation.toName if matTranslation else matName
                row = self.tblSpectra.rowCount()
                self.tblSpectra.setRowCount(row + 1)

                # material name
                item = QTableWidgetItem(toName)
                item.setData(Qt.UserRole, matName)
                self.tblSpectra.setItem(row, 0, item)

                # filename
                item = QTableWidgetItem(filename)
                item.setFlags(item.flags() & ~Qt.ItemIsEditable)
                self.tblSpectra.setItem(row, 1, item)

            self.txtStatus.append("Number of base spectra read = " +
                                  str(spectraCounter))
            if self.sharedObject:
                if self.sharedObject.chanDataType:
                    self.txtStatus.append("Channel data type is " +
                                          self.sharedObject.chanDataType)
                if self.sharedObject.bkgndSpectrumInFile:
                    self.txtStatus.append("Secondary spectrum found in file")
            self.initializingTable = False
            self.tblSpectra.resizeColumnsToContents()
            self.tblSpectra.horizontalHeader().setSectionResizeMode(
                1, QHeaderView.Stretch)

            # Check with the user about the type of the secondary spectrum
            if self.sharedObject.bkgndSpectrumInFile:
                secondary_types = [
                    "Background Spectrum", "Internal Calibration Spectrum"
                ]
                if secType is None:
                    s_type, ok = QInputDialog.getItem(
                        self, "Select Secondary Spectrum Type",
                        "Secondary Spectrum was found. <br>  "
                        "Select type or press cancel to disable secondary spectrum:",
                        secondary_types, 0, False)
                    if ok:
                        self.backgroundSpectrumType = secondary_types.index(
                            s_type)
                        self.txtStatus.append(
                            "Secondary spectrum identified as " + s_type)
                    else:
                        self.txtStatus.append(
                            "Secondary spectrum not included")
                else:
                    self.backgroundSpectrumType = secondary_types.index(
                        secType)
                    self.txtStatus.append("Secondary spectrum identified as " +
                                          secType)
示例#39
0
    def FillLocations(self, filter):

        self.filter = filter
        self.listType = "Locations"

        self.btnShowLocation.setVisible(False)
        self.lblDetails.setVisible(False)

        # set up tblList column headers and widths
        self.tblList.setShowGrid(False)
        header = self.tblList.horizontalHeader()
        header.setVisible(True)

        thisWindowList = self.mdiParent.db.GetLocations(filter, "Dates")

        if len(thisWindowList) == 0:
            return (False)

        # set 3 columns and header titles
        self.tblList.setRowCount(len(thisWindowList))
        self.tblList.setColumnCount(3)
        self.tblList.setHorizontalHeaderLabels(['Location', 'First', 'Last'])
        header.setSectionResizeMode(0, QHeaderView.Stretch)

        # add locations and dates to table row by row
        R = 0
        for loc in thisWindowList:
            locationItem = QTableWidgetItem()
            locationItem.setText(loc[0])
            firstItem = QTableWidgetItem()
            firstItem.setData(Qt.DisplayRole, loc[1])
            lastItem = QTableWidgetItem()
            lastItem.setData(Qt.DisplayRole, loc[2])
            self.tblList.setItem(R, 0, locationItem)
            self.tblList.setItem(R, 1, firstItem)
            self.tblList.setItem(R, 2, lastItem)
            R = R + 1

            # hide the checklist comments box, since  we're not showing a single checklist
            self.txtChecklistComments.setVisible(False)

            # hide the checklist details label, since  we're not showing a single checklist
            self.lblDetails.setText("")

        locationCount = self.tblList.rowCount()

        self.lblSpecies.setText("Locations: " + str(locationCount))

        self.mdiParent.SetChildDetailsLabels(self, filter)

        self.setWindowTitle(self.lblLocation.text() + ": " +
                            self.lblDateRange.text())

        icon = QIcon()
        icon.addPixmap(QPixmap(":/icon_location.png"), QIcon.Normal, QIcon.Off)
        self.setWindowIcon(icon)

        self.tblList.addAction(self.actionSetLocationFilter)
        self.tblList.addAction(self.actionSetFirstDateFilter)
        self.tblList.addAction(self.actionSetLastDateFilter)

        self.scaleMe()
        self.resizeMe()

        return (True)
示例#40
0
    def FillChecklists(self, filter):

        self.filter = filter
        self.listType = "Checklists"

        # get species data from db
        checklists = self.mdiParent.db.GetChecklists(filter)

        # abort if no checklists matched filter
        if len(checklists) == 0:
            return (False)

    # set up tblList column headers and widths
        self.tblList.setColumnCount(7)
        self.tblList.setRowCount(len(checklists))
        self.tblList.horizontalHeader().setVisible(True)
        self.tblList.setHorizontalHeaderLabels([
            'Country', 'State', 'County', 'Location', 'Date', 'Time', 'Species'
        ])
        header = self.tblList.horizontalHeader()
        header.setSectionResizeMode(3, QHeaderView.Stretch)
        self.tblList.setShowGrid(False)

        # add species and dates to table row by row
        R = 0
        for c in checklists:
            countryItem = QTableWidgetItem()
            countryItem.setData(Qt.UserRole, QVariant(
                c[0]))  #store checklistID for future retreaval
            countryName = self.mdiParent.db.GetCountryName(c[1][0:2])
            countryItem.setText(countryName)

            stateItem = QTableWidgetItem()
            stateName = self.mdiParent.db.GetStateName(c[1])
            stateItem.setText(stateName)

            countyItem = QTableWidgetItem()
            countyItem.setText(c[2])

            locationItem = QTableWidgetItem()
            locationItem.setText(c[3])

            dateItem = QTableWidgetItem()
            dateItem.setText(c[4])

            timeItem = QTableWidgetItem()
            timeItem.setText(c[5])

            speciesCountItem = QTableWidgetItem()
            speciesCountItem.setData(Qt.DisplayRole, c[6])
            speciesCountItem.setTextAlignment(Qt.AlignCenter | Qt.AlignVCenter)

            self.tblList.setItem(R, 0, countryItem)
            self.tblList.setItem(R, 1, stateItem)
            self.tblList.setItem(R, 2, countyItem)
            self.tblList.setItem(R, 3, locationItem)
            self.tblList.setItem(R, 4, dateItem)
            self.tblList.setItem(R, 5, timeItem)
            self.tblList.setItem(R, 6, speciesCountItem)
            R = R + 1

        self.lblSpecies.setText("Checklists: " + str(self.tblList.rowCount()))

        self.mdiParent.SetChildDetailsLabels(self, filter)

        self.setWindowTitle(self.lblLocation.text() + ": " +
                            self.lblDateRange.text())

        self.txtChecklistComments.setVisible(False)

        icon = QIcon()
        icon.addPixmap(QPixmap(":/icon_checklists.png"), QIcon.Normal,
                       QIcon.Off)
        self.setWindowIcon(icon)

        self.tblList.addAction(self.actionSetDateFilter)
        self.tblList.addAction(self.actionSetCountryFilter)
        self.tblList.addAction(self.actionSetStateFilter)
        self.tblList.addAction(self.actionSetCountyFilter)
        self.tblList.addAction(self.actionSetLocationFilter)

        self.scaleMe()
        self.resizeMe()

        # alert MainWindow that we finished fill data successfully
        return (True)
示例#41
0
    def onProcMgrUpdated(self, ldProcStatus, ldOutputFileStatus, iExperiment,
                         sExpType):
        self.statusbar.showMessage("Refreshing ProcMgr status...")

        self.tableProcStat.clear()
        self.tableProcStat.setSortingEnabled(False)
        self.tableProcStat.setRowCount(len(ldProcStatus))
        self.tableProcStat.setColumnCount(2)
        self.tableProcStat.setHorizontalHeaderLabels(["ID", "Status"])

        itemCur = None

        for iRow, dProcStatus in enumerate(ldProcStatus):

            # col 1 : UniqueID
            if isinstance(dProcStatus["showId"], str):
                # str
                showId = dProcStatus["showId"]
            else:
                # bytes
                showId = dProcStatus["showId"].decode()
            item = QTableWidgetItem(showId)
            item.setData(Qt.UserRole, QVariant(showId))
            self.tableProcStat.setItem(iRow, 0, item)

            if showId == self.sCurKey:
                itemCur = item

            # col 2 : Status
            sStatus = dProcStatus["status"]
            item = QTableWidgetItem()
            brush1 = QBrush(QColor.fromRgb(255, 255, 255))
            item.setForeground(brush1)
            if (sStatus == ProcMgr.STATUS_NOCONNECT):
                item.setData(0, QVariant(" NO CONNECT"))
                item.setBackground(QBrush(QColor.fromRgb(0, 0, 192)))
            elif (sStatus == ProcMgr.STATUS_RUNNING):
                item.setData(0, QVariant("RUNNING"))
                item.setBackground(QBrush(QColor.fromRgb(0, 192, 0)))
            elif (sStatus == ProcMgr.STATUS_SHUTDOWN):
                item.setData(0, QVariant(" SHUTDOWN"))
                item.setBackground(QBrush(QColor.fromRgb(192, 192, 0)))
            elif (sStatus == ProcMgr.STATUS_ERROR):
                item.setData(0, QVariant(" ERROR"))
                item.setBackground(QBrush(QColor.fromRgb(255, 0, 0)))

            self.tableProcStat.setItem(iRow, 1, item)

        # end for iRow, key in enumerate( sorted(procMgr.d.iterkeys()) ):

        self.tableProcStat.setColumnWidth(0, 160)
        self.tableProcStat.setColumnWidth(1, 100)

        if not self.bFirstSort:
            self.bFirstSort = True
            self.tableProcStat.sortItems(1, Qt.AscendingOrder)

        self.tableProcStat.setSortingEnabled(True)
        if itemCur != None:
            self.tableProcStat.setCurrentItem(itemCur)

        if ldOutputFileStatus:
            sOutputStatus = ""
            for dOutputFileStatus in ldOutputFileStatus:
                sOutputStatus += """
<p><b>Filename:</b
> %s <br>
<b>Size:</b> %s Bytes <br>
<b>Last Modification Time:</b> %s
""" % (dOutputFileStatus["fn"], dOutputFileStatus["size"].decode(),
                dOutputFileStatus["mtime"].decode())

            # save the scrollar positions
            hVal = self.textBrowser.horizontalScrollBar().value()
            vVal = self.textBrowser.verticalScrollBar().value()

            self.textBrowser.setHtml(sOutputStatus)

            # restore the scrollar positions
            self.textBrowser.horizontalScrollBar().setValue(hVal)
            self.textBrowser.verticalScrollBar().setValue(vVal)
        else:
            self.textBrowser.setHtml(
                "No output file is found for experiment type <b>%s</b> id <b>%d</b>"
                % (sExpType, iExperiment))

        self.statusbar.clearMessage()
        return
示例#42
0
    def FillDateTotals(self, filter):

        self.filter = filter

        # find all years, months, and dates in db
        dbYears = set()
        dbMonths = set()
        dbDates = set()
        dbFilteredSightings = []
        yearDict = defaultdict()
        monthDict = defaultdict()
        dateDict = defaultdict()

        minimalSightingList = self.mdiParent.db.GetMinimalFilteredSightingsList(
            filter)

        for sighting in minimalSightingList:

            # Consider only full species, not slash or spuh or hybrid entries
            commonName = sighting["commonName"]
            if ("/" not in commonName) and (
                    "sp." not in commonName) and " x " not in commonName:

                if self.mdiParent.db.TestSighting(sighting, filter) is True:
                    dbYears.add(sighting["date"][0:4])
                    dbMonths.add(sighting["date"][5:7])
                    dbDates.add(sighting["date"])
                    dbFilteredSightings.append(sighting)

                    if sighting["date"][0:4] not in yearDict.keys():
                        yearDict[sighting["date"][0:4]] = [sighting]
                    else:
                        yearDict[sighting["date"][0:4]].append(sighting)

                    if sighting["date"][5:7] not in monthDict.keys():
                        monthDict[sighting["date"][5:7]] = [sighting]
                    else:
                        monthDict[sighting["date"][5:7]].append(sighting)

                    if sighting["date"] not in dateDict.keys():
                        dateDict[sighting["date"]] = [sighting]
                    else:
                        dateDict[sighting["date"]].append(sighting)

        # check that we have at least one sighting to work with
        # otherwise, abort so MainWindow can post message to user
        if len(yearDict) == 0:
            return (False)

        # set numbers of rows for each tab's grid (years, months, dates)
        self.tblYearTotals.setRowCount(len(dbYears) + 1)
        self.tblYearTotals.setColumnCount(4)
        self.tblMonthTotals.setRowCount(len(dbMonths) + 1)
        self.tblMonthTotals.setColumnCount(4)
        self.tblDateTotals.setRowCount(len(dbDates) + 1)
        self.tblDateTotals.setColumnCount(4)

        yearArray = []

        for year in dbYears:
            yearSpecies = set()
            yearChecklists = set()
            for s in yearDict[year]:
                yearSpecies.add(s["commonName"])
                yearChecklists.add(s["checklistID"])
            yearArray.append([len(yearSpecies), year, len(yearChecklists)])
        yearArray.sort(reverse=True)
        R = 0
        for year in yearArray:
            rankItem = QTableWidgetItem()
            rankItem.setData(Qt.DisplayRole, R + 1)
            yearItem = QTableWidgetItem()
            yearItem.setText(year[1])
            yearTotalItem = QTableWidgetItem()
            yearTotalItem.setData(Qt.DisplayRole, year[0])
            yearTotalItem.setTextAlignment(Qt.AlignCenter | Qt.AlignVCenter)
            yearChecklistTotalItem = QTableWidgetItem()
            yearChecklistTotalItem.setData(Qt.DisplayRole, year[2])
            yearChecklistTotalItem.setTextAlignment(Qt.AlignCenter
                                                    | Qt.AlignVCenter)
            self.tblYearTotals.setItem(R, 0, rankItem)
            self.tblYearTotals.setItem(R, 1, yearItem)
            self.tblYearTotals.setItem(R, 2, yearTotalItem)
            self.tblYearTotals.setItem(R, 3, yearChecklistTotalItem)
            R = R + 1

        monthArray = []
        for month in dbMonths:
            monthSpecies = set()
            monthChecklists = set()
            monthChecklists.add(s["checklistID"])
            for s in monthDict[month]:
                monthSpecies.add(s["commonName"])
                monthChecklists.add(s["checklistID"])
            monthArray.append(
                [len(monthSpecies), month,
                 len(monthChecklists) - 1])
        monthArray.sort(reverse=True)
        R = 0
        for month in monthArray:
            if month[1] == "01":
                month[1] = "Jan"
            if month[1] == "02":
                month[1] = "Feb"
            if month[1] == "03":
                month[1] = "Mar"
            if month[1] == "04":
                month[1] = "Apr"
            if month[1] == "05":
                month[1] = "May"
            if month[1] == "06":
                month[1] = "Jun"
            if month[1] == "07":
                month[1] = "Jul"
            if month[1] == "08":
                month[1] = "Aug"
            if month[1] == "09":
                month[1] = "Sep"
            if month[1] == "10":
                month[1] = "Oct"
            if month[1] == "11":
                month[1] = "Nov"
            if month[1] == "12":
                month[1] = "Dec"
            rankItem = QTableWidgetItem()
            rankItem.setData(Qt.DisplayRole, R + 1)
            monthItem = QTableWidgetItem()
            monthItem.setText(month[1])
            monthTotalItem = QTableWidgetItem()
            monthTotalItem.setData(Qt.DisplayRole, month[0])
            monthTotalItem.setTextAlignment(Qt.AlignCenter | Qt.AlignVCenter)
            monthChecklistTotalItem = QTableWidgetItem()
            monthChecklistTotalItem.setData(Qt.DisplayRole, month[2])
            monthChecklistTotalItem.setTextAlignment(Qt.AlignCenter
                                                     | Qt.AlignVCenter)
            self.tblMonthTotals.setItem(R, 0, rankItem)
            self.tblMonthTotals.setItem(R, 1, monthItem)
            self.tblMonthTotals.setItem(R, 2, monthTotalItem)
            self.tblMonthTotals.setItem(R, 3, monthChecklistTotalItem)
            R = R + 1
        R = -1

        dateArray = []

        for date in dbDates:
            dateSpecies = set()
            dateChecklists = set()
            for s in dateDict[date]:
                dateSpecies.add(s["commonName"])
                dateChecklists.add(s["checklistID"])
            dateArray.append([len(dateSpecies), date, len(dateChecklists)])

        dateArray.sort(reverse=True)
        R = 0
        rank = 1
        lastDateTotal = 0
        for date in dateArray:
            dateItem = QTableWidgetItem()
            dateItem.setText(date[1][0:4] + "-" + date[1][5:7] + "-" +
                             date[1][8:])
            dateTotalItem = QTableWidgetItem()
            dateTotalItem.setData(Qt.DisplayRole, date[0])
            dateTotalItem.setTextAlignment(Qt.AlignCenter | Qt.AlignVCenter)
            if date[0] != lastDateTotal:
                rank = R + 1
            rankItem = QTableWidgetItem()
            rankItem.setData(Qt.DisplayRole, rank)
            dateChecklistTotalItem = QTableWidgetItem()
            dateChecklistTotalItem.setData(Qt.DisplayRole, date[2])
            dateChecklistTotalItem.setTextAlignment(Qt.AlignCenter
                                                    | Qt.AlignVCenter)
            self.tblDateTotals.setItem(R, 0, rankItem)
            self.tblDateTotals.setItem(R, 1, dateItem)
            self.tblDateTotals.setItem(R, 2, dateTotalItem)
            self.tblDateTotals.setItem(R, 3, dateChecklistTotalItem)
            lastDateTotal = date[0]

            R = R + 1

        self.tblYearTotals.horizontalHeader().setVisible(True)
        self.tblMonthTotals.horizontalHeader().setVisible(True)
        self.tblDateTotals.horizontalHeader().setVisible(True)
        self.tblYearTotals.setHorizontalHeaderLabels(
            ['Rank', 'Year', 'Species', 'Checklists'])
        self.tblYearTotals.setSortingEnabled(True)
        self.tblYearTotals.sortItems(0, 0)
        self.tblMonthTotals.setHorizontalHeaderLabels(
            ['Rank', 'Month', 'Species', 'Checklists'])
        self.tblMonthTotals.setSortingEnabled(True)
        self.tblMonthTotals.sortItems(0, 0)
        self.tblDateTotals.setHorizontalHeaderLabels(
            ['Rank', 'Date', 'Species', 'Checklists'])
        self.tblDateTotals.setSortingEnabled(True)
        self.tblDateTotals.sortItems(0, 0)
        self.tblYearTotals.removeRow(self.tblYearTotals.rowCount() - 1)
        self.tblMonthTotals.removeRow(self.tblMonthTotals.rowCount() - 1)
        self.tblDateTotals.removeRow(self.tblDateTotals.rowCount() - 1)
        header = self.tblYearTotals.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        header = self.tblMonthTotals.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        header = self.tblDateTotals.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)

        self.mdiParent.SetChildDetailsLabels(self, self.filter)

        self.setWindowTitle("Date Totals: " +
                            str(self.tblDateTotals.rowCount()) + " dates")

        if self.lblDetails.text() != "":
            self.lblDetails.setVisible(True)
        else:
            self.lblDetails.setVisible(False)

        self.scaleMe()
        self.resizeMe()

        # tell MainWindow that all is OK
        return (True)
示例#43
0
    def genHostsTabTable(self):
        self.hostsTabTable.setShowGrid(True)
        self.hostsTabTable.setSortingEnabled(True)
        self.hostsTabTable.setRowCount(len(self.hostList))
        self.hostsTabTable.setColumnCount(10)
        self.hostsTabTable.setHorizontalHeaderLabels([
            'Host', 'Status', 'Queue', 'Njobs', 'Ncpus', 'Ut (%)', 'Mem (G)',
            'Maxmem (G)', 'swp (G)', 'maxswp (G)'
        ])

        bhostsDic = common.getBhostsInfo()
        lshostsDic = common.getLshostsInfo()
        lsloadDic = common.getLsloadInfo()
        hostQueueDic = common.getHostQueueInfo()

        for i in range(len(self.hostList)):
            host = self.hostList[i]
            j = 0
            self.hostsTabTable.setItem(i, j, QTableWidgetItem(host))

            j = j + 1
            index = bhostsDic['HOST_NAME'].index(host)
            status = bhostsDic['STATUS'][index]
            item = QTableWidgetItem(status)
            if str(status) == 'closed':
                item.setFont(QFont('song', 10, QFont.Bold))
                item.setForeground(QBrush(Qt.red))
            self.hostsTabTable.setItem(i, j, item)

            j = j + 1
            if host in hostQueueDic.keys():
                queues = ' '.join(hostQueueDic[host])
                item = QTableWidgetItem(queues)
                self.hostsTabTable.setItem(i, j, item)

            j = j + 1
            index = bhostsDic['HOST_NAME'].index(host)
            njobs = bhostsDic['NJOBS'][index]
            if not re.match('^[0-9]+$', njobs):
                common.printWarning('*Warning*: host(' + str(host) +
                                    ') NJOBS info "' + str(njobs) +
                                    '": invalid value, reset it to "0".')
                njobs = 0
            item = QTableWidgetItem()
            item.setData(Qt.DisplayRole, int(njobs))
            self.hostsTabTable.setItem(i, j, item)

            j = j + 1
            index = lshostsDic['HOST_NAME'].index(host)
            ncpus = lshostsDic['ncpus'][index]
            if not re.match('^[0-9]+$', ncpus):
                common.printWarning('*Warning*: host(' + str(host) +
                                    ') ncpus info "' + str(ncpus) +
                                    '": invalid value, reset it to "0".')
                ncpus = 0
            item = QTableWidgetItem()
            item.setData(Qt.DisplayRole, int(ncpus))
            self.hostsTabTable.setItem(i, j, item)

            j = j + 1
            index = lsloadDic['HOST_NAME'].index(host)
            ut = lsloadDic['ut'][index]
            ut = re.sub('%', '', ut)
            if not re.match('^[0-9]+$', ut):
                common.printWarning('*Warning*: host(' + str(host) +
                                    ') ut info "' + str(ut) +
                                    '": invalid value, reset it to "0".')
                ut = 0
            item = QTableWidgetItem()
            item.setData(Qt.DisplayRole, int(ut))
            self.hostsTabTable.setItem(i, j, item)

            j = j + 1
            index = lsloadDic['HOST_NAME'].index(host)
            mem = lsloadDic['mem'][index]
            if re.search('M', mem):
                mem = re.sub('M', '', mem)
                mem = int(mem) / 1024
            elif re.search('G', mem):
                mem = re.sub('G', '', mem)
            else:
                common.printWarning('*Warning*: host(' + str(host) +
                                    ') mem info "' + str(mem) +
                                    '": unrecognized unit, reset it to "0".')
                mem = 0
            item = QTableWidgetItem()
            item.setData(Qt.DisplayRole, int(mem))
            self.hostsTabTable.setItem(i, j, item)

            j = j + 1
            index = lshostsDic['HOST_NAME'].index(host)
            maxmem = lshostsDic['maxmem'][index]
            if re.search('M', maxmem):
                maxmem = re.sub('M', '', maxmem)
                maxmem = int(maxmem) / 1024
            elif re.search('G', maxmem):
                maxmem = re.sub('G', '', maxmem)
            else:
                common.printWarning('*Warning*: host(' + str(host) +
                                    ') maxmem info "' + str(maxmem) +
                                    '": unrecognized unit, reset it to "0".')
                maxmem = 0
            item = QTableWidgetItem()
            item.setData(Qt.DisplayRole, int(maxmem))
            self.hostsTabTable.setItem(i, j, item)

            j = j + 1
            index = lsloadDic['HOST_NAME'].index(host)
            swp = lsloadDic['swp'][index]
            if re.search('M', swp):
                swp = re.sub('M', '', swp)
                swp = int(swp) / 1024
            elif re.search('G', swp):
                swp = re.sub('G', '', swp)
            else:
                common.printWarning('*Warning*: host(' + str(host) +
                                    ') swp info "' + str(swp) +
                                    '": unrecognized unit, reset it to "0".')
                swp = 0
            item = QTableWidgetItem()
            item.setData(Qt.DisplayRole, int(swp))
            self.hostsTabTable.setItem(i, j, item)

            j = j + 1
            index = lshostsDic['HOST_NAME'].index(host)
            maxswp = lshostsDic['maxswp'][index]
            if re.search('M', maxswp):
                maxswp = re.sub('M', '', maxswp)
                maxswp = int(maxswp) / 1024
            elif re.search('G', maxswp):
                maxswp = re.sub('G', '', maxswp)
            else:
                common.printWarning('*Warning*: host(' + str(host) +
                                    ') maxswp info "' + str(maxswp) +
                                    '": unrecognized unit, reset it to "0".')
                maxswp = 0
            item = QTableWidgetItem()
            item.setData(Qt.DisplayRole, int(maxswp))
            self.hostsTabTable.setItem(i, j, item)
    def populateRow(self, item, idx):
        id = item['place_id']
        name = item['display_name']

        try:
            className = QApplication.translate("nominatim", item['class'], None)
        except:
            className = ""

        try:
            typeName = QApplication.translate("nominatim", item['type'], None)
        except:
            typeName = ""

        try:
            wkt = item['geotext']
        except:
            wkt = None

        try:
            osm_type = item['osm_type']
        except:
            osm_type = None

        bbox = {}
        if osm_type == "node":
            lat = item['lat']
            lng = item['lon']

            poFD = ogr.FeatureDefn("Point")
            poFD.SetGeomType(ogr.wkbPoint)

            oFLD = ogr.FieldDefn('id', ogr.OFTString)
            poFD.AddFieldDefn(oFLD)
            oFLD = ogr.FieldDefn('name', ogr.OFTString)
            poFD.AddFieldDefn(oFLD)

            ogrFeature = ogr.Feature(poFD)
            wkt = "POINT({} {})".format(lng, lat)
            ogrGeom = ogr.CreateGeometryFromWkt(wkt)
        else:
            try:
                bbox = item['boundingbox']

                poFD = ogr.FeatureDefn("Rectangle")
                poFD.SetGeomType(ogr.wkbPolygon)

                oFLD = ogr.FieldDefn('id', ogr.OFTString)
                poFD.AddFieldDefn(oFLD)
                oFLD = ogr.FieldDefn('name', ogr.OFTString)
                poFD.AddFieldDefn(oFLD)

                ogrFeature = ogr.Feature(poFD)
                if wkt is None:
                    wkt = "POLYGON(({b[2]} {b[0]}, {b[2]} {b[1]}, {b[3]} {b[1]}, {b[3]} {b[0]}, {b[2]} {b[0]}))".format(b=bbox)

                ogrGeom = ogr.CreateGeometryFromWkt(wkt)
            except:
                lat = item['lat']
                lng = item['lon']

                poFD = ogr.FeatureDefn("Point")
                poFD.SetGeomType(ogr.wkbPoint)

                oFLD = ogr.FieldDefn('id', ogr.OFTString)
                poFD.AddFieldDefn(oFLD)
                oFLD = ogr.FieldDefn('name', ogr.OFTString)
                poFD.AddFieldDefn(oFLD)

                ogrFeature = ogr.Feature(poFD)
                wkt = "POINT({} {})".format(lng, lat)
                ogrGeom = ogr.CreateGeometryFromWkt(wkt)

        ogrFeature.SetGeometry(ogrGeom)
        ogrFeature.SetFID(int(idx + 1))
        ogrFeature.SetField(str('id'), str(id))
        ogrFeature.SetField(str('name'), name)

        item = QTableWidgetItem(name)
        item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
        item.setData(Qt.UserRole, ogrFeature)
        self.tableResult.setItem(idx, 0, item)

        itemLibelle = QTableWidgetItem(className)
        itemLibelle.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
        self.tableResult.setItem(idx, 1, itemLibelle)

        itemType = QTableWidgetItem(typeName)
        itemType.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
        self.tableResult.setItem(idx, 2, itemType)
示例#45
0
    def __init__(self, plugin):
        super(SettingsDialog, self).__init__()
        self._plugin = plugin

        # General setup of the dialog
        self._plugin.logger.debug("Showing settings dialog")
        self.setWindowTitle("Settings")
        icon_path = self._plugin.plugin_resource("settings.png")
        self.setWindowIcon(QIcon(icon_path))
        self.setWindowFlags(self.windowFlags() & ~Qt.WindowCloseButtonHint)

        window_widget = QWidget(self)
        window_layout = QVBoxLayout(window_widget)
        tabs = QTabWidget(window_widget)
        window_layout.addWidget(tabs)

        # "General Settings" tab
        tab = QWidget(tabs)
        layout = QFormLayout(tab)
        layout.setFormAlignment(Qt.AlignVCenter)
        tabs.addTab(tab, "General Settings")

        user_widget = QWidget(tab)
        user_layout = QHBoxLayout(user_widget)
        layout.addRow(user_widget)

        # User color
        self._color_button = QPushButton("")
        self._color_button.setFixedSize(50, 30)

        def color_button_activated(_):
            self._set_color(qt_color=QColorDialog.getColor().rgb())

        self._color = self._plugin.config["user"]["color"]
        self._set_color(ida_color=self._color)
        self._color_button.clicked.connect(color_button_activated)
        user_layout.addWidget(self._color_button)

        # User name
        self._name_line_edit = QLineEdit()
        name = self._plugin.config["user"]["name"]
        self._name_line_edit.setText(name)
        user_layout.addWidget(self._name_line_edit)

        text = "Disable all user cursors"
        self._disable_all_cursors_checkbox = QCheckBox(text)
        layout.addRow(self._disable_all_cursors_checkbox)
        navbar_checked = not self._plugin.config["cursors"]["navbar"]
        funcs_checked = not self._plugin.config["cursors"]["funcs"]
        disasm_checked = not self._plugin.config["cursors"]["disasm"]
        all_checked = navbar_checked and funcs_checked and disasm_checked
        self._disable_all_cursors_checkbox.setChecked(all_checked)

        def state_changed(state):
            enabled = state == Qt.Unchecked
            self._disable_navbar_cursors_checkbox.setChecked(not enabled)
            self._disable_navbar_cursors_checkbox.setEnabled(enabled)
            self._disable_funcs_cursors_checkbox.setChecked(not enabled)
            self._disable_funcs_cursors_checkbox.setEnabled(enabled)
            self._disable_disasm_cursors_checkbox.setChecked(not enabled)
            self._disable_disasm_cursors_checkbox.setEnabled(enabled)

        self._disable_all_cursors_checkbox.stateChanged.connect(state_changed)

        style_sheet = """QCheckBox{ margin-left: 20px; }"""

        text = "Disable navigation bar user cursors"
        self._disable_navbar_cursors_checkbox = QCheckBox(text)
        layout.addRow(self._disable_navbar_cursors_checkbox)
        self._disable_navbar_cursors_checkbox.setChecked(navbar_checked)
        self._disable_navbar_cursors_checkbox.setEnabled(not all_checked)
        self._disable_navbar_cursors_checkbox.setStyleSheet(style_sheet)

        text = "Disable functions window user cursors"
        self._disable_funcs_cursors_checkbox = QCheckBox(text)
        layout.addRow(self._disable_funcs_cursors_checkbox)
        self._disable_funcs_cursors_checkbox.setChecked(funcs_checked)
        self._disable_funcs_cursors_checkbox.setEnabled(not all_checked)
        self._disable_funcs_cursors_checkbox.setStyleSheet(style_sheet)

        text = "Disable disassembly view user cursors"
        self._disable_disasm_cursors_checkbox = QCheckBox(text)
        layout.addRow(self._disable_disasm_cursors_checkbox)
        self._disable_disasm_cursors_checkbox.setChecked(disasm_checked)
        self._disable_disasm_cursors_checkbox.setEnabled(not all_checked)
        self._disable_disasm_cursors_checkbox.setStyleSheet(style_sheet)

        text = "Allow other users to send notifications"
        self._notifications_checkbox = QCheckBox(text)
        layout.addRow(self._notifications_checkbox)
        checked = self._plugin.config["user"]["notifications"]
        self._notifications_checkbox.setChecked(checked)

        # Log level
        debug_level_label = QLabel("Logging level: ")
        self._debug_level_combo_box = QComboBox()
        self._debug_level_combo_box.addItem("CRITICAL", logging.CRITICAL)
        self._debug_level_combo_box.addItem("ERROR", logging.ERROR)
        self._debug_level_combo_box.addItem("WARNING", logging.WARNING)
        self._debug_level_combo_box.addItem("INFO", logging.INFO)
        self._debug_level_combo_box.addItem("DEBUG", logging.DEBUG)
        self._debug_level_combo_box.addItem("TRACE", logging.TRACE)
        level = self._plugin.config["level"]
        index = self._debug_level_combo_box.findData(level)
        self._debug_level_combo_box.setCurrentIndex(index)
        layout.addRow(debug_level_label, self._debug_level_combo_box)

        # "Network Settings" tab
        tab = QWidget(tabs)
        layout = QVBoxLayout(tab)
        tab.setLayout(layout)
        tabs.addTab(tab, "Network Settings")

        top_widget = QWidget(tab)
        layout.addWidget(top_widget)
        top_layout = QHBoxLayout(top_widget)

        self._servers = list(self._plugin.config["servers"])
        self._servers_table = QTableWidget(len(self._servers), 2, self)
        top_layout.addWidget(self._servers_table)
        for i, server in enumerate(self._servers):
            # Server host and port
            item = QTableWidgetItem("%s:%d" % (server["host"], server["port"]))
            item.setData(Qt.UserRole, server)
            item.setFlags(item.flags() & ~Qt.ItemIsEditable)
            if self._plugin.network.server == server:
                item.setFlags((item.flags() & ~Qt.ItemIsSelectable))
            self._servers_table.setItem(i, 0, item)

            # Server has SSL enabled?
            checkbox = QTableWidgetItem()
            state = Qt.Unchecked if server["no_ssl"] else Qt.Checked
            checkbox.setCheckState(state)
            checkbox.setFlags((checkbox.flags() & ~Qt.ItemIsEditable))
            checkbox.setFlags((checkbox.flags() & ~Qt.ItemIsUserCheckable))
            if self._plugin.network.server == server:
                checkbox.setFlags((checkbox.flags() & ~Qt.ItemIsSelectable))
            self._servers_table.setItem(i, 1, checkbox)

        self._servers_table.setHorizontalHeaderLabels(("Servers", ""))
        horizontal_header = self._servers_table.horizontalHeader()
        horizontal_header.setSectionsClickable(False)
        horizontal_header.setSectionResizeMode(0, QHeaderView.Stretch)
        horizontal_header.setSectionResizeMode(1, QHeaderView.ResizeToContents)
        self._servers_table.verticalHeader().setVisible(False)
        self._servers_table.setSelectionBehavior(QTableWidget.SelectRows)
        self._servers_table.setSelectionMode(QTableWidget.SingleSelection)
        self._servers_table.itemClicked.connect(self._server_clicked)
        self._servers_table.itemDoubleClicked.connect(
            self._server_double_clicked
        )
        self._servers_table.setMaximumHeight(100)

        buttons_widget = QWidget(top_widget)
        buttons_layout = QVBoxLayout(buttons_widget)
        top_layout.addWidget(buttons_widget)

        # Add server button
        self._add_button = QPushButton("Add Server")
        self._add_button.clicked.connect(self._add_button_clicked)
        buttons_layout.addWidget(self._add_button)

        # Edit server button
        self._edit_button = QPushButton("Edit Server")
        self._edit_button.setEnabled(False)
        self._edit_button.clicked.connect(self._edit_button_clicked)
        buttons_layout.addWidget(self._edit_button)

        # Delete server button
        self._delete_button = QPushButton("Delete Server")
        self._delete_button.setEnabled(False)
        self._delete_button.clicked.connect(self._delete_button_clicked)
        buttons_layout.addWidget(self._delete_button)

        bottom_widget = QWidget(tab)
        bottom_layout = QFormLayout(bottom_widget)
        layout.addWidget(bottom_widget)

        # TCP Keep-Alive settings
        keep_cnt_label = QLabel("Keep-Alive Count: ")
        self._keep_cnt_spin_box = QSpinBox(bottom_widget)
        self._keep_cnt_spin_box.setRange(0, 86400)
        self._keep_cnt_spin_box.setValue(self._plugin.config["keep"]["cnt"])
        self._keep_cnt_spin_box.setSuffix(" packets")
        bottom_layout.addRow(keep_cnt_label, self._keep_cnt_spin_box)

        keep_intvl_label = QLabel("Keep-Alive Interval: ")
        self._keep_intvl_spin_box = QSpinBox(bottom_widget)
        self._keep_intvl_spin_box.setRange(0, 86400)
        self._keep_intvl_spin_box.setValue(
            self._plugin.config["keep"]["intvl"]
        )
        self._keep_intvl_spin_box.setSuffix(" seconds")
        bottom_layout.addRow(keep_intvl_label, self._keep_intvl_spin_box)

        keep_idle_label = QLabel("Keep-Alive Idle: ")
        self._keep_idle_spin_box = QSpinBox(bottom_widget)
        self._keep_idle_spin_box.setRange(0, 86400)
        self._keep_idle_spin_box.setValue(self._plugin.config["keep"]["idle"])
        self._keep_idle_spin_box.setSuffix(" seconds")
        bottom_layout.addRow(keep_idle_label, self._keep_idle_spin_box)

        # Buttons commons to all tabs
        actions_widget = QWidget(self)
        actions_layout = QHBoxLayout(actions_widget)

        # Cancel = do not save the changes and close the dialog
        def cancel(_):
            self.reject()

        cancel_button = QPushButton("Cancel")
        cancel_button.clicked.connect(cancel)
        actions_layout.addWidget(cancel_button)

        # Reset = reset all settings from all tabs to default values
        reset_button = QPushButton("Reset")
        reset_button.clicked.connect(self._reset)
        actions_layout.addWidget(reset_button)

        # Save = save the changes and close the dialog
        def save(_):
            self._commit()
            self.accept()

        save_button = QPushButton("Save")
        save_button.clicked.connect(save)
        actions_layout.addWidget(save_button)
        window_layout.addWidget(actions_widget)

        # Do not allow the user to resize the dialog
        self.setFixedSize(
            window_widget.sizeHint().width(), window_widget.sizeHint().height()
        )
示例#46
0
    def calc_sterimol(self, *args):
        self.settings.radii = self.radii_option.currentText()
        self.settings.display_radii = self.display_radii.checkState(
        ) == Qt.Checked
        self.settings.display_vectors = self.display_vectors.checkState(
        ) == Qt.Checked

        targets, neighbors, datas = sterimol_cmd(
            self.session,
            selected_atoms(self.session),
            radii=self.radii_option.currentText(),
            showVectors=self.display_vectors.checkState() == Qt.Checked,
            showRadii=self.display_radii.checkState() == Qt.Checked,
            return_values=True,
        )

        if len(targets) == 0:
            return

        self.table.setRowCount(0)

        for t, b, data in zip(targets, neighbors, datas):
            row = self.table.rowCount()
            self.table.insertRow(row)

            targ = QTableWidgetItem()
            targ.setData(Qt.DisplayRole, t)
            self.table.setItem(row, 0, targ)

            neigh = QTableWidgetItem()
            neigh.setData(Qt.DisplayRole, b)
            self.table.setItem(row, 1, neigh)

            l = np.linalg.norm(data["L"][1] - data["L"][0])
            b1 = np.linalg.norm(data["B1"][1] - data["B1"][0])
            b2 = np.linalg.norm(data["B2"][1] - data["B2"][0])
            b3 = np.linalg.norm(data["B3"][1] - data["B3"][0])
            b4 = np.linalg.norm(data["B4"][1] - data["B4"][0])
            b5 = np.linalg.norm(data["B5"][1] - data["B5"][0])

            li = QTableWidgetItem()
            li.setData(Qt.DisplayRole, "%.2f" % l)
            self.table.setItem(row, 7, li)

            b1i = QTableWidgetItem()
            b1i.setData(Qt.DisplayRole, "%.2f" % b1)
            self.table.setItem(row, 2, b1i)

            b2i = QTableWidgetItem()
            b2i.setData(Qt.DisplayRole, "%.2f" % b2)
            self.table.setItem(row, 3, b2i)

            b3i = QTableWidgetItem()
            b3i.setData(Qt.DisplayRole, "%.2f" % b3)
            self.table.setItem(row, 4, b3i)

            b4i = QTableWidgetItem()
            b4i.setData(Qt.DisplayRole, "%.2f" % b4)
            self.table.setItem(row, 5, b4i)

            b5i = QTableWidgetItem()
            b5i.setData(Qt.DisplayRole, "%.2f" % b5)
            self.table.setItem(row, 6, b5i)
示例#47
0
    def set_info(self):
        self.tw_adres.horizontalHeader().resizeSection(0, 120)
        self.tw_adres.horizontalHeader().resizeSection(1, 300)
        self.tw_adres.horizontalHeader().resizeSection(2, 80)

        self.tw_vendor_number.horizontalHeader().resizeSection(0, 120)
        self.tw_vendor_number.horizontalHeader().resizeSection(1, 120)
        self.tw_vendor_number.horizontalHeader().resizeSection(2, 120)

        if self.select_id == "new":
            self.pb_add_file.setEnabled(False)
            self.pb_open_file.setEnabled(False)
        else:
            query = """SELECT Name, Legal_Address, Actual_Address, INN, KPP, OGRN, Account, Bank, corres_Account,
                                        BIK, Contact_Person, Phone, Mail, Note, No_Nds, Full_Name FROM clients WHERE Id = %s"""
            info_client = my_sql.sql_select(query, (self.select_id, ))
            if "mysql.connector.errors" in str(type(info_client)):
                QMessageBox.critical(self, "Ошибка sql вывод клиента",
                                     info_client.msg, QMessageBox.Ok)
                return False

            self.le_name.setText(info_client[0][0])
            self.le_legal_address.setText(info_client[0][1])
            self.le_actual_address.setText(info_client[0][2])
            self.le_inn.setText(info_client[0][3])
            self.le_kpp.setText(info_client[0][4])
            self.le_ogrn.setText(info_client[0][5])
            self.le_rs.setText(info_client[0][6])
            self.le_bank.setText(info_client[0][7])
            self.le_ks.setText(info_client[0][8])
            self.le_bik.setText(info_client[0][9])
            self.le_fio.setText(info_client[0][10])
            self.le_phone.setText(info_client[0][11])
            self.le_mail.setText(info_client[0][12])
            self.le_note.appendPlainText(info_client[0][13])
            if info_client[0][14]:
                self.cb_nds.setChecked(True)

            self.le_full_name.setText(info_client[0][15])

            query = """SELECT Id, Name, Adres, KPP FROM clients_actual_address WHERE Client_Id = %s"""
            info_client = my_sql.sql_select(query, (self.select_id, ))
            if "mysql.connector.errors" in str(type(info_client)):
                QMessageBox.critical(self, "Ошибка sql вывод адресов клиента",
                                     info_client.msg, QMessageBox.Ok)
                return False

            row = 0
            for item in info_client:
                self.tw_adres.insertRow(self.tw_adres.rowCount())
                table_item = QTableWidgetItem(item[1])
                table_item.setData(-1, item[0])
                self.tw_adres.setItem(row, 0, table_item)
                table_item = QTableWidgetItem(item[2])
                self.tw_adres.setItem(row, 1, table_item)
                table_item = QTableWidgetItem(item[3])
                self.tw_adres.setItem(row, 2, table_item)
                row += 1

            query = """SELECT Id, Number, Contract, Data_From FROM clients_vendor_number WHERE Client_Id = %s"""
            info_client = my_sql.sql_select(query, (self.select_id, ))
            if "mysql.connector.errors" in str(type(info_client)):
                QMessageBox.critical(self, "Ошибка sql вывод адресов клиента",
                                     info_client.msg, QMessageBox.Ok)
                return False

            row = 0
            for item in info_client:
                self.tw_vendor_number.insertRow(
                    self.tw_vendor_number.rowCount())
                table_item = QTableWidgetItem(item[1])
                table_item.setData(-1, item[0])
                self.tw_vendor_number.setItem(row, 0, table_item)
                table_item = QTableWidgetItem(item[2])
                self.tw_vendor_number.setItem(row, 1, table_item)
                table_item = QTableWidgetItem(item[3].strftime("%d.%m.%Y"))
                self.tw_vendor_number.setItem(row, 2, table_item)
                row += 1

            self.inspection_files(self.le_name.text().replace('.', '').strip(),
                                  "Путь корень клиенты")
示例#48
0
    def calc(self):
        # Проверим записаные суммы в крое
        query = """SELECT transaction_records_material.Note, transaction_records_material.Balance, transaction_records_material.Id
                        FROM transaction_records_material LEFT JOIN material_balance ON transaction_records_material.Supply_Balance_Id = material_balance.Id
                        LEFT JOIN material_supplyposition ON material_balance.Material_SupplyPositionId = material_supplyposition.Id
                        LEFT JOIN material_name ON material_supplyposition.Material_NameId = material_name.Id
                        WHERE Cut_Material_Id = %s"""
        sql_info = my_sql.sql_select(query, (self.id,))
        if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql 1", sql_info.msg, QMessageBox.Ok)
                return False

        pack = {}

        for transaction in sql_info:
            search_pack = findall(r"\d+/(\d+) - ", transaction[0])

            if search_pack:
                search_pack = int(search_pack[0])
            else:
                search_pack = 0

            i = pack.setdefault(search_pack, {"count": 0, "balance": 0, "t_id": []})
            i["count"] += 1
            i["t_id"].append(transaction[2])

            if transaction[1]:
                i["balance"] += transaction[1]

        sum_transaction, sum_info, sum_res = 0, 0, 0
        for key, item_key in pack.items():

            # Проверим записаные веса в пачке
            query = """SELECT pack.Weight + IFNULL(pack_add_material.Weight + pack_add_material.Weight_Rest, 0)
                            FROM pack LEFT JOIN pack_add_material ON pack.Id = pack_add_material.Pack_Id
                            WHERE pack.Cut_Id = %s AND pack.Number = %s"""
            sql_info = my_sql.sql_select(query, (self.id, key))
            if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка поиска пачки", sql_info.msg, QMessageBox.Ok)
                    return False

            if sql_info and sql_info[0][0] and -sql_info[0][0] == item_key["balance"]:
                color = QBrush(QColor(150, 255, 161, 255))
            else:
                color = QBrush(QColor(252, 141, 141, 255))

            self.tableWidget.insertRow(self.tableWidget.rowCount())

            item = QTableWidgetItem(str(key))
            item.setBackground(color)
            item.setData(5, item_key["t_id"])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 0, item)

            item = QTableWidgetItem(str(item_key["count"]))
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 1, item)

            item = QTableWidgetItem(str(item_key["balance"]))
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 2, item)
            sum_transaction += item_key["balance"]

            if sql_info:
                item = QTableWidgetItem(str(sql_info[0][0]))
                sum_info += sql_info[0][0]
            else:
                item = QTableWidgetItem("Нету")
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 3, item)

            if sql_info:
                res = -item_key["balance"] - sql_info[0][0]
                sum_res += res
            else:
                res = None
            item = QTableWidgetItem(str(res))
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 4, item)

        else:
            self.tableWidget.insertRow(self.tableWidget.rowCount())

            item = QTableWidgetItem(str(sum_transaction))
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 2, item)

            item = QTableWidgetItem(str(sum_info))
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 3, item)

            item = QTableWidgetItem(str(sum_res))
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 4, item)
示例#49
0
 def clear_bonus_template(self):
     for r in range(3):
         for c in range(5):
             item = QTableWidgetItem()
             item.setData(Qt.EditRole, 0)
             self.view.custom_bonus_table.setItem(r, c, item)
示例#50
0
    def ui_test(self):
        self.tableWidget.clearContents()
        self.tableWidget.setRowCount(0)

        # Проверим нужно ли применять фильтр
        if self.rb_filter_no.isChecked():
            query = "SELECT cut.Id FROM cut ORDER BY cut.Id"
        elif self.rb_filter_date.isChecked():
            query = "SELECT cut.Id FROM cut WHERE cut.Date_Cut >= '%s' ORDER BY cut.Id" % self.de_date_from.date().toString(Qt.ISODate)
        elif self.rb_filter_num.isChecked():
            query = "SELECT cut.Id FROM cut WHERE cut.Id >= %s ORDER BY cut.Id" % self.le_cut_num.text()
        else:
            QMessageBox.critical(self, "Фильтр", "Что то не так с фильтром", QMessageBox.Ok)
            return False

        sql_info = my_sql.sql_select(query)
        if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql получение приходов материала", sql_info.msg, QMessageBox.Ok)
                return False

        cut_id_list = [i[0] for i in sql_info]

        for cut_id in cut_id_list:
            self.statusBar.showMessage("Расчет кроя %s" % cut_id)

            # Проверим записаные суммы в крое
            query = """SELECT cut.Weight_Rest +cut.Weight_Pack_All, material_name.Name
                          FROM cut LEFT JOIN material_name ON cut.Material_Id = material_name.Id
                          WHERE cut.Id = %s"""
            sql_info = my_sql.sql_select(query, (cut_id,))
            if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql 1", sql_info.msg, QMessageBox.Ok)
                    return False

            res1 = sql_info[0][0]
            main_material = sql_info[0][1]

            # Проверим сумму взятую с пачек
            query = """SELECT c.Weight_Rest + (SELECT SUM(p.Weight) FROM pack as p WHERE p.Cut_Id = c.Id)
                          FROM cut as c WHERE c.Id = %s"""
            sql_info = my_sql.sql_select(query, (cut_id,))
            if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql 2/1", sql_info.msg, QMessageBox.Ok)
                    return False

            res2 = sql_info[0][0]

            # сумируем сумму пачек и доп ткани
            query = """SELECT SUM(pack_add_material.Weight_Rest + pack_add_material.Weight), material_name.Name
                          FROM pack_add_material LEFT JOIN pack ON pack_add_material.Pack_Id = pack.Id
                          LEFT JOIN material_name ON pack_add_material.Material_Name_Id = material_name.Id
                          WHERE pack.Cut_Id = %s"""
            sql_info = my_sql.sql_select(query, (cut_id,))
            if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql 2/2", sql_info.msg, QMessageBox.Ok)
                    return False

            if sql_info[0][0]:
                res2 += sql_info[0][0]

            add_material = sql_info[0][1]

            # Проверим сумму транзакций
            query = """SELECT SUM(Balance)
                        FROM transaction_records_material
                        WHERE transaction_records_material.Cut_Material_Id = %s"""
            sql_info = my_sql.sql_select(query, (cut_id,))
            if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql 3", sql_info.msg, QMessageBox.Ok)
                    return False

            if sql_info[0][0]:
                res3 = -sql_info[0][0]
            else:
                res3 = None

            if res1 == res2 == res3:
                color = QBrush(QColor(150, 255, 161, 255))
                status = 1
            elif res1 != res2 == res3:
                color = QBrush(QColor(255, 255, 153, 255))
                status = 2
            else:
                color = QBrush(QColor(252, 141, 141, 255))
                status = 3

            self.tableWidget.insertRow(self.tableWidget.rowCount())

            item = QTableWidgetItem(str(cut_id))
            item.setData(5, cut_id)
            item.setData(-1, status)
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 0, item)

            item = QTableWidgetItem(str(res1))
            item.setData(5, cut_id)
            item.setData(-1, status)
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 1, item)

            item = QTableWidgetItem(str(res2))
            item.setData(5, cut_id)
            item.setData(-1, status)
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 2, item)

            item = QTableWidgetItem(str(res3))
            item.setData(5, cut_id)
            item.setData(-1, status)
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 3, item)

            item = QTableWidgetItem(main_material)
            item.setData(5, cut_id)
            item.setData(-1, status)
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 4, item)

            item = QTableWidgetItem(add_material)
            item.setData(5, cut_id)
            item.setData(-1, status)
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 5, item)
示例#51
0
 def set_vote_placeholder(row):
     mv = QTableWidgetItem()
     mv.setData(Qt.DisplayRole, "Voting...")
     mv.setData(Qt.TextAlignmentRole, Qt.AlignCenter)
     self.setItem(row, FundColumns.MYVOTE, mv);
示例#52
0
    def ui_test(self):
        self.tableWidget.clearContents()
        self.tableWidget.setRowCount(0)

        # Проверим нужно ли применять фильтр
        if self.rb_filter_no.isChecked():
            query = "SELECT pack.Id FROM cut LEFT JOIN pack ON cut.Id = pack.Cut_Id ORDER BY cut.Id"
        elif self.rb_filter_date.isChecked():
            query = "SELECT pack.Id FROM cut LEFT JOIN pack ON cut.Id = pack.Cut_Id WHERE cut.Date_Cut >= '%s' ORDER BY cut.Id" % self.de_date_from.date().toString(Qt.ISODate)
        elif self.rb_filter_num.isChecked():
            query = "SELECT pack.Id FROM cut LEFT JOIN pack ON cut.Id = pack.Cut_Id WHERE cut.Id >= %s ORDER BY cut.Id" % self.le_cut_num.text()
        else:
            QMessageBox.critical(self, "Фильтр", "Что то не так с фильтром", QMessageBox.Ok)
            return False

        sql_info = my_sql.sql_select(query)
        if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql получение приходов материала", sql_info.msg, QMessageBox.Ok)
                return False

        pack_id_list = [i[0] for i in sql_info]
        pack_id_list_str = str(pack_id_list).replace("[", "").replace("]", "").replace("None,", "")

        # Проверим записаные суммы в крое
        query = """SELECT Pack_Id, SUM(Value * Value_Thing)
                    FROM pack_accessories
                    WHERE Pack_Id IN (%s)
                    GROUP BY pack_accessories.Pack_Id""" % pack_id_list_str
        sql_info = my_sql.sql_select(query)
        if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql 1", sql_info.msg, QMessageBox.Ok)
                return False

        res1 = sql_info

        # Проверим сумму взятую с пачек
        query = """SELECT pack_accessories.Pack_Id, SUM(Balance)
                    FROM transaction_records_accessories
                      LEFT JOIN pack_accessories ON transaction_records_accessories.Pack_Accessories_Id = pack_accessories.Id
                    WHERE pack_accessories.Pack_Id IN (%s)
                    GROUP BY pack_accessories.Pack_Id""" % pack_id_list_str
        sql_info = my_sql.sql_select(query)
        if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql 2", sql_info.msg, QMessageBox.Ok)
                return False

        res2 = sql_info
        res = {}
        for i in res1+res2:
            res.setdefault(i[0], []).append(i[1])

        for key, val in res.items():
            self.statusBar.showMessage("Расчет пачки %s" % key)

            if val[0] == -val[1]:
                color = QBrush(QColor(150, 255, 161, 255))
                status = 1

            else:
                color = QBrush(QColor(252, 141, 141, 255))
                status = 2

            self.tableWidget.insertRow(self.tableWidget.rowCount())

            item = QTableWidgetItem(str(key))
            item.setData(5, key)
            item.setData(-1, status)
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 0, item)

            item = QTableWidgetItem(str(val[0]))
            item.setData(-1, status)
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 1, item)

            item = QTableWidgetItem(str(val[1]))
            item.setData(-1, status)
            item.setBackground(color)
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 2, item)
示例#53
0
    def __init__(self, plugin, repos, branches):
        """
        Initialize the open dialog.

        :param plugin: the plugin instance
        :param repos: the list of repositories
        :param branches: the list of branches
        """
        super(OpenDialog, self).__init__()
        self._plugin = plugin
        self._repos = repos
        self._branches = branches

        # General setup of the dialog
        logger.debug("Showing open database dialog")
        self.setWindowTitle("Open from Remote Server")
        iconPath = self._plugin.resource('download.png')
        self.setWindowIcon(QIcon(iconPath))
        self.resize(900, 450)

        # Setup of the layout and widgets
        layout = QHBoxLayout(self)
        self._reposTable = QTableWidget(len(repos), 1, self)
        self._reposTable.setHorizontalHeaderLabels(('Remote Repositories',))
        for i, repo in enumerate(repos):
            item = QTableWidgetItem("%s (%s)" % (str(repo.file),
                                                 str(repo.hash)))
            item.setData(Qt.UserRole, repo)
            item.setFlags(item.flags() & ~Qt.ItemIsEditable)
            self._reposTable.setItem(i, 0, item)
        self._reposTable.horizontalHeader().setSectionsClickable(False)
        self._reposTable.horizontalHeader().setStretchLastSection(True)
        self._reposTable.verticalHeader().setVisible(False)
        self._reposTable.setSelectionBehavior(QTableWidget.SelectRows)
        self._reposTable.setSelectionMode(QTableWidget.SingleSelection)
        self._reposTable.itemClicked.connect(self._repo_clicked)
        minSZ = self._reposTable.minimumSize()
        self._reposTable.setMinimumSize(300, minSZ.height())
        maxSZ = self._reposTable.maximumSize()
        self._reposTable.setMaximumSize(300, maxSZ.height())
        layout.addWidget(self._reposTable)

        rightSide = QWidget(self)
        rightLayout = QVBoxLayout(rightSide)
        infoGroup = QGroupBox("Information", rightSide)
        infoLayout = QGridLayout(infoGroup)
        self._fileLabel = QLabel('<b>File:</b>')
        infoLayout.addWidget(self._fileLabel, 0, 0)
        self._hashLabel = QLabel('<b>Hash:</b>')
        infoLayout.addWidget(self._hashLabel, 1, 0)
        infoLayout.setColumnStretch(0, 1)
        self._typeLabel = QLabel('<b>Type:</b>')
        infoLayout.addWidget(self._typeLabel, 0, 1)
        self._dateLabel = QLabel('<b>Date:</b>')
        infoLayout.addWidget(self._dateLabel, 1, 1)
        infoLayout.setColumnStretch(1, 1)
        rightLayout.addWidget(infoGroup)

        branchesGroup = QGroupBox("Branches", rightSide)
        branchesLayout = QGridLayout(branchesGroup)
        self._branchesTable = QTableWidget(0, 2, branchesGroup)
        self._branchesTable.setHorizontalHeaderLabels(('Identifier', 'Date'))
        horizontalHeader = self._branchesTable.horizontalHeader()
        horizontalHeader.setSectionsClickable(False)
        horizontalHeader.setSectionResizeMode(0, horizontalHeader.Stretch)
        self._branchesTable.verticalHeader().setVisible(False)
        self._branchesTable.setSelectionBehavior(QTableWidget.SelectRows)
        self._branchesTable.setSelectionMode(QTableWidget.SingleSelection)
        self._branchesTable.itemClicked.connect(self._branch_clicked)
        branchesLayout.addWidget(self._branchesTable, 0, 0)
        rightLayout.addWidget(branchesGroup)

        buttonsWidget = QWidget(rightSide)
        buttonsLayout = QHBoxLayout(buttonsWidget)
        buttonsLayout.addStretch()
        self._openButton = QPushButton("Open")
        self._openButton.setEnabled(False)
        self._openButton.clicked.connect(self.accept)
        buttonsLayout.addWidget(self._openButton)
        cancelButton = QPushButton("Cancel")
        cancelButton.clicked.connect(self.reject)
        buttonsLayout.addWidget(cancelButton)
        rightLayout.addWidget(buttonsWidget)
        layout.addWidget(rightSide)
示例#54
0
    def build_aa_layout(self, pak):
        trees_id = self.get_tree_tabs(pak)
        trees_info = eq2s_func.get_db_content('aatree', 'id', trees_id)
        self.aa_maxpoints = {}
        self.aa_clickedpoints = {}
        self.aa_points_display = {}
        # store aa tabs
        self.aa_tables = {}
        tradeskilltabs = []
        # adventure tabs
        for each in sorted(trees_id):
            name = trees_info[each]['name']
            # store all tradeskill aa tab into a list, and make all of them next to adventure tabs.
            if name in ['Tradeskill', 'General', 'Far Seas']:
                tradeskilltabs.append(each)
                continue
            # jumping to tabs creating function
            tab = self.create_tabs(each)
            self.aa_maxpoints[each] = trees_info[each][
                'maxpointsperlevelnode_list'][-1]['maxpoints']
            self.aa_clickedpoints[each] = 0
            self.aa_points_display[each].setText('{} / {}'.format(
                self.aa_clickedpoints[each], self.aa_maxpoints[each]))
            self.tab_widget.addTab(tab, name)
        # tradeskill tabs
        for each in tradeskilltabs:
            tab = self.create_tabs(each)
            self.aa_maxpoints[each] = trees_info[each][
                'maxpointsperlevelnode_list'][-1]['maxpoints']
            self.aa_clickedpoints[each] = 0
            self.aa_points_display[each].setText('{} / {}'.format(
                self.aa_clickedpoints[each], self.aa_maxpoints[each]))
            self.tab_widget.addTab(tab, trees_info[each]['name'])

        self.splnodes = {}
        # construct the aa layout
        try:
            for e1 in trees_info:
                grid_n = eq2s_func.get_aa_tree_grid_modifier(
                    trees_info[e1]['name'])
                for e2 in trees_info[e1]['alternateadvancementnode_list']:
                    epicon = QTableWidgetItem()
                    epicon.setFont(QFont("Times", 15, QFont.Black))
                    # get the crc group spells from local databases, cuz only one target provide,
                    # so I just extract the only list from the returned dict.
                    crcs = eq2s_func.get_db_content(
                        'crcspl', 'crc', (e2['spellcrc'], ))[e2['spellcrc']]
                    # this dict intend to save ordered level(tier) crc spells, the keys means tier of this spell.
                    crcdict = {}
                    for each in crcs:
                        crcdict[each['tier']] = each
                    epicon.setData(1000, crcdict)
                    self.splnodes[e2['nodeid']] = epicon
                    epicon.setToolTip(eq2s_func.CookSpellText(crcs[0]))
                    icon = QIcon()
                    iconid = epicon.data(1000)[1]['icon']['id']
                    # backiconid = epicon.data(1000)[0]['icon']['backdrop']
                    icon.addPixmap(
                        eq2s_func.get_pixmap_in_db(iconid, 'spellicons'))
                    # epicon.setBackground(QBrush(eq2s_func.get_pixmap_in_db(backiconid, 'spellicons')))
                    epicon.setIcon(icon)
                    self.aa_tables[e1].setItem(
                        int(e2['ycoord'] * grid_n['y'] + 1),
                        int(e2['xcoord'] * grid_n['x'] + 1), epicon)
        except BaseException as err:
            QMessageBox().critical(self, 'Loading Error',
                                   'Something Bad Happen:\n{}'.format(err))
            print(err)
            return

        self.fresh_tables()
        self.throw_aas(pak)
示例#55
0
    def FillPieChart(self):

        self.tblPieChartLegend.clear()

        QApplication.processEvents()

        self.tblPieChartLegend.setColumnCount(3)
        self.tblPieChartLegend.setRowCount(len(self.familiesList))

        self.tblPieChartLegend.horizontalHeader().setVisible(False)
        header = self.tblPieChartLegend.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        self.tblPieChartLegend.setShowGrid(False)

        colors = []
        familiesCount = []
        set_angle = 0
        R = 0

        for f in self.familiesList:
            familiesCount.append(
                sum(
                    x.count(str(f))
                    for x in self.filteredSpeciesListWithFamilies))
        total = sum(familiesCount)

        for fl in range(len(self.familiesList)):
            number = []
            # randomly create three color values (rgb)
            for rgb in range(3):
                number.append(random.randrange(0, 255))
            colors.append(QColor(number[0], number[1], number[2]))

        scene = QGraphicsScene()

        for family in familiesCount:
            # create the angle of each wedge according to its perecent of 360
            angle = round(family / total * 16 * 360)
            # set size of circle and create wedge
            ellipse = self.MyEllipse(0, 0, 100, 100)
            # set the tooltip for the ellipse wedge
            ellipse.setToolTip(self.familiesList[R] + ": " + str(family))
            # set center of circle, like an axle
            ellipse.setPos(0, 0)
            # rotate through the wedge
            ellipse.setStartAngle(set_angle)
            ellipse.setSpanAngle(angle)
            # assign color
            ellipse.setBrush(colors[R])
            # turn off pen so we won't have ellipse borders

            pen = QPen()
            pen.setWidthF(.1)
            ellipse.setPen(pen)

            # create set_angle for next time around
            set_angle = angle + set_angle
            # add the actual wedge to the scene object
            scene.addItem(ellipse)

            # save meta data to ellipse for future use (e.g., clicks)
            ellipse.family = self.familiesList[R]
            ellipse.parent = self

            # add entry to legend table and set proper color
            colorItem = QTableWidgetItem()
            colorItem.setBackground(QColor(colors[R]))

            familyNameItem = QTableWidgetItem()
            familyNameItem.setData(Qt.DisplayRole, self.familiesList[R])

            familyCountItem = QTableWidgetItem()
            familyCountItem.setData(Qt.DisplayRole, family)

            self.tblPieChartLegend.setItem(R, 0, colorItem)
            self.tblPieChartLegend.setItem(R, 1, familyNameItem)
            self.tblPieChartLegend.setItem(R, 2, familyCountItem)

            R = R + 1

        self.gvPieChart.setScene(scene)

        self.fitPieChart()

        return (True)
示例#56
0
class GalleryDownloaderItem(QObject):
    """
    HenItem wrapper
    """
    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 = 'Unknown'
        if hitem.download_type == app_constants.DOWNLOAD_TYPE_ARCHIVE:
            _type = 'Archive'
        if hitem.download_type == app_constants.DOWNLOAD_TYPE_OTHER:
            _type = 'Other'
        if hitem.download_type == app_constants.DOWNLOAD_TYPE_TORRENT:
            _type = '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 == app_constants.DOWNLOAD_TYPE_TORRENT:
            self.status_item.setText("Sent to torrent client!")
        else:
            self.status_item.setText("Creating gallery...")
    def show_all_advertisement(self, advertisements):
        """ 显示系统中所有广告信息供管理 """
        self.ad_table.clearContents()
        self.ad_table.setRowCount(len(advertisements))
        for row, ad_item in enumerate(advertisements):
            item0 = QTableWidgetItem(str(ad_item["id"]))
            item0.setTextAlignment(Qt.AlignCenter)
            self.ad_table.setItem(row, 0, item0)

            item1 = QTableWidgetItem(ad_item["title"])
            item1.setTextAlignment(Qt.AlignCenter)
            self.ad_table.setItem(row, 1, item1)

            item2 = QTableWidgetItem(self.AD_TYPE.get(ad_item["ad_type"],
                                                      '未知'))
            item2.setTextAlignment(Qt.AlignCenter)
            item2.setData(Qt.UserRole, ad_item["ad_type"])
            self.ad_table.setItem(row, 2, item2)

            item3 = QTableWidgetItem("查看图片")
            item3.setTextAlignment(Qt.AlignCenter)
            item3.setData(Qt.UserRole, ad_item["image"])
            self.ad_table.setItem(row, 3, item3)
            item4 = QTableWidgetItem("查看文件")
            item4.setData(Qt.UserRole, ad_item["filepath"])
            item4.setTextAlignment(Qt.AlignCenter)
            self.ad_table.setItem(row, 4, item4)
            item5 = QTableWidgetItem("查看网址")
            item5.setTextAlignment(Qt.AlignCenter)
            item5.setData(Qt.UserRole, ad_item["web_url"])
            self.ad_table.setItem(row, 5, item5)
            item6 = QTableWidgetItem("查看内容")
            item6.setTextAlignment(Qt.AlignCenter)
            item6.setData(Qt.UserRole, ad_item["content"])
            self.ad_table.setItem(row, 6, item6)
            item7 = QTableWidgetItem("备注")
            item7.setForeground(QBrush(QColor(66, 66, 233)))
            item7.setData(Qt.UserRole, ad_item["note"])
            item7.setTextAlignment(Qt.AlignCenter)
            self.ad_table.setItem(row, 7, item7)

            text, q_color = ("启用", QColor(
                66, 233,
                66)) if ad_item["is_active"] else ("未启用", QColor(233, 66, 66))
            item8 = QTableWidgetItem(text)
            item8.setForeground(QBrush(q_color))
            item8.setTextAlignment(Qt.AlignCenter)
            self.ad_table.setItem(row, 8, item8)
    def ui_calc(self):
        self.tableWidget.clearContents()
        self.tableWidget.setRowCount(0)

        query = """SELECT clients.Id, clients.Name, `order`.Number_Doc, `order`.Number_Order, `order`.Date_Shipment,
                         `order`.Sum_Off_Nds, `order`.Sum_In_Nds, SUM(order_position.Value)
                      FROM `order` LEFT JOIN order_position ON `order`.Id = order_position.Order_Id
                        LEFT JOIN clients ON `order`.Client_Id = clients.Id
                      WHERE `order`.Date_Shipment >= %s AND `order`.Date_Shipment <= %s AND `order`.Shipped = 1 GROUP BY `order`.Id ORDER BY clients.Id"""
        sql_info = my_sql.sql_select(query,
                                     (self.de_date_from.date().toPyDate(),
                                      self.de_date_to.date().toPyDate()))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self,
                                 "Ошибка sql получения отгруженных зказов",
                                 sql_info.msg, QMessageBox.Ok)
            return False

        sum_off_nds, sum_in_nds, sum_value = 0, 0, 0
        all_sum_off_nds, all_sum_in_nds, all_sum_value = 0, 0, 0
        old_client_id = None
        for order in sql_info:

            if order[0] != old_client_id:  # Если новый клиент не равен предыдущемо делаем подсчет!

                if old_client_id is None:  # Если это первая итерация то просто белем ID клиента и мдем дальше!
                    old_client_id = order[0]
                else:
                    all_sum_off_nds += sum_off_nds
                    all_sum_in_nds += sum_in_nds
                    all_sum_value += sum_value

                    self.tableWidget.insertRow(self.tableWidget.rowCount())
                    text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ',
                                  str(sum_off_nds))
                    item = QTableWidgetItem(text)
                    item.setData(5, order[0])
                    self.tableWidget.setItem(self.tableWidget.rowCount() - 1,
                                             4, item)

                    text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ',
                                  str(sum_in_nds))
                    item = QTableWidgetItem(text)
                    item.setData(5, order[0])
                    self.tableWidget.setItem(self.tableWidget.rowCount() - 1,
                                             5, item)

                    text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ',
                                  str(sum_value))
                    item = QTableWidgetItem(text)
                    item.setData(5, order[0])
                    self.tableWidget.setItem(self.tableWidget.rowCount() - 1,
                                             6, item)

                    sum_off_nds, sum_in_nds, sum_value = 0, 0, 0
                    old_client_id = order[0]

            self.tableWidget.insertRow(self.tableWidget.rowCount())

            item = QTableWidgetItem(order[1])
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 0, item)

            item = QTableWidgetItem(str(order[2]))
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 1, item)

            item = QTableWidgetItem(str(order[3]))
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 2, item)

            item = QTableWidgetItem(order[4].strftime("%d.%m.%Y"))
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 3, item)

            sum_off_nds += order[5]
            text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(order[5]))
            item = QTableWidgetItem(text)
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 4, item)

            sum_in_nds += order[6]
            text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(order[6]))
            item = QTableWidgetItem(text)
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 5, item)

            sum_value += order[7]
            text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(order[7]))
            item = QTableWidgetItem(text)
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 6, item)

        else:
            # Вставляем сумму для последнего клиента
            all_sum_off_nds += sum_off_nds
            all_sum_in_nds += sum_in_nds
            all_sum_value += sum_value

            self.tableWidget.insertRow(self.tableWidget.rowCount())
            text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(sum_off_nds))
            item = QTableWidgetItem(text)
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 4, item)

            text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(sum_in_nds))
            item = QTableWidgetItem(text)
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 5, item)

            text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(sum_value))
            item = QTableWidgetItem(text)
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 6, item)

            # Вставляем итоговоую сумму
            self.tableWidget.insertRow(self.tableWidget.rowCount())
            text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ',
                          str(all_sum_off_nds))
            item = QTableWidgetItem(text)
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 4, item)

            text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(all_sum_in_nds))
            item = QTableWidgetItem(text)
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 5, item)

            text = re.sub(r'(?<=\d)(?=(\d\d\d)+\b.)', ' ', str(all_sum_value))
            item = QTableWidgetItem(text)
            item.setData(5, order[0])
            self.tableWidget.setItem(self.tableWidget.rowCount() - 1, 6, item)
示例#59
0
    def FillSpecies(self, filter):

        self.filter = filter
        self.listType = "Species"
        checklistDetails = ""

        # set up a bold font to use in columns as needed
        font = QFont()
        font.setBold(True)

        if filter.getLocationType() == "Location":
            self.btnShowLocation.setVisible(True)

    # set up tblList column headers and widths
        self.tblList.setShowGrid(False)
        header = self.tblList.horizontalHeader()
        header.setVisible(True)

        # if this is a species list (not a single checklist), get data and set 4 columns
        if filter.getChecklistID() == "":

            thisWindowList = self.mdiParent.db.GetSpeciesWithData(
                filter, [], "Subspecies")
            thisCleanedWindowList = []

            # clean out spuh and slash entries
            for s in range(len(thisWindowList)):
                if not ("sp." in thisWindowList[s][0]
                        or "/" in thisWindowList[s][0]):
                    thisCleanedWindowList.append(thisWindowList[s])
            thisWindowList = thisCleanedWindowList

            if len(thisWindowList) == 0:
                return (False)

            self.tblList.setRowCount(len(thisWindowList))
            self.tblList.setColumnCount(6)
            self.tblList.setHorizontalHeaderLabels([
                'Tax', 'Species', 'First', 'Last', 'Checklists',
                '% of Checklists'
            ])
            header.setSectionResizeMode(1, QHeaderView.Stretch)
            self.tblList.setItemDelegateForColumn(
                5, code_FloatDelegate.FloatDelegate(2))

            # add species and dates to table row by row
            R = 0
            for species in thisWindowList:
                taxItem = QTableWidgetItem()
                taxItem.setData(Qt.DisplayRole, R + 1)
                speciesItem = QTableWidgetItem()
                speciesItem.setText(species[0])
                speciesItem.setData(Qt.UserRole, QVariant(species[4]))
                firstItem = QTableWidgetItem()
                firstItem.setData(Qt.DisplayRole, species[1])
                lastItem = QTableWidgetItem()
                lastItem.setData(Qt.DisplayRole, species[2])
                self.tblList.setItem(R, 0, taxItem)
                checklistCountItem = QTableWidgetItem()
                checklistCountItem.setData(Qt.DisplayRole, species[5])
                checklistCountItem.setTextAlignment(Qt.AlignCenter
                                                    | Qt.AlignVCenter)

                percentageItem = QTableWidgetItem()
                percentageItem.setData(Qt.DisplayRole, species[6])

                self.tblList.setItem(R, 1, speciesItem)
                self.tblList.item(R, 1).setFont(font)
                self.tblList.item(R, 1).setForeground(Qt.blue)

                self.tblList.setItem(R, 2, firstItem)
                self.tblList.setItem(R, 3, lastItem)
                self.tblList.setItem(R, 4, checklistCountItem)
                self.tblList.setItem(R, 5, percentageItem)
                self.currentSpeciesList.append(species[0])
                R = R + 1

            # hide the checklist comments box, since  we're not showing a single checklist
            self.txtChecklistComments.setVisible(False)

            self.tblList.addAction(self.actionSetFirstDateFilter)
            self.tblList.addAction(self.actionSetLastDateFilter)
            self.tblList.addAction(self.actionSetSpeciesFilter)

        # if this is limited to a checklist, set 3 columns
        else:

            self.listType = "Single Checklist"

            thisWindowList = self.mdiParent.db.GetSightings(filter)
            self.tblList.setRowCount(len(thisWindowList))
            self.tblList.setColumnCount(4)
            self.tblList.setHorizontalHeaderLabels(
                ['Tax', 'Species', 'Count', "Comment"])
            header.setSectionResizeMode(1, QHeaderView.Stretch)
            self.tblList.setWordWrap(True)

            # add species and dates to table row by row
            R = 0
            for s in thisWindowList:

                taxItem = QTableWidgetItem()
                taxItem.setData(Qt.DisplayRole, R + 1)

                speciesItem = QTableWidgetItem()
                speciesItem.setText(s["commonName"])
                speciesItem.setData(Qt.UserRole, QVariant(s["commonName"]))

                countItem = QTableWidgetItem()
                count = s["count"]
                if count != "X":
                    count = int(count)
                countItem.setData(Qt.DisplayRole, count)
                countItem.setTextAlignment(Qt.AlignCenter | Qt.AlignVCenter)

                commentItem = QTableWidgetItem()
                commentItem.setText(s["speciesComments"])

                self.tblList.setItem(R, 0, taxItem)
                self.tblList.setItem(R, 1, speciesItem)
                self.tblList.item(R, 1).setFont(font)
                self.tblList.item(R, 1).setForeground(Qt.blue)
                self.tblList.setItem(R, 2, countItem)
                self.tblList.setItem(R, 3, commentItem)

                self.currentSpeciesList.append(s["commonName"])

                R = R + 1

            # resize all rows as necessary to show full comments
            # without this call, Qt sometimes truncates the comments

            # shorten  the height of tblList to create room for checklist comments box
            self.txtChecklistComments.setVisible(True)

            # fill checklist comments text
            checklistComments = thisWindowList[0]["checklistComments"]
            if checklistComments == "":
                checklistComments = "No checklist comments."
            self.txtChecklistComments.appendPlainText(checklistComments)

            #fill checklist details of time, distance, and checklist protoccol
            time = thisWindowList[0]["time"]
            protocol = thisWindowList[0]["protocol"]
            duration = thisWindowList[0]["duration"]
            distance = thisWindowList[0]["distance"]
            observerCount = thisWindowList[0]["observers"]

            if time != "":
                time = time + ",  "

            if duration != "0":
                duration = duration + " min,  "
            else:
                duration = ""

            if distance != "":
                distance = distance + " km,  "

            if observerCount != "":
                observerCount = observerCount + " obs,  "

            if "Traveling" in protocol:
                protocol = "Traveling"
            if "Stationary" in protocol:
                protocol = "Stationary"
            if "Casual" in protocol:
                protocol = "Casual"

            checklistDetails = (time + duration + distance + observerCount +
                                protocol)

            self.tblList.addAction(self.actionSetDateFilter)
            self.tblList.addAction(self.actionSetSpeciesFilter)
            self.tblList.addAction(self.actionSetLocationFilter)

        speciesCount = self.mdiParent.db.CountSpecies(self.currentSpeciesList)

        self.lblSpecies.setText("Species: " + str(speciesCount))

        if speciesCount != self.tblList.rowCount():
            self.lblSpecies.setText("Species: " + str(speciesCount) +
                                    " plus " + str(self.tblList.rowCount() -
                                                   speciesCount) +
                                    " other taxa")

        self.mdiParent.SetChildDetailsLabels(self, filter)

        if checklistDetails != "":
            self.lblDetails.setText(checklistDetails)

        location = filter.getLocationName()
        if location != "":
            if filter.getLocationType() == "Country":
                location = self.mdiParent.db.GetCountryName(location)
            if filter.getLocationType() == "State":
                location = self.mdiParent.db.GetStateName(location)
            location = location + ": "

        dateRange = self.lblDateRange.text()

        family = filter.getFamily()
        if family != "":
            family = family.split(" (")[0]
            family = " (" + family + ")"

        order = filter.getOrder()
        if order != "":
            order = order + ":"

        windowTitle = location + dateRange + order + family
        self.setWindowTitle(windowTitle)

        icon = QIcon()
        icon.addPixmap(QPixmap(":/icon_bird.png"), QIcon.Normal, QIcon.Off)
        self.setWindowIcon(icon)

        self.scaleMe()
        self.resizeMe()

        # tell MainWindow that we succeeded filling the list
        return (True)
示例#60
0
    def genJobsTabTable(self):
        self.jobsTabTable.setShowGrid(True)
        self.jobsTabTable.setSortingEnabled(True)
        self.jobsTabTable.setColumnCount(10)
        self.jobsTabTable.setHorizontalHeaderLabels([
            'Job', 'User', 'Status', 'Queue', 'Host', 'Processers', 'cpuTime',
            'Span Hosts', 'Rusage (G)', 'Mem (G)'
        ])

        command = 'bjobs -UF '
        user = self.jobsTabUserLine.text().strip()

        if re.match('^\s*$', user):
            command = str(command) + ' -u all'
        else:
            command = str(command) + ' -u ' + str(user)

        queue = self.jobsTabQueueCombo.currentText().strip()

        if queue != 'ALL':
            command = str(command) + ' -q ' + str(queue)

        status = self.jobsTabStatusCombo.currentText().strip()

        if status == 'RUN':
            command = str(command) + ' -r'
        elif status == 'PEND':
            command = str(command) + ' -p'
        elif status == 'ALL':
            command = str(command) + ' -a'

        startedOn = self.jobsTabStartedOnCombo.currentText().strip()

        if startedOn != 'ALL':
            command = str(command) + ' -m ' + str(startedOn)

        jobDic = common.getBjobsUfInfo(command)

        self.jobsTabTable.setRowCount(len(jobDic.keys()))
        jobs = list(jobDic.keys())

        for i in range(len(jobs)):
            job = jobs[i]
            j = 0
            self.jobsTabTable.setItem(i, j, QTableWidgetItem(job))

            j = j + 1
            item = QTableWidgetItem()
            item.setText(jobDic[job]['user'])
            self.jobsTabTable.setItem(i, j, item)

            j = j + 1
            item = QTableWidgetItem()
            item.setText(jobDic[job]['status'])
            self.jobsTabTable.setItem(i, j, item)

            j = j + 1
            item = QTableWidgetItem()
            item.setText(jobDic[job]['queue'])
            self.jobsTabTable.setItem(i, j, item)

            j = j + 1
            item = QTableWidgetItem()
            item.setText(jobDic[job]['startedOn'])
            self.jobsTabTable.setItem(i, j, item)

            j = j + 1
            if str(jobDic[job]['processorsRequested']) != '':
                item = QTableWidgetItem()
                item.setData(Qt.DisplayRole,
                             int(jobDic[job]['processorsRequested']))
                self.jobsTabTable.setItem(i, j, item)

            j = j + 1
            if str(jobDic[job]['cpuTime']) != '':
                item = QTableWidgetItem()
                item.setData(Qt.DisplayRole, int(jobDic[job]['cpuTime']))
                self.jobsTabTable.setItem(i, j, item)

            j = j + 1
            if str(jobDic[job]['spanHosts']) != '':
                item = QTableWidgetItem()
                item.setData(Qt.DisplayRole, int(jobDic[job]['spanHosts']))
                self.jobsTabTable.setItem(i, j, item)

            j = j + 1
            if str(jobDic[job]['rusageMem']) != '':
                item = QTableWidgetItem()
                rusageMemValue = int(jobDic[job]['rusageMem']) / 1024
                item.setData(Qt.DisplayRole, int(rusageMemValue))
                self.jobsTabTable.setItem(i, j, item)

            j = j + 1
            if str(jobDic[job]['mem']) != '':
                item = QTableWidgetItem()
                memValue = int(jobDic[job]['mem']) / 1024
                item.setData(Qt.DisplayRole, int(memValue))
                self.jobsTabTable.setItem(i, j, item)