StoryCheckTools/frame/MergeView.py

74 lines
2.4 KiB
Python

from PyQt5.QtWidgets import QWidget, QTextEdit, QTabWidget, QSplitter, QApplication, QVBoxLayout
import sys,os
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
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()