Compare commits
2 Commits
74d7f05dca
...
b7f71fb29f
Author | SHA1 | Date |
---|---|---|
|
b7f71fb29f | |
|
bbcf0921ba |
|
@ -6,10 +6,7 @@
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="f609c0f2-cd0d-4eea-87f1-8caf02d3f04f" name="Changes" comment="">
|
<list default="true" id="f609c0f2-cd0d-4eea-87f1-8caf02d3f04f" name="Changes" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/frame/ContentView.py" beforeDir="false" afterPath="$PROJECT_DIR$/frame/ContentView.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/graph/DataType.py" beforeDir="false" afterPath="$PROJECT_DIR$/graph/DataType.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/graph/directed_acyclic_graph/DAGLayout.py" beforeDir="false" afterPath="$PROJECT_DIR$/graph/directed_acyclic_graph/DAGLayout.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/graph/directed_acyclic_graph/DAGLayout.py" beforeDir="false" afterPath="$PROJECT_DIR$/graph/directed_acyclic_graph/DAGLayout.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/graph/directed_acyclic_graph/DAGPresent.py" beforeDir="false" afterPath="$PROJECT_DIR$/graph/directed_acyclic_graph/DAGPresent.py" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
@ -37,30 +34,30 @@
|
||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent">{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"Python.CompareViews.executor": "Run",
|
"Python.CompareViews.executor": "Run",
|
||||||
"Python.CompareWindow.executor": "Run",
|
"Python.CompareWindow.executor": "Run",
|
||||||
"Python.ContentView.executor": "Run",
|
"Python.ContentView.executor": "Run",
|
||||||
"Python.DAGGraph (1).executor": "Run",
|
"Python.DAGGraph (1).executor": "Run",
|
||||||
"Python.DAGGraph.executor": "Run",
|
"Python.DAGGraph.executor": "Run",
|
||||||
"Python.DAGLayout (1).executor": "Run",
|
"Python.DAGLayout (1).executor": "Run",
|
||||||
"Python.DAGLayout.executor": "Run",
|
"Python.DAGLayout.executor": "Run",
|
||||||
"Python.DAGPresent.executor": "Run",
|
"Python.DAGPresent.executor": "Run",
|
||||||
"Python.MergeView.executor": "Run",
|
"Python.MergeView.executor": "Run",
|
||||||
"Python.MileStone.executor": "Run",
|
"Python.MileStone.executor": "Run",
|
||||||
"Python.NovelManage.executor": "Debug",
|
"Python.NovelManage.executor": "Debug",
|
||||||
"Python.ReferView.executor": "Run",
|
"Python.ReferView.executor": "Run",
|
||||||
"Python.StoryMap.executor": "Run",
|
"Python.StoryMap.executor": "Run",
|
||||||
"Python.ast_load.executor": "Debug",
|
"Python.ast_load.executor": "Debug",
|
||||||
"Python.entry.executor": "Run",
|
"Python.entry.executor": "Run",
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"git-widget-placeholder": "master",
|
"git-widget-placeholder": "master",
|
||||||
"last_opened_file_path": "D:/Projects/Python/StoryCheckTools",
|
"last_opened_file_path": "D:/Projects/Python/StoryCheckTools",
|
||||||
"settings.editor.selected.configurable": "reference.settings.ide.settings.new.ui"
|
"settings.editor.selected.configurable": "reference.settings.ide.settings.new.ui"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="RunManager" selected="Python.ContentView">
|
<component name="RunManager" selected="Python.ContentView">
|
||||||
<configuration name="CompareViews" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="CompareViews" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="StoryTools" />
|
<module name="StoryTools" />
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import sys
|
import sys
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QMainWindow
|
|
||||||
from PyQt5.QtWidgets import QMenu,QAction
|
|
||||||
from PyQt5.QtCore import QPoint
|
from PyQt5.QtCore import QPoint
|
||||||
|
from PyQt5.QtWidgets import QApplication, QMainWindow
|
||||||
|
from PyQt5.QtWidgets import QMenu
|
||||||
|
|
||||||
from graph.DataType import Arrow, Point
|
from graph.DataType import Arrow, Point
|
||||||
from graph.directed_acyclic_graph.DAGPresent import DAGActiveView, Direction
|
from graph.directed_acyclic_graph.DAGPresent import DAGActiveView
|
||||||
from parse.StoryMap import StoryMap, XAST_ParseTool
|
from parse.StoryMap import StoryMap, XAST_ParseTool
|
||||||
from parse.ast_load import global_ast_path
|
from parse.ast_load import global_ast_path
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from graph.DataType import Point, Arrow
|
from graph.DataType import Point, Arrow
|
||||||
from typing import List, Dict, Tuple
|
from typing import List, Dict, Tuple
|
||||||
|
from math import floor,ceil
|
||||||
|
|
||||||
|
|
||||||
class DAGLayerHelper:
|
class DAGLayerHelper:
|
||||||
|
@ -178,6 +179,21 @@ class DAGGraph:
|
||||||
|
|
||||||
return max_remains + 1
|
return max_remains + 1
|
||||||
|
|
||||||
|
def __node_layering_adj(self, inst: DAGLayerHelper):
|
||||||
|
if inst.input_count > 1:
|
||||||
|
return inst.layer_v - 1
|
||||||
|
|
||||||
|
if len(inst.next_nodes()) == 0:
|
||||||
|
return inst.layer_v - 1
|
||||||
|
|
||||||
|
layer_number = 2**32
|
||||||
|
for cinst in inst.next_nodes():
|
||||||
|
layer_number = min(layer_number, self.__node_layering_adj(cinst))
|
||||||
|
pass
|
||||||
|
|
||||||
|
inst.layer_v = layer_number
|
||||||
|
return inst.layer_v - 1
|
||||||
|
|
||||||
def __tidy_graph_nodes(self) -> List[DAGOrderHelper]:
|
def __tidy_graph_nodes(self) -> List[DAGOrderHelper]:
|
||||||
nodes_temp: Dict[str, DAGOrderHelper] = {}
|
nodes_temp: Dict[str, DAGOrderHelper] = {}
|
||||||
|
|
||||||
|
@ -226,9 +242,10 @@ class DAGGraph:
|
||||||
if len(target_nodes_within_layer) == 0:
|
if len(target_nodes_within_layer) == 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# 初始化节点排序
|
||||||
if layer_index == 0:
|
if layer_index == 0:
|
||||||
for idx in range(0, len(target_nodes_within_layer)):
|
for idx in range(0, len(target_nodes_within_layer)):
|
||||||
target_nodes_within_layer[idx].sort_number = idx
|
target_nodes_within_layer[idx].sort_number = idx + 1
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -236,8 +253,10 @@ class DAGGraph:
|
||||||
# 计算排序系数
|
# 计算排序系数
|
||||||
for target_node in target_nodes_within_layer:
|
for target_node in target_nodes_within_layer:
|
||||||
prev_sorts = list(map(lambda n:n.sort_number, target_node.get_upstream_nodes()))
|
prev_sorts = list(map(lambda n:n.sort_number, target_node.get_upstream_nodes()))
|
||||||
|
if len(prev_sorts) > 0:
|
||||||
target_node.sort_number = sum(prev_sorts)/len(prev_sorts)
|
target_node.sort_number = sum(prev_sorts)/len(prev_sorts)
|
||||||
pass
|
pass
|
||||||
|
pass
|
||||||
|
|
||||||
def compare_item(a: DAGOrderHelper):
|
def compare_item(a: DAGOrderHelper):
|
||||||
return a.sort_number
|
return a.sort_number
|
||||||
|
@ -245,9 +264,9 @@ class DAGGraph:
|
||||||
# 整理节点排序
|
# 整理节点排序
|
||||||
target_nodes_within_layer.sort(key=compare_item)
|
target_nodes_within_layer.sort(key=compare_item)
|
||||||
for idx in range(0, len(target_nodes_within_layer)):
|
for idx in range(0, len(target_nodes_within_layer)):
|
||||||
target_nodes_within_layer[idx].sort_number = idx
|
target_item = target_nodes_within_layer[idx]
|
||||||
|
target_item.sort_number = idx + 1
|
||||||
pass
|
pass
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
self.__graph_layer_nodes_sort(layer_index + 1, nodes)
|
self.__graph_layer_nodes_sort(layer_index + 1, nodes)
|
||||||
|
@ -277,6 +296,11 @@ class DAGGraph:
|
||||||
self.max_layer_count = max(self.max_layer_count, self.__node_layering(item))
|
self.max_layer_count = max(self.max_layer_count, self.__node_layering(item))
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
|
for item in sort_seqs:
|
||||||
|
if item.input_count ==0:
|
||||||
|
self.__node_layering_adj(item)
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
|
||||||
# 整理数据图节点
|
# 整理数据图节点
|
||||||
rich_nodes = self.__tidy_graph_nodes()
|
rich_nodes = self.__tidy_graph_nodes()
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue