1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-08 12:40:44 +00:00

Update theme property respectively

This commit is contained in:
volzhs
2017-09-26 20:08:25 +09:00
parent 59c3f61d57
commit 3e0d18b9c0
4 changed files with 48 additions and 20 deletions

View File

@@ -54,7 +54,7 @@ EditorSettings *EditorSettings::get_singleton() {
return singleton.ptr(); return singleton.ptr();
} }
bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) { bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool p_emit_signal) {
_THREAD_SAFE_METHOD_ _THREAD_SAFE_METHOD_
@@ -90,7 +90,9 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) {
} }
} }
if (p_emit_signal) {
emit_signal("settings_changed"); emit_signal("settings_changed");
}
return true; return true;
} }

View File

@@ -85,7 +85,7 @@ private:
HashMap<String, VariantContainer> props; HashMap<String, VariantContainer> props;
String resource_path; String resource_path;
bool _set(const StringName &p_name, const Variant &p_value); bool _set(const StringName &p_name, const Variant &p_value, bool p_emit_signal = true);
bool _get(const StringName &p_name, Variant &r_ret) const; bool _get(const StringName &p_name, Variant &r_ret) const;
void _get_property_list(List<PropertyInfo> *p_list) const; void _get_property_list(List<PropertyInfo> *p_list) const;
@@ -126,6 +126,9 @@ public:
NOTIFICATION_EDITOR_SETTINGS_CHANGED = 10000 NOTIFICATION_EDITOR_SETTINGS_CHANGED = 10000
}; };
void set_manually(const StringName &p_name, const Variant &p_value, bool p_emit_signal = false) {
_set(p_name, p_value, p_emit_signal);
}
bool has(String p_var) const; bool has(String p_var) const;
static EditorSettings *get_singleton(); static EditorSettings *get_singleton();
void erase(String p_var); void erase(String p_var);

View File

@@ -227,8 +227,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
const float default_contrast = 0.25; const float default_contrast = 0.25;
//Theme settings //Theme settings
Color accent_color = EDITOR_DEF("interface/theme/accent_color", Color::html("#000000")); Color accent_color = EDITOR_DEF("interface/theme/accent_color", Color::html("#699ce8"));
Color base_color = EDITOR_DEF("interface/theme/base_color", Color::html("#000000")); Color base_color = EDITOR_DEF("interface/theme/base_color", Color::html("#323b4f"));
float contrast = EDITOR_DEF("interface/theme/contrast", default_contrast); float contrast = EDITOR_DEF("interface/theme/contrast", default_contrast);
int preset = EDITOR_DEF("interface/theme/preset", 0); int preset = EDITOR_DEF("interface/theme/preset", 0);
@@ -240,33 +240,54 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
Color script_bg_color = EDITOR_DEF("text_editor/highlighting/background_color", Color(0, 0, 0, 0)); Color script_bg_color = EDITOR_DEF("text_editor/highlighting/background_color", Color(0, 0, 0, 0));
Color preset_accent_color;
Color preset_base_color;
float preset_contrast;
switch (preset) { switch (preset) {
case 0: { // Default case 0: { // Default
accent_color = Color::html("#699ce8"); preset_accent_color = Color::html("#699ce8");
base_color = Color::html("#323b4f"); preset_base_color = Color::html("#323b4f");
contrast = default_contrast; preset_contrast = default_contrast;
} break; } break;
case 1: { // Grey case 1: { // Grey
accent_color = Color::html("#3e3e3e"); preset_accent_color = Color::html("#3e3e3e");
base_color = Color::html("#3d3d3d"); preset_base_color = Color::html("#3d3d3d");
contrast = 0.2; preset_contrast = 0.2;
} break; } break;
case 2: { // Godot 2 case 2: { // Godot 2
accent_color = Color::html("#86ace2"); preset_accent_color = Color::html("#86ace2");
base_color = Color::html("#3C3A44"); preset_base_color = Color::html("#3C3A44");
contrast = 0.25; preset_contrast = 0.25;
} break; } break;
case 3: { // Arc case 3: { // Arc
accent_color = Color::html("#5294e2"); preset_accent_color = Color::html("#5294e2");
base_color = Color::html("#383c4a"); preset_base_color = Color::html("#383c4a");
contrast = 0.25; preset_contrast = 0.25;
} break; } break;
case 4: { // Light case 4: { // Light
accent_color = Color::html("#2070ff"); preset_accent_color = Color::html("#2070ff");
base_color = Color::html("#ffffff"); preset_base_color = Color::html("#ffffff");
contrast = 0.08; preset_contrast = 0.08;
} break; } break;
default: { // Custom
accent_color = EDITOR_DEF("interface/theme/accent_color", Color::html("#699ce8"));
base_color = EDITOR_DEF("interface/theme/base_color", Color::html("#323b4f"));
contrast = EDITOR_DEF("interface/theme/contrast", default_contrast);
} }
}
if (preset != 5) {
accent_color = preset_accent_color;
base_color = preset_base_color;
contrast = preset_contrast;
EditorSettings::get_singleton()->set_initial_value("interface/theme/accent_color", accent_color);
EditorSettings::get_singleton()->set_initial_value("interface/theme/base_color", base_color);
EditorSettings::get_singleton()->set_initial_value("interface/theme/contrast", contrast);
}
EditorSettings::get_singleton()->set_manually("interface/theme/preset", preset);
EditorSettings::get_singleton()->set_manually("interface/theme/accent_color", accent_color);
EditorSettings::get_singleton()->set_manually("interface/theme/base_color", base_color);
EditorSettings::get_singleton()->set_manually("interface/theme/contrast", contrast);
//Colors //Colors
int AUTO_COLOR = 0; int AUTO_COLOR = 0;

View File

@@ -58,6 +58,8 @@ void EditorSettingsDialog::_settings_property_edited(const String &p_name) {
// color theme is changed // color theme is changed
if (full_name == "text_editor/theme/color_theme") { if (full_name == "text_editor/theme/color_theme") {
property_editor->get_property_editor()->update_tree(); property_editor->get_property_editor()->update_tree();
} else if (full_name == "interface/theme/accent_color" || full_name == "interface/theme/base_color" || full_name == "interface/theme/contrast") {
EditorSettings::get_singleton()->set_manually("interface/theme/preset", 5); // set preset to Custom
} }
} }