Skip to content

Commit

Permalink
directory exclusion working
Browse files Browse the repository at this point in the history
  • Loading branch information
DustStock committed Oct 14, 2024
1 parent ba1fb57 commit bffc4c8
Show file tree
Hide file tree
Showing 4 changed files with 310 additions and 6 deletions.
17 changes: 17 additions & 0 deletions addons/project_documentation/documentation_generator_dialog.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ extends Window

var excluded_directories = ["res://addons/"]

@onready var vbox_container = $VBoxContainer
@onready var excluded_directories_list = $VBoxContainer/ExcludedDirectoriesContainer/ExcludedDirectoriesList
@onready var add_directory_button = $VBoxContainer/ExcludedDirectoriesContainer/AddDirectoryContainer/AddDirectoryButton
@onready var directory_dialog = $DirectoryDialog
Expand All @@ -12,6 +13,7 @@ func _ready():
add_directory_button.connect("pressed", _on_add_directory_button_pressed)
directory_dialog.connect("dir_selected", _on_directory_selected)
update_excluded_directories_list()
call_deferred("adjust_window_size")

func _on_generate_pressed():
print("generate pressed")
Expand Down Expand Up @@ -41,6 +43,7 @@ func _on_directory_selected(dir):
if dir not in excluded_directories:
excluded_directories.append(dir)
update_excluded_directories_list()
adjust_window_size()

func update_excluded_directories_list():
for child in excluded_directories_list.get_children():
Expand All @@ -61,3 +64,17 @@ func update_excluded_directories_list():
func _on_delete_directory(dir):
excluded_directories.erase(dir)
update_excluded_directories_list()
adjust_window_size()

func adjust_window_size():
# Wait for one frame to ensure all UI elements are updated
await get_tree().process_frame

# Calculate the required height
var required_height = vbox_container.get_minimum_size().y + 20 # Add some padding

# Get the current window size
var current_size = size

# Set the new window size
size = Vector2(current_size.x, required_height)
12 changes: 7 additions & 5 deletions addons/project_documentation/documetation_generator_dialog.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@
[node name="DocumentationGeneratorDialog" type="Window"]
position = Vector2i(0, 36)
size = Vector2i(250, 400)
exclusive = true
script = ExtResource("1_mum6i")

[node name="VBoxContainer" type="VBoxContainer" parent="."]
custom_minimum_size = Vector2(0, 1000)
offset_right = 236.0
offset_bottom = 288.0
size_flags_horizontal = 3
size_flags_vertical = 3
size_flags_vertical = 7

[node name="ExportSceneTree" type="CheckBox" parent="VBoxContainer"]
layout_mode = 2
Expand Down Expand Up @@ -52,17 +53,18 @@ text = "Export Shaders"

[node name="ExcludedDirectoriesContainer" type="VBoxContainer" parent="VBoxContainer"]
layout_mode = 2

[node name="Label" type="Label" parent="VBoxContainer/ExcludedDirectoriesContainer"]
layout_mode = 2
text = "Excluded Directories:"
size_flags_vertical = 5

[node name="ExcludedDirectoriesList" type="VBoxContainer" parent="VBoxContainer/ExcludedDirectoriesContainer"]
layout_mode = 2

[node name="AddDirectoryContainer" type="HBoxContainer" parent="VBoxContainer/ExcludedDirectoriesContainer"]
layout_mode = 2

[node name="Label" type="Label" parent="VBoxContainer/ExcludedDirectoriesContainer/AddDirectoryContainer"]
layout_mode = 2
text = "Exclude:"

[node name="AddDirectoryButton" type="Button" parent="VBoxContainer/ExcludedDirectoriesContainer/AddDirectoryContainer"]
layout_mode = 2
text = "Add Directory"
Expand Down
1 change: 0 additions & 1 deletion project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ config_version=5
config/name="Project Documentation"
run/main_scene="res://addons/project_documentation/documetation_generator_dialog.tscn"
config/features=PackedStringArray("4.3", "Mobile")
config/icon="res://icon.svg"

[editor_plugins]

Expand Down
286 changes: 286 additions & 0 deletions project_documentation.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,286 @@
### 4.3-stable (official) 77dcf97d8

[details="Project Settings"]
######
```plaintext
config_version: <null>
```

###### application
```plaintext
config/name: Project Documentation
run/main_scene: res://addons/project_documentation/documetation_generator_dialog.tscn
config/features: ["4.3", "Mobile"]
```

###### editor_plugins
```plaintext
enabled: ["res://addons/project_documentation/plugin.cfg"]
```

###### rendering
```plaintext
renderer/rendering_method: mobile
```

[/details]


#### Scenes
##### res://addons/project_documentation/documetation_generator_dialog.tscn

[details="Scene Tree"]
```plaintext
DocumentationGeneratorDialog (Window)
VBoxContainer (VBoxContainer)
ExportSceneTree (CheckBox)
ExportSignalConnections (CheckBox)
ExportChangedProperties (CheckBox)
ExportNodeGroups (CheckBox)
ExportScripts (CheckBox)
ExportResources (CheckBox)
ExportShaders (CheckBox)
ExcludedDirectoriesContainer (VBoxContainer)
ExcludedDirectoriesList (VBoxContainer)
AddDirectoryContainer (HBoxContainer)
Label (Label)
AddDirectoryButton (Button)
GenerateButton (Button)
CancelButton (Button)
DirectoryDialog (FileDialog)
```
[/details]

[details="Signal Connections"]
```plaintext
None
```
[/details]

[details="Nodes"]
###### . (Window)
Script: res://addons/project_documentation/documentation_generator_dialog.gd
Changed Properties:
```gdscript
position = (0, 36)
size = (250, 400)
exclusive = true
```

###### ./VBoxContainer (VBoxContainer)
Changed Properties:
```gdscript
custom_minimum_size = (0, 1000)
offset_right = 236
offset_bottom = 288
size_flags_horizontal = 3
size_flags_vertical = 7
```

###### ./VBoxContainer/ExportSceneTree (CheckBox)
Changed Properties:
```gdscript
layout_mode = 2
button_pressed = true
text = Export Scene Tree

```

###### ./VBoxContainer/ExportSignalConnections (CheckBox)
Changed Properties:
```gdscript
layout_mode = 2
button_pressed = true
text = Export Signal Connections
```

###### ./VBoxContainer/ExportChangedProperties (CheckBox)
Changed Properties:
```gdscript
layout_mode = 2
button_pressed = true
text = Export Changed Properties
```

###### ./VBoxContainer/ExportNodeGroups (CheckBox)
Changed Properties:
```gdscript
layout_mode = 2
button_pressed = true
text = Export Node Groups
```

###### ./VBoxContainer/ExportScripts (CheckBox)
Changed Properties:
```gdscript
layout_mode = 2
button_pressed = true
text = Export Scripts
```

###### ./VBoxContainer/ExportResources (CheckBox)
Changed Properties:
```gdscript
layout_mode = 2
button_pressed = true
text = Export Resources
```

###### ./VBoxContainer/ExportShaders (CheckBox)
Changed Properties:
```gdscript
layout_mode = 2
button_pressed = true
text = Export Shaders
```

###### ./VBoxContainer/ExcludedDirectoriesContainer (VBoxContainer)
Changed Properties:
```gdscript
layout_mode = 2
size_flags_vertical = 5
```

###### ./VBoxContainer/ExcludedDirectoriesContainer/ExcludedDirectoriesList (VBoxContainer)
Changed Properties:
```gdscript
layout_mode = 2
```

###### ./VBoxContainer/ExcludedDirectoriesContainer/AddDirectoryContainer (HBoxContainer)
Changed Properties:
```gdscript
layout_mode = 2
```

###### ./VBoxContainer/ExcludedDirectoriesContainer/AddDirectoryContainer/Label (Label)
Changed Properties:
```gdscript
layout_mode = 2
text = Exclude:
```

###### ./VBoxContainer/ExcludedDirectoriesContainer/AddDirectoryContainer/AddDirectoryButton (Button)
Changed Properties:
```gdscript
layout_mode = 2
text = Add Directory
```

###### ./VBoxContainer/GenerateButton (Button)
Changed Properties:
```gdscript
layout_mode = 2
text = Generate
```

###### ./VBoxContainer/CancelButton (Button)
Changed Properties:
```gdscript
layout_mode = 2
text = Cancel
```

###### ./DirectoryDialog (FileDialog)
Changed Properties:
```gdscript
title = Open a Directory
ok_button_text = Select Current Folder
file_mode = 2
```

[/details]



#### Scripts
[details="res://addons/project_documentation/documentation_generator_dialog.gd"]
```gdscript
@tool
extends Window

var excluded_directories = ["res://addons/"]

@onready var vbox_container = $VBoxContainer
@onready var excluded_directories_list = $VBoxContainer/ExcludedDirectoriesContainer/ExcludedDirectoriesList
@onready var add_directory_button = $VBoxContainer/ExcludedDirectoriesContainer/AddDirectoryContainer/AddDirectoryButton
@onready var directory_dialog = $DirectoryDialog

func _ready():
show()
add_directory_button.connect("pressed", _on_add_directory_button_pressed)
directory_dialog.connect("dir_selected", _on_directory_selected)
update_excluded_directories_list()
call_deferred("adjust_window_size")

func _on_generate_pressed():
print("generate pressed")
var options = {
"export_scene_tree": $VBoxContainer/ExportSceneTree.is_pressed(),
"export_signal_connections": $VBoxContainer/ExportSignalConnections.is_pressed(),
"export_changed_properties": $VBoxContainer/ExportChangedProperties.is_pressed(),
"export_node_groups": $VBoxContainer/ExportNodeGroups.is_pressed(),
"export_scripts": $VBoxContainer/ExportScripts.is_pressed(),
"export_resources": $VBoxContainer/ExportResources.is_pressed(),
"export_shaders": $VBoxContainer/ExportShaders.is_pressed(),
"excluded_directories": excluded_directories
}
var doc_generator = preload("res://addons/project_documentation/documentation_generator.gd").new()
doc_generator.set_options(options)
doc_generator.generate()
queue_free()

func _on_cancel_pressed():
print("cancel/close pressed")
hide()

func _on_add_directory_button_pressed():
directory_dialog.popup_centered(Vector2(400, 300))

func _on_directory_selected(dir):
if dir not in excluded_directories:
excluded_directories.append(dir)
update_excluded_directories_list()
adjust_window_size()

func update_excluded_directories_list():
for child in excluded_directories_list.get_children():
child.queue_free()

for dir in excluded_directories:
var hbox = HBoxContainer.new()
var label = Label.new()
label.text = dir
var delete_button = Button.new()
delete_button.text = "X"
delete_button.connect("pressed", _on_delete_directory.bind(dir))

hbox.add_child(label)
hbox.add_child(delete_button)
excluded_directories_list.add_child(hbox)

func _on_delete_directory(dir):
excluded_directories.erase(dir)
update_excluded_directories_list()
adjust_window_size()

func adjust_window_size():
# Wait for one frame to ensure all UI elements are updated
await get_tree().process_frame

# Calculate the required height
var required_height = vbox_container.get_minimum_size().y + 20 # Add some padding

# Get the current window size
var current_size = size

# Set the new window size
size = Vector2(current_size.x, required_height)

```
[/details]


#### Resources

#### Shaders

0 comments on commit bffc4c8

Please sign in to comment.