示例#1
0
FindInFilesDialog::FindInFilesDialog() {

	set_custom_minimum_size(Size2(400, 190));
	set_resizable(true);
	set_title(TTR("Find in files"));

	VBoxContainer *vbc = memnew(VBoxContainer);
	vbc->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_BEGIN, 8 * EDSCALE);
	vbc->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, 8 * EDSCALE);
	vbc->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, -8 * EDSCALE);
	vbc->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, -8 * EDSCALE);
	add_child(vbc);

	GridContainer *gc = memnew(GridContainer);
	gc->set_columns(2);
	vbc->add_child(gc);

	Label *find_label = memnew(Label);
	find_label->set_text(TTR("Find: "));
	gc->add_child(find_label);

	_search_text_line_edit = memnew(LineEdit);
	_search_text_line_edit->set_h_size_flags(SIZE_EXPAND_FILL);
	_search_text_line_edit->connect("text_changed", this, "_on_search_text_modified");
	_search_text_line_edit->connect("text_entered", this, "_on_search_text_entered");
	gc->add_child(_search_text_line_edit);

	{
		Control *placeholder = memnew(Control);
		gc->add_child(placeholder);
	}

	{
		HBoxContainer *hbc = memnew(HBoxContainer);

		_whole_words_checkbox = memnew(CheckBox);
		_whole_words_checkbox->set_text(TTR("Whole words"));
		_whole_words_checkbox->set_pressed(true);
		hbc->add_child(_whole_words_checkbox);

		_match_case_checkbox = memnew(CheckBox);
		_match_case_checkbox->set_text(TTR("Match case"));
		_match_case_checkbox->set_pressed(true);
		hbc->add_child(_match_case_checkbox);

		gc->add_child(hbc);
	}

	Label *folder_label = memnew(Label);
	folder_label->set_text(TTR("Folder: "));
	gc->add_child(folder_label);

	{
		HBoxContainer *hbc = memnew(HBoxContainer);

		Label *prefix_label = memnew(Label);
		prefix_label->set_text(ROOT_PREFIX);
		hbc->add_child(prefix_label);

		_folder_line_edit = memnew(LineEdit);
		_folder_line_edit->set_h_size_flags(SIZE_EXPAND_FILL);
		hbc->add_child(_folder_line_edit);

		Button *folder_button = memnew(Button);
		folder_button->set_text("...");
		folder_button->connect("pressed", this, "_on_folder_button_pressed");
		hbc->add_child(folder_button);

		_folder_dialog = memnew(FileDialog);
		_folder_dialog->set_mode(FileDialog::MODE_OPEN_DIR);
		_folder_dialog->connect("dir_selected", this, "_on_folder_selected");
		add_child(_folder_dialog);

		gc->add_child(hbc);
	}

	Label *filter_label = memnew(Label);
	filter_label->set_text(TTR("Filter: "));
	gc->add_child(filter_label);

	{
		HBoxContainer *hbc = memnew(HBoxContainer);

		Vector<String> exts;
		exts.push_back("gd");
		exts.push_back("cs");

		for (int i = 0; i < exts.size(); ++i) {
			CheckBox *cb = memnew(CheckBox);
			cb->set_text(exts[i]);
			cb->set_pressed(true);
			hbc->add_child(cb);
			_filters.push_back(cb);
		}

		gc->add_child(hbc);
	}

	{
		Control *placeholder = memnew(Control);
		placeholder->set_custom_minimum_size(Size2(0, EDSCALE * 16));
		vbc->add_child(placeholder);
	}

	{
		HBoxContainer *hbc = memnew(HBoxContainer);
		hbc->set_alignment(HBoxContainer::ALIGN_CENTER);

		_find_button = memnew(Button);
		_find_button->set_text(TTR("Find..."));
		_find_button->connect("pressed", this, "_on_find_button_pressed");
		_find_button->set_disabled(true);
		hbc->add_child(_find_button);

		{
			Control *placeholder = memnew(Control);
			placeholder->set_custom_minimum_size(Size2(EDSCALE * 16, 0));
			hbc->add_child(placeholder);
		}

		_replace_button = memnew(Button);
		_replace_button->set_text(TTR("Replace..."));
		_replace_button->connect("pressed", this, "_on_replace_button_pressed");
		_replace_button->set_disabled(true);
		hbc->add_child(_replace_button);

		{
			Control *placeholder = memnew(Control);
			placeholder->set_custom_minimum_size(Size2(EDSCALE * 16, 0));
			hbc->add_child(placeholder);
		}

		Button *cancel_button = memnew(Button);
		cancel_button->set_text(TTR("Cancel"));
		cancel_button->connect("pressed", this, "hide");
		hbc->add_child(cancel_button);

		vbc->add_child(hbc);
	}
}
InstrumentScreen::InstrumentScreen(Tracker *p_tracker,bool p_mini) {
	
	mini_tabbox = p_mini?add(new TabBox,1):0;

	tracker=p_tracker;
	
	MarginGroup *mg=p_mini?mini_tabbox->add("List",new MarginGroup("Inst. List")):add(new MarginGroup("Instrument List"),3);
	
	mg->get_label_hb()->add( new Widget,1);
	edit = mg->get_label_hb()->add( new MenuBox("File.."));
	edit->add_item( "Clear" );
	edit->add_item( "Clear (With Samples)" );
	edit->add_separator();
	edit->add_item( "Load" );
	edit->add_item( "Save" );
	edit->add_separator();
	edit->add_item( "Copy" );
	edit->add_item( "Cut" );
	edit->add_item( "Paste" );
	edit->add_separator();
	edit->add_item( "Remap (separate samples)" );
	edit->add_item( "Remap All" );
	edit->item_selected_signal.connect( this, &InstrumentScreen::instrument_file_action_callback );
	
	HBoxContainer *slit_hb=mg->add(new HBoxContainer,1);
	
	instrument_list=slit_hb->add( new List, 1 );
	slit_hb->add( new VScrollBar, 0 )->set_range( instrument_list->get_range() );
	
	for (int i=0;i<Song::MAX_INSTRUMENTS;i++)
		instrument_list->add_string( "" );
	
	instrument_list->set_number_elements( 1 );
	instrument_list->set_number_min_integers( 2 );
	instrument_list->set_editable( true );
	instrument_list->set_max_string_length( 25 );
	instrument_list->set_incremental_search(false);	
	/* Instrument Global Tab */
	
	mg=p_mini?mini_tabbox->add("Edit",new MarginGroup("")):add(new MarginGroup("Parameters:"),5);
	
	
	sections=mg->add(new TabBox,1);
		
	HBoxContainer *mi_hb=sections->add( "General", new HBoxContainer );
	
	MarginGroup *mi_mg_table=mi_hb->add( new MarginGroup("Sample Table"),0 );
	
	HBoxContainer *st_hb=mi_mg_table->add( new HBoxContainer,1);
	sample_table=st_hb->add( new SampleInstrumentTable(tracker->editor),1);
	sample_table->set_range( st_hb->add( new VScrollBar, 0)->get_range() );
	
	
	VBoxContainer *mi_nna_vb = mi_hb->add( new VBoxContainer, 1);
	
	MarginGroup *mi_mg_nna=mi_nna_vb->add( new MarginGroup("New Note Action"),1);
	CenterContainer *mi_nna_cc=mi_mg_nna->add( new CenterContainer );
	
	VBoxContainer *mi_nna_vb_buttons = new VBoxContainer;
	
	mi_nna_cc->set_frame(mi_nna_vb_buttons);
	
	nna_group.add( mi_nna_vb_buttons->add( new Button("Note Cut"),0 ) );
	nna_group.add( mi_nna_vb_buttons->add( new Button("Note Continue"),0 ) );
	nna_group.add( mi_nna_vb_buttons->add( new Button("Note Off"),0 ) );
	nna_group.add( mi_nna_vb_buttons->add( new Button("Note Fade"),0 ) );
	nna_group.current_button_changed_signal.connect(this, &InstrumentScreen::parameter_changed_i );
	
	
	HBoxContainer *mi_nna_hb=mi_nna_vb->add( new HBoxContainer,1);
	
	MarginGroup *mi_nna_mg_dct=mi_nna_hb->add( new MarginGroup("Dup. Check"), 1 );
	
	CenterContainer *mi_dct_cc=mi_nna_mg_dct->add( new CenterContainer );
		
	VBoxContainer *mi_dct_vb_buttons = new VBoxContainer;
	
	mi_dct_cc->set_frame(mi_dct_vb_buttons);
	
	dct_group.add( mi_dct_vb_buttons->add( new Button("Disabled"),0 ) );
	dct_group.add( mi_dct_vb_buttons->add( new Button("Note"),0 ) );
	dct_group.add( mi_dct_vb_buttons->add( new Button("Sample"),0 ) );
	dct_group.add( mi_dct_vb_buttons->add( new Button("Instrument"),0 ) );
	dct_group.current_button_changed_signal.connect(this, &InstrumentScreen::parameter_changed_i );
	

	MarginGroup *mi_nna_mg_dca=mi_nna_hb->add( new MarginGroup("Dup. Action"), 1 );
	
	CenterContainer *mi_dca_cc=mi_nna_mg_dca->add( new CenterContainer );
		
	VBoxContainer *mi_dca_vb_buttons = new VBoxContainer;
	
	mi_dca_cc->set_frame(mi_dca_vb_buttons);
	
	dca_group.add( mi_dca_vb_buttons->add( new Button("Note Cut"),0 ) );
	dca_group.add( mi_dca_vb_buttons->add( new Button("Note Off"),0 ) );
	dca_group.add( mi_dca_vb_buttons->add( new Button("Note Fade"),0 ) );
	dca_group.current_button_changed_signal.connect(this, &InstrumentScreen::parameter_changed_i );
	
	/* Volume Section */
	
	VBoxContainer *vol_vb=sections->add( "Volume", new VBoxContainer );
	
	vol_envelope=vol_vb->add( new EnvelopeEditor(p_tracker->editor,p_mini) ,1 );
	
	mg=vol_vb->add( new MarginGroup("Volume Parameters"),0);
	GridContainer * gr = mg->add( new GridContainer(6), 1 );
	
	gr->add( new Label("Global"), false, false );
	
	
	vol_global_send = gr->add( new HSlider, true, false );
	vol_global_send->get_range()->set_max( 128 );
	vol_global_send->get_range()->value_changed_signal.connect(this,&InstrumentScreen::parameter_changed_p );

	gr->add( new ValueLabel,false,false)->set_range(vol_global_send->get_range());
	
	
	
	gr->add( new Label("Fade"), false, false );
	
	vol_fadeout = gr->add( new HSlider, true, false );
	vol_fadeout->get_range()->set_max( 256 );
	vol_fadeout->get_range()->value_changed_signal.connect(this,&InstrumentScreen::parameter_changed_p );
	
	gr->add( new ValueLabel,false,false)->set_range(vol_fadeout->get_range());
	
	gr->add( new Label("Random"), false, false );
	
	vol_random_send = gr->add( new HSlider, true, false );
	vol_random_send->get_range()->set_max( 100 );
	vol_random_send->get_range()->value_changed_signal.connect(this,&InstrumentScreen::parameter_changed_p );
	gr->add( new ValueLabel,false,false)->set_range(vol_random_send->get_range());
	
	/* Pan Section */
	
	VBoxContainer *pan_vb=sections->add( "Pan", new VBoxContainer );
	
	pan_envelope=pan_vb->add( new EnvelopeEditor(p_tracker->editor,p_mini),1 );
	
	
	mg=pan_vb->add( new MarginGroup("Panning Parameters"),0);
	gr = mg->add( new GridContainer(6), 1 );
	
	pan_use_default = gr->add( new CheckButton("Default"), false, false );
	pan_use_default->pressed_signal.connect( this, &InstrumentScreen::parameter_changed );
	pan_default = gr->add( new HSlider, true, false );
	pan_default->get_range()->set_min(-32);	
	pan_default->get_range()->set_max(32);	
	pan_default->get_range()->value_changed_signal.connect(this,&InstrumentScreen::parameter_changed_p );
	gr->add( new ValueLabel,false,false)->set_range(pan_default->get_range());
	
	gr->add( new Label("PPan Sep"), false, false );
	
	pan_ppsep = gr->add( new HSlider, true, false );

	pan_ppsep->get_range()->set_min(-32);	
	pan_ppsep->get_range()->set_max(32);	
	pan_ppsep->get_range()->value_changed_signal.connect(this,&InstrumentScreen::parameter_changed_p );
	gr->add( new ValueLabel,false,false)->set_range(pan_ppsep->get_range());
	
	gr->add( new Label("Random"), false, false );
	
	pan_random = gr->add( new HSlider, true, false );
	pan_random->get_range()->set_max(64);	
	pan_random->get_range()->value_changed_signal.connect(this,&InstrumentScreen::parameter_changed_p );
	gr->add( new ValueLabel,false,false)->set_range(pan_random->get_range());
	
	gr->add( new Label("  Center"), false, false );
	
	pan_ppcenter = gr->add( new HSlider, true, false );
	pan_ppcenter->get_range()->set_max(Note::NOTES-1);	
	pan_ppcenter->get_range()->value_changed_signal.connect(this,&InstrumentScreen::parameter_changed_p );	
	gr->add( new ValueLabel,false,false)->set_range(pan_ppcenter->get_range());
	
	VBoxContainer *pitch_filter_vb=sections->add( "Pitch/Filter", new VBoxContainer );
	
	pitch_filter_envelope=pitch_filter_vb->add( new EnvelopeEditor(p_tracker->editor,p_mini),1 );
	
	mg=pitch_filter_vb->add( new MarginGroup("Filter"),0);
	gr = mg->add( new GridContainer(6), 1 );
	
	filter_cutoff_default = gr->add( new CheckButton("Cutoff"), false, false );
	filter_cutoff_default->pressed_signal.connect( this, &InstrumentScreen::parameter_changed );
	filter_cutoff=gr->add( new HSlider, true, false );
	filter_cutoff->get_range()->set_max( 127 );
	filter_cutoff->get_range()->value_changed_signal.connect(this,&InstrumentScreen::parameter_changed_p );	
	gr->add( new ValueLabel,false,false )->set_range( filter_cutoff->get_range() );
	
	filter_reso_default = gr->add( new CheckButton("Resonance"), false, false );
	filter_reso_default->pressed_signal.connect( this, &InstrumentScreen::parameter_changed );
	filter_reso=gr->add( new HSlider, true, false );
	filter_reso->get_range()->set_max( 127 );
	filter_reso->get_range()->value_changed_signal.connect(this,&InstrumentScreen::parameter_changed_p );		
	gr->add( new ValueLabel,false,false )->set_range( filter_reso->get_range() );
	
	env_use_as_filter = pitch_filter_envelope->get_control_box()->add( new CheckButton("Use as Filter"), 1 );
	env_use_as_filter->pressed_signal.connect( this, &InstrumentScreen::parameter_changed );
	
	
	
	
	/* Final */
	
	instrument_list->selected_signal.connect( this, &InstrumentScreen::instrument_selected );
	instrument_list->item_edited_signal.connect( this, &InstrumentScreen::instrument_name_edited );

	/* File Dialog */
	
	
	updating=true;
	selected=0;
	instrument_selected(0);
	
	file_dialog=0;
}
示例#3
0
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;
}
示例#4
0
FindInFilesDialog::FindInFilesDialog() {

	set_custom_minimum_size(Size2(500 * EDSCALE, 0));
	set_title(TTR("Find in Files"));

	VBoxContainer *vbc = memnew(VBoxContainer);
	vbc->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_BEGIN, 8 * EDSCALE);
	vbc->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, 8 * EDSCALE);
	vbc->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, -8 * EDSCALE);
	vbc->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, -8 * EDSCALE);
	add_child(vbc);

	GridContainer *gc = memnew(GridContainer);
	gc->set_columns(2);
	vbc->add_child(gc);

	Label *find_label = memnew(Label);
	find_label->set_text(TTR("Find:"));
	gc->add_child(find_label);

	_search_text_line_edit = memnew(LineEdit);
	_search_text_line_edit->set_h_size_flags(SIZE_EXPAND_FILL);
	_search_text_line_edit->connect("text_changed", this, "_on_search_text_modified");
	_search_text_line_edit->connect("text_entered", this, "_on_search_text_entered");
	gc->add_child(_search_text_line_edit);

	gc->add_child(memnew(Control)); // Space to maintain the grid aligned.

	{
		HBoxContainer *hbc = memnew(HBoxContainer);

		_whole_words_checkbox = memnew(CheckBox);
		_whole_words_checkbox->set_text(TTR("Whole Words"));
		hbc->add_child(_whole_words_checkbox);

		_match_case_checkbox = memnew(CheckBox);
		_match_case_checkbox->set_text(TTR("Match Case"));
		hbc->add_child(_match_case_checkbox);

		gc->add_child(hbc);
	}

	Label *folder_label = memnew(Label);
	folder_label->set_text(TTR("Folder:"));
	gc->add_child(folder_label);

	{
		HBoxContainer *hbc = memnew(HBoxContainer);

		Label *prefix_label = memnew(Label);
		prefix_label->set_text("res://");
		hbc->add_child(prefix_label);

		_folder_line_edit = memnew(LineEdit);
		_folder_line_edit->set_h_size_flags(SIZE_EXPAND_FILL);
		hbc->add_child(_folder_line_edit);

		Button *folder_button = memnew(Button);
		folder_button->set_text("...");
		folder_button->connect("pressed", this, "_on_folder_button_pressed");
		hbc->add_child(folder_button);

		_folder_dialog = memnew(FileDialog);
		_folder_dialog->set_mode(FileDialog::MODE_OPEN_DIR);
		_folder_dialog->connect("dir_selected", this, "_on_folder_selected");
		add_child(_folder_dialog);

		gc->add_child(hbc);
	}

	Label *filter_label = memnew(Label);
	filter_label->set_text(TTR("Filters:"));
	gc->add_child(filter_label);

	{
		HBoxContainer *hbc = memnew(HBoxContainer);

		// TODO: Unhardcode this.
		Vector<String> exts;
		exts.push_back("gd");
		if (Engine::get_singleton()->has_singleton("GodotSharp"))
			exts.push_back("cs");
		exts.push_back("shader");

		for (int i = 0; i < exts.size(); ++i) {
			CheckBox *cb = memnew(CheckBox);
			cb->set_text(exts[i]);
			cb->set_pressed(true);
			hbc->add_child(cb);
			_filters.push_back(cb);
		}

		gc->add_child(hbc);
	}

	_find_button = add_button(TTR("Find..."), false, "find");
	_find_button->set_disabled(true);

	_replace_button = add_button(TTR("Replace..."), false, "replace");
	_replace_button->set_disabled(true);

	Button *cancel_button = get_ok();
	cancel_button->set_text(TTR("Cancel"));
}
SampleScreen::SampleScreen(Tracker *p_tracker,bool p_mini) {

	
	mini_tabbox = p_mini?add(new TabBox,1):0;

	tracker=p_tracker;

	MarginGroup *mg=p_mini?mini_tabbox->add("List",new MarginGroup("Sample List")):add(new MarginGroup("Sample List"),3);
	
	mg->get_label_hb()->add( new Widget, 1);
	edit = mg->get_label_hb()->add( new MenuBox("File.."));
	edit->add_item( "Clear" );
	edit->add_separator();
	edit->add_item( "Load" );
	edit->add_item( "Save" );
	edit->add_separator();
	edit->add_item( "Copy" );
	edit->add_item( "Cut" );
	edit->add_item( "Paste" );
	edit->add_separator();
	edit->add_item( "Make Instrument" );
	edit->item_selected_signal.connect( this, &SampleScreen::sample_file_action_callback );
	
	HBoxContainer *slit_hb=mg->add(new HBoxContainer,1);
	
	sample_status=slit_hb->add( new SampleStatusList(p_tracker),0);
	sample_list=slit_hb->add( new List, 1 );
	slit_hb->add( new VScrollBar, 0 )->set_range( sample_list->get_range() );
	sample_status->set_range( sample_list->get_range() );
	
	for (int i=0;i<Song::MAX_SAMPLES;i++)
		sample_list->add_string( "" );
	
	sample_list->set_number_elements( 1 );
	sample_list->set_number_min_integers( 2 );
	sample_list->set_editable( true );
	sample_list->set_max_string_length( 25 );
	sample_list->set_incremental_search(false);
	
	mg=p_mini?mini_tabbox->add("Edit",new MarginGroup("Edit:")):add(new MarginGroup("Parameters:"),5);
	
	mg->get_label_hb()->add( new Widget, 1);
	
//	mg->get_label_hb()->add( new Widget, 1);
	sample_edit = mg->get_label_hb()->add( new MenuBox("Edit"));
	sample_edit->add_item("Copy",SampleEditorEffects::CMD_COPY);
	sample_edit->add_item("Cut",SampleEditorEffects::CMD_CUT);
	sample_edit->add_item("Paste",SampleEditorEffects::CMD_PASTE);
	sample_edit->add_item("Trim",SampleEditorEffects::CMD_TRIM);
	sample_edit->add_separator();
	sample_edit->add_item("PreLoop Cut",SampleEditorEffects::CMD_PRELOOP_CUT);
	sample_edit->add_item("PostLoop Cut",SampleEditorEffects::CMD_POSTLOOP_CUT);
	sample_edit->add_separator();
	sample_edit->add_item("Selection->Loop",SampleEditorEffects::CMD_SEL_TO_LOOP);
	sample_edit->add_item("Align Loop by Resizing",SampleEditorEffects::CMD_LOOP_TO_BOUNDARY);
	sample_edit->add_separator();
	sample_edit->add_item("Unroll Loop",SampleEditorEffects::CMD_LOOP_UNROLL);
	
	sample_edit->item_selected_signal.connect(this,&SampleScreen::sample_data_edit_menu_callback);
	sample_edit->add_separator();
	sample_edit->add_item("Insert Silence at End",SampleEditorEffects::CMD_ADD_SILENCE_AT_END);
	sample_edit->add_separator();
	sample_edit->add_item("Align Loop (ALL SAMPLES)",SampleEditor::CMD_ALIGN_SALL_SAMPLES);
	sample_edit->add_item("Unroll Loop (ALL SAMPLES)",SampleEditor::CMD_UNROLL_ALL_LOOPS);
	sample_edit->add_item("Convert to 16 (ALL SAMPLES)",SampleEditor::CMD_CONVERT_ALL_TO_16);
	sample_edit->add_item("Amplify All (ALL SAMPLES)",SampleEditor::CMD_AMPLIFY_ALL);
	
	
	sample_fx = mg->get_label_hb()->add( new MenuBox("FX"));
	sample_fx->add_item("Toggle Sign",SampleEditorEffects::CMD_TOGGLE_SIGN);
	sample_fx->add_item("Toggle Depth",SampleEditorEffects::CMD_TOGGLE_DEPTH);
	sample_fx->add_item("Toggle Stereo",SampleEditorEffects::CMD_TOGGLE_STEREO);
	sample_fx->add_item("Swap Stereo Chans",SampleEditorEffects::CMD_SWAP_STEREO_CHANS);
	sample_fx->add_separator();
	sample_fx->add_item("Amplify",SampleEditorEffects::CMD_AMPLIFY);
	sample_fx->add_item("Punch Envelope",SampleEditorEffects::CMD_PUNCH_ENVELOPE);
	sample_fx->add_item("Fade In",SampleEditorEffects::CMD_FADE_IN);
	sample_fx->add_item("Fade Out",SampleEditorEffects::CMD_FADE_OUT);
	sample_fx->add_separator();
	sample_fx->add_item("Center",SampleEditorEffects::CMD_CENTER);
	sample_fx->add_item("Reverse",SampleEditorEffects::CMD_REVERSE);
	sample_fx->add_separator();
	sample_fx->add_item("Fix Looping",SampleEditorEffects::CMD_FIX_LOOPING);
	sample_fx->add_item("Resample (Frames)",SampleEditorEffects::CMD_RESAMPLE);
	sample_fx->add_item("Resample (hz)",SampleEditorEffects::CMD_RESAMPLE_FREQ);
	sample_fx->add_item("Delay Left Channel",SampleEditorEffects::CMD_LEFT_CHAN_DELAY);
	sample_fx->add_item("Match Loop End",SampleEditorEffects::CMD_MATCH_LOOP_END_BY_NOTE);
	sample_fx->add_separator();
	sample_fx->add_item("Reverb",SampleEditor::CMD_REVERB);
	
	sample_fx->item_selected_signal.connect(this,&SampleScreen::sample_data_edit_menu_callback);
	
	sample_properties =mg->add( new VBoxContainer, 1 );
	
	sample_list->selected_signal.connect( this, &SampleScreen::list_sample_selected );
	sample_list->item_edited_signal.connect( this, &SampleScreen::sample_name_edited );
	
	sample_editor =  sample_properties->add( new SampleEditor(tracker->editor, tracker->mixer,p_mini), 1);
	
	if (!p_mini)
		sample_properties->add( new HSeparator,0 );
	/* Sample stuff */
	
	HBoxContainer *hbc = p_mini?sample_editor->get_mini_tabbox()->add("Vol/Pan/Vib",new HBoxContainer):sample_properties->add( new HBoxContainer, 0 );
	
	mg = hbc->add( new MarginGroup("Volume"),1);
	
	GridContainer *gc = mg->add( new GridContainer(3), 1);
	
	gc->add( new Label("Global"), false, false );
	
	global_volume=gc->add( new HSlider, true, false );
	gc->add( new ValueLabel, false, false )->set_range( global_volume->get_range() );
	
	global_volume->get_range()->value_changed_signal.connect( this, &SampleScreen::parameter_changed_p );
	
	gc->add( new Label("Default"), false, false );
	
	default_volume=gc->add( new HSlider, true, false );
	gc->add( new ValueLabel, false, false )->set_range( default_volume->get_range() );
	default_volume->get_range()->value_changed_signal.connect( this, &SampleScreen::parameter_changed_p );
	
	use_default_pan=gc->add( new CheckButton("Pan"), false, false );
	
	use_default_pan->pressed_signal.connect( this , &SampleScreen::parameter_changed );
	
	default_pan=gc->add( new HSlider, true, false );
	gc->add( new ValueLabel, false, false )->set_range( default_pan->get_range() );
	
	default_pan->get_range()->value_changed_signal.connect( this, &SampleScreen::parameter_changed_p );
	
	mg = hbc->add( new MarginGroup("Vibrato"),1);
	
	gc = mg->add( new GridContainer(3), 1);
	
	gc->add( new Label("Wave"), false, false );
	
	vibrato_type=gc->add( new ComboBox, true, false );
	
	vibrato_type->add_string( "Sine" );
	vibrato_type->add_string( "Saw" );
	vibrato_type->add_string( "Square" );
	vibrato_type->add_string( "Random" );
	
	vibrato_type->selected_signal.connect( this, &SampleScreen::parameter_changed_c );
	
	gc->add( new Widget, false, false );
	gc->add( new Label("Speed"), false, false );
	
	vibrato_speed=gc->add( new HSlider, true, false );
	gc->add( new ValueLabel, false, false )->set_range( vibrato_speed->get_range() );
	
	vibrato_speed->get_range()->value_changed_signal.connect( this, &SampleScreen::parameter_changed_p );
	
	gc->add( new Label("Depth"), false, false );
	
	vibrato_depth=gc->add( new HSlider, true, false );
	gc->add( new ValueLabel, false, false )->set_range( vibrato_depth->get_range() );
	
	vibrato_depth->get_range()->value_changed_signal.connect( this, &SampleScreen::parameter_changed_p );
	
	gc->add( new Label("Rate"), false, false );
	
	vibrato_rate=gc->add( new HSlider, true, false );
	gc->add( new ValueLabel, false, false )->set_range( vibrato_rate->get_range() );
	
	vibrato_rate->get_range()->value_changed_signal.connect( this, &SampleScreen::parameter_changed_p );
	
	global_volume->get_range()->set_max(64);
	default_volume->get_range()->set_max(64);
	default_pan->get_range()->set_min(-32);
	default_pan->get_range()->set_max(32);
	vibrato_speed->get_range()->set_max(64);
	vibrato_depth->get_range()->set_max(32);
	vibrato_rate->get_range()->set_max(64);
	
	selecting_outside=false;
	updating=false;	
	selected=0;	
	
	sample_file_dialog=0;
	file_dialog=0;
}
示例#6
0
PluginConfigDialog::PluginConfigDialog() {
	get_ok()->set_disabled(true);
	set_hide_on_ok(true);

	GridContainer *grid = memnew(GridContainer);
	grid->set_columns(2);
	add_child(grid);

	Label *name_lb = memnew(Label);
	name_lb->set_text(TTR("Plugin Name:"));
	grid->add_child(name_lb);

	name_edit = memnew(LineEdit);
	name_edit->connect("text_changed", this, "_on_required_text_changed");
	name_edit->set_placeholder("MyPlugin");
	grid->add_child(name_edit);

	Label *subfolder_lb = memnew(Label);
	subfolder_lb->set_text(TTR("Subfolder:"));
	grid->add_child(subfolder_lb);

	subfolder_edit = memnew(LineEdit);
	subfolder_edit->set_placeholder("\"my_plugin\" -> res://addons/my_plugin");
	grid->add_child(subfolder_edit);

	Label *desc_lb = memnew(Label);
	desc_lb->set_text(TTR("Description:"));
	grid->add_child(desc_lb);

	desc_edit = memnew(TextEdit);
	desc_edit->set_custom_minimum_size(Size2(400, 80) * EDSCALE);
	grid->add_child(desc_edit);

	Label *author_lb = memnew(Label);
	author_lb->set_text(TTR("Author:"));
	grid->add_child(author_lb);

	author_edit = memnew(LineEdit);
	author_edit->set_placeholder("Godette");
	grid->add_child(author_edit);

	Label *version_lb = memnew(Label);
	version_lb->set_text(TTR("Version:"));
	grid->add_child(version_lb);

	version_edit = memnew(LineEdit);
	version_edit->set_placeholder("1.0");
	grid->add_child(version_edit);

	Label *script_option_lb = memnew(Label);
	script_option_lb->set_text(TTR("Language:"));
	grid->add_child(script_option_lb);

	script_option_edit = memnew(OptionButton);
	int default_lang = 0;
	for (int i = 0; i < ScriptServer::get_language_count(); i++) {
		ScriptLanguage *lang = ScriptServer::get_language(i);
		script_option_edit->add_item(lang->get_name());
		if (lang == GDScriptLanguage::get_singleton()) {
			default_lang = i;
		}
	}
	script_option_edit->select(default_lang);
	grid->add_child(script_option_edit);

	Label *script_lb = memnew(Label);
	script_lb->set_text(TTR("Script Name:"));
	grid->add_child(script_lb);

	script_edit = memnew(LineEdit);
	script_edit->connect("text_changed", this, "_on_required_text_changed");
	script_edit->set_placeholder("\"plugin.gd\" -> res://addons/my_plugin/plugin.gd");
	grid->add_child(script_edit);

	// TODO Make this option work better with languages like C#. Right now, it does not work because the C# project must be compiled first.
	Label *active_lb = memnew(Label);
	active_lb->set_text(TTR("Activate now?"));
	grid->add_child(active_lb);

	active_edit = memnew(CheckBox);
	active_edit->set_pressed(true);
	grid->add_child(active_edit);
}