Browse Source

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.
Rémi Verschelde 6 years ago
parent
commit
8c11f883d9

+ 17 - 6
editor/editor_settings.cpp

@@ -699,6 +699,10 @@ bool EditorSettings::_save_text_editor_theme(String p_file) {
 	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() {
 	Dictionary templates;
 
@@ -1291,7 +1295,7 @@ void EditorSettings::list_text_editor_themes() {
 		d->list_dir_begin();
 		String file = d->get_next();
 		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());
 			}
 			file = d->get_next();
@@ -1308,14 +1312,16 @@ void EditorSettings::list_text_editor_themes() {
 }
 
 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") {
-		if (get("text_editor/theme/color_theme") == "Default") {
+	String p_file = get("text_editor/theme/color_theme");
+
+	if (_is_default_text_editor_theme(p_file.get_file().to_lower())) {
+		if (p_file == "Default") {
 			_load_default_text_editor_theme();
 		}
 		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);
 	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");
 
-	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;
 	}
 	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";
 	}
 
-	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;
 	}
 	if (_save_text_editor_theme(p_file)) {
@@ -1397,6 +1403,11 @@ bool EditorSettings::save_text_editor_theme_as(String p_file) {
 	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> templates;

+ 2 - 0
editor/editor_settings.h

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

+ 15 - 9
editor/plugins/script_editor_plugin.cpp

@@ -1311,23 +1311,29 @@ void ScriptEditor::_theme_option(int p_option) {
 			EditorSettings::get_singleton()->load_text_editor_theme();
 		} break;
 		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"));
 			}
 		} break;
 		case THEME_SAVE_AS: {
-			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..."));
+			ScriptEditor::_show_save_theme_as_dialog();
 		} 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) {
 
 	ensure_select_current();

+ 1 - 0
editor/plugins/script_editor_plugin.h

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