Merge pull request #29129 from kis3lori/remove-save-theme-for-default

Created a fallback from the "Save Theme" button to "Save Theme As" when a default theme is in use.
This commit is contained in:
Rémi Verschelde 2019-06-13 12:10:05 +02:00 committed by GitHub
commit 8c11f883d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 15 deletions

View File

@ -699,6 +699,10 @@ bool EditorSettings::_save_text_editor_theme(String p_file) {
return false; return false;
} }
bool EditorSettings::_is_default_text_editor_theme(String p_theme_name) {
return p_theme_name == "default" || p_theme_name == "adaptive" || p_theme_name == "custom";
}
static Dictionary _get_builtin_script_templates() { static Dictionary _get_builtin_script_templates() {
Dictionary templates; Dictionary templates;
@ -1291,7 +1295,7 @@ void EditorSettings::list_text_editor_themes() {
d->list_dir_begin(); d->list_dir_begin();
String file = d->get_next(); String file = d->get_next();
while (file != String()) { while (file != String()) {
if (file.get_extension() == "tet" && file.get_basename().to_lower() != "default" && file.get_basename().to_lower() != "adaptive" && file.get_basename().to_lower() != "custom") { if (file.get_extension() == "tet" && !_is_default_text_editor_theme(file.get_basename().to_lower())) {
custom_themes.push_back(file.get_basename()); custom_themes.push_back(file.get_basename());
} }
file = d->get_next(); file = d->get_next();
@ -1308,14 +1312,16 @@ void EditorSettings::list_text_editor_themes() {
} }
void EditorSettings::load_text_editor_theme() { void EditorSettings::load_text_editor_theme() {
if (get("text_editor/theme/color_theme") == "Default" || get("text_editor/theme/color_theme") == "Adaptive" || get("text_editor/theme/color_theme") == "Custom") { String p_file = get("text_editor/theme/color_theme");
if (get("text_editor/theme/color_theme") == "Default") {
if (_is_default_text_editor_theme(p_file.get_file().to_lower())) {
if (p_file == "Default") {
_load_default_text_editor_theme(); _load_default_text_editor_theme();
} }
return; // sorry for "Settings changed" console spam return; // sorry for "Settings changed" console spam
} }
String theme_path = get_text_editor_themes_dir().plus_file((String)get("text_editor/theme/color_theme") + ".tet"); String theme_path = get_text_editor_themes_dir().plus_file(p_file + ".tet");
Ref<ConfigFile> cf = memnew(ConfigFile); Ref<ConfigFile> cf = memnew(ConfigFile);
Error err = cf->load(theme_path); Error err = cf->load(theme_path);
@ -1367,7 +1373,7 @@ bool EditorSettings::save_text_editor_theme() {
String p_file = get("text_editor/theme/color_theme"); String p_file = get("text_editor/theme/color_theme");
if (p_file.get_file().to_lower() == "default" || p_file.get_file().to_lower() == "adaptive" || p_file.get_file().to_lower() == "custom") { if (_is_default_text_editor_theme(p_file.get_file().to_lower())) {
return false; return false;
} }
String theme_path = get_text_editor_themes_dir().plus_file(p_file + ".tet"); String theme_path = get_text_editor_themes_dir().plus_file(p_file + ".tet");
@ -1379,7 +1385,7 @@ bool EditorSettings::save_text_editor_theme_as(String p_file) {
p_file += ".tet"; p_file += ".tet";
} }
if (p_file.get_file().to_lower() == "default.tet" || p_file.get_file().to_lower() == "adaptive.tet" || p_file.get_file().to_lower() == "custom.tet") { if (_is_default_text_editor_theme(p_file.get_file().to_lower().trim_suffix(".tet"))) {
return false; return false;
} }
if (_save_text_editor_theme(p_file)) { if (_save_text_editor_theme(p_file)) {
@ -1397,6 +1403,11 @@ bool EditorSettings::save_text_editor_theme_as(String p_file) {
return false; return false;
} }
bool EditorSettings::is_default_text_editor_theme() {
String p_file = get("text_editor/theme/color_theme");
return _is_default_text_editor_theme(p_file.get_file().to_lower());
}
Vector<String> EditorSettings::get_script_templates(const String &p_extension) { Vector<String> EditorSettings::get_script_templates(const String &p_extension) {
Vector<String> templates; Vector<String> templates;

View File

@ -123,6 +123,7 @@ private:
void _load_defaults(Ref<ConfigFile> p_extra_config = NULL); void _load_defaults(Ref<ConfigFile> p_extra_config = NULL);
void _load_default_text_editor_theme(); void _load_default_text_editor_theme();
bool _save_text_editor_theme(String p_file); bool _save_text_editor_theme(String p_file);
bool _is_default_text_editor_theme(String p_file);
protected: protected:
static void _bind_methods(); static void _bind_methods();
@ -187,6 +188,7 @@ public:
bool import_text_editor_theme(String p_file); bool import_text_editor_theme(String p_file);
bool save_text_editor_theme(); bool save_text_editor_theme();
bool save_text_editor_theme_as(String p_file); bool save_text_editor_theme_as(String p_file);
bool is_default_text_editor_theme();
Vector<String> get_script_templates(const String &p_extension); Vector<String> get_script_templates(const String &p_extension);
String get_editor_layouts_config() const; String get_editor_layouts_config() const;

View File

@ -1311,23 +1311,29 @@ void ScriptEditor::_theme_option(int p_option) {
EditorSettings::get_singleton()->load_text_editor_theme(); EditorSettings::get_singleton()->load_text_editor_theme();
} break; } break;
case THEME_SAVE: { case THEME_SAVE: {
if (!EditorSettings::get_singleton()->save_text_editor_theme()) { if (EditorSettings::get_singleton()->is_default_text_editor_theme()) {
ScriptEditor::_show_save_theme_as_dialog();
} else if (!EditorSettings::get_singleton()->save_text_editor_theme()) {
editor->show_warning(TTR("Error while saving theme"), TTR("Error saving")); editor->show_warning(TTR("Error while saving theme"), TTR("Error saving"));
} }
} break; } break;
case THEME_SAVE_AS: { case THEME_SAVE_AS: {
file_dialog->set_mode(EditorFileDialog::MODE_SAVE_FILE); ScriptEditor::_show_save_theme_as_dialog();
file_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
file_dialog_option = THEME_SAVE_AS;
file_dialog->clear_filters();
file_dialog->add_filter("*.tet");
file_dialog->set_current_path(EditorSettings::get_singleton()->get_text_editor_themes_dir().plus_file(EditorSettings::get_singleton()->get("text_editor/theme/color_theme")));
file_dialog->popup_centered_ratio();
file_dialog->set_title(TTR("Save Theme As..."));
} break; } break;
} }
} }
void ScriptEditor::_show_save_theme_as_dialog() {
file_dialog->set_mode(EditorFileDialog::MODE_SAVE_FILE);
file_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
file_dialog_option = THEME_SAVE_AS;
file_dialog->clear_filters();
file_dialog->add_filter("*.tet");
file_dialog->set_current_path(EditorSettings::get_singleton()->get_text_editor_themes_dir().plus_file(EditorSettings::get_singleton()->get("text_editor/theme/color_theme")));
file_dialog->popup_centered_ratio();
file_dialog->set_title(TTR("Save Theme As..."));
}
void ScriptEditor::_tab_changed(int p_which) { void ScriptEditor::_tab_changed(int p_which) {
ensure_select_current(); ensure_select_current();

View File

@ -264,6 +264,7 @@ class ScriptEditor : public PanelContainer {
void _tab_changed(int p_which); void _tab_changed(int p_which);
void _menu_option(int p_option); void _menu_option(int p_option);
void _theme_option(int p_option); void _theme_option(int p_option);
void _show_save_theme_as_dialog();
Tree *disk_changed_list; Tree *disk_changed_list;
ConfirmationDialog *disk_changed; ConfirmationDialog *disk_changed;