mirror of
https://github.com/jasons-gh/the-chomsky-index.git
synced 2026-03-11 08:54:36 +00:00
555 lines
27 KiB
Python
555 lines
27 KiB
Python
import pandas as pd
|
|
import platform
|
|
import search
|
|
import sys
|
|
import webbrowser
|
|
from bs4 import BeautifulSoup
|
|
from pathlib import Path
|
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
from PyQt5.QtCore import QObject, QRunnable, QThreadPool, pyqtSignal, pyqtSlot
|
|
from PyQt5.QtWidgets import QButtonGroup, QLabel
|
|
from unidecode import unidecode
|
|
|
|
|
|
results_sorted = []
|
|
|
|
|
|
class WorkerSignals(QObject):
|
|
search_signal = pyqtSignal(object)
|
|
|
|
|
|
class Worker(QRunnable):
|
|
def __init__(self, fn):
|
|
super(Worker, self).__init__()
|
|
self.fn = fn
|
|
self.signals = WorkerSignals()
|
|
|
|
@pyqtSlot()
|
|
def run(self):
|
|
results_sorted = self.fn()
|
|
self.signals.search_signal.emit(results_sorted)
|
|
|
|
|
|
class Ui_MainWindow(object):
|
|
|
|
def __init__(self):
|
|
self.threadpool = QThreadPool()
|
|
# print("Multithreading with maximum %d threads" % self.threadpool.maxThreadCount())
|
|
self.base_df = pd.read_hdf(Path(self.base_path()) / 'h5' / 'base_df.h5', 'base_df')
|
|
self.settings = {'Print': True, 'Video': True}
|
|
|
|
|
|
def setupUi(self, MainWindow):
|
|
MainWindow.setObjectName("MainWindow")
|
|
MainWindow.resize(1209, 851)
|
|
palette = QtGui.QPalette()
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 120, 215))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Highlight, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 120, 215))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Highlight, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase, brush)
|
|
MainWindow.setPalette(palette)
|
|
self.centralwidget = QtWidgets.QWidget(MainWindow)
|
|
self.centralwidget.setObjectName("centralwidget")
|
|
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
|
self.gridLayout.setContentsMargins(0, 0, 0, 0)
|
|
self.gridLayout.setObjectName("gridLayout")
|
|
self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
|
|
self.scrollArea.setFrameShape(QtWidgets.QFrame.NoFrame)
|
|
self.scrollArea.setWidgetResizable(True)
|
|
self.scrollArea.setObjectName("scrollArea")
|
|
self.scrollAreaWidgetContents = QtWidgets.QWidget()
|
|
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 1209, 851))
|
|
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
|
|
self.gridLayout_2 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)
|
|
self.gridLayout_2.setObjectName("gridLayout_2")
|
|
self.frame = QtWidgets.QFrame(self.scrollAreaWidgetContents)
|
|
self.frame.setMaximumSize(QtCore.QSize(1100, 16777215))
|
|
self.frame.setFrameShape(QtWidgets.QFrame.NoFrame)
|
|
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
|
|
self.frame.setObjectName("frame")
|
|
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.frame)
|
|
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
|
self.verticalLayout = QtWidgets.QVBoxLayout()
|
|
self.verticalLayout.setObjectName("verticalLayout")
|
|
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
|
self.lineEdit = QtWidgets.QLineEdit(self.frame)
|
|
font = QtGui.QFont(self.os_font('name'), self.os_font('size'), weight=QtGui.QFont.Light)
|
|
self.lineEdit.setFont(font)
|
|
self.lineEdit.setFrame(False)
|
|
self.lineEdit.setAttribute(QtCore.Qt.WA_MacShowFocusRect, False)
|
|
self.lineEdit.setObjectName("lineEdit")
|
|
self.horizontalLayout.addWidget(self.lineEdit)
|
|
self.Search = QtWidgets.QPushButton(self.frame)
|
|
self.Search.setMinimumSize(QtCore.QSize(125, 0))
|
|
font = QtGui.QFont(self.os_font('name'), self.os_font('size'), weight=QtGui.QFont.Light)
|
|
self.Search.setFont(font)
|
|
self.Search.setFlat(True)
|
|
self.Search.setObjectName("Search")
|
|
self.Search.setStyleSheet("QPushButton {background-color: white}"
|
|
"QPushButton:hover {background-color: white}"
|
|
"QPushButton:pressed {border: solid}"
|
|
"QPushButton:pressed {border-width: 1px}"
|
|
"QPushButton:pressed {border-top-color: #808080}"
|
|
"QPushButton:pressed {border-left-color: #808080}"
|
|
"QPushButton:pressed {border-right-color: #CDCDCD}"
|
|
"QPushButton:pressed {border-bottom-color: #CDCDCD}")
|
|
|
|
self.Search.clicked.connect(self.search_button_worker)
|
|
|
|
|
|
self.horizontalLayout.addWidget(self.Search)
|
|
self.verticalLayout.addLayout(self.horizontalLayout)
|
|
self.line = QtWidgets.QFrame(self.frame)
|
|
palette = QtGui.QPalette()
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128))
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
|
|
self.line.setPalette(palette)
|
|
self.line.setFrameShape(QtWidgets.QFrame.HLine)
|
|
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
|
self.line.setObjectName("line")
|
|
self.verticalLayout.addWidget(self.line)
|
|
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
|
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
|
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
self.horizontalLayout_2.addItem(spacerItem)
|
|
self.Settings = QtWidgets.QPushButton(self.frame)
|
|
self.Settings.setMinimumSize(QtCore.QSize(125, 0))
|
|
font = QtGui.QFont(self.os_font('name'), self.os_font('size'), weight=QtGui.QFont.Light)
|
|
self.Settings.setFont(font)
|
|
self.Settings.setFlat(True)
|
|
self.Settings.setObjectName("Settings")
|
|
self.Settings.setStyleSheet("QPushButton {background-color: white}"
|
|
"QPushButton:hover {background-color: white}"
|
|
"QPushButton:pressed {border: solid}"
|
|
"QPushButton:pressed {border-width: 1px}"
|
|
"QPushButton:pressed {border-top-color: #808080}"
|
|
"QPushButton:pressed {border-left-color: #808080}"
|
|
"QPushButton:pressed {border-right-color: #CDCDCD}"
|
|
"QPushButton:pressed {border-bottom-color: #CDCDCD}")
|
|
|
|
self.Settings.clicked.connect(self.settings_button)
|
|
|
|
self.horizontalLayout_2.addWidget(self.Settings)
|
|
self.verticalLayout.addLayout(self.horizontalLayout_2)
|
|
self.verticalLayout_4.addLayout(self.verticalLayout)
|
|
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
|
|
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
|
|
|
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
|
self.verticalLayout_2.addItem(spacerItem3)
|
|
self.verticalLayout_4.addLayout(self.verticalLayout_2)
|
|
self.gridLayout_2.addWidget(self.frame, 0, 0, 1, 1)
|
|
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
|
|
self.gridLayout.addWidget(self.scrollArea, 0, 1, 1, 1)
|
|
MainWindow.setCentralWidget(self.centralwidget)
|
|
|
|
self.retranslateUi(MainWindow)
|
|
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
|
|
|
|
|
def search_function(self, MainWindow, results_sorted):
|
|
self.buttongroup = QButtonGroup()
|
|
self.buttongroup.buttonClicked[int].connect(self.open_button)
|
|
for i, result in enumerate(results_sorted):
|
|
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
|
|
self.horizontalLayout_3.setObjectName("horizontalLayout_" + str(i))
|
|
self.textEdit = QtWidgets.QTextEdit(self.frame)
|
|
font = QtGui.QFont()
|
|
font.setFamily("Arial")
|
|
font.setPointSize((20 if platform.system() == 'Darwin' else 12))
|
|
|
|
fontMetrics = QtGui.QFontMetrics(font)
|
|
context_font_size = fontMetrics.size(0, str(result[2])).width()
|
|
name_font_size = fontMetrics.size(0, str(result[1])).width()
|
|
self.textEdit.setMinimumSize(QtCore.QSize(0, 60 + 25 * ((int(context_font_size / 900) + 1) + (int(name_font_size / 900) + 1))))
|
|
self.textEdit.setMaximumSize(QtCore.QSize(16777215, 60 + 25 * ((int(context_font_size / 900) + 1) + (int(name_font_size / 900) + 1))))
|
|
|
|
self.textEdit.setFont(font)
|
|
self.textEdit.setFrameShape(QtWidgets.QFrame.NoFrame)
|
|
self.textEdit.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
|
self.textEdit.setObjectName("textEdit_" + str(i))
|
|
self.horizontalLayout_3.addWidget(self.textEdit)
|
|
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
|
|
self.horizontalLayout_3.addItem(spacerItem1)
|
|
self.Open_1 = QtWidgets.QPushButton(self.frame)
|
|
|
|
self.buttongroup.addButton(self.Open_1, i)
|
|
|
|
self.Open_1.setMinimumSize(QtCore.QSize(125, 0))
|
|
font = QtGui.QFont(self.os_font('name'), self.os_font('size'), weight=QtGui.QFont.Light)
|
|
self.Open_1.setFont(font)
|
|
self.Open_1.setFlat(True)
|
|
self.Open_1.setObjectName("Open_" + str(i))
|
|
self.Open_1.setStyleSheet("QPushButton {background-color: white}"
|
|
"QPushButton:hover {background-color: white}"
|
|
"QPushButton:pressed {border: solid}"
|
|
"QPushButton:pressed {border-width: 1px}"
|
|
"QPushButton:pressed {border-top-color: #808080}"
|
|
"QPushButton:pressed {border-left-color: #808080}"
|
|
"QPushButton:pressed {border-right-color: #CDCDCD}"
|
|
"QPushButton:pressed {border-bottom-color: #CDCDCD}")
|
|
self.horizontalLayout_3.addWidget(self.Open_1)
|
|
self.verticalLayout_2.addLayout(self.horizontalLayout_3)
|
|
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
|
self.verticalLayout_2.addItem(spacerItem2)
|
|
|
|
_translate = QtCore.QCoreApplication.translate
|
|
self.textEdit.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
|
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
|
"p, li { white-space: pre-wrap; }\n"
|
|
"</style></head><body style=\" font-family:\'Arial\'; font-size:" + ("20" if platform.system() == 'Darwin' else "12") + "pt; font-weight:400; font-style:normal;\">\n"
|
|
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">" + str(result[2]) + "</p></body></html>"
|
|
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p>\n"
|
|
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:" + ("20" if platform.system() == 'Darwin' else "12") + "pt; font-weight:600;\">" + str(result[1])[:85] + "</span></p></body></html>"))
|
|
self.Open_1.setText(_translate("MainWindow", "Open"))
|
|
|
|
|
|
def open_button(self, id):
|
|
if 'youtube.com' in results_sorted[id][3]:
|
|
if platform.system() == 'Darwin':
|
|
webbrowser.get("Safari").open(results_sorted[id][3])
|
|
else:
|
|
webbrowser.open(results_sorted[id][3])
|
|
else:
|
|
# webbrowser module may ignore hash in url
|
|
# use JavaScript to edit file to load as if hash were entered
|
|
file_url = results_sorted[id][3].split('#')[0]
|
|
anchor = results_sorted[id][3][len(file_url):]
|
|
|
|
soup = BeautifulSoup(open(file_url), "html.parser")
|
|
original_tag = soup.head
|
|
new_tag = soup.new_tag("script", id="scrollToHash", type="text/javascript")
|
|
original_tag.append(new_tag)
|
|
new_tag.string = """function scrollToHash(hash) {
|
|
location.hash = \"""" + anchor + """\";
|
|
}
|
|
window.onload = scrollToHash();"""
|
|
|
|
with open(file_url, 'w') as f:
|
|
f.write(unidecode(str(soup.prettify())))
|
|
if platform.system() == 'Darwin':
|
|
webbrowser.get("Safari").open('file://' + file_url)
|
|
else:
|
|
webbrowser.open('file://' + file_url)
|
|
|
|
|
|
|
|
|
|
def retranslateUi(self, MainWindow):
|
|
_translate = QtCore.QCoreApplication.translate
|
|
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
|
self.Search.setText(_translate("MainWindow", "Search"))
|
|
self.Settings.setText(_translate("MainWindow", "Settings"))
|
|
|
|
|
|
def search_button_worker(self):
|
|
worker = Worker(self.search_button_signal)
|
|
worker.signals.search_signal.connect(self.search_button_slot)
|
|
|
|
self.threadpool.start(worker)
|
|
|
|
|
|
def search_button_signal(self):
|
|
global results_sorted
|
|
|
|
results_sorted = search.search_results(self.lineEdit.text(), self.base_df, self.base_path(), self.settings)
|
|
|
|
return results_sorted
|
|
|
|
|
|
def search_button_slot(self, results_sorted):
|
|
self.clear_function(False)
|
|
self.search_function(MainWindow, results_sorted)
|
|
|
|
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
|
self.verticalLayout_2.addItem(spacerItem3)
|
|
|
|
|
|
def clear_function(self, spacer):
|
|
|
|
try:
|
|
i = 0
|
|
while self.frame.findChild(QtWidgets.QPushButton, "Open_" + str(i)) != None:
|
|
self.frame.findChild(QtWidgets.QPushButton, "Open_" + str(i)).deleteLater()
|
|
i+=1
|
|
|
|
i = 0
|
|
while self.frame.findChild(QtWidgets.QTextEdit, "textEdit_" + str(i)) != None:
|
|
self.frame.findChild(QtWidgets.QTextEdit, "textEdit_" + str(i)).deleteLater()
|
|
i+=1
|
|
|
|
for i in reversed(range(self.verticalLayout_2.count())): #range(len(results_sorted)+10): #
|
|
if isinstance(self.verticalLayout_2.itemAt(i), QtWidgets.QSpacerItem):
|
|
self.verticalLayout_2.takeAt(0)
|
|
|
|
self.frame.findChild(QtWidgets.QPushButton, "Video").deleteLater()
|
|
|
|
self.frame.findChild(QtWidgets.QPushButton, "Print").deleteLater()
|
|
|
|
self.frame.findChild(QtWidgets.QLabel, "Format").deleteLater()
|
|
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
if spacer:
|
|
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
|
self.verticalLayout_2.addItem(spacerItem3)
|
|
|
|
|
|
def settings_button(self):
|
|
self.clear_function(True)
|
|
|
|
self.Format = QtWidgets.QLabel(self.frame)
|
|
self.Format.setAlignment(QtCore.Qt.AlignCenter)
|
|
self.Format.setObjectName("Format")
|
|
# self.verticalLayout_2.addWidget(self.Format)
|
|
|
|
self.Format.setMinimumSize(QtCore.QSize(125, 0))
|
|
font = QtGui.QFont(self.os_font('name'), self.os_font('size'))
|
|
self.Format.setFont(font)
|
|
|
|
self.Format.setObjectName("Format")
|
|
if platform.system() != 'Darwin':
|
|
self.Format.setStyleSheet("QLabel {font-weight: bold}")
|
|
|
|
self.verticalLayout_2.insertWidget(0, self.Format)
|
|
|
|
_translate = QtCore.QCoreApplication.translate
|
|
self.Format.setText(_translate("MainWindow", "Format"))
|
|
|
|
|
|
self.Print = QtWidgets.QPushButton(self.frame)
|
|
self.Print.setMinimumSize(QtCore.QSize(125, 0))
|
|
font = QtGui.QFont(self.os_font('name'), self.os_font('size'), weight=QtGui.QFont.Light)
|
|
self.Print.setFont(font)
|
|
self.Print.setFlat(True)
|
|
self.Print.setObjectName("Print")
|
|
self.Print.setStyleSheet("QPushButton {background-color: white}"
|
|
"QPushButton:hover {background-color: white}"
|
|
"QPushButton:pressed {border: solid}"
|
|
"QPushButton:pressed {border-width: 0px}"
|
|
+ ("" if self.settings['Print'] else "QPushButton {text-decoration: line-through}"))
|
|
|
|
self.Print.clicked.connect(lambda state, setting='Print': self.settings_function(setting))
|
|
|
|
_translate = QtCore.QCoreApplication.translate
|
|
self.Print.setText(_translate("MainWindow", "Print"))
|
|
|
|
self.verticalLayout_2.insertWidget(1, self.Print)
|
|
# self.horizontalLayout_2.addWidget(self.Print)
|
|
|
|
|
|
self.Video = QtWidgets.QPushButton(self.frame)
|
|
self.Video.setMinimumSize(QtCore.QSize(125, 0))
|
|
font = QtGui.QFont(self.os_font('name'), self.os_font('size'), weight=QtGui.QFont.Light)
|
|
self.Video.setFont(font)
|
|
self.Video.setFlat(True)
|
|
self.Video.setObjectName("Video")
|
|
self.Video.setStyleSheet("QPushButton {background-color: white}"
|
|
"QPushButton:hover {background-color: white}"
|
|
"QPushButton:pressed {border: solid}"
|
|
"QPushButton:pressed {border-width: 0px}"
|
|
+ ("" if self.settings['Video'] else "QPushButton {text-decoration: line-through}"))
|
|
|
|
self.Video.clicked.connect(lambda state, setting='Video': self.settings_function(setting))
|
|
|
|
_translate = QtCore.QCoreApplication.translate
|
|
self.Video.setText(_translate("MainWindow", "Video"))
|
|
|
|
self.verticalLayout_2.insertWidget(2, self.Video)
|
|
# self.horizontalLayout_2.addWidget(self.Video)
|
|
|
|
|
|
def settings_function(self, setting):
|
|
self.settings[setting] = not self.settings[setting]
|
|
|
|
|
|
self.Print.setStyleSheet("QPushButton {background-color: white}"
|
|
"QPushButton:hover {background-color: white}"
|
|
"QPushButton:pressed {border: solid}"
|
|
"QPushButton:pressed {border-width: 0px}"
|
|
+ ("" if self.settings['Print'] else "QPushButton {text-decoration: line-through}"))
|
|
|
|
|
|
self.Video.setStyleSheet("QPushButton {background-color: white}"
|
|
"QPushButton:hover {background-color: white}"
|
|
"QPushButton:pressed {border: solid}"
|
|
"QPushButton:pressed {border-width: 0px}"
|
|
+ ("" if self.settings['Video'] else "QPushButton {text-decoration: line-through}"))
|
|
|
|
|
|
def base_path(self):
|
|
try:
|
|
if platform.system() == 'Darwin':
|
|
base_path = Path(sys._MEIPASS).resolve()
|
|
else:
|
|
base_path = sys._MEIPASS
|
|
except Exception:
|
|
# if platform.system() == 'Darwin':
|
|
base_path = Path(__file__).parent.resolve()
|
|
# else:
|
|
# base_path = Path(__file__).parent
|
|
|
|
return Path(base_path)
|
|
|
|
|
|
def os_font(self, font_property):
|
|
if platform.system() == 'Windows':
|
|
font_name = 'Segoe UI Light'
|
|
font_size = 20
|
|
|
|
if platform.system() == 'Darwin':
|
|
font_name = 'Gill Sans'
|
|
font_size = 32
|
|
|
|
if platform.system() == 'Linux':
|
|
font_name = 'Sawasdee'
|
|
font_size = 20
|
|
|
|
if font_property == 'name':
|
|
return font_name
|
|
|
|
if font_property == 'size':
|
|
return font_size
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
app = QtWidgets.QApplication(sys.argv)
|
|
MainWindow = QtWidgets.QMainWindow()
|
|
ui = Ui_MainWindow()
|
|
ui.setupUi(MainWindow)
|
|
MainWindow.setWindowTitle("The Chomsky Index")
|
|
MainWindow.setWindowIcon(QtGui.QIcon(str(ui.base_path() / 'png' / 'icon_white.png')))
|
|
MainWindow.show()
|
|
sys.exit(app.exec_())
|