|  | @@ -0,0 +1,108 @@
 | 
	
		
			
				|  |  | +#!/usr/bin/env python3
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +from PyQt6.QtCore import *
 | 
	
		
			
				|  |  | +from PyQt6.QtGui import *
 | 
	
		
			
				|  |  | +from PyQt6.QtWidgets import *
 | 
	
		
			
				|  |  | +import sys
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class MagpyPlainTextEdit(QPlainTextEdit):
 | 
	
		
			
				|  |  | +    def focusOutEvent(self, event):
 | 
	
		
			
				|  |  | +        super().focusOutEvent(event)
 | 
	
		
			
				|  |  | +        if event.lostFocus():
 | 
	
		
			
				|  |  | +            self.parentWidget().to_view(event)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class MagpyTextToggle(QStackedWidget):
 | 
	
		
			
				|  |  | +    def __init__(self, parent, doc=None):
 | 
	
		
			
				|  |  | +        QStackedWidget.__init__(self, parent)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.editbox = MagpyPlainTextEdit(self)
 | 
	
		
			
				|  |  | +        self.displaybox = QTextEdit(self)
 | 
	
		
			
				|  |  | +        self.displaybox.setReadOnly(True)
 | 
	
		
			
				|  |  | +        self.addWidget(self.editbox)
 | 
	
		
			
				|  |  | +        self.addWidget(self.displaybox)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if doc:
 | 
	
		
			
				|  |  | +            self.doc = doc
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            self.doc = QTextDocument(self)
 | 
	
		
			
				|  |  | +            self.doc.setDocumentLayout(QPlainTextDocumentLayout(self.doc))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.editbox.setDocument(self.doc)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.displaybox.mouseReleaseEvent=self.to_edit
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.to_view(None)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def to_edit(self, event):
 | 
	
		
			
				|  |  | +        print("to_edit!")
 | 
	
		
			
				|  |  | +        self.setCurrentIndex(0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def to_view(self, event):
 | 
	
		
			
				|  |  | +        print("to_view!")
 | 
	
		
			
				|  |  | +        self.setCurrentIndex(1)
 | 
	
		
			
				|  |  | +        self.displaybox.setMarkdown(self.doc.toPlainText())
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class MagpyContainer(QWidget):
 | 
	
		
			
				|  |  | +    def __init__(self, parent, doc=None):
 | 
	
		
			
				|  |  | +        QWidget.__init__(self, parent)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        vlayout = QVBoxLayout(self)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        for i in range(8):
 | 
	
		
			
				|  |  | +            vlayout.addWidget(MagpyTextToggle(self, doc))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.setLayout(vlayout)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        # scroll = QScrollArea(self)
 | 
	
		
			
				|  |  | +        # scroll.setWidget(self)
 | 
	
		
			
				|  |  | +        # scroll.setWidgetResizable(True)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class ProtoMagpy(QMainWindow):
 | 
	
		
			
				|  |  | +    def __init__(self, parent=None):
 | 
	
		
			
				|  |  | +        QMainWindow.__init__(self, parent)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.filename = ''
 | 
	
		
			
				|  |  | +        self.actions = {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.initUI()
 | 
	
		
			
				|  |  | +        self.initActions()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def initActions(self):
 | 
	
		
			
				|  |  | +        self.actions['quit'] = QAction('Quit', self)
 | 
	
		
			
				|  |  | +        self.actions['quit'].setShortcut(QKeySequence('Ctrl+Q'))
 | 
	
		
			
				|  |  | +        self.actions['quit'].triggered.connect(self.close)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        s = QShortcut(QKeySequence('Ctrl+T'), self)
 | 
	
		
			
				|  |  | +        s.activated.connect(self.pagedown)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def pagedown(self):
 | 
	
		
			
				|  |  | +        print(QApplication.focusWidget())
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def initUI(self):
 | 
	
		
			
				|  |  | +        top_level = MagpyContainer(self)
 | 
	
		
			
				|  |  | +        self.setCentralWidget(top_level)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.statusbar = self.statusBar()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.setGeometry(100, 100, 1030, 800)
 | 
	
		
			
				|  |  | +        self.setWindowTitle("Proto-Magpy")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def main():
 | 
	
		
			
				|  |  | +    app = QApplication(sys.argv)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    main = ProtoMagpy()
 | 
	
		
			
				|  |  | +    main.show()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    sys.exit(app.exec())
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if __name__ == '__main__':
 | 
	
		
			
				|  |  | +    main()
 |