Browse Source

Merge pull request #32137 from Calinou/vcs-error-if-none-available

Display an error message if no version control systems are available
Rémi Verschelde 6 years ago
parent
commit
ae3c685042
1 changed files with 13 additions and 23 deletions
  1. 13 23
      editor/plugins/version_control_editor_plugin.cpp

+ 13 - 23
editor/plugins/version_control_editor_plugin.cpp

@@ -59,14 +59,6 @@ void VersionControlEditorPlugin::_selected_a_vcs(int p_id) {
 
 
 	List<StringName> available_addons = get_available_vcs_names();
 	List<StringName> available_addons = get_available_vcs_names();
 	const StringName selected_vcs = set_up_choice->get_item_text(p_id);
 	const StringName selected_vcs = set_up_choice->get_item_text(p_id);
-
-	if (available_addons.find(selected_vcs) != NULL) {
-
-		set_up_init_button->set_disabled(false);
-	} else {
-
-		set_up_init_button->set_disabled(true);
-	}
 }
 }
 
 
 void VersionControlEditorPlugin::_populate_available_vcs_names() {
 void VersionControlEditorPlugin::_populate_available_vcs_names() {
@@ -75,9 +67,6 @@ void VersionControlEditorPlugin::_populate_available_vcs_names() {
 
 
 	if (!called) {
 	if (!called) {
 
 
-		set_up_choice->add_item("Select an available VCS");
-
-		fetch_available_vcs_addon_names();
 		List<StringName> available_addons = get_available_vcs_names();
 		List<StringName> available_addons = get_available_vcs_names();
 		for (int i = 0; i < available_addons.size(); i++) {
 		for (int i = 0; i < available_addons.size(); i++) {
 
 
@@ -95,19 +84,22 @@ VersionControlEditorPlugin *VersionControlEditorPlugin::get_singleton() {
 
 
 void VersionControlEditorPlugin::popup_vcs_set_up_dialog(const Control *p_gui_base) {
 void VersionControlEditorPlugin::popup_vcs_set_up_dialog(const Control *p_gui_base) {
 
 
-	Size2 popup_size = Size2(400, 100);
-	Size2 window_size = p_gui_base->get_viewport_rect().size;
-	popup_size.x = MIN(window_size.x * 0.5, popup_size.x);
-	popup_size.y = MIN(window_size.y * 0.5, popup_size.y);
+	fetch_available_vcs_addon_names();
+	List<StringName> available_addons = get_available_vcs_names();
+	if (available_addons.size() >= 1) {
 
 
-	if (get_is_vcs_intialized()) {
+		Size2 popup_size = Size2(400, 100);
+		Size2 window_size = p_gui_base->get_viewport_rect().size;
+		popup_size.x = MIN(window_size.x * 0.5, popup_size.x);
+		popup_size.y = MIN(window_size.y * 0.5, popup_size.y);
 
 
-		set_up_init_button->set_disabled(true);
-	}
+		_populate_available_vcs_names();
 
 
-	_populate_available_vcs_names();
+		set_up_dialog->popup_centered_clamped(popup_size * EDSCALE);
+	} else {
 
 
-	set_up_dialog->popup_centered_clamped(popup_size * EDSCALE);
+		EditorNode::get_singleton()->show_warning(TTR("No VCS addons are available."), TTR("Error"));
+	}
 }
 }
 
 
 void VersionControlEditorPlugin::_initialize_vcs() {
 void VersionControlEditorPlugin::_initialize_vcs() {
@@ -120,7 +112,7 @@ void VersionControlEditorPlugin::_initialize_vcs() {
 		return;
 		return;
 	}
 	}
 
 
-	int id = set_up_choice->get_selected_id();
+	const int id = set_up_choice->get_selected_id();
 	String selected_addon = set_up_choice->get_item_text(id);
 	String selected_addon = set_up_choice->get_item_text(id);
 
 
 	String path = ScriptServer::get_global_class_path(selected_addon);
 	String path = ScriptServer::get_global_class_path(selected_addon);
@@ -439,7 +431,6 @@ VersionControlEditorPlugin::VersionControlEditorPlugin() {
 	version_control_actions->add_child(set_up_dialog);
 	version_control_actions->add_child(set_up_dialog);
 
 
 	set_up_ok_button = set_up_dialog->get_ok();
 	set_up_ok_button = set_up_dialog->get_ok();
-	set_up_ok_button->set_disabled(false);
 	set_up_ok_button->set_text(TTR("Close"));
 	set_up_ok_button->set_text(TTR("Close"));
 
 
 	set_up_vbc = memnew(VBoxContainer);
 	set_up_vbc = memnew(VBoxContainer);
@@ -466,7 +457,6 @@ VersionControlEditorPlugin::VersionControlEditorPlugin() {
 	set_up_init_settings = NULL;
 	set_up_init_settings = NULL;
 
 
 	set_up_init_button = memnew(Button);
 	set_up_init_button = memnew(Button);
-	set_up_init_button->set_disabled(true);
 	set_up_init_button->set_text(TTR("Initialize"));
 	set_up_init_button->set_text(TTR("Initialize"));
 	set_up_init_button->connect("pressed", this, "_initialize_vcs");
 	set_up_init_button->connect("pressed", this, "_initialize_vcs");
 	set_up_vbc->add_child(set_up_init_button);
 	set_up_vbc->add_child(set_up_init_button);