|
@@ -112,6 +112,21 @@ void GodotSharpEditor::_remove_create_sln_menu_option() {
|
|
|
bottom_panel_btn->show();
|
|
|
}
|
|
|
|
|
|
+void GodotSharpEditor::_show_about_dialog() {
|
|
|
+
|
|
|
+ bool show_on_start = EDITOR_GET("mono/editor/show_info_on_start");
|
|
|
+ about_dialog_checkbox->set_pressed(show_on_start);
|
|
|
+ about_dialog->popup_centered_minsize();
|
|
|
+}
|
|
|
+
|
|
|
+void GodotSharpEditor::_toggle_about_dialog_on_start(bool p_enabled) {
|
|
|
+
|
|
|
+ bool show_on_start = EDITOR_GET("mono/editor/show_info_on_start");
|
|
|
+ if (show_on_start != p_enabled) {
|
|
|
+ EditorSettings::get_singleton()->set_setting("mono/editor/show_info_on_start", p_enabled);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void GodotSharpEditor::_menu_option_pressed(int p_id) {
|
|
|
|
|
|
switch (p_id) {
|
|
@@ -119,15 +134,37 @@ void GodotSharpEditor::_menu_option_pressed(int p_id) {
|
|
|
|
|
|
_create_project_solution();
|
|
|
} break;
|
|
|
+ case MENU_ABOUT_CSHARP: {
|
|
|
+
|
|
|
+ _show_about_dialog();
|
|
|
+ } break;
|
|
|
default:
|
|
|
ERR_FAIL();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void GodotSharpEditor::_notification(int p_notification) {
|
|
|
+
|
|
|
+ switch (p_notification) {
|
|
|
+
|
|
|
+ case NOTIFICATION_READY: {
|
|
|
+
|
|
|
+ bool show_info_dialog = EDITOR_GET("mono/editor/show_info_on_start");
|
|
|
+ if (show_info_dialog) {
|
|
|
+ about_dialog->set_exclusive(true);
|
|
|
+ _show_about_dialog();
|
|
|
+ // Once shown a first time, it can be seen again via the Mono menu - it doesn't have to be exclusive then.
|
|
|
+ about_dialog->set_exclusive(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void GodotSharpEditor::_bind_methods() {
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("_create_project_solution"), &GodotSharpEditor::_create_project_solution);
|
|
|
ClassDB::bind_method(D_METHOD("_remove_create_sln_menu_option"), &GodotSharpEditor::_remove_create_sln_menu_option);
|
|
|
+ ClassDB::bind_method(D_METHOD("_toggle_about_dialog_on_start"), &GodotSharpEditor::_toggle_about_dialog_on_start);
|
|
|
ClassDB::bind_method(D_METHOD("_menu_option_pressed", "id"), &GodotSharpEditor::_menu_option_pressed);
|
|
|
}
|
|
|
|
|
@@ -210,6 +247,55 @@ GodotSharpEditor::GodotSharpEditor(EditorNode *p_editor) {
|
|
|
menu_button->set_text(TTR("Mono"));
|
|
|
menu_popup = menu_button->get_popup();
|
|
|
|
|
|
+ // TODO: Remove or edit this info dialog once Mono support is no longer in alpha
|
|
|
+ {
|
|
|
+ menu_popup->add_item(TTR("About C# support"), MENU_ABOUT_CSHARP);
|
|
|
+ about_dialog = memnew(AcceptDialog);
|
|
|
+ editor->get_gui_base()->add_child(about_dialog);
|
|
|
+ about_dialog->set_title("Important: C# support is not feature-complete");
|
|
|
+
|
|
|
+ // We don't use set_text() as the default AcceptDialog Label doesn't play well with the TextureRect and CheckBox
|
|
|
+ // we'll add. Instead we add containers and a new autowrapped Label inside.
|
|
|
+
|
|
|
+ // Main VBoxContainer (icon + label on top, checkbox at bottom)
|
|
|
+ VBoxContainer *about_vbc = memnew(VBoxContainer);
|
|
|
+ about_dialog->add_child(about_vbc);
|
|
|
+
|
|
|
+ // HBoxContainer for icon + label
|
|
|
+ HBoxContainer *about_hbc = memnew(HBoxContainer);
|
|
|
+ about_vbc->add_child(about_hbc);
|
|
|
+
|
|
|
+ TextureRect *about_icon = memnew(TextureRect);
|
|
|
+ about_hbc->add_child(about_icon);
|
|
|
+ Ref<Texture> about_icon_tex = about_icon->get_icon("NodeWarning", "EditorIcons");
|
|
|
+ about_icon->set_texture(about_icon_tex);
|
|
|
+
|
|
|
+ Label *about_label = memnew(Label);
|
|
|
+ about_hbc->add_child(about_label);
|
|
|
+ about_label->set_custom_minimum_size(Size2(600, 150) * EDSCALE);
|
|
|
+ about_label->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
|
|
+ about_label->set_autowrap(true);
|
|
|
+ String about_text =
|
|
|
+ String("C# support in Godot Engine is a brand new feature and a work in progress.\n") +
|
|
|
+ "It is at the alpha stage and thus not suitable for use in production.\n\n" +
|
|
|
+ "As of Godot 3.0, C# support is not feature-complete and can crash in some situations. " +
|
|
|
+ "Bugs and usability issues will be addressed gradually over 3.0.x and 3.x releases.\n" +
|
|
|
+ "The main missing feature is the ability to export games using C# assemblies - you will therefore be able to develop and run games in the editor, " +
|
|
|
+ "but not to share them as standalone binaries. This feature is of course high on the priority list and should be available in 3.0.1.\n\n" +
|
|
|
+ "If you experience issues with this Mono build, please report them on Godot's issue tracker with details about your system, Mono version, IDE, etc.:\n\n" +
|
|
|
+ " https://github.com/godotengine/godot/issues\n\n" +
|
|
|
+ "Your critical feedback at this stage will play a great role in shaping the C# support in future releases, so thank you!";
|
|
|
+ about_label->set_text(about_text);
|
|
|
+
|
|
|
+ EDITOR_DEF("mono/editor/show_info_on_start", true);
|
|
|
+
|
|
|
+ // CheckBox in main container
|
|
|
+ about_dialog_checkbox = memnew(CheckBox);
|
|
|
+ about_vbc->add_child(about_dialog_checkbox);
|
|
|
+ about_dialog_checkbox->set_text("Show this warning when starting the editor");
|
|
|
+ about_dialog_checkbox->connect("toggled", this, "_toggle_about_dialog_on_start");
|
|
|
+ }
|
|
|
+
|
|
|
String sln_path = GodotSharpDirs::get_project_sln_path();
|
|
|
String csproj_path = GodotSharpDirs::get_project_csproj_path();
|
|
|
|