Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions addons/ColorPickerPresets/ColorPickerPresets.gd
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
tool
@tool
extends EditorPlugin

const PRESETS_FILENAME := 'presets.hex'


func _enter_tree() -> void:
var presets := PoolColorArray()
var presets_raw := PoolStringArray()
var presets_file := File.new()
var presets_path: String = get_script().resource_path.get_base_dir().plus_file(PRESETS_FILENAME)
var presets := PackedColorArray()
var presets_raw := PackedStringArray()
var presets_path: String = get_script().resource_path.get_base_dir(
).path_join(PRESETS_FILENAME)

if presets_file.open(presets_path, File.READ) == OK:

var presets_file := FileAccess.open(presets_path, FileAccess.READ)
if presets_file != null:
presets_raw = presets_file.get_as_text().split("\n")
presets_file.close()

for hex in presets_raw:
if hex.is_valid_html_color():
if Color.html_is_valid(hex):
presets.push_back(Color(hex))

get_editor_interface().get_editor_settings().set_project_metadata(
Expand Down
2 changes: 1 addition & 1 deletion addons/gdscript-course-builder/plugin.gd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
tool
@tool
extends EditorPlugin

var _main_screen_plugin
Expand Down
7 changes: 4 additions & 3 deletions addons/gdscript-course-builder/plugins/MainScreenPlugin.gd
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
# Wrapper class to make sure whichever control we put as the main screen plugin,
# it is correctly displayed. Also gives easy access to EditorPlugin instance.
tool
@tool
extends MarginContainer

var plugin_instance: EditorPlugin

const ROOT_SCENE: PackedScene = preload("../ui/CourseEditor.tscn")
const ROOT_SCENE: PackedScene = preload(
"res://addons/gdscript-course-builder/ui/CourseEditor.tscn")


func _init() -> void:
size_flags_vertical = SIZE_EXPAND_FILL


func _ready() -> void:
var root := ROOT_SCENE.instance()
var root: Node = ROOT_SCENE.instantiate()
add_child(root)
root.editor_interface = plugin_instance.get_editor_interface()
54 changes: 31 additions & 23 deletions addons/gdscript-course-builder/ui/CodeRefItem.gd
Original file line number Diff line number Diff line change
@@ -1,57 +1,62 @@
# Single choice field for the code reference list.
#
# Displays buttons to sort and remove the field.
tool
@tool
class_name CodeRefItem
extends MarginContainer

signal text_changed
signal index_changed
signal removed

var list_index := -1 setget set_list_index
var _list_index: int = -1

onready var _background_panel := $BackgroundPanel as PanelContainer
var list_index: int:
set(value):
set_list_index(value)
get:
return _list_index

onready var _sort_up_button := $BackgroundPanel/Layout/SortButtons/SortUpButton as Button
onready var _sort_down_button := $BackgroundPanel/Layout/SortButtons/SortDownButton as Button
@onready var _background_panel := $BackgroundPanel as PanelContainer

onready var _index_label := $BackgroundPanel/Layout/IndexLabel as Label
onready var _line_edit := $BackgroundPanel/Layout/LineEdit as LineEdit
onready var _remove_button := $BackgroundPanel/Layout/RemoveButton as Button
@onready var _sort_up_button := $BackgroundPanel/Layout/SortButtons/SortUpButton as Button
@onready var _sort_down_button := $BackgroundPanel/Layout/SortButtons/SortDownButton as Button

onready var _confirm_dialog := $ConfirmationDialog as ConfirmationDialog
@onready var _index_label := $BackgroundPanel/Layout/IndexLabel as Label
@onready var _line_edit := $BackgroundPanel/Layout/LineEdit as LineEdit
@onready var _remove_button := $BackgroundPanel/Layout/RemoveButton as Button

onready var _parent := get_parent() as Container
@onready var _confirm_dialog := $ConfirmationDialog as ConfirmationDialog

@onready var _parent := get_parent() as Container

func _ready() -> void:
_sort_up_button.connect("pressed", self, "_change_position_in_parent", [-1])
_sort_down_button.connect("pressed", self, "_change_position_in_parent", [1])

_remove_button.connect("pressed", self, "_on_remove_requested")
_line_edit.connect("text_changed", self, "_on_text_changed")
func _ready() -> void:
_sort_up_button.pressed.connect(_change_position_in_parent.bind(-1))
_sort_down_button.pressed.connect(_change_position_in_parent.bind(1))

_confirm_dialog.connect("confirmed", self, "_remove")
_remove_button.pressed.connect(_on_remove_requested)
_line_edit.text_changed.connect(_on_text_changed)
_confirm_dialog.confirmed.connect(_remove)

_index_label.text = "%d." % [get_index()]

# Update theme items
var panel_style = get_stylebox("panel", "Panel").duplicate()
var panel_style = get_theme_stylebox("panel", "Panel").duplicate()
if panel_style is StyleBoxFlat:
panel_style.bg_color = get_color("base_color", "Editor")
panel_style.bg_color = get_theme_color("base_color", "Editor")
panel_style.corner_detail = 4
panel_style.set_corner_radius_all(2)
_background_panel.add_stylebox_override("panel", panel_style)
_background_panel.add_theme_stylebox_override("panel", panel_style)

_sort_up_button.icon = get_icon("ArrowUp", "EditorIcons")
_sort_down_button.icon = get_icon("ArrowDown", "EditorIcons")
_remove_button.icon = get_icon("Remove", "EditorIcons")
_sort_up_button.icon = get_theme_icon("ArrowUp", "EditorIcons")
_sort_down_button.icon = get_theme_icon("ArrowDown", "EditorIcons")
_remove_button.icon = get_theme_icon("Remove", "EditorIcons")


func set_text(value: String) -> void:
if not _line_edit:
yield(self, "ready")
await ready
_line_edit.text = value


Expand All @@ -60,6 +65,9 @@ func get_text() -> String:


func set_list_index(index: int) -> void:
_list_index = index
if not is_inside_tree():
await ready
_index_label.text = "%d." % [index]


Expand Down
11 changes: 6 additions & 5 deletions addons/gdscript-course-builder/ui/CodeRefList.gd
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
tool
@tool
class_name CodeRefList
extends VBoxContainer

const CodeRefItemScene = preload("CodeRefItem.tscn")

var _practice: Practice

onready var _add_button := $Header/AddButton as Button
@onready var _add_button := $Header/AddButton as Button


func _ready() -> void:
_add_button.connect("pressed", self, "_add_function")
_add_button.pressed.connect(Callable(self, "_add_function"))



func setup(practice: Practice) -> void:
_practice = practice
if not is_inside_tree():
yield(self, "ready")
await ready
for function in practice.documentation_references:
_add_function(function)

Expand All @@ -30,7 +31,7 @@ func _update_list_labels() -> void:


func _update_practice_code_ref() -> void:
var refs := PoolStringArray()
var refs := PackedStringArray()
for child in get_children():
if not child is CodeRefItem or child.is_queued_for_deletion():
continue
Expand Down
Loading