GroupDialog::GroupDialog() { scene_tree = SceneTree::get_singleton(); VBoxContainer *vbc = memnew(VBoxContainer); add_child(vbc); HBoxContainer *hbc = memnew(HBoxContainer); vbc->add_child(hbc); hbc->set_v_size_flags(SIZE_EXPAND_FILL); VBoxContainer *vbc_left = memnew(VBoxContainer); hbc->add_child(vbc_left); vbc_left->set_h_size_flags(SIZE_EXPAND_FILL); Label *group_title = memnew(Label); group_title->set_text(TTR("Groups")); vbc_left->add_child(group_title); groups = memnew(Tree); vbc_left->add_child(groups); groups->set_hide_root(true); groups->set_v_size_flags(SIZE_EXPAND_FILL); groups->set_select_mode(Tree::SELECT_SINGLE); groups->set_allow_reselect(true); groups->set_allow_rmb_select(true); groups->connect("item_selected", this, "_group_selected"); groups->connect("button_pressed", this, "_delete_group_pressed"); groups->connect("item_edited", this, "_group_renamed"); HBoxContainer *chbc = memnew(HBoxContainer); vbc_left->add_child(chbc); chbc->set_h_size_flags(SIZE_EXPAND_FILL); add_group_text = memnew(LineEdit); chbc->add_child(add_group_text); add_group_text->set_h_size_flags(SIZE_EXPAND_FILL); Button *add_group_button = memnew(Button); add_group_button->set_text("Add"); chbc->add_child(add_group_button); add_group_button->connect("pressed", this, "_add_group_pressed"); VBoxContainer *vbc_add = memnew(VBoxContainer); hbc->add_child(vbc_add); vbc_add->set_h_size_flags(SIZE_EXPAND_FILL); Label *out_of_group_title = memnew(Label); out_of_group_title->set_text(TTR("Nodes not in Group")); vbc_add->add_child(out_of_group_title); nodes_to_add = memnew(Tree); vbc_add->add_child(nodes_to_add); nodes_to_add->set_hide_root(true); nodes_to_add->set_hide_folding(true); nodes_to_add->set_v_size_flags(SIZE_EXPAND_FILL); nodes_to_add->set_select_mode(Tree::SELECT_MULTI); nodes_to_add->connect("item_selected", this, "_nodes_to_add_selected"); HBoxContainer *add_filter_hbc = memnew(HBoxContainer); add_filter_hbc->add_constant_override("separate", 0); vbc_add->add_child(add_filter_hbc); add_filter = memnew(LineEdit); add_filter->set_h_size_flags(SIZE_EXPAND_FILL); add_filter->set_placeholder(TTR("Filter nodes")); add_filter_hbc->add_child(add_filter); add_filter->connect("text_changed", this, "_add_filter_changed"); VBoxContainer *vbc_buttons = memnew(VBoxContainer); hbc->add_child(vbc_buttons); vbc_buttons->set_h_size_flags(SIZE_SHRINK_CENTER); vbc_buttons->set_v_size_flags(SIZE_SHRINK_CENTER); add_button = memnew(ToolButton); add_button->set_text(TTR("Add")); add_button->connect("pressed", this, "_add_pressed"); vbc_buttons->add_child(add_button); vbc_buttons->add_spacer(); vbc_buttons->add_spacer(); vbc_buttons->add_spacer(); remove_button = memnew(ToolButton); remove_button->set_text(TTR("Remove")); remove_button->connect("pressed", this, "_removed_pressed"); vbc_buttons->add_child(remove_button); VBoxContainer *vbc_remove = memnew(VBoxContainer); hbc->add_child(vbc_remove); vbc_remove->set_h_size_flags(SIZE_EXPAND_FILL); Label *in_group_title = memnew(Label); in_group_title->set_text(TTR("Nodes in Group")); vbc_remove->add_child(in_group_title); nodes_to_remove = memnew(Tree); vbc_remove->add_child(nodes_to_remove); nodes_to_remove->set_v_size_flags(SIZE_EXPAND_FILL); nodes_to_remove->set_hide_root(true); nodes_to_remove->set_hide_folding(true); nodes_to_remove->set_select_mode(Tree::SELECT_MULTI); nodes_to_remove->connect("item_selected", this, "_node_to_remove_selected"); HBoxContainer *remove_filter_hbc = memnew(HBoxContainer); remove_filter_hbc->add_constant_override("separate", 0); vbc_remove->add_child(remove_filter_hbc); remove_filter = memnew(LineEdit); remove_filter->set_h_size_flags(SIZE_EXPAND_FILL); remove_filter->set_placeholder(TTR("Filter nodes")); remove_filter_hbc->add_child(remove_filter); remove_filter->connect("text_changed", this, "_remove_filter_changed"); set_title("Group Editor"); get_cancel()->hide(); set_as_toplevel(true); error = memnew(ConfirmationDialog); add_child(error); error->get_ok()->set_text(TTR("Close")); }
EditorFontImportDialog(EditorFontImportPlugin *p_plugin) { plugin=p_plugin; VBoxContainer *vbc = memnew( VBoxContainer ); add_child(vbc); set_child_rect(vbc); HBoxContainer *hbc = memnew( HBoxContainer); vbc->add_child(hbc); VBoxContainer *vbl = memnew( VBoxContainer ); hbc->add_child(vbl); hbc->set_v_size_flags(SIZE_EXPAND_FILL); vbl->set_h_size_flags(SIZE_EXPAND_FILL); VBoxContainer *vbr = memnew( VBoxContainer ); hbc->add_child(vbr); vbr->set_h_size_flags(SIZE_EXPAND_FILL); source = memnew( LineEditFileChooser ); source->get_file_dialog()->set_access(FileDialog::ACCESS_FILESYSTEM); source->get_file_dialog()->set_mode(FileDialog::MODE_OPEN_FILE); source->get_file_dialog()->add_filter("*.ttf;TrueType"); source->get_file_dialog()->add_filter("*.otf;OpenType"); source->get_line_edit()->connect("text_entered",this,"_src_changed"); vbl->add_margin_child("Source Font:",source); font_size = memnew( SpinBox ); vbl->add_margin_child("Source Font Size:",font_size); font_size->set_min(3); font_size->set_max(256); font_size->set_val(16); font_size->connect("value_changed",this,"_font_size_changed"); dest = memnew( LineEditFileChooser ); // List<String> fl; Ref<Font> font= memnew(Font); dest->get_file_dialog()->add_filter("*.fnt ; Font" ); //ResourceSaver::get_recognized_extensions(font,&fl); //for(List<String>::Element *E=fl.front();E;E=E->next()) { // dest->get_file_dialog()->add_filter("*."+E->get()); //} vbl->add_margin_child("Dest Resource:",dest); HBoxContainer *testhb = memnew( HBoxContainer ); test_string = memnew( LineEdit ); test_string->set_text("The quick brown fox jumps over the lazy dog."); test_string->set_h_size_flags(SIZE_EXPAND_FILL); test_string->set_stretch_ratio(5); testhb->add_child(test_string); test_color = memnew( ColorPickerButton ); test_color->set_color(get_color("font_color","Label")); test_color->set_h_size_flags(SIZE_EXPAND_FILL); test_color->set_stretch_ratio(1); test_color->connect("color_changed",this,"_update_text3"); testhb->add_child(test_color); vbl->add_spacer(); vbl->add_margin_child("Test: ",testhb); HBoxContainer *upd_hb = memnew( HBoxContainer ); // vbl->add_child(upd_hb); upd_hb->add_spacer(); Button *update = memnew( Button); upd_hb->add_child(update); update->set_text("Update"); update->connect("pressed",this,"_update"); options = memnew( _EditorFontImportOptions ); prop_edit = memnew( PropertyEditor() ); vbr->add_margin_child("Options:",prop_edit,true); options->connect("changed",this,"_prop_changed"); prop_edit->hide_top_label(); Panel *panel = memnew( Panel ); vbc->add_child(panel); test_label = memnew( Label ); test_label->set_autowrap(true); panel->add_child(test_label); test_label->set_area_as_parent_rect(); panel->set_v_size_flags(SIZE_EXPAND_FILL); test_string->connect("text_changed",this,"_update_text2"); set_title("Font Import"); timer = memnew( Timer ); add_child(timer); timer->connect("timeout",this,"_update"); timer->set_wait_time(0.4); timer->set_one_shot(true); get_ok()->connect("pressed", this,"_import"); get_ok()->set_text("Import"); error_dialog = memnew ( ConfirmationDialog ); add_child(error_dialog); error_dialog->get_ok()->set_text("Accept"); set_hide_on_ok(false); }
ProjectExportDialog::ProjectExportDialog() { set_title(TTR("Export")); set_resizable(true); VBoxContainer *main_vb = memnew(VBoxContainer); add_child(main_vb); HBoxContainer *hbox = memnew(HBoxContainer); main_vb->add_child(hbox); hbox->set_v_size_flags(SIZE_EXPAND_FILL); VBoxContainer *preset_vb = memnew(VBoxContainer); preset_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbox->add_child(preset_vb); HBoxContainer *preset_hb = memnew(HBoxContainer); preset_hb->add_child(memnew(Label(TTR("Presets")))); preset_hb->add_spacer(); preset_vb->add_child(preset_hb); add_preset = memnew(MenuButton); add_preset->set_text(TTR("Add...")); add_preset->get_popup()->connect("index_pressed", this, "_add_preset"); preset_hb->add_child(add_preset); MarginContainer *mc = memnew(MarginContainer); preset_vb->add_child(mc); mc->set_v_size_flags(SIZE_EXPAND_FILL); presets = memnew(ItemList); presets->set_drag_forwarding(this); mc->add_child(presets); presets->connect("item_selected", this, "_edit_preset"); duplicate_preset = memnew(ToolButton); preset_hb->add_child(duplicate_preset); duplicate_preset->connect("pressed", this, "_duplicate_preset"); delete_preset = memnew(ToolButton); preset_hb->add_child(delete_preset); delete_preset->connect("pressed", this, "_delete_preset"); VBoxContainer *settings_vb = memnew(VBoxContainer); settings_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbox->add_child(settings_vb); name = memnew(LineEdit); settings_vb->add_margin_child(TTR("Name:"), name); name->connect("text_changed", this, "_name_changed"); runnable = memnew(CheckButton); runnable->set_text(TTR("Runnable")); runnable->connect("pressed", this, "_runnable_pressed"); settings_vb->add_child(runnable); sections = memnew(TabContainer); sections->set_tab_align(TabContainer::ALIGN_LEFT); settings_vb->add_child(sections); sections->set_v_size_flags(SIZE_EXPAND_FILL); parameters = memnew(EditorInspector); sections->add_child(parameters); parameters->set_name(TTR("Options")); parameters->set_v_size_flags(SIZE_EXPAND_FILL); parameters->connect("property_edited", this, "_update_parameters"); VBoxContainer *resources_vb = memnew(VBoxContainer); sections->add_child(resources_vb); resources_vb->set_name(TTR("Resources")); export_filter = memnew(OptionButton); export_filter->add_item(TTR("Export all resources in the project")); export_filter->add_item(TTR("Export selected scenes (and dependencies)")); export_filter->add_item(TTR("Export selected resources (and dependencies)")); resources_vb->add_margin_child(TTR("Export Mode:"), export_filter); export_filter->connect("item_selected", this, "_export_type_changed"); include_label = memnew(Label); include_label->set_text(TTR("Resources to export:")); resources_vb->add_child(include_label); include_margin = memnew(MarginContainer); include_margin->set_v_size_flags(SIZE_EXPAND_FILL); resources_vb->add_child(include_margin); include_files = memnew(Tree); include_margin->add_child(include_files); include_files->connect("item_edited", this, "_tree_changed"); include_filters = memnew(LineEdit); resources_vb->add_margin_child(TTR("Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"), include_filters); include_filters->connect("text_changed", this, "_filter_changed"); exclude_filters = memnew(LineEdit); resources_vb->add_margin_child(TTR("Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"), exclude_filters); exclude_filters->connect("text_changed", this, "_filter_changed"); VBoxContainer *patch_vb = memnew(VBoxContainer); sections->add_child(patch_vb); patch_vb->set_name(TTR("Patches")); patches = memnew(Tree); patch_vb->add_child(patches); patches->set_v_size_flags(SIZE_EXPAND_FILL); patches->set_hide_root(true); patches->connect("button_pressed", this, "_patch_button_pressed"); patches->connect("item_edited", this, "_patch_edited"); patches->set_drag_forwarding(this); patches->set_edit_checkbox_cell_only_when_checkbox_is_pressed(true); HBoxContainer *patches_hb = memnew(HBoxContainer); patch_vb->add_child(patches_hb); patches_hb->add_spacer(); patch_export = memnew(Button); patch_export->set_text(TTR("Make Patch")); patches_hb->add_child(patch_export); patches_hb->add_spacer(); patch_dialog = memnew(FileDialog); patch_dialog->add_filter("*.pck ; Pack File"); patch_dialog->set_mode(FileDialog::MODE_OPEN_FILE); patch_dialog->connect("file_selected", this, "_patch_selected"); add_child(patch_dialog); patch_erase = memnew(ConfirmationDialog); patch_erase->get_ok()->set_text(TTR("Delete")); patch_erase->connect("confirmed", this, "_patch_deleted"); add_child(patch_erase); VBoxContainer *feature_vb = memnew(VBoxContainer); feature_vb->set_name(TTR("Features")); custom_features = memnew(LineEdit); custom_features->connect("text_changed", this, "_custom_features_changed"); feature_vb->add_margin_child(TTR("Custom (comma-separated):"), custom_features); Panel *features_panel = memnew(Panel); custom_feature_display = memnew(RichTextLabel); features_panel->add_child(custom_feature_display); custom_feature_display->set_anchors_and_margins_preset(Control::PRESET_WIDE, Control::PRESET_MODE_MINSIZE, 10 * EDSCALE); custom_feature_display->set_v_size_flags(SIZE_EXPAND_FILL); feature_vb->add_margin_child(TTR("Feature List:"), features_panel, true); sections->add_child(feature_vb); sections->connect("tab_changed", this, "_tab_changed"); //disable by default name->set_editable(false); runnable->set_disabled(true); duplicate_preset->set_disabled(true); delete_preset->set_disabled(true); sections->hide(); parameters->edit(NULL); delete_confirm = memnew(ConfirmationDialog); add_child(delete_confirm); delete_confirm->get_ok()->set_text(TTR("Delete")); delete_confirm->connect("confirmed", this, "_delete_preset_confirm"); updating = false; get_cancel()->set_text(TTR("Close")); get_ok()->set_text(TTR("Export PCK/Zip")); export_button = add_button(TTR("Export Project"), !OS::get_singleton()->get_swap_ok_cancel(), "export"); export_button->connect("pressed", this, "_export_project"); // Disable initially before we select a valid preset export_button->set_disabled(true); export_pck_zip = memnew(FileDialog); export_pck_zip->add_filter("*.zip ; ZIP File"); export_pck_zip->add_filter("*.pck ; Godot Game Pack"); export_pck_zip->set_access(FileDialog::ACCESS_FILESYSTEM); export_pck_zip->set_mode(FileDialog::MODE_SAVE_FILE); add_child(export_pck_zip); export_pck_zip->connect("file_selected", this, "_export_pck_zip_selected"); export_error = memnew(Label); main_vb->add_child(export_error); export_error->hide(); export_error->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor")); export_templates_error = memnew(HBoxContainer); main_vb->add_child(export_templates_error); export_templates_error->hide(); Label *export_error2 = memnew(Label); export_templates_error->add_child(export_error2); export_error2->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor")); export_error2->set_text(" - " + TTR("Export templates for this platform are missing:") + " "); error_dialog = memnew(AcceptDialog); error_dialog->set_title("Error"); error_dialog->set_text(TTR("Export templates for this platform are missing/corrupted:") + " "); main_vb->add_child(error_dialog); error_dialog->hide(); LinkButton *download_templates = memnew(LinkButton); download_templates->set_text(TTR("Manage Export Templates")); download_templates->set_v_size_flags(SIZE_SHRINK_CENTER); export_templates_error->add_child(download_templates); download_templates->connect("pressed", this, "_open_export_template_manager"); export_project = memnew(FileDialog); export_project->set_access(FileDialog::ACCESS_FILESYSTEM); add_child(export_project); export_project->connect("file_selected", this, "_export_project_to_path"); export_project->get_line_edit()->connect("text_changed", this, "_validate_export_path"); export_debug = memnew(CheckButton); export_debug->set_text(TTR("Export With Debug")); export_debug->set_pressed(true); export_project->get_vbox()->add_child(export_debug); export_pck_zip_debug = memnew(CheckButton); export_pck_zip_debug->set_text(TTR("Export With Debug")); export_pck_zip_debug->set_pressed(true); export_pck_zip->get_vbox()->add_child(export_pck_zip_debug); set_hide_on_ok(false); editor_icons = "EditorIcons"; default_filename = EditorSettings::get_singleton()->get_project_metadata("export_options", "default_filename", ""); // If no default set, use project name if (default_filename == "") { // If no project name defined, use a sane default default_filename = ProjectSettings::get_singleton()->get("application/config/name"); if (default_filename == "") { default_filename = "UnnamedProject"; } } }
ProjectExportDialog::ProjectExportDialog() { set_title(TTR("Export")); set_resizable(true); VBoxContainer *main_vb = memnew(VBoxContainer); add_child(main_vb); HBoxContainer *hbox = memnew(HBoxContainer); main_vb->add_child(hbox); hbox->set_v_size_flags(SIZE_EXPAND_FILL); VBoxContainer *preset_vb = memnew(VBoxContainer); preset_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbox->add_child(preset_vb); HBoxContainer *preset_hb = memnew(HBoxContainer); preset_hb->add_child(memnew(Label(TTR("Presets")))); preset_hb->add_spacer(); preset_vb->add_child(preset_hb); add_preset = memnew(MenuButton); add_preset->set_text(TTR("Add..")); add_preset->get_popup()->connect("index_pressed", this, "_add_preset"); preset_hb->add_child(add_preset); MarginContainer *mc = memnew(MarginContainer); preset_vb->add_child(mc); mc->set_v_size_flags(SIZE_EXPAND_FILL); presets = memnew(ItemList); presets->set_drag_forwarding(this); mc->add_child(presets); presets->connect("item_selected", this, "_edit_preset"); delete_preset = memnew(ToolButton); preset_hb->add_child(delete_preset); delete_preset->connect("pressed", this, "_delete_preset"); VBoxContainer *settings_vb = memnew(VBoxContainer); settings_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbox->add_child(settings_vb); name = memnew(LineEdit); settings_vb->add_margin_child(TTR("Name:"), name); name->connect("text_changed", this, "_name_changed"); runnable = memnew(CheckButton); runnable->set_text(TTR("Runnable")); runnable->connect("pressed", this, "_runnable_pressed"); settings_vb->add_child(runnable); sections = memnew(TabContainer); sections->set_tab_align(TabContainer::ALIGN_LEFT); settings_vb->add_child(sections); sections->set_v_size_flags(SIZE_EXPAND_FILL); parameters = memnew(PropertyEditor); sections->add_child(parameters); parameters->set_name(TTR("Options")); parameters->hide_top_label(); parameters->set_v_size_flags(SIZE_EXPAND_FILL); parameters->set_hide_script(true); parameters->connect("property_edited", this, "_update_parameters"); VBoxContainer *resources_vb = memnew(VBoxContainer); sections->add_child(resources_vb); resources_vb->set_name(TTR("Resources")); export_filter = memnew(OptionButton); export_filter->add_item(TTR("Export all resources in the project")); export_filter->add_item(TTR("Export selected scenes (and dependencies)")); export_filter->add_item(TTR("Export selected resources (and dependencies)")); resources_vb->add_margin_child(TTR("Export Mode:"), export_filter); export_filter->connect("item_selected", this, "_export_type_changed"); include_label = memnew(Label); include_label->set_text(TTR("Resources to export:")); resources_vb->add_child(include_label); include_margin = memnew(MarginContainer); include_margin->set_v_size_flags(SIZE_EXPAND_FILL); resources_vb->add_child(include_margin); include_files = memnew(Tree); include_margin->add_child(include_files); include_files->connect("item_edited", this, "_tree_changed"); include_filters = memnew(LineEdit); resources_vb->add_margin_child(TTR("Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"), include_filters); include_filters->connect("text_changed", this, "_filter_changed"); exclude_filters = memnew(LineEdit); resources_vb->add_margin_child(TTR("Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"), exclude_filters); exclude_filters->connect("text_changed", this, "_filter_changed"); VBoxContainer *patch_vb = memnew(VBoxContainer); sections->add_child(patch_vb); patch_vb->set_name(TTR("Patches")); patches = memnew(Tree); patch_vb->add_child(patches); patches->set_v_size_flags(SIZE_EXPAND_FILL); patches->set_hide_root(true); patches->connect("button_pressed", this, "_patch_button_pressed"); patches->connect("item_edited", this, "_patch_edited"); patches->set_drag_forwarding(this); patches->set_edit_checkbox_cell_only_when_checkbox_is_pressed(true); HBoxContainer *patches_hb = memnew(HBoxContainer); patch_vb->add_child(patches_hb); patches_hb->add_spacer(); patch_export = memnew(Button); patch_export->set_text(TTR("Make Patch")); patches_hb->add_child(patch_export); patches_hb->add_spacer(); patch_dialog = memnew(FileDialog); patch_dialog->add_filter("*.pck ; Pack File"); patch_dialog->set_mode(FileDialog::MODE_OPEN_FILE); patch_dialog->connect("file_selected", this, "_patch_selected"); add_child(patch_dialog); patch_erase = memnew(ConfirmationDialog); patch_erase->get_ok()->set_text(TTR("Delete")); patch_erase->connect("confirmed", this, "_patch_deleted"); add_child(patch_erase); //disable by default name->set_editable(false); runnable->set_disabled(true); delete_preset->set_disabled(true); sections->hide(); parameters->edit(NULL); delete_confirm = memnew(ConfirmationDialog); add_child(delete_confirm); delete_confirm->get_ok()->set_text(TTR("Delete")); delete_confirm->connect("confirmed", this, "_delete_preset_confirm"); updating = false; get_ok()->set_text("Export PCK/Zip"); export_button = add_button("Export Project", !OS::get_singleton()->get_swap_ok_cancel(), "export"); export_pck_zip = memnew(FileDialog); export_pck_zip->add_filter("*.zip ; ZIP File"); export_pck_zip->add_filter("*.pck ; Godot Game Pack"); export_pck_zip->set_access(FileDialog::ACCESS_FILESYSTEM); export_pck_zip->set_mode(FileDialog::MODE_SAVE_FILE); add_child(export_pck_zip); export_pck_zip->connect("file_selected", this, "_export_pck_zip_selected"); export_error = memnew(Label); main_vb->add_child(export_error); export_error->hide(); export_error->add_color_override("font_color", Color(1, 0.5, 0.5)); export_templates_error = memnew(HBoxContainer); main_vb->add_child(export_templates_error); export_templates_error->hide(); Label *export_error2 = memnew(Label); export_templates_error->add_child(export_error2); export_error2->add_color_override("font_color", Color(1, 0.5, 0.5)); export_error2->set_text(" - " + TTR("Export templates for this platform are missing:") + " "); LinkButton *download_templates = memnew(LinkButton); download_templates->set_text(TTR("Manage Export Templates")); export_templates_error->add_child(download_templates); download_templates->connect("pressed", this, "_open_export_template_manager"); export_project = memnew(FileDialog); export_project->set_access(FileDialog::ACCESS_FILESYSTEM); add_child(export_project); export_project->connect("file_selected", this, "_export_project_to_path"); export_button->connect("pressed", this, "_export_project"); export_debug = memnew(CheckButton); export_debug->set_text(TTR("Export With Debug")); export_debug->set_pressed(true); export_project->get_vbox()->add_child(export_debug); set_hide_on_ok(false); editor_icons = "EditorIcons"; }