74 lines
2.4 KiB
Python
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() |