Reincorporated status bar, menu, etc.
This commit is contained in:
parent
4591178a4b
commit
01070966a7
183
Workflows/Flyff EXP Predictor.json
Normal file
183
Workflows/Flyff EXP Predictor.json
Normal file
@ -0,0 +1,183 @@
|
||||
{
|
||||
"graph":{
|
||||
"layout_direction":0,
|
||||
"acyclic":true,
|
||||
"pipe_collision":false,
|
||||
"pipe_slicing":true,
|
||||
"pipe_style":1,
|
||||
"accept_connection_types":{},
|
||||
"reject_connection_types":{}
|
||||
},
|
||||
"nodes":{
|
||||
"0x191410fec90":{
|
||||
"type_":"bunny-lab.io.flyff_character_status_node.FlyffCharacterStatusNode",
|
||||
"icon":null,
|
||||
"name":"Flyff - Character Status",
|
||||
"color":[
|
||||
13,
|
||||
18,
|
||||
23,
|
||||
255
|
||||
],
|
||||
"border_color":[
|
||||
74,
|
||||
84,
|
||||
85,
|
||||
255
|
||||
],
|
||||
"text_color":[
|
||||
255,
|
||||
255,
|
||||
255,
|
||||
180
|
||||
],
|
||||
"disabled":false,
|
||||
"selected":false,
|
||||
"visible":true,
|
||||
"width":278.0,
|
||||
"height":200.20000000000002,
|
||||
"pos":[
|
||||
-234.47843187544638,
|
||||
171.50740184739476
|
||||
],
|
||||
"layout_direction":0,
|
||||
"port_deletion_allowed":false,
|
||||
"subgraph_session":{},
|
||||
"custom":{
|
||||
"hp":"HP: 5848/5848",
|
||||
"mp":"MP: 955/555",
|
||||
"fp":"FP: 0/0",
|
||||
"exp":"EXP: 49.0%"
|
||||
}
|
||||
},
|
||||
"0x19173496de0":{
|
||||
"type_":"bunny-lab.io.flyff_exp_current_node.FlyffEXPCurrentNode",
|
||||
"icon":null,
|
||||
"name":"Flyff - EXP (API Connected)",
|
||||
"color":[
|
||||
13,
|
||||
18,
|
||||
23,
|
||||
255
|
||||
],
|
||||
"border_color":[
|
||||
74,
|
||||
84,
|
||||
85,
|
||||
255
|
||||
],
|
||||
"text_color":[
|
||||
255,
|
||||
255,
|
||||
255,
|
||||
180
|
||||
],
|
||||
"disabled":false,
|
||||
"selected":false,
|
||||
"visible":true,
|
||||
"width":339.0,
|
||||
"height":74.2,
|
||||
"pos":[
|
||||
-237.34556433027646,
|
||||
77.62806051403777
|
||||
],
|
||||
"layout_direction":0,
|
||||
"port_deletion_allowed":false,
|
||||
"subgraph_session":{},
|
||||
"custom":{
|
||||
"value":"49.0"
|
||||
}
|
||||
},
|
||||
"0x191735ae690":{
|
||||
"type_":"bunny-lab.io.flyff_leveling_predictor_node.FlyffLevelingPredictorNode",
|
||||
"icon":null,
|
||||
"name":"Flyff - Leveling Predictor",
|
||||
"color":[
|
||||
13,
|
||||
18,
|
||||
23,
|
||||
255
|
||||
],
|
||||
"border_color":[
|
||||
74,
|
||||
84,
|
||||
85,
|
||||
255
|
||||
],
|
||||
"text_color":[
|
||||
255,
|
||||
255,
|
||||
255,
|
||||
180
|
||||
],
|
||||
"disabled":false,
|
||||
"selected":false,
|
||||
"visible":true,
|
||||
"width":324.0,
|
||||
"height":200.20000000000002,
|
||||
"pos":[
|
||||
170.42482250783007,
|
||||
77.62806051403777
|
||||
],
|
||||
"layout_direction":0,
|
||||
"port_deletion_allowed":false,
|
||||
"subgraph_session":{},
|
||||
"custom":{
|
||||
"exp_track_count":"7",
|
||||
"time_to_level":"Insufficient data",
|
||||
"time_between_kills":"N/A",
|
||||
"exp_per_kill":"N/A"
|
||||
}
|
||||
},
|
||||
"0x191735ae9c0":{
|
||||
"type_":"bunny-lab.io.backdrop.BackdropNode",
|
||||
"icon":null,
|
||||
"name":"Track EXP Changes Over Time to Predict Leveling Up",
|
||||
"color":[
|
||||
5,
|
||||
129,
|
||||
138,
|
||||
255
|
||||
],
|
||||
"border_color":[
|
||||
74,
|
||||
84,
|
||||
85,
|
||||
255
|
||||
],
|
||||
"text_color":[
|
||||
255,
|
||||
255,
|
||||
255,
|
||||
180
|
||||
],
|
||||
"disabled":false,
|
||||
"selected":false,
|
||||
"visible":true,
|
||||
"width":777.8842478973615,
|
||||
"height":380.82117975084645,
|
||||
"pos":[
|
||||
-264.113861059255,
|
||||
23.199190498448075
|
||||
],
|
||||
"layout_direction":0,
|
||||
"port_deletion_allowed":false,
|
||||
"subgraph_session":{},
|
||||
"custom":{
|
||||
"backdrop_text":""
|
||||
}
|
||||
}
|
||||
},
|
||||
"connections":[
|
||||
{
|
||||
"out":[
|
||||
"0x19173496de0",
|
||||
"value"
|
||||
],
|
||||
"in":[
|
||||
"0x191735ae690",
|
||||
"exp"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
81
borealis.py
81
borealis.py
@ -253,6 +253,63 @@ if __name__ == "__main__":
|
||||
workflow_menu.add_command("Save Workflow", lambda: save_workflow(graph))
|
||||
workflow_menu.add_command("Close Workflow", lambda: close_workflow(graph))
|
||||
|
||||
# ------------------------------#
|
||||
# WRAPPER: QMainWindow Integration with Additional UI Elements
|
||||
# ------------------------------#
|
||||
# SECTION: Enhanced Graph Wrapper for QMainWindow
|
||||
# This section wraps the NodeGraph widget in a QMainWindow with:
|
||||
# - A menu bar at the top (with a minimal "File" menu so it shows up)
|
||||
# - A blank status bar at the bottom
|
||||
# - A central QSplitter dividing the window horizontally:
|
||||
# * Left side (2/3): the NodeGraph widget
|
||||
# * Right side (1/3): an empty text box for future use
|
||||
_original_show = graph.widget.show # Save original method
|
||||
|
||||
def _wrapped_show():
|
||||
"""
|
||||
Wrap the NodeGraph widget inside a QMainWindow with a minimal "File" menu,
|
||||
a status bar, and a central splitter for layout.
|
||||
"""
|
||||
# Create a new QMainWindow instance
|
||||
main_window = QtWidgets.QMainWindow()
|
||||
|
||||
# Create a menu bar and add a "File" menu so it appears at the top on Windows.
|
||||
menu_bar = main_window.menuBar()
|
||||
menu_bar.addMenu("File") # Minimal named menu
|
||||
|
||||
# Create and set a blank status bar at the bottom.
|
||||
main_window.setStatusBar(QtWidgets.QStatusBar())
|
||||
|
||||
# Create a QSplitter for horizontal division.
|
||||
splitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal)
|
||||
|
||||
# SECTION: Left Pane - Graph Widget
|
||||
splitter.addWidget(graph.widget)
|
||||
|
||||
# SECTION: Right Pane - Empty Text Box
|
||||
text_edit = QtWidgets.QTextEdit()
|
||||
splitter.addWidget(text_edit)
|
||||
|
||||
# Set stretch factors: left pane gets 2/3, right pane gets 1/3.
|
||||
splitter.setStretchFactor(0, 2)
|
||||
splitter.setStretchFactor(1, 1)
|
||||
|
||||
# Set the splitter as the central widget of the main window.
|
||||
main_window.setCentralWidget(splitter)
|
||||
|
||||
# Transfer the window title from the graph widget to the main window.
|
||||
main_window.setWindowTitle(graph.widget.windowTitle())
|
||||
# Resize the main window using the size set for the graph widget.
|
||||
main_window.resize(graph.widget.size())
|
||||
|
||||
# Store a reference to the main window to prevent it from being garbage collected.
|
||||
graph.widget._main_window = main_window
|
||||
# Show the main window instead of the standalone graph widget.
|
||||
main_window.show()
|
||||
|
||||
# Monkey-patch the show method of the graph widget.
|
||||
graph.widget.show = _wrapped_show
|
||||
|
||||
# Grid styling changes
|
||||
graph.set_background_color(20, 20, 20) # Dark gray
|
||||
graph.set_grid_color(60, 60, 60) # Gray grid lines
|
||||
@ -267,10 +324,32 @@ if __name__ == "__main__":
|
||||
gradient.setColorAt(1.0, QtGui.QColor(9, 44, 68))
|
||||
scene.setBackgroundBrush(QtGui.QBrush(gradient))
|
||||
|
||||
# Resize and show the graph widget
|
||||
# Resize and show the graph widget (which now triggers the QMainWindow wrapper)
|
||||
graph.widget.resize(1600, 900)
|
||||
graph.widget.show()
|
||||
|
||||
# Override the Color of the Context Menu to Blue
|
||||
menu_stylesheet = """
|
||||
QMenu {
|
||||
background-color: rgb(30, 30, 30);
|
||||
border: 1px solid rgba(200, 200, 200, 60);
|
||||
}
|
||||
QMenu::item {
|
||||
padding: 5px 18px 2px;
|
||||
background-color: transparent;
|
||||
}
|
||||
QMenu::item:selected {
|
||||
color: rgb(255, 255, 255);
|
||||
background-color: rgba(60, 120, 180, 150);
|
||||
}
|
||||
QMenu::separator {
|
||||
height: 1px;
|
||||
background: rgba(255, 255, 255, 50);
|
||||
margin: 4px 8px;
|
||||
}
|
||||
"""
|
||||
graph_context_menu.qmenu.setStyleSheet(menu_stylesheet)
|
||||
|
||||
# Global update function
|
||||
def global_update():
|
||||
for node in graph.all_nodes():
|
||||
|
Loading…
x
Reference in New Issue
Block a user