Skip to content

Commit d1dbe06

Browse files
Merge pull request #19 from SpectrumPro/dev
Opening tabs in new windows
2 parents 45789a8 + 5fa98bb commit d1dbe06

File tree

6 files changed

+316
-252
lines changed

6 files changed

+316
-252
lines changed

Main.tscn

Lines changed: 259 additions & 203 deletions
Large diffs are not rendered by default.

Scripts/Classes/Art_net.gd

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ var exposed_values = [
99
"type":LineEdit,
1010
"signal":"text_submitted",
1111
"function":"set_ip_addr",
12+
"get_function":"get_ip_addr",
1213
"configs":{
1314
"placeholder_text":"172.0.0.1"
1415
}
@@ -18,6 +19,7 @@ var exposed_values = [
1819
"type":SpinBox,
1920
"signal":"value_changed",
2021
"function":"set_port",
22+
"get_function":"get_port",
2123
"configs": {
2224
"max_value":65535
2325
}
@@ -27,6 +29,7 @@ var exposed_values = [
2729
"type":SpinBox,
2830
"signal":"value_changed",
2931
"function":"set_universe",
32+
"get_function":"get_universe",
3033
"configs":{
3134
"max_value":9223370000000000000,
3235
"rounded":"true",
@@ -67,6 +70,14 @@ func set_universe(new_universe):
6770
config.universe = new_universe
6871
connect_to_host()
6972

73+
func get_ip_addr():
74+
return config.ip
75+
76+
func get_port():
77+
return config.port
78+
79+
func get_universe():
80+
return config.universe
7081
func serialize():
7182
return config
7283

Scripts/Global.gd

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,33 @@ var fixtures = {}
3232
# General Nodes
3333
"popup_window":get_tree().root.get_node("Main/Popups"),
3434
"save_file_dialog":get_tree().root.get_node("Main/Save File Dialog"),
35-
"add_node_popup":get_tree().root.get_node("Main/TabContainer/Node Editor/Add Node Popup"),
36-
"add_widget_popup":get_tree().root.get_node("Main/TabContainer/Console/Console Editor/Add Widget Popup"),
37-
"widget_settings_menu":get_tree().root.get_node("Main/TabContainer/Console/Widget Settings Menu"),
35+
"add_node_popup":get_tree().root.get_node("Main/TabContainer/Node Editor/Node Editor/Add Node Popup"),
36+
"add_widget_popup":get_tree().root.get_node("Main/TabContainer/Console/Console/Console Editor/Add Widget Popup"),
37+
"widget_settings_menu":get_tree().root.get_node("Main/TabContainer/Console/Console/Widget Settings Menu"),
3838
"edit_mode_toggle":get_tree().root.get_node("Main/Menu Buttons/Edit Mode"),
3939

4040
# Functions Tab
41-
"functions":get_tree().root.get_node("Main/TabContainer/Functions"),
42-
"scenes_list":get_tree().root.get_node("Main/TabContainer/Functions/VBoxContainer/PanelContainer2/HBoxContainer/Scenes/ScrollContainer/VBoxContainer/Scenes"),
43-
"effects_list":get_tree().root.get_node("Main/TabContainer/Functions/VBoxContainer/PanelContainer2/HBoxContainer/Effects/ScrollContainer/VBoxContainer/Effects"),
44-
"cues_list":get_tree().root.get_node("Main/TabContainer/Functions/VBoxContainer/PanelContainer2/HBoxContainer/Cues/ScrollContainer/VBoxContainer/Cues"),
41+
"functions":get_tree().root.get_node("Main/TabContainer/Functions/Functions"),
42+
"scenes_list":get_tree().root.get_node("Main/TabContainer/Functions/Functions/VBoxContainer/PanelContainer2/HBoxContainer/Scenes/ScrollContainer/VBoxContainer/Scenes"),
43+
"effects_list":get_tree().root.get_node("Main/TabContainer/Functions/Functions/VBoxContainer/PanelContainer2/HBoxContainer/Effects/ScrollContainer/VBoxContainer/Effects"),
44+
"cues_list":get_tree().root.get_node("Main/TabContainer/Functions/Functions/VBoxContainer/PanelContainer2/HBoxContainer/Cues/ScrollContainer/VBoxContainer/Cues"),
4545

4646
# Patch Bay Tab
47-
"patch_bay":get_tree().root.get_node("Main/TabContainer/Patch Bay"),
48-
"universe_list":get_tree().root.get_node("Main/TabContainer/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer/ScrollContainer/Universes"),
49-
"universe_inputs":get_tree().root.get_node("Main/TabContainer/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/GridContainer/PanelContainer/Universe Inputs"),
50-
"universe_outputs":get_tree().root.get_node("Main/TabContainer/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/GridContainer/PanelContainer3/ScrollContainer/Universe Outputs"),
51-
"channel_overrides_list":get_tree().root.get_node("Main/TabContainer/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer2/ScrollContainer/Channel Overrides"),
52-
"universe_name":get_tree().root.get_node("Main/TabContainer/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/PanelContainer/Universe Controls/Universe Name"),
53-
"universe_controls":get_tree().root.get_node("Main/TabContainer/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/PanelContainer/Universe Controls"),
54-
"universe_io_controls":get_tree().root.get_node("Main/TabContainer/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/GridContainer/PanelContainer2/VBoxContainer/IO Controls"),
55-
"universe_io_type":get_tree().root.get_node("Main/TabContainer/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/GridContainer/PanelContainer2/VBoxContainer/IO Type"),
47+
"patch_bay":get_tree().root.get_node("Main/TabContainer/Patch Bay/Patch Bay/"),
48+
"universe_list":get_tree().root.get_node("Main/TabContainer/Patch Bay/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer/ScrollContainer/Universes"),
49+
"universe_inputs":get_tree().root.get_node("Main/TabContainer/Patch Bay/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/GridContainer/PanelContainer/Universe Inputs"),
50+
"universe_outputs":get_tree().root.get_node("Main/TabContainer/Patch Bay/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/GridContainer/PanelContainer3/ScrollContainer/Universe Outputs"),
51+
"channel_overrides_list":get_tree().root.get_node("Main/TabContainer/Patch Bay/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer2/ScrollContainer/Channel Overrides"),
52+
"universe_name":get_tree().root.get_node("Main/TabContainer/Patch Bay/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/PanelContainer/Universe Controls/Universe Name"),
53+
"universe_controls":get_tree().root.get_node("Main/TabContainer/Patch Bay/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/PanelContainer/Universe Controls"),
54+
"universe_io_controls":get_tree().root.get_node("Main/TabContainer/Patch Bay/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/GridContainer/PanelContainer2/VBoxContainer/IO Controls"),
55+
"universe_io_type":get_tree().root.get_node("Main/TabContainer/Patch Bay/Patch Bay/VBoxContainer/HSplitContainer/PanelContainer2/VSplitContainer/PanelContainer/VBoxContainer/GridContainer/PanelContainer2/VBoxContainer/IO Type"),
5656

5757
# Fixtures Tab
58-
"fixtures":get_tree().root.get_node("Main/TabContainer/Fixtures"),
59-
"virtual_fixture_list":get_tree().root.get_node("Main/TabContainer/Fixtures/VBoxContainer/VSplitContainer/HSplitContainer/PanelContainer/ScrollContainer/Virtual Fixtures"),
60-
"physical_fixture_list":get_tree().root.get_node("Main/TabContainer/Fixtures/VBoxContainer/VSplitContainer/HSplitContainer/PanelContainer2/ScrollContainer/Physical Fixtures"),
61-
"fixture_groups_list":get_tree().root.get_node("Main/TabContainer/Fixtures/VBoxContainer/VSplitContainer/PanelContainer2/ScrollContainer/Fixture Groups"),
58+
"fixtures":get_tree().root.get_node("Main/TabContainer/Fixtures/Fixtures/"),
59+
"virtual_fixture_list":get_tree().root.get_node("Main/TabContainer/Fixtures/Fixtures/VBoxContainer/VSplitContainer/HSplitContainer/PanelContainer/ScrollContainer/Virtual Fixtures"),
60+
"physical_fixture_list":get_tree().root.get_node("Main/TabContainer/Fixtures/Fixtures/VBoxContainer/VSplitContainer/HSplitContainer/PanelContainer2/ScrollContainer/Physical Fixtures"),
61+
"fixture_groups_list":get_tree().root.get_node("Main/TabContainer/Fixtures/Fixtures/VBoxContainer/VSplitContainer/PanelContainer2/ScrollContainer/Fixture Groups"),
6262

6363
# Add Fixture Menue
6464
"add_fixture_menu":get_tree().root.get_node("Main/Add Fixture"),
@@ -69,9 +69,9 @@ var fixtures = {}
6969
"add_fixture_button":get_tree().root.get_node("Main/Add Fixture/TabContainer/MarginContainer/HSplitContainer/PanelContainer/VBoxContainer/HBoxContainer2/Add Fixture Button"),
7070

7171
# Desk
72-
"desk":get_tree().root.get_node("Main/TabContainer/Desk"),
73-
"desk_channel_container":get_tree().root.get_node("Main/TabContainer/Desk/VSplitContainer/PanelContainer/VBoxContainer/PanelContainer2/ScrollContainer/Channel Container"),
74-
"desk_universe_option":get_tree().root.get_node("Main/TabContainer/Desk/VSplitContainer/PanelContainer/VBoxContainer/PanelContainer/HBoxContainer/Desk Universe Option"),
72+
"desk":get_tree().root.get_node("Main/TabContainer/Desk/Desk"),
73+
"desk_channel_container":get_tree().root.get_node("Main/TabContainer/Desk/Desk/VSplitContainer/PanelContainer/VBoxContainer/PanelContainer2/ScrollContainer/Channel Container"),
74+
"desk_universe_option":get_tree().root.get_node("Main/TabContainer/Desk/Desk/VSplitContainer/PanelContainer/VBoxContainer/PanelContainer/HBoxContainer/Desk Universe Option"),
7575
}
7676

7777
@onready var icons = {

Scripts/Node_system.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ extends GraphEdit
33
var initial_position = Vector2(40,40)
44
var node_index = 0
55
#@onready var connection_option_button = get_parent().get_node("Console/MarginContainer/VBoxContainer/connection/OptionButton")
6-
@onready var console_editor = get_parent().get_node("Console/Console Editor")
6+
#@onready var console_editor = get_parent().get_node("Console/Console Editor")
77
var built_in_nodes = {
88

99
}

Scripts/System.gd

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ func load_save(file_path):
104104
if manifest_file == null:
105105
Globals.show_popup([{"type":Globals.error.UNABLE_TO_LOAD_FILE,"from":file_path}])
106106
return
107-
108107
var manifest = JSON.parse_string(manifest_file.get_as_text())
109108
if manifest == null:
110109
Globals.show_popup([{"type":Globals.error.UNABLE_TO_LOAD_MANIFEST,"from":file_path}])

Scripts/Tab_container.gd

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,41 +11,39 @@ func _on_tab_clicked(tab_index):
1111
#if not get_current_tab() == get_previous_tab():
1212
#set_tab_button_icon(get_current_tab(), load("res://Assets/Icons/close.svg"))
1313
#set_tab_button_icon(get_previous_tab(), Texture2D.new())
14-
pass
15-
#var current_time = Time.get_ticks_msec() / 1000.0
16-
#
17-
#if current_time - last_click_time < double_click_threshold:
18-
## Double click detected
19-
#on_double_click(tab_index)
20-
#else:
21-
## Single click, update last click time
22-
#last_click_time = current_time
14+
#pass
15+
var current_time = Time.get_ticks_msec() / 1000.0
16+
17+
if current_time - last_click_time < double_click_threshold:
18+
# Double click detected
19+
on_double_click(tab_index)
20+
else:
21+
# Single click, update last click time
22+
last_click_time = current_time
2323

2424

2525
func on_double_click(tab_index):
2626

2727
create_new_window(tab_index)
2828

2929
func create_new_window(tab_index):
30-
# Implement the logic to pop out the tab into a new window
31-
# You can use scenes, instancing, or other techniques based on your project structure
30+
var node_to_replace = get_tab_control(tab_index)
31+
var new_window_node = Window.new()
3232

33-
# Example: Duplicate the tab's content and add it to a new window
34-
var tab_content = get_tab_control(tab_index)
33+
new_window_node.name = node_to_replace.name
34+
new_window_node.close_requested.connect(self.window_close_request.bind(str(node_to_replace.name)))
3535

36-
# Create a new window scene and instance it
37-
var new_window_instance = Window.new()
36+
node_to_replace.replace_by(new_window_node)
37+
node_to_replace.queue_free()
3838

39-
# Add the tab's content to the new window
40-
var duplicated_content = tab_content.duplicate()
41-
duplicated_content.visible = true
42-
duplicated_content.set_anchors_preset(15)
39+
func window_close_request(name):
40+
var node_to_replace = get_node(name)
41+
var new_control_node = Control.new()
4342

44-
new_window_instance.add_child(duplicated_content)
45-
get_tree().get_root().add_child(new_window_instance)
46-
# Add the new window to the scene or show it as needed
47-
new_window_instance.visible = true
48-
43+
new_control_node.name = name
44+
45+
node_to_replace.replace_by(new_control_node)
46+
node_to_replace.queue_free()
4947

5048
func _on_tab_button_pressed(tab):
5149
if tab == get_current_tab():

0 commit comments

Comments
 (0)