void EditorQuickOpen::_update_search() { search_options->clear(); TreeItem *root = search_options->create_item(); EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->get_filesystem(); Vector< Pair< String, Ref<Texture> > > list; _parse_fs(efsd, list); for (int i = 0; i < list.size(); i++) { TreeItem *ti = search_options->create_item(root); ti->set_text(0, list[i].first); ti->set_icon(0, list[i].second); } if (root->get_children()) { TreeItem *ti = root->get_children(); ti->select(0); ti->set_as_cursor(0); } get_ok()->set_disabled(root->get_children()==NULL); }
NewProjectDialog() { VBoxContainer *vb = memnew( VBoxContainer ); add_child(vb); set_child_rect(vb); Label* l = memnew(Label); l->set_text("Project Path:"); vb->add_child(l); pp=l; project_path = memnew( LineEdit ); MarginContainer *mc = memnew( MarginContainer ); vb->add_child(mc); HBoxContainer *pphb = memnew( HBoxContainer ); mc->add_child(pphb); pphb->add_child(project_path); project_path->set_h_size_flags(SIZE_EXPAND_FILL); Button* browse = memnew( Button ); pphb->add_child(browse); browse->set_text("Browse"); browse->connect("pressed", this,"_browse_path"); l = memnew(Label); l->set_text("Project Name:"); l->set_pos(Point2(5,50)); vb->add_child(l); pn=l; project_name = memnew( LineEdit ); mc = memnew( MarginContainer ); vb->add_child(mc); mc->add_child(project_name); project_name->set_text("New Game Project"); l = memnew(Label); l->set_text("That's a BINGO!"); vb->add_child(l); error=l; l->add_color_override("font_color",Color(1,0.4,0.3,0.8)); l->set_align(Label::ALIGN_CENTER); get_ok()->set_text("Create"); DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); project_path->set_text(d->get_current_dir()); memdelete(d); fdialog = memnew( FileDialog ); add_child(fdialog); fdialog->set_access(FileDialog::ACCESS_FILESYSTEM); project_name->connect("text_changed", this,"_text_changed"); project_path->connect("text_changed", this,"_path_text_changed"); fdialog->connect("dir_selected", this,"_path_selected"); fdialog->connect("file_selected", this,"_file_selected"); set_hide_on_ok(false); import_mode=false; }
ReparentDialog::ReparentDialog() { set_title("Reparent Node"); VBoxContainer *vbc = memnew( VBoxContainer ); add_child(vbc); set_child_rect(vbc); tree = memnew( SceneTreeEditor(false) ); tree->set_show_enabled_subscene(true); vbc->add_margin_child("Reparent Location (Select new Parent):",tree,true); tree->get_scene_tree()->connect("item_activated",this,"_reparent"); //Label *label = memnew( Label ); //label->set_pos( Point2( 15,8) ); //label->set_text("Reparent Location (Select new Parent):"); node_only = memnew( CheckButton ); add_child(node_only); node_only->hide(); //vbc->add_margin_child("Options:",node_only);; //cancel->connect("pressed", this,"_cancel"); get_ok()->set_text("Reparent"); }
OrphanResourcesDialog::OrphanResourcesDialog() { VBoxContainer *vbc = memnew(VBoxContainer); add_child(vbc); files = memnew(Tree); files->set_columns(2); files->set_column_titles_visible(true); files->set_column_min_width(1, 100); files->set_column_expand(0, true); files->set_column_expand(1, false); files->set_column_title(0, TTR("Resource")); files->set_column_title(1, TTR("Owns")); files->set_hide_root(true); vbc->add_margin_child(TTR("Resources Without Explicit Ownership:"), files, true); set_title(TTR("Orphan Resource Explorer")); delete_confirm = memnew(ConfirmationDialog); delete_confirm->set_text(TTR("Delete selected files?")); get_ok()->set_text(TTR("Delete")); add_child(delete_confirm); dep_edit = memnew(DependencyEditor); add_child(dep_edit); files->connect("button_pressed", this, "_button_pressed"); delete_confirm->connect("confirmed", this, "_delete_confirm"); set_hide_on_ok(false); }
ReparentDialog::ReparentDialog() { set_title(TTR("Reparent Node")); VBoxContainer *vbc = memnew(VBoxContainer); add_child(vbc); //set_child_rect(vbc); tree = memnew(SceneTreeEditor(false)); tree->set_show_enabled_subscene(true); vbc->add_margin_child(TTR("Reparent Location (Select new Parent):"), tree, true); tree->get_scene_tree()->connect("item_activated", this, "_reparent"); //Label *label = memnew( Label ); //label->set_position( Point2( 15,8) ); //label->set_text("Reparent Location (Select new Parent):"); keep_transform = memnew(CheckBox); keep_transform->set_text(TTR("Keep Global Transform")); keep_transform->set_pressed(true); vbc->add_child(keep_transform); //vbc->add_margin_child("Options:",node_only); //cancel->connect("pressed", this,"_cancel"); get_ok()->set_text(TTR("Reparent")); }
void EditorFileDialog::set_mode(Mode p_mode) { mode=p_mode; switch(mode) { case MODE_OPEN_FILE: get_ok()->set_text("Open"); set_title("Open a File"); makedir->hide(); break; case MODE_OPEN_FILES: get_ok()->set_text("Open"); set_title("Open File(s)"); makedir->hide(); break; case MODE_SAVE_FILE: get_ok()->set_text("Save"); set_title("Save a File"); makedir->show(); break; case MODE_OPEN_DIR: get_ok()->set_text("Open"); set_title("Open a Directory"); makedir->show(); break; } if (mode==MODE_OPEN_FILES) { item_list->set_select_mode(ItemList::SELECT_MULTI); } else { item_list->set_select_mode(ItemList::SELECT_SINGLE); } }
void _path_selected(const String& p_path) { String p = p_path; String sp = p.simplify_path(); project_path->set_text(sp); _path_text_changed(p); get_ok()->call_deferred("grab_focus"); }
/* Called each time a target node is selected within the target node tree. */ void ConnectDialog::_tree_node_selected() { Node *current = tree->get_selected(); if (!current) return; dst_path = source->get_path_to(current); get_ok()->set_disabled(false); }
void FileDialog::set_mode(Mode p_mode) { mode = p_mode; switch (mode) { case MODE_OPEN_FILE: get_ok()->set_text(RTR("Open")); if (mode_overrides_title) set_title(RTR("Open a File")); makedir->hide(); break; case MODE_OPEN_FILES: get_ok()->set_text(RTR("Open")); if (mode_overrides_title) set_title(RTR("Open File(s)")); makedir->hide(); break; case MODE_OPEN_DIR: get_ok()->set_text(RTR("Select Current Folder")); if (mode_overrides_title) set_title(RTR("Open a Directory")); makedir->show(); break; case MODE_OPEN_ANY: get_ok()->set_text(RTR("Open")); if (mode_overrides_title) set_title(RTR("Open a File or Directory")); makedir->show(); break; case MODE_SAVE_FILE: get_ok()->set_text(RTR("Save")); if (mode_overrides_title) set_title(RTR("Save a File")); makedir->show(); break; } if (mode == MODE_OPEN_FILES) { tree->set_select_mode(Tree::SELECT_MULTI); } else { tree->set_select_mode(Tree::SELECT_SINGLE); } }
void EditorQuickOpen::_update_search() { search_options->clear(); TreeItem *root = search_options->create_item(); _parse_fs(EditorFileSystem::get_singleton()->get_filesystem()); get_ok()->set_disabled(root->get_children()==NULL); }
EditorQuickOpen::EditorQuickOpen() { VBoxContainer *vbc = memnew( VBoxContainer ); add_child(vbc); set_child_rect(vbc); search_box = memnew( LineEdit ); vbc->add_margin_child("Search:",search_box); search_box->connect("text_changed",this,"_text_changed"); search_box->connect("input_event",this,"_sbox_input"); search_options = memnew( Tree ); vbc->add_margin_child("Matches:",search_options,true); get_ok()->set_text("Open"); get_ok()->set_disabled(true); register_text_enter(search_box); set_hide_on_ok(false); search_options->connect("item_activated",this,"_confirmed"); search_options->set_hide_root(true); }
String _test_path() { error->set_text(""); get_ok()->set_disabled(true); DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); String valid_path; if (d->change_dir(project_path->get_text())==OK){ valid_path=project_path->get_text(); } else if (d->change_dir(project_path->get_text().strip_edges())==OK) { valid_path=project_path->get_text().strip_edges(); } if (valid_path == "") { error->set_text(TTR("Invalid project path, the path must exist!")); memdelete(d); return ""; } if (mode!=MODE_IMPORT) { if (d->file_exists("godot.cfg")) { error->set_text(TTR("Invalid project path, godot.cfg must not exist.")); memdelete(d); return ""; } } else { if (valid_path != "" && !d->file_exists("godot.cfg")) { error->set_text(TTR("Invalid project path, godot.cfg must exist.")); memdelete(d); return ""; } } memdelete(d); get_ok()->set_disabled(false); return valid_path; }
void show_dialog() { project_path->clear(); project_name->clear(); if (mode==MODE_IMPORT) { set_title(TTR("Import Existing Project")); get_ok()->set_text(TTR("Import")); pp->set_text(TTR("Project Path (Must Exist):")); pn->set_text(TTR("Project Name:")); pn->hide(); project_name->hide(); popup_centered(Size2(500,125)*EDSCALE); } else if (mode==MODE_NEW){ set_title(TTR("Create New Project")); get_ok()->set_text(TTR("Create")); pp->set_text(TTR("Project Path:")); pn->set_text(TTR("Project Name:")); pn->show(); project_name->show(); popup_centered(Size2(500,145)*EDSCALE); } else if (mode==MODE_INSTALL){ set_title(TTR("Install Project:")+" "+zip_title); get_ok()->set_text(TTR("Install")); pp->set_text(TTR("Project Path:")); pn->hide(); project_name->hide(); popup_centered(Size2(500,125)*EDSCALE); } _test_path(); }
void FileDialog::deselect_items() { // Clear currently selected items in file manager. tree->deselect_all(); // And change get_ok title. if (!tree->is_anything_selected()) { get_ok()->set_disabled(_is_open_should_be_disabled()); switch (mode) { case MODE_OPEN_FILE: case MODE_OPEN_FILES: get_ok()->set_text(RTR("Open")); break; case MODE_OPEN_DIR: get_ok()->set_text(RTR("Select Current Folder")); break; } } }
CreateDialog::CreateDialog() { VBoxContainer *vbc = memnew( VBoxContainer ); add_child(vbc); set_child_rect(vbc); search_box = memnew( LineEdit ); vbc->add_margin_child(TTR("Search:"),search_box); search_box->connect("text_changed",this,"_text_changed"); search_box->connect("input_event",this,"_sbox_input"); search_options = memnew( Tree ); vbc->add_margin_child(TTR("Matches:"),search_options,true); get_ok()->set_text(TTR("Create")); get_ok()->set_disabled(true); register_text_enter(search_box); set_hide_on_ok(false); search_options->connect("item_activated",this,"_confirmed"); // search_options->set_hide_root(true); base_type="Object"; }
EditorAssetLibraryItemDescription::EditorAssetLibraryItemDescription() { VBoxContainer *vbox = memnew( VBoxContainer ); add_child(vbox); set_child_rect(vbox); HBoxContainer *hbox = memnew( HBoxContainer); vbox->add_child(hbox); vbox->add_constant_override("separation",15); VBoxContainer *desc_vbox = memnew( VBoxContainer ); hbox->add_child(desc_vbox); hbox->add_constant_override("separation",15); item = memnew( EditorAssetLibraryItem ); desc_vbox->add_child(item); desc_vbox->set_custom_minimum_size(Size2(300,0)); PanelContainer * desc_bg = memnew( PanelContainer ); desc_vbox->add_child(desc_bg); desc_bg->set_v_size_flags(SIZE_EXPAND_FILL); description = memnew( RichTextLabel ); description->connect("meta_clicked",this,"_link_click"); //desc_vbox->add_child(description); desc_bg->add_child(description); desc_bg->add_style_override("panel",get_stylebox("normal","TextEdit")); preview = memnew( TextureFrame ); preview->set_custom_minimum_size(Size2(640,345)); hbox->add_child(preview); PanelContainer * previews_bg = memnew( PanelContainer ); vbox->add_child(previews_bg); previews_bg->set_custom_minimum_size(Size2(0,85)); previews_bg->add_style_override("panel",get_stylebox("normal","TextEdit")); previews = memnew( ScrollContainer ); previews_bg->add_child(previews); previews->set_enable_v_scroll(false); previews->set_enable_h_scroll(true); preview_hb = memnew( HBoxContainer ); preview_hb->set_v_size_flags(SIZE_EXPAND_FILL); previews->add_child(preview_hb); get_ok()->set_text("Install"); get_cancel()->set_text("Close"); }
void EditorReImportDialog::popup_reimport() { if (EditorFileSystem::get_singleton()->is_scanning()) { error->set_text(TTR("Please wait for scan to complete")); error->popup_centered_minsize(); return; } tree->clear(); items.clear(); List<String> ril; EditorFileSystem::get_singleton()->get_changed_sources(&ril); scene_must_save=false; TreeItem *root = tree->create_item(); for(List<String>::Element *E=ril.front();E;E=E->next()) { TreeItem *item = tree->create_item(root); item->set_cell_mode(0,TreeItem::CELL_MODE_CHECK); item->set_metadata(0,E->get()); item->set_text(0,E->get().replace_first("res://","")); item->set_tooltip(0,E->get()); item->set_checked(0,true); item->set_editable(0,true); items.push_back(item); String name = E->get(); if (EditorFileSystem::get_singleton()->get_file_type(name)=="PackedScene" && EditorNode::get_singleton()->is_scene_in_use(name)) { scene_must_save=true; } } if (scene_must_save) { if (EditorNode::get_singleton()->get_edited_scene() && EditorNode::get_singleton()->get_edited_scene()->get_filename()=="") { error->set_text(TTR("Current scene must be saved to re-import.")); error->popup_centered_minsize(); get_ok()->set_text(TTR("Re-Import")); get_ok()->set_disabled(true); return; } get_ok()->set_disabled(false); get_ok()->set_text(TTR("Save & Re-Import")); } else { get_ok()->set_text(TTR("Re-Import")); get_ok()->set_disabled(false); } popup_centered(Size2(600,400)); }
DependencyRemoveDialog::DependencyRemoveDialog() { VBoxContainer *vb = memnew(VBoxContainer); add_child(vb); text = memnew(Label); vb->add_child(text); owners = memnew(Tree); owners->set_hide_root(true); vb->add_child(owners); owners->set_v_size_flags(SIZE_EXPAND_FILL); get_ok()->set_text(TTR("Remove")); }
void _file_selected(const String& p_path) { String p = p_path; if (mode==MODE_IMPORT) { if (p.ends_with("engine.cfg")) { p=p.get_base_dir(); } } String sp = p.simplify_path(); project_path->set_text(sp); _path_text_changed(p); get_ok()->call_deferred("grab_focus"); }
void ConnectionsDialog::ok_pressed() { TreeItem *item = tree->get_selected(); if (!item) { //no idea how this happened, but disable get_ok()->set_disabled(true); return; } if (item->get_parent()==tree->get_root()) { //a signal - connect String signal=item->get_metadata(0).operator Dictionary()["name"]; String signalname=signal; String midname=node->get_name(); for(int i=0;i<midname.length();i++) { CharType c = midname[i]; if ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='_') { //all good } else if (c==' ') { c='_'; } else { midname.remove(i); i--; continue; } midname[i]=c; } connect_dialog->edit(node); connect_dialog->popup_centered_ratio(); connect_dialog->set_dst_method("_on_"+midname+"_"+signal); connect_dialog->set_dst_node(node->get_owner()?node->get_owner():node); } else { //a slot- disconnect Connection c=item->get_metadata(0); ERR_FAIL_COND(c.source!=node); //shouldn't happen but...bugcheck undo_redo->create_action("Create Subscription"); undo_redo->add_do_method(node,"disconnect",c.signal,c.target,c.method); undo_redo->add_undo_method(node,"connect",c.signal,c.target,c.method,Vector<Variant>(),c.flags); undo_redo->add_do_method(this,"update_tree"); undo_redo->add_undo_method(this,"update_tree"); undo_redo->commit_action(); c.source->disconnect(c.signal,c.target,c.method); update_tree(); } }
void FindReplaceDialog::popup_replace() { set_title(TTR("Replace")); bool do_selection=(text_edit->is_selection_active() && text_edit->get_selection_from_line() < text_edit->get_selection_to_line()); set_replace_selection_only(do_selection); if (!do_selection && text_edit->is_selection_active()) { search_text->set_text(text_edit->get_selection_text()); } replace_mc->show(); replace_label->show(); replace_vb->show(); popup_centered(Point2(300,300)); if (search_text->get_text()!="" && replace_text->get_text()=="") { search_text->select(0,0); replace_text->grab_focus(); } else { search_text->grab_focus(); search_text->select_all(); } error_label->set_text(""); if (prompt->is_pressed()) { skip->show(); get_ok()->set_text(TTR("Next")); selection_only->set_disabled(true); } else { skip->hide(); get_ok()->set_text(TTR("Replace")); selection_only->set_disabled(false); } }
EditorHelpIndex::EditorHelpIndex() { VBoxContainer *vbc = memnew( VBoxContainer ); add_child(vbc); set_child_rect(vbc); class_list = memnew( Tree ); vbc->add_margin_child("Class List: ",class_list,true); class_list->set_v_size_flags(SIZE_EXPAND_FILL); class_list->connect("item_activated",this,"_tree_item_selected"); get_ok()->set_text("Open"); }
void CreateDialog::_item_selected() { TreeItem *item = search_options->get_selected(); if (!item) return; String name = item->get_text(0); favorite->set_disabled(false); favorite->set_pressed(favorite_list.find(name) != -1); if (!EditorHelp::get_doc_data()->class_list.has(name)) return; help_bit->set_text(EditorHelp::get_doc_data()->class_list[name].brief_description); get_ok()->set_disabled(false); }
void FindReplaceDialog::popup_search() { set_title(TTR("Search")); replace_mc->hide(); replace_label->hide(); replace_vb->hide(); skip->hide(); popup_centered(Point2(300, 190)); get_ok()->set_text(TTR("Find")); search_text->grab_focus(); if (text_edit->is_selection_active() && (text_edit->get_selection_from_line() == text_edit->get_selection_to_line())) { search_text->set_text(text_edit->get_selection_text()); } search_text->select_all(); error_label->set_text(""); }
EditorAssetInstaller::EditorAssetInstaller() { VBoxContainer *vb = memnew(VBoxContainer); add_child(vb); tree = memnew(Tree); vb->add_margin_child("Package Contents:", tree, true); tree->connect("item_edited", this, "_item_edited"); error = memnew(AcceptDialog); add_child(error); get_ok()->set_text(TTR("Install")); set_title(TTR("Package Installer")); updating = false; set_hide_on_ok(true); }
EditorAssetLibraryItemDescription::EditorAssetLibraryItemDescription() { VBoxContainer *vbox = memnew(VBoxContainer); add_child(vbox); HBoxContainer *hbox = memnew(HBoxContainer); vbox->add_child(hbox); vbox->add_constant_override("separation", 15 * EDSCALE); VBoxContainer *desc_vbox = memnew(VBoxContainer); hbox->add_child(desc_vbox); hbox->add_constant_override("separation", 15 * EDSCALE); item = memnew(EditorAssetLibraryItem); desc_vbox->add_child(item); desc_vbox->set_custom_minimum_size(Size2(300 * EDSCALE, 0)); desc_bg = memnew(PanelContainer); desc_vbox->add_child(desc_bg); desc_bg->set_v_size_flags(SIZE_EXPAND_FILL); description = memnew(RichTextLabel); description->connect("meta_clicked", this, "_link_click"); desc_bg->add_child(description); preview = memnew(TextureRect); preview->set_custom_minimum_size(Size2(640 * EDSCALE, 345 * EDSCALE)); hbox->add_child(preview); previews_bg = memnew(PanelContainer); vbox->add_child(previews_bg); previews_bg->set_custom_minimum_size(Size2(0, 101 * EDSCALE)); previews = memnew(ScrollContainer); previews_bg->add_child(previews); previews->set_enable_v_scroll(false); previews->set_enable_h_scroll(true); preview_hb = memnew(HBoxContainer); preview_hb->set_v_size_flags(SIZE_EXPAND_FILL); previews->add_child(preview_hb); get_ok()->set_text(TTR("Download")); get_cancel()->set_text(TTR("Close")); }
DependencyErrorDialog::DependencyErrorDialog() { VBoxContainer *vb = memnew(VBoxContainer); add_child(vb); set_child_rect(vb); files = memnew(Tree); files->set_hide_root(true); vb->add_margin_child(TTR("Scene failed to load due to missing dependencies:"), files, true); files->set_v_size_flags(SIZE_EXPAND_FILL); get_ok()->set_text(TTR("Open Anyway")); text = memnew(Label); vb->add_child(text); text->set_text(TTR("Which action should be taken?")); fdep = add_button(TTR("Fix Dependencies"), true, "fixdeps"); set_title(TTR("Errors loading!")); }
CreateDialog::CreateDialog() { VBoxContainer *vbc = memnew(VBoxContainer); add_child(vbc); set_child_rect(vbc); get_ok()->set_text("Create"); tree = memnew(Tree); vbc->add_margin_child("Type:", tree, true); //tree->set_hide_root(true); filter = memnew(LineEdit); vbc->add_margin_child("Filter:", filter); base = "Node"; set_as_toplevel(true); tree->connect("item_activated", this, "_create"); filter->connect("text_changed", this, "_text_changed"); }
void ScriptEditorQuickOpen::_update_search() { search_options->clear(); TreeItem *root = search_options->create_item(); for(int i=0;i<functions.size();i++) { String file = functions[i]; if ((search_box->get_text()=="" || file.findn(search_box->get_text())!=-1)) { TreeItem *ti = search_options->create_item(root); ti->set_text(0,file); if (root->get_children()==ti) ti->select(0); } } get_ok()->set_disabled(root->get_children()==NULL); }
EditorHelpIndex::EditorHelpIndex() { VBoxContainer *vbc = memnew( VBoxContainer ); add_child(vbc); set_child_rect(vbc); search_box = memnew( LineEdit ); vbc->add_margin_child(TTR("Search:"), search_box); search_box->set_h_size_flags(SIZE_EXPAND_FILL); register_text_enter(search_box); search_box->connect("text_changed", this, "_text_changed"); search_box->connect("input_event", this, "_sbox_input"); class_list = memnew( Tree ); vbc->add_margin_child(TTR("Class List:")+" ", class_list, true); class_list->set_v_size_flags(SIZE_EXPAND_FILL); class_list->connect("item_activated",this,"_tree_item_selected"); get_ok()->set_text(TTR("Open")); }