Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- # Form implementation generated from reading ui file 'litero_reader.ui'
- #
- # Created by: PyQt5 UI code generator 5.15.6
- #
- # WARNING: Any manual changes made to this file will be lost when pyuic5 is
- # run again. Do not edit this file unless you know what you are doing.
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PyQt5 import *
- from PyQt5.QtCore import QCoreApplication, QObject
- from PyQt5.QtCore import *
- from PyQt5.QtWidgets import *
- import pandas as pd
- import sys
- import re
- class Ui_MainWindow(object):
- def setupUi(self, MainWindow):
- MainWindow.setObjectName("MainWindow")
- MainWindow.resize(978, 684)
- self.centralwidget = QtWidgets.QWidget(MainWindow)
- self.centralwidget.setObjectName("centralwidget")
- self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
- self.gridLayout.setObjectName("gridLayout")
- self.table_browse = QtWidgets.QTableWidget(self.centralwidget)
- self.table_browse.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
- self.table_browse.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
- self.table_browse.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
- self.table_browse.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
- self.table_browse.setObjectName("table_browse")
- self.table_browse.setColumnCount(4)
- self.table_browse.setRowCount(0)
- item = QtWidgets.QTableWidgetItem()
- font = QtGui.QFont()
- font.setPointSize(9)
- item.setFont(font)
- self.table_browse.setHorizontalHeaderItem(0, item)
- item = QtWidgets.QTableWidgetItem()
- font = QtGui.QFont()
- font.setPointSize(9)
- item.setFont(font)
- self.table_browse.setHorizontalHeaderItem(1, item)
- item = QtWidgets.QTableWidgetItem()
- font = QtGui.QFont()
- font.setPointSize(9)
- item.setFont(font)
- self.table_browse.setHorizontalHeaderItem(2, item)
- item = QtWidgets.QTableWidgetItem()
- font = QtGui.QFont()
- font.setPointSize(9)
- item.setFont(font)
- self.table_browse.setHorizontalHeaderItem(3, item)
- self.gridLayout.addWidget(self.table_browse, 0, 0, 1, 1)
- self.gridLayout_2 = QtWidgets.QGridLayout()
- self.gridLayout_2.setContentsMargins(10, -1, 10, 10)
- self.gridLayout_2.setObjectName("gridLayout_2")
- self.label_2 = QtWidgets.QLabel(self.centralwidget)
- self.label_2.setObjectName("label_2")
- self.gridLayout_2.addWidget(self.label_2, 0, 0, 1, 1)
- self.doubleSpinBox_rating = QtWidgets.QDoubleSpinBox(self.centralwidget)
- self.doubleSpinBox_rating.setEnabled(False)
- self.doubleSpinBox_rating.setFrame(True)
- self.doubleSpinBox_rating.setMaximum(5.0)
- self.doubleSpinBox_rating.setSingleStep(0.1)
- self.doubleSpinBox_rating.setObjectName("doubleSpinBox_rating")
- self.gridLayout_2.addWidget(self.doubleSpinBox_rating, 6, 1, 1, 1)
- self.checkBox_story = QtWidgets.QCheckBox(self.centralwidget)
- self.checkBox_story.setObjectName("checkBox_story")
- self.gridLayout_2.addWidget(self.checkBox_story, 4, 0, 1, 1)
- self.checkBox_rating = QtWidgets.QCheckBox(self.centralwidget)
- self.checkBox_rating.setChecked(False)
- self.checkBox_rating.setObjectName("checkBox_rating")
- self.gridLayout_2.addWidget(self.checkBox_rating, 6, 0, 1, 1)
- self.pushButton_search = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_search.setObjectName("pushButton_search")
- self.gridLayout_2.addWidget(self.pushButton_search, 6, 2, 1, 1)
- self.pushButton_show_all = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_show_all.setObjectName("pushButton_show_all")
- self.gridLayout_2.addWidget(self.pushButton_show_all, 4, 2, 1, 1)
- self.checkBox_title = QtWidgets.QCheckBox(self.centralwidget)
- self.checkBox_title.setObjectName("checkBox_title")
- self.gridLayout_2.addWidget(self.checkBox_title, 3, 0, 1, 1)
- self.checkBox_descr = QtWidgets.QCheckBox(self.centralwidget)
- self.checkBox_descr.setObjectName("checkBox_descr")
- self.gridLayout_2.addWidget(self.checkBox_descr, 3, 1, 1, 1)
- self.pushButton_rating_sort = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_rating_sort.setObjectName("pushButton_rating_sort")
- self.gridLayout_2.addWidget(self.pushButton_rating_sort, 3, 2, 1, 1)
- self.lineEdit_term = QtWidgets.QLineEdit(self.centralwidget)
- self.lineEdit_term.setObjectName("lineEdit_term")
- self.gridLayout_2.addWidget(self.lineEdit_term, 0, 1, 1, 2)
- self.radioButton_search_master = QtWidgets.QRadioButton(self.centralwidget)
- self.radioButton_search_master.setChecked(False)
- self.radioButton_search_master.setObjectName("radioButton_search_master")
- self.gridLayout_2.addWidget(self.radioButton_search_master, 5, 0, 1, 1)
- self.radioButton_search_cursel = QtWidgets.QRadioButton(self.centralwidget)
- self.radioButton_search_cursel.setChecked(True)
- self.radioButton_search_cursel.setObjectName("radioButton_search_cursel")
- self.gridLayout_2.addWidget(self.radioButton_search_cursel, 5, 1, 1, 1)
- self.checkBox_multiple_tags = QtWidgets.QCheckBox(self.centralwidget)
- self.checkBox_multiple_tags.setObjectName("checkBox_multiple_tags")
- self.gridLayout_2.addWidget(self.checkBox_multiple_tags, 4, 1, 1, 1)
- self.gridLayout.addLayout(self.gridLayout_2, 1, 0, 1, 1)
- self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
- self.textBrowser.setObjectName("textBrowser")
- self.gridLayout.addWidget(self.textBrowser, 0, 1, 2, 1)
- MainWindow.setCentralWidget(self.centralwidget)
- self.retranslateUi(MainWindow)
- QtCore.QMetaObject.connectSlotsByName(MainWindow)
- self.data = pd.read_csv(sys.argv[1])
- self.cur_data = self.data
- self.rating_order = False
- # self.show()
- self.setup()
- def retranslateUi(self, MainWindow):
- _translate = QtCore.QCoreApplication.translate
- MainWindow.setWindowTitle(_translate("MainWindow", "BenisStiffer"))
- item = self.table_browse.horizontalHeaderItem(0)
- item.setText(_translate("MainWindow", "Title"))
- item = self.table_browse.horizontalHeaderItem(1)
- item.setText(_translate("MainWindow", "Descr"))
- item = self.table_browse.horizontalHeaderItem(2)
- item.setText(_translate("MainWindow", "Rating"))
- item = self.table_browse.horizontalHeaderItem(3)
- item.setText(_translate("MainWindow", "Hot?"))
- self.label_2.setText(_translate("MainWindow", "Search term"))
- self.checkBox_story.setText(_translate("MainWindow", "Search in story"))
- self.checkBox_rating.setText(_translate("MainWindow", "Enable rating cutoff"))
- self.pushButton_search.setText(_translate("MainWindow", "Search"))
- self.pushButton_show_all.setText(_translate("MainWindow", "Show all"))
- self.checkBox_title.setText(_translate("MainWindow", "Search in Title"))
- self.checkBox_descr.setText(_translate("MainWindow", "Search in Description"))
- self.pushButton_rating_sort.setText(_translate("MainWindow", "Sort by\n"
- "rating"))
- self.radioButton_search_master.setText(_translate("MainWindow", "Search Master"))
- self.radioButton_search_cursel.setText(_translate("MainWindow", "Search Current Selection"))
- self.checkBox_multiple_tags.setText(_translate("MainWindow", "Multiple tags [tag,tag]"))
- def table_cell_press(self, x, y):
- self.textBrowser.setText('<p style="font-size:30px;">{}</p>'.format(self.cur_data['story_arr'][x]))
- def setup(self):
- #connecting all buttons and stuff
- self.table_browse.cellPressed.connect(self.table_cell_press)
- self.pushButton_rating_sort.clicked.connect(self.sort_by_rating_func)
- self.pushButton_show_all.clicked.connect(self.show_all_func)
- self.checkBox_rating.clicked.connect(self.rating_cutoff_func)
- self.pushButton_search.clicked.connect(self.search_master_func)
- #adding all rows intially
- self.add_dataframe(self.data)
- def rating_cutoff_func(self):
- if(self.checkBox_rating.isChecked()):
- self.doubleSpinBox_rating.setEnabled(True)
- else:
- self.doubleSpinBox_rating.setEnabled(False)
- def sort_by_rating_func(self):
- print('Rating {}'.format(str(self.rating_order)))
- self.remove_all_rows()
- temp_data = self.cur_data.sort_values(['rating_arr'], ascending=self.rating_order).reset_index(drop=True)
- self.rating_order = False if(self.rating_order) else True
- self.add_dataframe(temp_data)
- self.cur_data = temp_data
- def search_master_func(self):
- if(self.radioButton_search_master.isChecked()):
- temp_data = self.data
- elif(self.radioButton_search_cursel.isChecked()):
- temp_data = self.cur_data
- if(self.checkBox_multiple_tags.isChecked()):
- search_string = self.lineEdit_term.text().split(',')
- else:
- search_string = self.lineEdit_term.text()
- print('Search button {}'.format(search_string))
- if(self.checkBox_title.isChecked()):
- if(type(search_string) == type(str())):
- temp_data = temp_data[temp_data['title_arr'].str.contains(search_string, flags=re.IGNORECASE)].reset_index(drop=True)
- elif(type(search_string) == type(list())):
- for i in search_string:
- temp_data = temp_data[temp_data['title_arr'].str.contains(i, flags=re.IGNORECASE)].reset_index(drop=True)
- if(self.checkBox_descr.isChecked()):
- if(type(search_string) == type(str())):
- temp_data = temp_data[temp_data['descr_arr'].str.contains(search_string, flags=re.IGNORECASE)].reset_index(drop=True)
- elif(type(search_string) == type(list())):
- for i in search_string:
- temp_data = temp_data[temp_data['descr_arr'].str.contains(i, flags=re.IGNORECASE)].reset_index(drop=True)
- if(self.checkBox_story.isChecked()):
- if(type(search_string) == type(str())):
- temp_data = temp_data[temp_data['story_arr'].str.contains(search_string, flags=re.IGNORECASE)].reset_index(drop=True)
- elif(type(search_string) == type(list())):
- for i in search_string:
- temp_data = temp_data[temp_data['story_arr'].str.contains(i, flags=re.IGNORECASE)].reset_index(drop=True)
- if(self.checkBox_rating.isChecked()):
- temp_data = temp_data[temp_data['rating_arr'] >= self.doubleSpinBox_rating.value()].reset_index(drop=True)
- self.cur_data = temp_data
- self.remove_all_rows()
- self.add_dataframe(temp_data)
- def show_all_func(self):
- self.remove_all_rows()
- self.add_dataframe(self.data)
- self.cur_data = self.data
- def remove_all_rows(self):
- for _ in range(self.table_browse.rowCount()):
- self.table_browse.removeRow(0)
- def add_dataframe(self, df):
- self.row_count = 0
- for i in range(0, len(df)):
- try:
- self.table_browse.insertRow(self.row_count)
- self.table_browse.setItem(self.row_count, 0, QtWidgets.QTableWidgetItem(df['title_arr'][self.row_count]))
- self.table_browse.setItem(self.row_count, 1, QtWidgets.QTableWidgetItem(df['descr_arr'][self.row_count]))
- self.table_browse.setItem(self.row_count, 2, QtWidgets.QTableWidgetItem(str(df['rating_arr'][self.row_count])))
- self.table_browse.setItem(self.row_count, 3, QtWidgets.QTableWidgetItem('HOT' if(df['hot_arr'][self.row_count]) else ' '))
- self.row_count += 1
- except Exception as e:
- self.table_browse.setItem(self.row_count, 0, QtWidgets.QTableWidgetItem('ERROR'))
- self.table_browse.setItem(self.row_count, 1, QtWidgets.QTableWidgetItem('ERROR'))
- self.table_browse.setItem(self.row_count, 2, QtWidgets.QTableWidgetItem('ERROR'))
- self.table_browse.setItem(self.row_count, 3, QtWidgets.QTableWidgetItem('ERROR'))
- self.row_count += 1
- print(self.row_count)
- print(e)
- continue
- if __name__ == "__main__":
- import sys
- app = QtWidgets.QApplication(sys.argv)
- MainWindow = QtWidgets.QMainWindow()
- ui = Ui_MainWindow()
- ui.setupUi(MainWindow)
- MainWindow.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement