StoryCheckTools/frame/MergeView.py

73 lines
2.3 KiB
Python

from PyQt5.QtWidgets import QWidget, QTextEdit, QTabWidget, QSplitter, QApplication, QVBoxLayout
import sys
from frame.ReferView import MemoryNode, RelateReferView, EmptyNode, MemorySkin
from typing import List
from PyQt5.Qt import Qt
class MergeDestination:
def __init__(self, story_name:str, prev: MemoryNode, curr: MemoryNode):
self.prev_node = prev
self.curr_node = curr
self.storyline_name = story_name
pass
class LinesMergeView(QWidget, MemorySkin):
def __init__(self, fdefs: MergeDestination, refdefs: List[MergeDestination], parent):
QWidget.__init__(self, parent)
self.define_line = fdefs
self.refers_line = refdefs
layout = QVBoxLayout(self)
layout.setContentsMargins(0, 0, 0, 0)
splitter = QSplitter(Qt.Orientation.Horizontal, self)
layout.addWidget(splitter)
self.tabs_con: QTabWidget = QTabWidget(self)
self.tabs_con.setTabPosition(QTabWidget.TabPosition.West)
splitter.addWidget(self.tabs_con)
self.define_prev: QTextEdit = QTextEdit(self)
self.define_prev.setReadOnly(True)
self.tabs_con.addTab(self.define_prev, fdefs.storyline_name)
self.refers_views: List[RelateReferView] = []
for node in refdefs:
refer_view = RelateReferView(node.prev_node, node.curr_node, self)
self.tabs_con.addTab(refer_view, node.storyline_name)
self.refers_views.append(refer_view)
pass
self.mut_enter = QTextEdit(self)
splitter.addWidget(self.mut_enter)
pass
def load_from_mem(self) -> None:
self.define_prev.setText(self.define_line.prev_node.get_from_memory())
self.mut_enter.setText(self.define_line.curr_node.get_from_memory())
for v in self.refers_views:
v.load_from_mem()
pass
pass
def save_to_mem(self):
self.define_line.curr_node.set_to_memory(self.mut_enter.toPlainText())
for v in self.refers_views:
v.save_to_mem()
pass
pass
if __name__ == "__main__":
app = QApplication(sys.argv)
defx = MergeDestination("page0", EmptyNode(), EmptyNode())
refx0 = MergeDestination("pagex1", EmptyNode(), EmptyNode())
view = LinesMergeView(defx, [refx0], None)
view.show()
app.exec()