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();
}
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_
@ -90,7 +90,9 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) {
}
}
emit_signal("settings_changed");
if (p_emit_signal) {
emit_signal("settings_changed");
}
return true;
}

View File

@ -85,7 +85,7 @@ private:
HashMap<String, VariantContainer> props;
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;
void _get_property_list(List<PropertyInfo> *p_list) const;
@ -126,6 +126,9 @@ public:
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;
static EditorSettings *get_singleton();
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;
//Theme settings
Color accent_color = EDITOR_DEF("interface/theme/accent_color", Color::html("#000000"));
Color base_color = EDITOR_DEF("interface/theme/base_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("#323b4f"));
float contrast = EDITOR_DEF("interface/theme/contrast", default_contrast);
int preset = EDITOR_DEF("interface/theme/preset", 0);
@ -240,34 +240,55 @@ 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 preset_accent_color;
Color preset_base_color;
float preset_contrast;
switch (preset) {
case 0: { // Default
accent_color = Color::html("#699ce8");
base_color = Color::html("#323b4f");
contrast = default_contrast;
preset_accent_color = Color::html("#699ce8");
preset_base_color = Color::html("#323b4f");
preset_contrast = default_contrast;
} break;
case 1: { // Grey
accent_color = Color::html("#3e3e3e");
base_color = Color::html("#3d3d3d");
contrast = 0.2;
preset_accent_color = Color::html("#3e3e3e");
preset_base_color = Color::html("#3d3d3d");
preset_contrast = 0.2;
} break;
case 2: { // Godot 2
accent_color = Color::html("#86ace2");
base_color = Color::html("#3C3A44");
contrast = 0.25;
preset_accent_color = Color::html("#86ace2");
preset_base_color = Color::html("#3C3A44");
preset_contrast = 0.25;
} break;
case 3: { // Arc
accent_color = Color::html("#5294e2");
base_color = Color::html("#383c4a");
contrast = 0.25;
preset_accent_color = Color::html("#5294e2");
preset_base_color = Color::html("#383c4a");
preset_contrast = 0.25;
} break;
case 4: { // Light
accent_color = Color::html("#2070ff");
base_color = Color::html("#ffffff");
contrast = 0.08;
preset_accent_color = Color::html("#2070ff");
preset_base_color = Color::html("#ffffff");
preset_contrast = 0.08;
} 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
int AUTO_COLOR = 0;
int LIGHT_COLOR = 2;

View File

@ -58,6 +58,8 @@ void EditorSettingsDialog::_settings_property_edited(const String &p_name) {
// color theme is changed
if (full_name == "text_editor/theme/color_theme") {
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
}
}