Skip to content

Instantly share code, notes, and snippets.

@devilholk
Created May 27, 2017 15:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save devilholk/4b69cb3a154d9a99e96ea2914d09ef75 to your computer and use it in GitHub Desktop.
Save devilholk/4b69cb3a154d9a99e96ea2914d09ef75 to your computer and use it in GitHub Desktop.
Outline for graphic quick replacement tool
from PyQt5.QtGui import QTextOption, QFont
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QTableView, QTableWidget, QTableWidgetItem, QMainWindow, QGridLayout, QWidget, QPlainTextEdit
import re
monospace = QFont('DejaVu Sans Mono')
monospace.setStyleHint(QFont.Monospace)
print(monospace)
class copy_scroll:
def __init__(self, source, dest):
self.source = source
self.dest = dest
def __call__(self):
self.dest.verticalScrollBar().setValue(self.source.verticalScrollBar().value())
self.dest.horizontalScrollBar().setValue(self.source.horizontalScrollBar().value())
class MainView(QMainWindow):
def translate(self):
data = self.source.toPlainText()
p = re.compile(r'\[([0-9]+)\]')
def repfun(s):
i = int(s.group(1))
return '.' + 'xyzw'[i >> 2] +'.' + 'xyzw'[i & 0x3]
#for q in p.finditer(data):
#i = int(q.group(1))
self.dest.setPlainText(p.sub(repfun, data))
def __init__(self):
QMainWindow.__init__(self)
self.setWindowTitle('Simple Graphic Text Replacement')
self.lwidget = QWidget(self)
self.setCentralWidget(self.lwidget)
self.lgrid = QGridLayout(self.lwidget)
self.source = QPlainTextEdit(self.lwidget)
self.dest = QPlainTextEdit(self.lwidget)
self.source.setFont(monospace)
self.dest.setFont(monospace)
self.source.setWordWrapMode(QTextOption.NoWrap)
self.dest.setWordWrapMode(QTextOption.NoWrap)
self.repcontrol = QTableWidget(self.lwidget)
self.repcontrol.insertColumn(0)
self.repcontrol.insertColumn(1)
self.repcontrol.setHorizontalHeaderLabels(['Pattern', 'Translation'])
self.repcontrol.insertRow(0)
self.lgrid.addWidget(self.source, 0, 0)
self.lgrid.addWidget(self.dest, 0, 1)
#self.lgrid.addWidget(self.repcontrol, 0, 2)
self.source.updateRequest.connect(copy_scroll(self.source, self.dest))
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
view1 = MainView()
view1.source.setPlainText('''
inv[0] = m[5] * m[10] * m[15] - m[5] * m[11] * m[14] - m[9] * m[6] * m[15] + m[9] * m[7] * m[14] +m[13] * m[6] * m[11] - m[13] * m[7] * m[10]
inv[4] = -m[4] * m[10] * m[15] + m[4] * m[11] * m[14] + m[8] * m[6] * m[15] - m[8] * m[7] * m[14] - m[12] * m[6] * m[11] + m[12] * m[7] * m[10]
inv[8] = m[4] * m[9] * m[15] - m[4] * m[11] * m[13] - m[8] * m[5] * m[15] + m[8] * m[7] * m[13] + m[12] * m[5] * m[11] - m[12] * m[7] * m[9]
inv[12] = -m[4] * m[9] * m[14] + m[4] * m[10] * m[13] +m[8] * m[5] * m[14] - m[8] * m[6] * m[13] - m[12] * m[5] * m[10] + m[12] * m[6] * m[9]
inv[1] = -m[1] * m[10] * m[15] + m[1] * m[11] * m[14] + m[9] * m[2] * m[15] - m[9] * m[3] * m[14] - m[13] * m[2] * m[11] + m[13] * m[3] * m[10]
inv[5] = m[0] * m[10] * m[15] - m[0] * m[11] * m[14] - m[8] * m[2] * m[15] + m[8] * m[3] * m[14] + m[12] * m[2] * m[11] - m[12] * m[3] * m[10]
inv[9] = -m[0] * m[9] * m[15] + m[0] * m[11] * m[13] + m[8] * m[1] * m[15] - m[8] * m[3] * m[13] - m[12] * m[1] * m[11] + m[12] * m[3] * m[9]
inv[13] = m[0] * m[9] * m[14] - m[0] * m[10] * m[13] - m[8] * m[1] * m[14] + m[8] * m[2] * m[13] + m[12] * m[1] * m[10] - m[12] * m[2] * m[9]
inv[2] = m[1] * m[6] * m[15] - m[1] * m[7] * m[14] - m[5] * m[2] * m[15] + m[5] * m[3] * m[14] + m[13] * m[2] * m[7] - m[13] * m[3] * m[6]
inv[6] = -m[0] * m[6] * m[15] + m[0] * m[7] * m[14] + m[4] * m[2] * m[15] - m[4] * m[3] * m[14] - m[12] * m[2] * m[7] + m[12] * m[3] * m[6]
inv[10] = m[0] * m[5] * m[15] - m[0] * m[7] * m[13] - m[4] * m[1] * m[15] + m[4] * m[3] * m[13] + m[12] * m[1] * m[7] - m[12] * m[3] * m[5]
inv[14] = -m[0] * m[5] * m[14] + m[0] * m[6] * m[13] + m[4] * m[1] * m[14] - m[4] * m[2] * m[13] - m[12] * m[1] * m[6] + m[12] * m[2] * m[5]
inv[3] = -m[1] * m[6] * m[11] + m[1] * m[7] * m[10] + m[5] * m[2] * m[11] - m[5] * m[3] * m[10] - m[9] * m[2] * m[7] + m[9] * m[3] * m[6]
inv[7] = m[0] * m[6] * m[11] - m[0] * m[7] * m[10] - m[4] * m[2] * m[11] + m[4] * m[3] * m[10] + m[8] * m[2] * m[7] - m[8] * m[3] * m[6]
inv[11] = -m[0] * m[5] * m[11] + m[0] * m[7] * m[9] + m[4] * m[1] * m[11] - m[4] * m[3] * m[9] - m[8] * m[1] * m[7] + m[8] * m[3] * m[5]
inv[15] = m[0] * m[5] * m[10] - m[0] * m[6] * m[9] - m[4] * m[1] * m[10] + m[4] * m[2] * m[9] + m[8] * m[1] * m[6] - m[8] * m[2] * m[5]
det = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12]
if (det) {
inv[0] /= det; inv[1] /= det; inv[2] /= det; inv[3] /= det; inv[4] /= det; inv[5] /= det; inv[6] /= det; inv[7] /= det
inv[8] /= det; inv[9] /= det; inv[10] /= det; inv[11] /= det; inv[12] /= det; inv[13] /= det; inv[14] /= det; inv[15] /= det
}
''')
view1.translate()
view1.show()
sys.exit(app.exec_())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment