Init
This commit is contained in:
117
main.py
Executable file
117
main.py
Executable file
@@ -0,0 +1,117 @@
|
||||
from functions import *
|
||||
from generator import *
|
||||
from mainGUI import *
|
||||
from PyQt5.QtGui import *
|
||||
from PyQt5.QtWidgets import *
|
||||
from PyQt5.QtCore import *
|
||||
import sys
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
class MyWin(QtWidgets.QMainWindow):
|
||||
def __init__(self, parent=None):
|
||||
QtWidgets.QWidget.__init__(self, parent)
|
||||
self.ui = Ui_MainWindow()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
shortcut = QShortcut(QKeySequence("Ctrl+Return"), self)
|
||||
shortcut.activated.connect(self.ui.ProcessPushButton.click)
|
||||
|
||||
self.Pattern = ''
|
||||
self.TestString = ''
|
||||
|
||||
self.ui.ProcessPushButton.clicked.connect(self.PatternChanged)
|
||||
|
||||
self.ui.RegexTextEdit.installEventFilter(self)
|
||||
|
||||
self.ui.SheetDockWidget.hide()
|
||||
self.ui.RegexSheetPushButton.clicked.connect(self.Sheet)
|
||||
self.SheetFlag = False
|
||||
self.ui.CodeGeneratorPushButton.clicked.connect(self.CodeGenerator)
|
||||
self.ui.AboutPushButton.hide()
|
||||
|
||||
self.ResultWidget = None
|
||||
self.horizontalLayout_4 = None
|
||||
self.ResultTag = None
|
||||
self.ResultRange = None
|
||||
self.ResultText = None
|
||||
self.Info = []
|
||||
self.Match = []
|
||||
|
||||
self.ui.NoMatchesLabel.hide()
|
||||
|
||||
self.resize(800, 600)
|
||||
|
||||
self.WindowWidthFlag = 0
|
||||
self.WindowHeightFlag = 0
|
||||
|
||||
self.ColorList = ['rgb(198, 227, 255)','rgb(198, 233, 157)','rgb(245, 171, 165)','rgb(255, 191, 109)','rgb(193, 203, 235)','rgb(215, 253, 227)','rgb(227, 255, 172)','rgb(232, 141, 238)','rgb(207, 221, 103)','rgb(255, 172, 192)','rgb(132, 214, 238)']
|
||||
|
||||
self.GeneratedCode = Ui_MainWindow()
|
||||
|
||||
def UpdateInfo(self):
|
||||
'''Visual display of search results'''
|
||||
for i, v in enumerate(self.Info):
|
||||
if 'Full match' in v[0]:
|
||||
FullMatchTagUI(self.ui.scrollAreaWidgetContents, self.ui.verticalLayout_5, v[0])
|
||||
color = self.ColorList[0]
|
||||
else:
|
||||
color = GenerateGroupColor(self.ColorList, v[0])
|
||||
InfoUI(self.ResultWidget, self.horizontalLayout_4, self.ResultTag, self.ResultRange, self.ResultText, i, color, self.ui.scrollAreaWidgetContents, self.ui.verticalLayout_5, v)
|
||||
SpacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.ui.verticalLayout_5.addItem(SpacerItem)
|
||||
def eventFilter(self, obj, event):
|
||||
if obj is self.ui.RegexTextEdit and event.type() == QEvent.KeyPress:
|
||||
if event.key() in (Qt.Key_Return, Qt.Key_Enter):
|
||||
self.PatternChanged()
|
||||
return True
|
||||
return super().eventFilter(obj, event)
|
||||
def PatternChanged(self):
|
||||
'''Search for test text based on a pattern and display the results'''
|
||||
clearLayout(self.ui.verticalLayout_5)
|
||||
self.Info = []
|
||||
self.Pattern = self.ui.RegexTextEdit.toPlainText()
|
||||
self.TestString = self.ui.TestStringTextEdit.toPlainText()
|
||||
self.Info = Process(self.TestString, self.Pattern, self.Info, self.ui.NoMatchesLabel)
|
||||
self.ResultWidget, self.horizontalLayout_4, self.ResultTag, self.ResultRange, self.ResultText = PreprocessInfo(self.Info)
|
||||
self.UpdateInfo()
|
||||
ClearHighlight(self.ui.TestStringTextEdit, self.TestString)
|
||||
for k, v in enumerate(self.Info):
|
||||
hrange = HighlightRange(v[1])
|
||||
if 'Full match' in v[0]:
|
||||
Highlight(self.ui.TestStringTextEdit, QColor(198, 227, 255), hrange[0], hrange[1])
|
||||
else:
|
||||
color = GenerateGroupColor(self.ColorList, v[0])
|
||||
r, g, b = strColorTolist(color)
|
||||
Highlight(self.ui.TestStringTextEdit, QColor(r,g,b), hrange[0], hrange[1])
|
||||
|
||||
def Sheet(self):
|
||||
'''Display regular expression cheat sheet'''
|
||||
if not self.SheetFlag:
|
||||
self.WindowWidthFlag = self.width()
|
||||
self.WindowHeightFlag = self.height()
|
||||
self.ui.SheetDockWidget.show()
|
||||
self.SheetFlag = True
|
||||
elif self.SheetFlag:
|
||||
self.ui.SheetDockWidget.close()
|
||||
self.adjustSize()
|
||||
self.resize(self.WindowWidthFlag,self.WindowHeightFlag)
|
||||
self.SheetFlag = False
|
||||
|
||||
def CodeGenerator(self):
|
||||
'''The code for Python regular expression is generated in a new window'''
|
||||
if not self.Pattern or not self.TestString:
|
||||
self.ui.NoMatchesLabel.show()
|
||||
else:
|
||||
self.CodeGeneratorWindow = QtWidgets.QMainWindow()
|
||||
self.gen_ui = Ui_CodeGenerator()
|
||||
self.gen_ui.setupUi(self.CodeGeneratorWindow)
|
||||
GetCode(self.gen_ui.textEdit, self.Pattern, self.TestString)
|
||||
self.CodeGeneratorWindow.show()
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
myapp = MyWin()
|
||||
myapp.show()
|
||||
sys.exit(app.exec_())
|
||||
Reference in New Issue
Block a user