1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-06 12:20:30 +00:00

Remove editor dependencies from ColorPicker

This commit is contained in:
kobewi
2022-10-11 14:57:20 +02:00
parent 5aadc618b6
commit a3661ad079
4 changed files with 57 additions and 44 deletions

View File

@@ -3747,11 +3747,12 @@ void EditorNode::set_current_scene(int p_idx) {
call_deferred(SNAME("_set_main_scene_state"), state, get_edited_scene()); // Do after everything else is done setting up. call_deferred(SNAME("_set_main_scene_state"), state, get_edited_scene()); // Do after everything else is done setting up.
} }
void EditorNode::setup_color_picker(ColorPicker *picker) { void EditorNode::setup_color_picker(ColorPicker *p_picker) {
p_picker->set_editor_settings(EditorSettings::get_singleton());
int default_color_mode = EDITOR_GET("interface/inspector/default_color_picker_mode"); int default_color_mode = EDITOR_GET("interface/inspector/default_color_picker_mode");
int picker_shape = EDITOR_GET("interface/inspector/default_color_picker_shape"); int picker_shape = EDITOR_GET("interface/inspector/default_color_picker_shape");
picker->set_color_mode((ColorPicker::ColorModeType)default_color_mode); p_picker->set_color_mode((ColorPicker::ColorModeType)default_color_mode);
picker->set_picker_shape((ColorPicker::PickerShapeType)picker_shape); p_picker->set_picker_shape((ColorPicker::PickerShapeType)picker_shape);
} }
bool EditorNode::is_scene_open(const String &p_path) { bool EditorNode::is_scene_open(const String &p_path) {

View File

@@ -809,7 +809,7 @@ public:
void set_current_scene(int p_idx); void set_current_scene(int p_idx);
void setup_color_picker(ColorPicker *picker); void setup_color_picker(ColorPicker *p_picker);
void request_instance_scene(const String &p_path); void request_instance_scene(const String &p_path);
void request_instantiate_scenes(const Vector<String> &p_files); void request_instantiate_scenes(const Vector<String> &p_files);

View File

@@ -35,11 +35,6 @@
#include "core/os/keyboard.h" #include "core/os/keyboard.h"
#include "core/os/os.h" #include "core/os/os.h"
#include "scene/gui/color_mode.h" #include "scene/gui/color_mode.h"
#ifdef TOOLS_ENABLED
#include "editor/editor_settings.h"
#endif
#include "thirdparty/misc/ok_color.h" #include "thirdparty/misc/ok_color.h"
#include "thirdparty/misc/ok_color_shader.h" #include "thirdparty/misc/ok_color_shader.h"
@@ -50,31 +45,6 @@ void ColorPicker::_notification(int p_what) {
switch (p_what) { switch (p_what) {
case NOTIFICATION_ENTER_TREE: { case NOTIFICATION_ENTER_TREE: {
_update_color(); _update_color();
#ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) {
if (preset_cache.is_empty()) {
PackedColorArray saved_presets = EditorSettings::get_singleton()->get_project_metadata("color_picker", "presets", PackedColorArray());
for (int i = 0; i < saved_presets.size(); i++) {
preset_cache.push_back(saved_presets[i]);
}
}
for (int i = 0; i < preset_cache.size(); i++) {
presets.push_back(preset_cache[i]);
}
if (recent_preset_cache.is_empty()) {
PackedColorArray saved_recent_presets = EditorSettings::get_singleton()->get_project_metadata("color_picker", "recent_presets", PackedColorArray());
for (int i = 0; i < saved_recent_presets.size(); i++) {
recent_preset_cache.push_back(saved_recent_presets[i]);
}
}
for (int i = 0; i < recent_preset_cache.size(); i++) {
recent_presets.push_back(recent_preset_cache[i]);
}
}
#endif
[[fallthrough]]; [[fallthrough]];
} }
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
@@ -396,6 +366,40 @@ void ColorPicker::create_slider(GridContainer *gc, int idx) {
} }
} }
#ifdef TOOLS_ENABLED
void ColorPicker::set_editor_settings(Object *p_editor_settings) {
if (editor_settings) {
return;
}
editor_settings = p_editor_settings;
if (preset_cache.is_empty()) {
PackedColorArray saved_presets = editor_settings->call(SNAME("get_project_metadata"), "color_picker", "presets", PackedColorArray());
for (int i = 0; i < saved_presets.size(); i++) {
preset_cache.push_back(saved_presets[i]);
}
}
for (int i = 0; i < preset_cache.size(); i++) {
presets.push_back(preset_cache[i]);
}
if (recent_preset_cache.is_empty()) {
PackedColorArray saved_recent_presets = editor_settings->call(SNAME("get_project_metadata"), "color_picker", "recent_presets", PackedColorArray());
for (int i = 0; i < saved_recent_presets.size(); i++) {
recent_preset_cache.push_back(saved_recent_presets[i]);
}
}
for (int i = 0; i < recent_preset_cache.size(); i++) {
recent_presets.push_back(recent_preset_cache[i]);
}
_update_presets();
_update_recent_presets();
}
#endif
HSlider *ColorPicker::get_slider(int p_idx) { HSlider *ColorPicker::get_slider(int p_idx) {
if (p_idx < SLIDER_COUNT) { if (p_idx < SLIDER_COUNT) {
return sliders[p_idx]; return sliders[p_idx];
@@ -545,7 +549,7 @@ void ColorPicker::_update_presets() {
} }
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) { if (editor_settings) {
// Only load preset buttons when the only child is the add-preset button. // Only load preset buttons when the only child is the add-preset button.
if (preset_container->get_child_count() == 1) { if (preset_container->get_child_count() == 1) {
for (int i = 0; i < preset_cache.size(); i++) { for (int i = 0; i < preset_cache.size(); i++) {
@@ -559,7 +563,7 @@ void ColorPicker::_update_presets() {
void ColorPicker::_update_recent_presets() { void ColorPicker::_update_recent_presets() {
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) { if (editor_settings) {
int recent_preset_count = recent_preset_hbc->get_child_count(); int recent_preset_count = recent_preset_hbc->get_child_count();
for (int i = 0; i < recent_preset_count; i++) { for (int i = 0; i < recent_preset_count; i++) {
memdelete(recent_preset_hbc->get_child(0)); memdelete(recent_preset_hbc->get_child(0));
@@ -732,9 +736,9 @@ void ColorPicker::add_preset(const Color &p_color) {
} }
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) { if (editor_settings) {
PackedColorArray arr_to_save = get_presets(); PackedColorArray arr_to_save = get_presets();
EditorSettings::get_singleton()->set_project_metadata("color_picker", "presets", arr_to_save); editor_settings->call(SNAME("set_project_metadata"), "color_picker", "presets", arr_to_save);
} }
#endif #endif
} }
@@ -753,9 +757,9 @@ void ColorPicker::add_recent_preset(const Color &p_color) {
_select_from_preset_container(p_color); _select_from_preset_container(p_color);
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) { if (editor_settings) {
PackedColorArray arr_to_save = get_recent_presets(); PackedColorArray arr_to_save = get_recent_presets();
EditorSettings::get_singleton()->set_project_metadata("color_picker", "recent_presets", arr_to_save); editor_settings->call(SNAME("set_project_metadata"), "color_picker", "recent_presets", arr_to_save);
} }
#endif #endif
} }
@@ -776,9 +780,9 @@ void ColorPicker::erase_preset(const Color &p_color) {
} }
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) { if (editor_settings) {
PackedColorArray arr_to_save = get_presets(); PackedColorArray arr_to_save = get_presets();
EditorSettings::get_singleton()->set_project_metadata("color_picker", "presets", arr_to_save); editor_settings->call(SNAME("set_project_metadata"), "color_picker", "presets", arr_to_save);
} }
#endif #endif
} }
@@ -800,9 +804,9 @@ void ColorPicker::erase_recent_preset(const Color &p_color) {
} }
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) { if (editor_settings) {
PackedColorArray arr_to_save = get_recent_presets(); PackedColorArray arr_to_save = get_recent_presets();
EditorSettings::get_singleton()->set_project_metadata("color_picker", "recent_presets", arr_to_save); editor_settings->call(SNAME("set_project_metadata"), "color_picker", "recent_presets", arr_to_save);
} }
#endif #endif
} }

View File

@@ -99,6 +99,10 @@ private:
static List<Color> preset_cache; static List<Color> preset_cache;
static List<Color> recent_preset_cache; static List<Color> recent_preset_cache;
#ifdef TOOLS_ENABLED
Object *editor_settings = nullptr;
#endif
int current_slider_count = SLIDER_COUNT; int current_slider_count = SLIDER_COUNT;
static const int MODE_BUTTON_COUNT = 3; static const int MODE_BUTTON_COUNT = 3;
@@ -224,6 +228,10 @@ protected:
static void _bind_methods(); static void _bind_methods();
public: public:
#ifdef TOOLS_ENABLED
void set_editor_settings(Object *p_editor_settings);
#endif
HSlider *get_slider(int idx); HSlider *get_slider(int idx);
Vector<float> get_active_slider_values(); Vector<float> get_active_slider_values();