EditorLog::EditorLog() { VBoxContainer *vb = memnew( VBoxContainer); add_child(vb); vb->set_v_size_flags(SIZE_EXPAND_FILL); HBoxContainer *hb = memnew( HBoxContainer ); vb->add_child(hb); title = memnew( Label ); title->set_text(" Output:"); title->set_h_size_flags(SIZE_EXPAND_FILL); hb->add_child(title); button = memnew( ToolButton ); button->set_text_align(Button::ALIGN_LEFT); button->connect("pressed",this,"_flip_request"); button->set_focus_mode(FOCUS_NONE); button->set_clip_text(true); button->set_tooltip("Open/Close output panel."); //pd = memnew( PaneDrag ); //hb->add_child(pd); //pd->connect("dragged",this,"_dragged"); //pd->set_default_cursor_shape(Control::CURSOR_MOVE); tb = memnew( TextureButton ); hb->add_child(tb); tb->connect("pressed",this,"_close_request"); ec = memnew( EmptyControl); vb->add_child(ec); ec->set_minsize(Size2(0,100)); ec->set_v_size_flags(SIZE_EXPAND_FILL); PanelContainer *pc = memnew( PanelContainer ); pc->add_style_override("panel",get_stylebox("normal","TextEdit")); ec->add_child(pc); pc->set_area_as_parent_rect(); log = memnew( RichTextLabel ); log->set_scroll_follow(true); pc->add_child(log); add_message(VERSION_FULL_NAME" (c) 2010-2014 www.fengei.com."); //log->add_text("Initialization Complete.\n"); //because it looks cool. add_style_override("panel",get_stylebox("panelf","Panel")); eh.errfunc=_error_handler; eh.userdata=this; add_error_handler(&eh); current=Thread::get_caller_ID(); EditorNode::get_undo_redo()->set_commit_notify_callback(_undo_redo_cbk,this); hide(); }
EditorLog::EditorLog() { VBoxContainer *vb = this; add_constant_override("separation",get_constant("separation","VBoxContainer")); HBoxContainer *hb = memnew( HBoxContainer ); vb->add_child(hb); title = memnew( Label ); title->set_text(" Output:"); title->set_h_size_flags(SIZE_EXPAND_FILL); hb->add_child(title); //pd = memnew( PaneDrag ); //hb->add_child(pd); //pd->connect("dragged",this,"_dragged"); //pd->set_default_cursor_shape(Control::CURSOR_MOVE); clearbutton = memnew( Button ); hb->add_child(clearbutton); clearbutton->set_text(TTR("Clear")); clearbutton->connect("pressed", this,"_clear_request"); ec = memnew( Control); vb->add_child(ec); ec->set_custom_minimum_size(Size2(0,180)); ec->set_v_size_flags(SIZE_EXPAND_FILL); PanelContainer *pc = memnew( PanelContainer ); pc->add_style_override("panel",get_stylebox("normal","TextEdit")); ec->add_child(pc); pc->set_area_as_parent_rect(); log = memnew( RichTextLabel ); log->set_scroll_follow(true); log->set_selection_enabled(true); log->set_focus_mode(FOCUS_CLICK); pc->add_child(log); add_message(VERSION_FULL_NAME" (c) 2008-2016 Juan Linietsky, Ariel Manzur."); //log->add_text("Initialization Complete.\n"); //because it looks cool. eh.errfunc=_error_handler; eh.userdata=this; add_error_handler(&eh); current=Thread::get_caller_ID(); EditorNode::get_undo_redo()->set_commit_notify_callback(_undo_redo_cbk,this); }
EditorSceneImportDialog::EditorSceneImportDialog(EditorNode *p_editor, EditorSceneImportPlugin *p_plugin) { editor=p_editor; plugin=p_plugin; set_title("Import 3D Scene"); HBoxContainer *import_hb = memnew( HBoxContainer ); add_child(import_hb); set_child_rect(import_hb); VBoxContainer *vbc = memnew( VBoxContainer ); import_hb->add_child(vbc); vbc->set_h_size_flags(SIZE_EXPAND_FILL); HBoxContainer *hbc = memnew( HBoxContainer ); vbc->add_margin_child("Source Scene:",hbc); import_path = memnew( LineEdit ); import_path->set_h_size_flags(SIZE_EXPAND_FILL); hbc->add_child(import_path); Button * import_choose = memnew( Button ); import_choose->set_text(" .. "); hbc->add_child(import_choose); import_choose->connect("pressed", this,"_browse"); hbc = memnew( HBoxContainer ); vbc->add_margin_child("Target Scene:",hbc); save_path = memnew( LineEdit ); save_path->set_h_size_flags(SIZE_EXPAND_FILL); hbc->add_child(save_path); Button * save_choose = memnew( Button ); save_choose->set_text(" .. "); hbc->add_child(save_choose); save_choose->connect("pressed", this,"_browse_target"); texture_action = memnew( OptionButton ); texture_action->add_item("Same as Target Scene"); texture_action->add_item("Shared"); texture_action->select(0); vbc->add_margin_child("Target Texture Folder:",texture_action); import_options = memnew( Tree ); vbc->set_v_size_flags(SIZE_EXPAND_FILL); vbc->add_margin_child("Options:",import_options,true); file_select = memnew(FileDialog); file_select->set_access(FileDialog::ACCESS_FILESYSTEM); add_child(file_select); file_select->set_mode(FileDialog::MODE_OPEN_FILE); file_select->connect("file_selected", this,"_choose_file"); save_select = memnew(EditorDirDialog); add_child(save_select); //save_select->set_mode(FileDialog::MODE_SAVE_FILE); save_select->connect("dir_selected", this,"_choose_save_file"); get_ok()->connect("pressed", this,"_import"); get_ok()->set_text("Import"); TreeItem *root = import_options->create_item(NULL); import_options->set_hide_root(true); TreeItem *importopts = import_options->create_item(root); importopts->set_text(0,"Import:"); const FlagInfo* fn=scene_flag_names; while(fn->text) { TreeItem *opt = import_options->create_item(importopts); opt->set_cell_mode(0,TreeItem::CELL_MODE_CHECK); opt->set_checked(0,true); opt->set_editable(0,true); opt->set_text(0,fn->text); opt->set_metadata(0,fn->value); scene_flags.push_back(opt); fn++; } hbc = memnew( HBoxContainer ); vbc->add_margin_child("Post-Process Script:",hbc); script_path = memnew( LineEdit ); script_path->set_h_size_flags(SIZE_EXPAND_FILL); hbc->add_child(script_path); Button * script_choose = memnew( Button ); script_choose->set_text(" .. "); hbc->add_child(script_choose); script_choose->connect("pressed", this,"_browse_script"); script_select = memnew(FileDialog); add_child(script_select); for(int i=0;i<ScriptServer::get_language_count();i++) { ScriptLanguage *sl=ScriptServer::get_language(i); String ext = sl->get_extension(); if (ext=="") continue; script_select->add_filter("*."+ext+" ; "+sl->get_name()); } script_select->set_mode(FileDialog::MODE_OPEN_FILE); script_select->connect("file_selected", this,"_choose_script"); error_dialog = memnew ( ConfirmationDialog ); add_child(error_dialog); error_dialog->get_ok()->set_text("Accept"); // error_dialog->get_cancel()->hide(); set_hide_on_ok(false); GLOBAL_DEF("import/shared_textures","res://"); Globals::get_singleton()->set_custom_property_info("import/shared_textures",PropertyInfo(Variant::STRING,"import/shared_textures",PROPERTY_HINT_DIR)); import_hb->add_constant_override("separation",30); VBoxContainer *ovb = memnew( VBoxContainer); ovb->set_h_size_flags(SIZE_EXPAND_FILL); import_hb->add_child(ovb); texture_options = memnew( EditorImportTextureOptions ); ovb->add_child(texture_options); texture_options->set_v_size_flags(SIZE_EXPAND_FILL); //animation_options->set_flags(EditorImport:: texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM); texture_options->set_flags( EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA | EditorTextureImportPlugin::IMAGE_FLAG_REPEAT | EditorTextureImportPlugin::IMAGE_FLAG_FILTER ); animation_options = memnew( EditorImportAnimationOptions ); ovb->add_child(animation_options); animation_options->set_v_size_flags(SIZE_EXPAND_FILL); animation_options->set_flags(EditorSceneAnimationImportPlugin::ANIMATION_DETECT_LOOP|EditorSceneAnimationImportPlugin::ANIMATION_KEEP_VALUE_TRACKS|EditorSceneAnimationImportPlugin::ANIMATION_OPTIMIZE); confirm_import = memnew( ConfirmationDialog ); add_child(confirm_import); VBoxContainer *cvb = memnew( VBoxContainer ); confirm_import->add_child(cvb); confirm_import->set_child_rect(cvb); PanelContainer *pc = memnew( PanelContainer ); pc->add_style_override("panel",get_stylebox("normal","TextEdit")); //ec->add_child(pc); missing_files = memnew( RichTextLabel ); cvb->add_margin_child("The Following Files are Missing:",pc,true); pc->add_child(missing_files); confirm_import->get_ok()->set_text("Import Anyway"); confirm_import->get_cancel()->set_text("Cancel"); confirm_import->connect("popup_hide",this,"_dialog_hid"); confirm_import->connect("confirmed",this,"_import_confirm"); confirm_import->set_hide_on_ok(false); add_button("Import & Open",!OS::get_singleton()->get_swap_ok_cancel())->connect("pressed",this,"_open_and_import"); confirm_open = memnew( ConfirmationDialog ); add_child(confirm_open); confirm_open->set_text("Edited scene has not been saved, open imported scene anyway?"); confirm_open->connect("confirmed",this,"_import",varray(true)); wip_import=NULL; wip_blocked=false; wip_open=false; //texture_options->set_format(EditorImport::IMAGE_FORMAT_C); }
ProjectManager::ProjectManager() { int margin = get_constant("margin","Dialogs"); int button_margin = get_constant("button_margin","Dialogs"); // load settings if (!EditorSettings::get_singleton()) EditorSettings::create(); set_area_as_parent_rect(); Panel *panel = memnew( Panel ); add_child(panel); panel->set_area_as_parent_rect(); VBoxContainer *vb = memnew( VBoxContainer ); panel->add_child(vb); vb->set_area_as_parent_rect(20); Label *l = memnew( Label ); l->set_text(_MKSTR(VERSION_NAME)" - Project Manager"); l->add_font_override("font",get_font("large","Fonts")); l->set_align(Label::ALIGN_CENTER); vb->add_child(l); l = memnew( Label ); l->set_text("v"VERSION_MKSTRING); //l->add_font_override("font",get_font("bold","Fonts")); l->set_align(Label::ALIGN_CENTER); vb->add_child(l); vb->add_child(memnew(HSeparator)); vb->add_margin_child("\n",memnew(Control)); HBoxContainer *tree_hb = memnew( HBoxContainer); vb->add_margin_child("Recent Projects:",tree_hb,true); PanelContainer *pc = memnew( PanelContainer); pc->add_style_override("panel",get_stylebox("bg","Tree")); tree_hb->add_child(pc); pc->set_h_size_flags(SIZE_EXPAND_FILL); scroll = memnew( ScrollContainer ); pc->add_child(scroll); scroll->set_enable_h_scroll(false); VBoxContainer *tree_vb = memnew( VBoxContainer); tree_hb->add_child(tree_vb); scroll_childs = memnew( VBoxContainer ); scroll_childs->set_h_size_flags(SIZE_EXPAND_FILL); scroll->add_child(scroll_childs); //HBoxContainer *hb = memnew( HBoxContainer ); //vb->add_child(hb); Button *open = memnew( Button ); open->set_text("Edit"); tree_vb->add_child(open); open->connect("pressed", this,"_open_project"); open_btn=open; Button *run = memnew( Button ); run->set_text("Run"); tree_vb->add_child(run); run->connect("pressed", this,"_run_project"); run_btn=run; tree_vb->add_child(memnew( HSeparator )); Button *scan = memnew( Button ); scan->set_text("Scan"); tree_vb->add_child(scan); scan->connect("pressed", this,"_scan_projects"); tree_vb->add_child(memnew( HSeparator )); scan_dir = memnew( FileDialog ); scan_dir->set_access(FileDialog::ACCESS_FILESYSTEM); scan_dir->set_mode(FileDialog::MODE_OPEN_DIR); add_child(scan_dir); scan_dir->connect("dir_selected",this,"_scan_begin"); Button* create = memnew( Button ); create->set_text("New Project"); tree_vb->add_child(create); create->connect("pressed", this,"_new_project"); Button* import = memnew( Button ); import->set_text("Import"); tree_vb->add_child(import); import->connect("pressed", this,"_import_project"); Button* erase = memnew( Button ); erase->set_text("Erase"); tree_vb->add_child(erase); erase->connect("pressed", this,"_erase_project"); erase_btn=erase; tree_vb->add_spacer(); Button * cancel = memnew( Button ); cancel->set_text("Exit"); tree_vb->add_child(cancel); cancel->connect("pressed", this,"_exit_dialog"); vb->add_margin_child("\n",memnew(Control)); vb->add_child(memnew(HSeparator)); l = memnew( Label ); String cp; cp.push_back(0xA9); cp.push_back(0); l->set_text(cp+" 2008-2012 Juan Linietsky, Ariel Manzur."); l->set_align(Label::ALIGN_CENTER); vb->add_child(l); erase_ask = memnew( ConfirmationDialog ); erase_ask->get_ok()->set_text("Erase"); erase_ask->get_ok()->connect("pressed", this,"_erase_project_confirm"); add_child(erase_ask); OS::get_singleton()->set_low_processor_usage_mode(true); npdialog = memnew( NewProjectDialog ); add_child(npdialog); Ref<Theme> theme = memnew( Theme ); editor_register_icons(theme); set_theme(theme); npdialog->connect("project_created", this,"_load_recent_projects"); _load_recent_projects(); //get_ok()->set_text("Open"); //get_ok()->set_text("Exit"); }
EditorHelp::EditorHelp(EditorNode *p_editor) { editor=p_editor; VBoxContainer *vbc = this; HBoxContainer *panel_hb = memnew( HBoxContainer ); Button *b = memnew( Button ); b->set_text("Class List"); panel_hb->add_child(b); vbc->add_child(panel_hb); b->set_toggle_mode(true); b->set_pressed(true); b->connect("pressed",this,"_button_pressed",make_binds(PAGE_CLASS_LIST)); class_list_button=b; class_list_button->hide(); b = memnew( Button ); b->set_text("Class"); panel_hb->add_child(b); edited_class=b; edited_class->hide(); b->set_toggle_mode(true); b->connect("pressed",this,"_button_pressed",make_binds(PAGE_CLASS_DESC)); b = memnew( Button ); b->set_text("Search in Classes"); panel_hb->add_child(b); b->connect("pressed",this,"_button_pressed",make_binds(CLASS_SEARCH)); Control *expand = memnew( Control ); expand->set_h_size_flags(SIZE_EXPAND_FILL); panel_hb->add_child(expand); b = memnew( Button ); panel_hb->add_child(b); back=b; b->connect("pressed",this,"_button_pressed",make_binds(PAGE_CLASS_PREV)); b = memnew( Button ); panel_hb->add_child(b); forward=b; b->connect("pressed",this,"_button_pressed",make_binds(PAGE_CLASS_NEXT)); Separator *hs = memnew( VSeparator ); panel_hb->add_child(hs); EmptyControl *ec = memnew( EmptyControl ); ec->set_minsize(Size2(200,1)); panel_hb->add_child(ec); search = memnew( LineEdit ); ec->add_child(search); search->set_area_as_parent_rect(); search->connect("text_entered",this,"_search"); b = memnew( Button ); b->set_text("Find"); panel_hb->add_child(b); b->connect("pressed",this,"_button_pressed",make_binds(PAGE_SEARCH)); hs = memnew( VSeparator ); panel_hb->add_child(hs); h_split = memnew( HSplitContainer ); h_split->set_v_size_flags(SIZE_EXPAND_FILL); vbc->add_child(h_split); class_list = memnew( Tree ); h_split->add_child(class_list); //class_list->connect("meta_clicked",this,"_class_list_select"); //class_list->set_selection_enabled(true); { PanelContainer *pc = memnew( PanelContainer ); pc->add_style_override("panel",get_stylebox("normal","TextEdit")); h_split->add_child(pc); class_desc = memnew( RichTextLabel ); pc->add_child(class_desc); class_desc->connect("meta_clicked",this,"_class_desc_select"); } class_desc->get_v_scroll()->connect("value_changed",this,"_scroll_changed"); class_desc->set_selection_enabled(true); editor=p_editor; history_pos=0; scroll_locked=false; select_locked=false; set_process_unhandled_key_input(true); h_split->set_split_offset(200); class_list->connect("cell_selected",this,"_tree_item_selected"); class_desc->hide(); class_search = memnew( EditorHelpSearch(editor) ); editor->get_gui_base()->add_child(class_search); class_search->connect("go_to_help",this,"_help_callback"); // prev_search_page=-1; }
ProjectManager::ProjectManager() { // load settings if (!EditorSettings::get_singleton()) EditorSettings::create(); EditorSettings::get_singleton()->set_optimize_save(false); //just write settings as they came { int dpi_mode = EditorSettings::get_singleton()->get("global/hidpi_mode"); if (dpi_mode==0) { editor_set_scale( OS::get_singleton()->get_screen_dpi(0) > 150 && OS::get_singleton()->get_screen_size(OS::get_singleton()->get_current_screen()).x>2000 ? 2.0 : 1.0 ); } else if (dpi_mode==1) { editor_set_scale(0.75); } else if (dpi_mode==2) { editor_set_scale(1.0); } else if (dpi_mode==3) { editor_set_scale(1.5); } else if (dpi_mode==4) { editor_set_scale(2.0); } } FileDialog::set_default_show_hidden_files(EditorSettings::get_singleton()->get("file_dialog/show_hidden_files")); set_area_as_parent_rect(); set_theme(create_editor_theme()); gui_base = memnew( Control ); add_child(gui_base); gui_base->set_area_as_parent_rect(); gui_base->set_theme(create_custom_theme()); Panel *panel = memnew( Panel ); gui_base->add_child(panel); panel->set_area_as_parent_rect(); VBoxContainer *vb = memnew( VBoxContainer ); panel->add_child(vb); vb->set_area_as_parent_rect(20*EDSCALE); vb->set_margin(MARGIN_TOP,4*EDSCALE); vb->set_margin(MARGIN_BOTTOM,4*EDSCALE); vb->add_constant_override("separation",15*EDSCALE); String cp; cp.push_back(0xA9); cp.push_back(0); OS::get_singleton()->set_window_title(_MKSTR(VERSION_NAME)+String(" - ")+TTR("Project Manager")+" - "+cp+" 2008-2016 Juan Linietsky, Ariel Manzur."); HBoxContainer *top_hb = memnew( HBoxContainer); vb->add_child(top_hb); CenterContainer *ccl = memnew( CenterContainer ); Label *l = memnew( Label ); l->set_text(_MKSTR(VERSION_NAME)+String(" - ")+TTR("Project Manager")); l->add_font_override("font", gui_base->get_font("doc","EditorFonts")); ccl->add_child(l); top_hb->add_child(ccl); top_hb->add_spacer(); l = memnew( Label ); l->set_text("v" VERSION_MKSTRING); //l->add_font_override("font",get_font("bold","Fonts")); l->set_align(Label::ALIGN_CENTER); top_hb->add_child(l); //vb->add_child(memnew(HSeparator)); //vb->add_margin_child("\n",memnew(Control)); tabs = memnew( TabContainer ); vb->add_child(tabs); tabs->set_v_size_flags(SIZE_EXPAND_FILL); HBoxContainer *tree_hb = memnew( HBoxContainer); projects_hb = tree_hb; projects_hb->set_name(TTR("Project List")); tabs->add_child(tree_hb); VBoxContainer *search_tree_vb = memnew(VBoxContainer); search_tree_vb->set_h_size_flags(SIZE_EXPAND_FILL); tree_hb->add_child(search_tree_vb); HBoxContainer *search_box = memnew(HBoxContainer); search_box->add_spacer(true); project_filter = memnew(ProjectListFilter); search_box->add_child(project_filter); project_filter->connect("filter_changed", this, "_load_recent_projects"); project_filter->set_custom_minimum_size(Size2(250,10)); search_tree_vb->add_child(search_box); PanelContainer *pc = memnew( PanelContainer); pc->add_style_override("panel", gui_base->get_stylebox("bg","Tree")); search_tree_vb->add_child(pc); pc->set_v_size_flags(SIZE_EXPAND_FILL); scroll = memnew( ScrollContainer ); pc->add_child(scroll); scroll->set_enable_h_scroll(false); VBoxContainer *tree_vb = memnew( VBoxContainer); tree_hb->add_child(tree_vb); scroll_childs = memnew( VBoxContainer ); scroll_childs->set_h_size_flags(SIZE_EXPAND_FILL); scroll->add_child(scroll_childs); //HBoxContainer *hb = memnew( HBoxContainer ); //vb->add_child(hb); Button *open = memnew( Button ); open->set_text(TTR("Edit")); tree_vb->add_child(open); open->connect("pressed", this,"_open_project"); open_btn=open; Button *run = memnew( Button ); run->set_text(TTR("Run")); tree_vb->add_child(run); run->connect("pressed", this,"_run_project"); run_btn=run; tree_vb->add_child(memnew( HSeparator )); Button *scan = memnew( Button ); scan->set_text(TTR("Scan")); tree_vb->add_child(scan); scan->connect("pressed", this,"_scan_projects"); tree_vb->add_child(memnew( HSeparator )); scan_dir = memnew( FileDialog ); scan_dir->set_access(FileDialog::ACCESS_FILESYSTEM); scan_dir->set_mode(FileDialog::MODE_OPEN_DIR); scan_dir->set_title(TTR("Select a Folder to Scan")); // must be after mode or it's overridden scan_dir->set_current_dir( EditorSettings::get_singleton()->get("global/default_project_path") ); gui_base->add_child(scan_dir); scan_dir->connect("dir_selected",this,"_scan_begin"); Button* create = memnew( Button ); create->set_text(TTR("New Project")); tree_vb->add_child(create); create->connect("pressed", this,"_new_project"); Button* import = memnew( Button ); import->set_text(TTR("Import")); tree_vb->add_child(import); import->connect("pressed", this,"_import_project"); Button* erase = memnew( Button ); erase->set_text(TTR("Remove")); tree_vb->add_child(erase); erase->connect("pressed", this,"_erase_project"); erase_btn=erase; tree_vb->add_spacer(); if (StreamPeerSSL::is_available()) { asset_library = memnew( EditorAssetLibrary(true) ); asset_library->set_name("Templates"); tabs->add_child(asset_library); asset_library->connect("install_asset",this,"_install_project"); } else { WARN_PRINT("Asset Library not available, as it requires SSL to work."); } CenterContainer *cc = memnew( CenterContainer ); Button * cancel = memnew( Button ); cancel->set_text(TTR("Exit")); cancel->set_custom_minimum_size(Size2(100,1)*EDSCALE); cc->add_child(cancel); cancel->connect("pressed", this,"_exit_dialog"); vb->add_child(cc); // erase_ask = memnew( ConfirmationDialog ); erase_ask->get_ok()->set_text(TTR("Remove")); erase_ask->get_ok()->connect("pressed", this,"_erase_project_confirm"); gui_base->add_child(erase_ask); multi_open_ask = memnew( ConfirmationDialog ); multi_open_ask->get_ok()->set_text(TTR("Edit")); multi_open_ask->get_ok()->connect("pressed", this, "_open_project_confirm"); gui_base->add_child(multi_open_ask); multi_run_ask = memnew( ConfirmationDialog ); multi_run_ask->get_ok()->set_text(TTR("Run")); multi_run_ask->get_ok()->connect("pressed", this, "_run_project_confirm"); gui_base->add_child(multi_run_ask); multi_scan_ask = memnew( ConfirmationDialog ); multi_scan_ask->get_ok()->set_text(TTR("Scan")); gui_base->add_child(multi_scan_ask); OS::get_singleton()->set_low_processor_usage_mode(true); npdialog = memnew( NewProjectDialog ); gui_base->add_child(npdialog); npdialog->connect("project_created", this,"_load_recent_projects"); _load_recent_projects(); if ( EditorSettings::get_singleton()->get("global/autoscan_project_path") ) { _scan_begin( EditorSettings::get_singleton()->get("global/autoscan_project_path") ); } //get_ok()->set_text("Open"); //get_ok()->set_text("Exit"); last_clicked = ""; SceneTree::get_singleton()->connect("files_dropped", this, "_files_dropped"); }
ProjectManager::ProjectManager() { int margin = get_constant("margin","Dialogs"); int button_margin = get_constant("button_margin","Dialogs"); // load settings if (!EditorSettings::get_singleton()) EditorSettings::create(); FileDialog::set_default_show_hidden_files(EditorSettings::get_singleton()->get("file_dialog/show_hidden_files")); set_area_as_parent_rect(); Ref<Theme> theme = Ref<Theme>( memnew( Theme ) ); set_theme(theme); editor_register_icons(theme); String global_font = EditorSettings::get_singleton()->get("global/font"); if (global_font!="") { Ref<Font> fnt = ResourceLoader::load(global_font); if (fnt.is_valid()) { theme->set_default_theme_font(fnt); } } Panel *panel = memnew( Panel ); add_child(panel); panel->set_area_as_parent_rect(); VBoxContainer *vb = memnew( VBoxContainer ); panel->add_child(vb); vb->set_area_as_parent_rect(20); OS::get_singleton()->set_window_title(_MKSTR(VERSION_NAME)" - Project Manager"); Label *l = memnew( Label ); l->set_text(_MKSTR(VERSION_NAME)" - Project Manager"); l->add_font_override("font",get_font("large","Fonts")); l->set_align(Label::ALIGN_CENTER); vb->add_child(l); l = memnew( Label ); l->set_text("v" VERSION_MKSTRING); //l->add_font_override("font",get_font("bold","Fonts")); l->set_align(Label::ALIGN_CENTER); vb->add_child(l); vb->add_child(memnew(HSeparator)); vb->add_margin_child("\n",memnew(Control)); HBoxContainer *tree_hb = memnew( HBoxContainer); vb->add_margin_child("Recent Projects:",tree_hb,true); VBoxContainer *search_tree_vb = memnew(VBoxContainer); search_tree_vb->set_h_size_flags(SIZE_EXPAND_FILL); tree_hb->add_child(search_tree_vb); HBoxContainer *search_box = memnew(HBoxContainer); search_box->add_spacer(true); project_filter = memnew(ProjectListFilter); search_box->add_child(project_filter); project_filter->connect("filter_changed", this, "_load_recent_projects"); project_filter->set_custom_minimum_size(Size2(250,10)); search_tree_vb->add_child(search_box); PanelContainer *pc = memnew( PanelContainer); pc->add_style_override("panel",get_stylebox("bg","Tree")); search_tree_vb->add_child(pc); pc->set_v_size_flags(SIZE_EXPAND_FILL); scroll = memnew( ScrollContainer ); pc->add_child(scroll); scroll->set_enable_h_scroll(false); VBoxContainer *tree_vb = memnew( VBoxContainer); tree_hb->add_child(tree_vb); scroll_childs = memnew( VBoxContainer ); scroll_childs->set_h_size_flags(SIZE_EXPAND_FILL); scroll->add_child(scroll_childs); //HBoxContainer *hb = memnew( HBoxContainer ); //vb->add_child(hb); Button *open = memnew( Button ); open->set_text("Edit"); tree_vb->add_child(open); open->connect("pressed", this,"_open_project"); open_btn=open; Button *run = memnew( Button ); run->set_text("Run"); tree_vb->add_child(run); run->connect("pressed", this,"_run_project"); run_btn=run; tree_vb->add_child(memnew( HSeparator )); Button *scan = memnew( Button ); scan->set_text("Scan"); tree_vb->add_child(scan); scan->connect("pressed", this,"_scan_projects"); tree_vb->add_child(memnew( HSeparator )); scan_dir = memnew( FileDialog ); scan_dir->set_access(FileDialog::ACCESS_FILESYSTEM); scan_dir->set_mode(FileDialog::MODE_OPEN_DIR); scan_dir->set_current_dir( EditorSettings::get_singleton()->get("global/default_project_path") ); add_child(scan_dir); scan_dir->connect("dir_selected",this,"_scan_begin"); Button* create = memnew( Button ); create->set_text("New Project"); tree_vb->add_child(create); create->connect("pressed", this,"_new_project"); Button* import = memnew( Button ); import->set_text("Import"); tree_vb->add_child(import); import->connect("pressed", this,"_import_project"); Button* erase = memnew( Button ); erase->set_text("Erase"); tree_vb->add_child(erase); erase->connect("pressed", this,"_erase_project"); erase_btn=erase; tree_vb->add_spacer(); Button * cancel = memnew( Button ); cancel->set_text("Exit"); tree_vb->add_child(cancel); cancel->connect("pressed", this,"_exit_dialog"); vb->add_margin_child("\n",memnew(Control)); vb->add_child(memnew(HSeparator)); l = memnew( Label ); String cp; cp.push_back(0xA9); cp.push_back(0); l->set_text(cp+" 2008-2015 Juan Linietsky, Ariel Manzur."); l->set_align(Label::ALIGN_CENTER); vb->add_child(l); erase_ask = memnew( ConfirmationDialog ); erase_ask->get_ok()->set_text("Erase"); erase_ask->get_ok()->connect("pressed", this,"_erase_project_confirm"); add_child(erase_ask); multi_open_ask = memnew( ConfirmationDialog ); multi_open_ask->get_ok()->set_text("Edit"); multi_open_ask->get_ok()->connect("pressed", this, "_open_project_confirm"); add_child(multi_open_ask); multi_run_ask = memnew( ConfirmationDialog ); multi_run_ask->get_ok()->set_text("Run"); multi_run_ask->get_ok()->connect("pressed", this, "_run_project_confirm"); add_child(multi_run_ask); OS::get_singleton()->set_low_processor_usage_mode(true); npdialog = memnew( NewProjectDialog ); add_child(npdialog); npdialog->connect("project_created", this,"_load_recent_projects"); _load_recent_projects(); if ( EditorSettings::get_singleton()->get("global/autoscan_project_path") ) { _scan_begin( EditorSettings::get_singleton()->get("global/autoscan_project_path") ); } //get_ok()->set_text("Open"); //get_ok()->set_text("Exit"); last_clicked = ""; }
ScriptCreateDialog::ScriptCreateDialog() { /* DIALOG */ /* Main Controls */ GridContainer *gc = memnew(GridContainer); gc->set_columns(2); /* Error Messages Field */ VBoxContainer *vb = memnew(VBoxContainer); HBoxContainer *hb = memnew(HBoxContainer); Label *l = memnew(Label); l->set_text(" - "); hb->add_child(l); error_label = memnew(Label); error_label->set_text(TTR("Error!")); error_label->set_align(Label::ALIGN_LEFT); hb->add_child(error_label); vb->add_child(hb); hb = memnew(HBoxContainer); l = memnew(Label); l->set_text(" - "); hb->add_child(l); path_error_label = memnew(Label); path_error_label->set_text(TTR("Error!")); path_error_label->set_align(Label::ALIGN_LEFT); hb->add_child(path_error_label); vb->add_child(hb); PanelContainer *pc = memnew(PanelContainer); pc->set_h_size_flags(Control::SIZE_FILL); pc->add_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_stylebox("bg", "Tree")); pc->add_child(vb); /* Margins */ Control *empty_h = memnew(Control); empty_h->set_name("empty_h"); //duplicate() doesn't like nodes without a name empty_h->set_h_size_flags(Control::SIZE_EXPAND_FILL); empty_h->set_v_size_flags(Control::SIZE_EXPAND_FILL); empty_h->set_custom_minimum_size(Size2(0, 10 * EDSCALE)); Control *empty_v = memnew(Control); empty_v->set_name("empty_v"); empty_v->set_h_size_flags(Control::SIZE_EXPAND_FILL); empty_v->set_v_size_flags(Control::SIZE_EXPAND_FILL); empty_v->set_custom_minimum_size(Size2(10, 0 * EDSCALE)); vb = memnew(VBoxContainer); vb->add_child(empty_h->duplicate()); vb->add_child(gc); vb->add_child(empty_h->duplicate()); vb->add_child(pc); vb->add_child(empty_h->duplicate()); hb = memnew(HBoxContainer); hb->add_child(empty_v->duplicate()); hb->add_child(vb); hb->add_child(empty_v->duplicate()); memdelete(empty_h); memdelete(empty_v); add_child(hb); /* Language */ language_menu = memnew(OptionButton); language_menu->set_custom_minimum_size(Size2(250, 0) * EDSCALE); language_menu->set_h_size_flags(SIZE_EXPAND_FILL); l = memnew(Label); l->set_text(TTR("Language")); l->set_align(Label::ALIGN_RIGHT); gc->add_child(l); gc->add_child(language_menu); int default_lang = 0; for (int i = 0; i < ScriptServer::get_language_count(); i++) { String lang = ScriptServer::get_language(i)->get_name(); language_menu->add_item(lang); if (lang == "GDScript") { default_lang = i; } } String last_selected_language = EditorSettings::get_singleton()->get_project_metadata("script_setup", "last_selected_language", ""); if (last_selected_language != "") { for (int i = 0; i < language_menu->get_item_count(); i++) { if (language_menu->get_item_text(i) == last_selected_language) { language_menu->select(i); current_language = i; break; } } } else { language_menu->select(default_lang); current_language = default_lang; } language_menu->connect("item_selected", this, "_lang_changed"); /* Inherits */ hb = memnew(HBoxContainer); hb->set_h_size_flags(SIZE_EXPAND_FILL); parent_name = memnew(LineEdit); parent_name->connect("text_changed", this, "_parent_name_changed"); parent_name->set_h_size_flags(SIZE_EXPAND_FILL); hb->add_child(parent_name); parent_browse_button = memnew(Button); parent_browse_button->set_flat(true); parent_browse_button->connect("pressed", this, "_browse_path", varray(true)); hb->add_child(parent_browse_button); l = memnew(Label); l->set_text(TTR("Inherits")); l->set_align(Label::ALIGN_RIGHT); gc->add_child(l); gc->add_child(hb); is_browsing_parent = false; /* Class Name */ class_name = memnew(LineEdit); class_name->connect("text_changed", this, "_class_name_changed"); class_name->set_h_size_flags(SIZE_EXPAND_FILL); l = memnew(Label); l->set_text(TTR("Class Name")); l->set_align(Label::ALIGN_RIGHT); gc->add_child(l); gc->add_child(class_name); /* Templates */ template_menu = memnew(OptionButton); l = memnew(Label); l->set_text(TTR("Template")); l->set_align(Label::ALIGN_RIGHT); gc->add_child(l); gc->add_child(template_menu); template_menu->connect("item_selected", this, "_template_changed"); /* Built-in Script */ internal = memnew(CheckButton); internal->connect("pressed", this, "_built_in_pressed"); hb = memnew(HBoxContainer); hb->add_child(internal); l = memnew(Label); l->set_text(TTR("Built-in Script")); l->set_align(Label::ALIGN_RIGHT); gc->add_child(l); gc->add_child(hb); /* Path */ hb = memnew(HBoxContainer); file_path = memnew(LineEdit); file_path->connect("text_changed", this, "_path_changed"); file_path->set_h_size_flags(SIZE_EXPAND_FILL); hb->add_child(file_path); path_button = memnew(Button); path_button->set_flat(true); path_button->connect("pressed", this, "_browse_path", varray(false)); hb->add_child(path_button); l = memnew(Label); l->set_text(TTR("Path")); l->set_align(Label::ALIGN_RIGHT); gc->add_child(l); gc->add_child(hb); /* Dialog Setup */ file_browse = memnew(EditorFileDialog); file_browse->connect("file_selected", this, "_file_selected"); add_child(file_browse); get_ok()->set_text(TTR("Create")); alert = memnew(AcceptDialog); alert->set_as_minsize(); alert->get_label()->set_autowrap(true); alert->get_label()->set_align(Label::ALIGN_CENTER); alert->get_label()->set_valign(Label::VALIGN_CENTER); alert->get_label()->set_custom_minimum_size(Size2(325, 60) * EDSCALE); add_child(alert); set_as_minsize(); set_hide_on_ok(false); set_title(TTR("Attach Node Script")); is_parent_name_valid = false; is_class_name_valid = false; is_path_valid = false; has_named_classes = false; supports_built_in = false; can_inherit_from_file = false; is_built_in = false; is_new_script_created = true; }