int PreferencesWindow::create_objects()
{
	BC_Button *button;



	mwindow->theme->draw_preferences_bg(this);
	flash();

	int x = mwindow->theme->preferencescategory_x;
	int y = mwindow->theme->preferencescategory_y;
	for(int i = 0; i < CATEGORIES; i++)
	{
		add_subwindow(category_button[i] = new PreferencesButton(mwindow,
			thread,
			x,
			y,
			i,
			thread->category_to_text(i),
			(i == thread->current_dialog) ?
				mwindow->theme->get_image_set("category_button_checked") : 
				mwindow->theme->get_image_set("category_button")));
		x += category_button[i]->get_w() -
			mwindow->theme->preferences_category_overlap;
	}


// 	for(int i = 0; i < CATEGORIES; i++)
// 		categories.append(new BC_ListBoxItem(thread->category_to_text(i)));
// 	category = new PreferencesCategory(mwindow, 
// 		thread, 
// 		mwindow->theme->preferencescategory_x, 
// 		mwindow->theme->preferencescategory_y);
// 	category->create_objects();


	add_subwindow(button = new PreferencesOK(mwindow, thread));
	add_subwindow(new PreferencesApply(mwindow, thread));
	add_subwindow(new PreferencesCancel(mwindow, thread));

	set_current_dialog(thread->current_dialog);
	show_window();
	return 0;
}
Exemple #2
0
void SwapFramesWindow::create_objects()
{
	int x = 10, y = 10;
	add_subwindow(on = new SwapFramesOn(plugin, x, y));
	y += on->get_h() + 5;
	BC_Bar *bar;
	add_subwindow(bar = new BC_Bar(x, y, get_w() - x * 2));
	y += bar->get_h() + 5;
	add_subwindow(swap_even = new SwapFramesEven(plugin, 
		this, 
		x, 
		y));
	y += swap_even->get_h() + 5;
	add_subwindow(swap_odd = new SwapFramesOdd(plugin, 
		this, 
		x, 
		y));
	show_window();
}
void _720to480Window::create_objects()
{
	int x = 10, y = 10;

	add_tool(odd_first = new _720to480Order(client, this, 1, x, y, _("Odd field first")));
	y += 25;
	add_tool(even_first = new _720to480Order(client, this, 0, x, y, _("Even field first")));

// 	y += 25;
// 	add_tool(forward = new _720to480Direction(client, this, FORWARD, x, y, _("Downsample")));
// 	y += 25;
// 	add_tool(reverse = new _720to480Direction(client, this, REVERSE, x, y, _("Upsample")));
// 
	add_subwindow(new BC_OKButton(this));
	add_subwindow(new BC_CancelButton(this));

	show_window();
	flush();
}
void ZoomBar::create_objects()
{
	int x = 3;
	int y = get_h() / 2 - 
		mwindow->theme->get_image_set("zoombar_menu", 0)[0]->get_h() / 2;

	draw_top_background(get_parent(), 0, 0, get_w(), get_h());
	sample_zoom = new SampleZoomPanel(mwindow, this, x, y);
	sample_zoom->set_menu_images(mwindow->theme->get_image_set("zoombar_menu", 0));
	sample_zoom->set_tumbler_images(mwindow->theme->get_image_set("zoombar_tumbler", 0));
	sample_zoom->create_objects();
	x += sample_zoom->get_w();
	amp_zoom = new AmpZoomPanel(mwindow, this, x, y);
	amp_zoom->set_menu_images(mwindow->theme->get_image_set("zoombar_menu", 0));
	amp_zoom->set_tumbler_images(mwindow->theme->get_image_set("zoombar_tumbler", 0));
	amp_zoom->create_objects();
	x += amp_zoom->get_w();
	track_zoom = new TrackZoomPanel(mwindow, this, x, y);
	track_zoom->set_menu_images(mwindow->theme->get_image_set("zoombar_menu", 0));
	track_zoom->set_tumbler_images(mwindow->theme->get_image_set("zoombar_tumbler", 0));
	track_zoom->create_objects();
	x += track_zoom->get_w() + 10;

#define DEFAULT_TEXT "000.00 - 000.00"
	add_subwindow(auto_zoom_popup = new AutoZoomPopup(
		mwindow, 
		this, 
		x, 
		y,
		get_text_width(MEDIUMFONT, DEFAULT_TEXT) + 20));
	auto_zoom_popup->create_objects();
	x += auto_zoom_popup->get_w() + 5;
// 	add_subwindow(auto_zoom_text = new BC_Title(
// 		x, 
// 		get_h() / 2 - BC_Title::calculate_h(this, "0") / 2, 
// 		DEFAULT_TEXT));
// 	x += auto_zoom_text->get_w() + 5;
	add_subwindow(auto_zoom = new AutoZoom(mwindow, this, x, y));
	update_autozoom();
	x += auto_zoom->get_w() + 5;

	add_subwindow(from_value = new FromTextBox(mwindow, this, x, y));
	x += from_value->get_w() + 5;
	add_subwindow(length_value = new LengthTextBox(mwindow, this, x, y));
	x += length_value->get_w() + 5;
	add_subwindow(to_value = new ToTextBox(mwindow, this, x, y));
	x += to_value->get_w() + 5;

	update_formatting(from_value);
	update_formatting(length_value);
	update_formatting(to_value);

	add_subwindow(playback_value = new BC_Title(x, 100, _("--"), MEDIUMFONT, RED));

	add_subwindow(zoom_value = new BC_Title(x, 100, _("--"), MEDIUMFONT, BLACK));
	update();
}
void RenderWindow::create_objects()
{
	int x = 10, y = 5;
	lock_window("RenderWindow::create_objects");
	add_subwindow(new BC_Title(x, 
		y, 
		(char*)((render->strategy == FILE_PER_LABEL || 
				render->strategy == FILE_PER_LABEL_FARM) ? 
			_("Select the first file to render to:") : 
			_("Select a file to render to:"))));
	y += 25;

	format_tools = new FormatTools(mwindow,
					this, 
					asset);
	format_tools->create_objects(x, 
		y, 
		1, 
		1, 
		1, 
		1, 
		0,
		1,
		0,
		0,
		&render->strategy,
		0);

	loadmode = new LoadMode(mwindow, 
		this, 
		x, 
		y, 
		&render->load_mode, 
		1,
		0);
	loadmode->create_objects();

	add_subwindow(new BC_OKButton(this));
	add_subwindow(new BC_CancelButton(this));
	show_window();
	unlock_window();
}
Exemple #6
0
void DotWindow::create_objects()
{
	int x = 10, y = 10;
	add_subwindow(new BC_Title(x, y, 
		_("DotTV from EffectTV\n"
		"Copyright (C) 2001 FUKUCHI Kentarou")
	));

	show_window();
	flush();
}
Exemple #7
0
void OverlayAudioWindow::create_objects()
{
	int x = 10, y = 10;
	int x1 = x;
	BC_Title *title;
	add_subwindow(title = new BC_Title(x, y, "Output track:"));
	x += title->get_w() + plugin->get_theme()->widget_border;
	add_subwindow(output = new OutputTrack(plugin, x, y));
	output->create_objects();

	y += output->get_h() + plugin->get_theme()->widget_border;
	x = x1;
	add_subwindow(title = new BC_Title(x, y, "Mode:"));
	x += title->get_w() + plugin->get_theme()->widget_border;
	add_subwindow(mode = new OverlayMode(plugin, x, y));
	mode->create_objects();
	
	
	show_window();
}
Exemple #8
0
int JPEGConfigVideo::create_objects()
{
	int x = 10, y = 10;

	add_subwindow(new BC_Title(x, y, _("Quality:")));
	add_subwindow(new BC_ISlider(x + 80, 
		y,
		0,
		200,
		200,
		0,
		100,
		asset->quality,
		0,
		0,
		&asset->quality));

	add_subwindow(new BC_OKButton(this));
	return 0;
}
Exemple #9
0
void present_window(Window* window) {
	float old_alpha = window->layer->alpha;
	window->layer->alpha = 0.0;

	Screen* current = gfx_screen();
	add_subwindow(current->window, window);

	float to = old_alpha;
	ca_animation* fade_in = create_animation(ALPHA_ANIM, &to, 0.25);
	add_animation(window, fade_in);
}
void TransitionDialog::create_objects()
{
	int x = 10;
	int y = 10;
	
	lock_window("TransitionDialog::create_objects");
	add_subwindow(name_title = new BC_Title(x, y, _("Select transition from list")));
	y += name_title->get_h() + 5;
	add_subwindow(name_list = new TransitionDialogName(thread, 
		&thread->transition_names, 
		x, 
		y,
		get_w() - x - x,
		get_h() - y - BC_OKButton::calculate_h() - 10));
	add_subwindow(new BC_OKButton(this));
	add_subwindow(new BC_CancelButton(this));
	show_window();
	flush();
	unlock_window();
}
Exemple #11
0
void BC_FileBox::create_listbox(int x, int y, int mode)
{
	if(listbox && listbox->get_display_mode() != mode)
	{
		delete listbox;
		listbox = 0;
		top_level->get_resources()->filebox_mode = mode;
	}

	if(!listbox)
		add_subwindow(listbox = new BC_FileBoxListBox(x, y, this));
}
void DelayAudioWindow::create_objects()
{
	add_subwindow(new BC_Title(10, 10, _("Delay seconds:")));
	length = new DelayAudioTextBox(
		plugin, 
		this,
		10, 
		40);
	length->create_objects();
	update_gui();
	show_window();
}
int BlurZoomWindow::create_objects()
{
    int x = 10, y = 10;
    add_subwindow(new BC_Title(x, y,
                               _("RadioacTV from EffectTV\n"
                                 "Copyright (C) 2001 FUKUCHI Kentarou")
                              ));

    show_window();
    flush();
    return 0;
}
Exemple #14
0
void OverlayWindow::create_objects()
{
	int x = 10, y = 10;

	BC_Title *title;
	add_subwindow(title = new BC_Title(x, y, _("Mode:")));
	add_subwindow(mode = new OverlayMode(plugin,
		x + title->get_w() + 5,
		y));
	mode->create_objects();

	y += 30;
	add_subwindow(title = new BC_Title(x, y, _("Layer order:")));
	add_subwindow(direction = new OverlayDirection(plugin,
		x + title->get_w() + 5,
		y));
	direction->create_objects();

	y += 30;
	add_subwindow(title = new BC_Title(x, y, _("Output layer:")));
	add_subwindow(output = new OverlayOutput(plugin,
		x + title->get_w() + 5,
		y));
	output->create_objects();

	show_window();
	flush();
}
void SlideWindow::create_objects()
{
	int x = 10, y = 10;
	add_subwindow(new BC_Title(x, y, _("Direction:")));
	x += 100;
	add_subwindow(left = new SlideLeft(plugin, 
		this,
		x,
		y));
	x += 100;
	add_subwindow(right = new SlideRight(plugin, 
		this,
		x,
		y));

	y += 30;
	x = 10;
	add_subwindow(new BC_Title(x, y, _("Direction:")));
	x += 100;
	add_subwindow(in = new SlideIn(plugin, 
		this,
		x,
		y));
	x += 100;
	add_subwindow(out = new SlideOut(plugin, 
		this,
		x,
		y));

	show_window();
	flush();
}
void ClipEditWindow::create_objects()
{
	lock_window("ClipEditWindow::create_objects");
	this->create_it = thread->create_it;

	int x = 10, y = 10;
	int x1 = x;
	BC_TextBox *textbox;
	BC_TextBox *titlebox;
	BC_Title *title;

	add_subwindow(title = new BC_Title(x1, y, _("Title:")));
	y += title->get_h() + 5;
	add_subwindow(titlebox = new ClipEditTitle(this, x1, y, get_w() - x1 * 2));
	y += titlebox->get_h() + 10;
	add_subwindow(title = new BC_Title(x1, y, _("Comments:")));
	y += title->get_h() + 5;
	add_subwindow(textbox = new ClipEditComments(this, 
		x1, 
		y, 
		get_w() - x1 * 2, 
		BC_TextBox::pixels_to_rows(this, 
			MEDIUMFONT, 
			get_h() - 10 - BC_OKButton::calculate_h() - y)));



	add_subwindow(new BC_OKButton(this));
	add_subwindow(new BC_CancelButton(this));
	show_window();
	titlebox->activate();
	unlock_window();
}
Exemple #17
0
void TimeFrontWindow::create_objects()
{
	int x = 10, y = 10;
	BC_Title *title;

	add_subwindow(title = new BC_Title(x, y, _("Type:")));
	add_subwindow(shape = new TimeFrontShape(plugin, 
		this, 
		x + title->get_w() + 10, 
		y));
	shape->create_objects();
	y += 40;
	shape_x = x;
	shape_y = y;
	y += 140;
	add_subwindow(title = new BC_Title(x, y, _("Time range:")));
	add_subwindow(frame_range = new TimeFrontFrameRange(plugin, x + title->get_w() + 10, y));
	frame_range_x = x + frame_range->get_w() + 10;
	frame_range_y = y;
	y += 35;
	update_shape();
	
	add_subwindow(invert = new TimeFrontInvert(plugin, x, y));
	add_subwindow(show_grayscale = new TimeFrontShowGrayscale(plugin, x+ 100, y));


	show_window();
	flush();
}
Exemple #18
0
int RecordWindow::create_objects()
{
//printf("RecordWindow::create_objects 1\n");
	add_subwindow(new BC_Title(5, 5, _("Select a file to record to:")));

//printf("RecordWindow::create_objects 1\n");
	int x = 5, y = 25;
	format_tools = new FormatTools(mwindow,
					this, 
					record->default_asset);
//printf("RecordWindow::create_objects 1\n");
	format_tools->create_objects(x, 
					y, 
					1, 
					1, 
					1, 
					1, 
					1, 
					1,
					/* record->fixed_compression */ 0,
					1,
					0,
					0);
//printf("RecordWindow::create_objects 1\n");

// Not the same as creating a new file at each label.
// Load mode is now located in the RecordGUI
	x = 10;
//	loadmode = new LoadMode(this, x, y, &record->load_mode, 1);
// 	loadmode->create_objects();

	add_subwindow(new BC_OKButton(this));
//printf("RecordWindow::create_objects 1\n");
	add_subwindow(new BC_CancelButton(this));
//printf("RecordWindow::create_objects 1\n");
	show_window();
//printf("RecordWindow::create_objects 2\n");
	return 0;
}
Exemple #19
0
int IVTCWindow::create_objects()
{
	int x = 10, y = 10;
	
	add_tool(new BC_Title(x, y, _("Pattern offset:")));
	y += 20;
	add_tool(frame_offset = new IVTCOffset(client, x, y));
	y += 30;
	add_tool(first_field = new IVTCFieldOrder(client, x, y));
//	y += 30;
//	add_tool(automatic = new IVTCAuto(client, x, y));
	y += 40;
	add_subwindow(new BC_Title(x, y, _("Pattern:")));
	y += 20;
	for(int i = 0; i < TOTAL_PATTERNS; i++)
	{
		add_subwindow(pattern[i] = new IVTCPattern(client, 
			this, 
			i, 
			_(pattern_text[i]), 
			x, 
			y));
		y += 20;
	}
	
	if(client->config.pattern == IVTCConfig::AUTOMATIC)
	{
		frame_offset->disable();
		first_field->disable();
	}
//	y += 30;
//	add_tool(new BC_Title(x, y, _("Field threshold:")));
//	y += 20;
//	add_tool(threshold = new IVTCAutoThreshold(client, x, y));
	show_window();
	flush();
	return 0;
}
Exemple #20
0
void AC3ConfigAudio::create_objects()
{
	int x = 10, y = 10;
	int x1 = 150;
	lock_window("AC3ConfigAudio::create_objects");
	add_tool(new BC_Title(x, y, "Bitrate (kbps):"));
	AC3ConfigAudioBitrate *bitrate;
	add_tool(bitrate =
		new AC3ConfigAudioBitrate(this,
			x1,
			y));
	bitrate->create_objects();

	add_subwindow(new BC_OKButton(this));
	show_window(1);
	unlock_window();
}
void VWindowGUI::update_labels()
{
	EDL *edl = vwindow->get_edl();
	int output = 0;

	for(Label *current = edl->labels->first;
		current;
		current = NEXT)
	{
		long pixel = (long)((current->position - edl->local_session->view_start) / edl->local_session->zoom_sample);

		if(pixel >= 0 && pixel < mwindow->theme->vtimebar_w)
		{
// Create new label
			if(output >= labels.total)
			{
				LabelGUI *new_label;
				add_subwindow(new_label = new LabelGUI(mwindow, this, pixel, 0, current->position));
				labels.append(new_label);
			}
			else
// Reposition old label
			if(labels.values[output]->pixel != pixel)
			{
				labels.values[output]->pixel = pixel;
				labels.values[output]->position = current->position;
				labels.values[output]->reposition();
			}

			if(mwindow->edl->local_session->get_selectionstart(1) <= current->position &&
				mwindow->edl->local_session->get_selectionend(1) >= current->position)
				labels.values[output]->update(1);
			else
			if(labels.values[output]->get_value())
				labels.values[output]->update(0);
			output++;
		}
	}

// Delete excess labels
	while(labels.total > output)
	{
		labels.remove_object();
	}
}
Exemple #22
0
void MButtons::create_objects()
{
	int x = 3, y = 0;
	draw_top_background(get_parent(), 0, 0, get_w(), get_h());
	transport = new MainTransport(mwindow, this, x, y);
	transport->create_objects();
	transport->set_engine(mwindow->cwindow->playback_engine);
	x += transport->get_w();
	x += mwindow->theme->mtransport_margin;

	edit_panel = new MainEditing(mwindow, this, x, y);

	edit_panel->create_objects();
	
	x += edit_panel->get_w();
	ffmpeg_toggle = new MainFFMpegToggle(mwindow, this, get_w()-30, 0);
	add_subwindow(ffmpeg_toggle);
	flash(0);
}
Exemple #23
0
void DenoiseVideoWindow::create_objects()
{
	int x = 10, y = 10;
	add_subwindow(new BC_Title(x, y, _("Frames to accumulate:")));
	y += 20;
	add_subwindow(frames = new DenoiseVideoFrames(plugin, x, y));
	y += 30;
	add_subwindow(new BC_Title(x, y, _("Threshold:")));
	y += 20;
	add_subwindow(threshold = new DenoiseVideoThreshold(plugin, x, y));
	y += 40;
	add_subwindow(do_r = new DenoiseVideoToggle(plugin, this, x, y, &plugin->config.do_r, _("Red")));
	y += 30;
	add_subwindow(do_g = new DenoiseVideoToggle(plugin, this, x, y, &plugin->config.do_g, _("Green")));
	y += 30;
	add_subwindow(do_b = new DenoiseVideoToggle(plugin, this, x, y, &plugin->config.do_b, _("Blue")));
	y += 30;
	add_subwindow(do_a = new DenoiseVideoToggle(plugin, this, x, y, &plugin->config.do_a, _("Alpha")));
	show_window();
	flush();
}
Exemple #24
0
void HueWindow::create_objects()
{
	int x = 10, y = 10, x1 = 100;
	add_subwindow(new BC_Title(x, y, _("Hue:")));
	add_subwindow(hue = new HueSlider(plugin, x1, y, 200));
	y += 30;
	add_subwindow(new BC_Title(x, y, _("Saturation:")));
	add_subwindow(saturation = new SaturationSlider(plugin, x1, y, 200));
	y += 30;
	add_subwindow(new BC_Title(x, y, _("Value:")));
	add_subwindow(value = new ValueSlider(plugin, x1, y, 200));
	show_window();
	flush();
}
Exemple #25
0
int PluginPrefs::create_objects()
{
	char string[1024];
	int x = 5, y = 5;

// 	add_border(get_resources()->get_bg_shadow1(),
// 		get_resources()->get_bg_shadow2(),
// 		get_resources()->get_bg_color(),
// 		get_resources()->get_bg_light2(),
// 		get_resources()->get_bg_light1());

	add_subwindow(new BC_Title(x, y, _("Plugin Set"), LARGEFONT, BLACK));
	y += 35;
	add_subwindow(new BC_Title(x, y, _("Look for global plugins here"), MEDIUMFONT, BLACK));
	y += 20;
	add_subwindow(ipathtext = new PluginGlobalPathText(x, y, pwindow, pwindow->thread->preferences->global_plugin_dir));
	add_subwindow(ipath = new BrowseButton(mwindow,
		this,
		ipathtext, 
		215, 
		y, 
		pwindow->thread->preferences->global_plugin_dir, 
		_("Global Plugin Path"), 
		_("Select the directory for plugins"), 
		1));
	
	y += 35;
	add_subwindow(new BC_Title(x, y, _("Look for personal plugins here"), MEDIUMFONT, BLACK));
	y += 20;
	add_subwindow(lpathtext = new PluginLocalPathText(x, y, pwindow, pwindow->thread->preferences->local_plugin_dir));
	add_subwindow(lpath = new BrowseButton(mwindow,
		this,
		lpathtext, 
		215, 
		y, 
		pwindow->thread->preferences->local_plugin_dir, 
		_("Personal Plugin Path"), 
		_("Select the directory for plugins"), 
		1));


	return 0;
}
void ManualGotoWindow::create_objects()
{
    int x = 76, y = 5;
    int x1 = x;
    int boxwidth = 26;

    BC_Title *title;
    add_subwindow(title = new BC_Title(x1 - 2, y, _("hour  min     sec     msec"), SMALLFONT));
    y += title->get_h() + 3;

    add_subwindow(signtitle = new BC_Title(x1 - 17, y, "=", LARGEFONT));
    add_subwindow(boxhours = new ManualGotoNumber(this, x1, y, 16, 0, 9, 1));
    x1 += boxhours->get_w() + 4;
    add_subwindow(boxminutes = new ManualGotoNumber(this, x1, y, 26, 0, 59, 2));
    x1 += boxminutes->get_w() + 4;
    add_subwindow(boxseconds = new ManualGotoNumber(this, x1, y, 26, 0, 59, 2));
    x1 += boxseconds->get_w() + 4;
    add_subwindow(boxmsec = new ManualGotoNumber(this, x1, y, 34, 0, 999, 3));
    y += boxhours->get_h() + 10;

    add_subwindow(new BC_OKButton(this));
    add_subwindow(new BC_CancelButton(this));
}
Exemple #27
0
void WhirlWindow::create_objects()
{
	int x = 10, y = 10;
	add_subwindow(new BC_Title(x, y, _("Radius")));
	y += 20;
	add_subwindow(radius = new WhirlRadius(plugin, x, y));
	y += 40;
	add_subwindow(new BC_Title(x, y, _("Pinch")));
	y += 20;
	add_subwindow(pinch = new WhirlPinch(plugin, x, y));
	y += 40;
	add_subwindow(new BC_Title(x, y, _("Angle")));
	y += 20;
	add_subwindow(angle = new WhirlAngle(plugin, x, y));

	show_window();
	flush();
}
Exemple #28
0
void SoundLevelWindow::create_objects()
{
//printf("SoundLevelWindow::create_objects 1\n");
	int x = 10, y = 10;


	add_subwindow(new BC_Title(x, y, _("Duration (seconds):")));
	add_subwindow(duration = new SoundLevelDuration(plugin, x + 150, y));
	y += 35;
	add_subwindow(new BC_Title(x, y, _("Max soundlevel (dB):")));
	add_subwindow(soundlevel_max = new BC_Title(x + 150, y, "0.0"));
	y += 35;
	add_subwindow(new BC_Title(x, y, _("RMS soundlevel (dB):")));
	add_subwindow(soundlevel_rms = new BC_Title(x + 150, y, "0.0"));

	show_window();
	flush();
//printf("SoundLevelWindow::create_objects 2\n");
}
Exemple #29
0
void GradientWindow::update_shape()
{
	int x = shape_x, y = shape_y;

	if(plugin->config.shape == GradientConfig::LINEAR)
	{
		delete center_x_title;
		delete center_y_title;
		delete center_x;
		delete center_y;
		center_x_title = 0;
		center_y_title = 0;
		center_x = 0;
		center_y = 0;

		if(!angle)
		{
			add_subwindow(angle_title = new BC_Title(x, y, _("Angle:")));
			add_subwindow(angle = new GradientAngle(plugin, x + angle_title->get_w() + 10, y));
		}
	}
	else
	{
		delete angle_title;
		delete angle;
		angle_title = 0;
		angle = 0;
		if(!center_x)
		{
			add_subwindow(center_x_title = new BC_Title(x, y, _("Center X:")));
			add_subwindow(center_x = new GradientCenterX(plugin,
				x + center_x_title->get_w() + 10,
				y));
			x += center_x_title->get_w() + 10 + center_x->get_w() + 10;
			add_subwindow(center_y_title = new BC_Title(x, y, _("Center Y:")));
			add_subwindow(center_y = new GradientCenterY(plugin,
				x + center_y_title->get_w() + 10,
				y));
		}
	}
}
Exemple #30
0
void VocoderWindow::create_objects()
{
	int x = plugin->get_theme()->widget_border;
	int y = plugin->get_theme()->widget_border;
	BC_Title *title = 0;

	int x1 = x;
	int y1 = y;
	add_subwindow(title = new BC_Title(x, y, _("Wetness:")));
	int x2 = x + title->get_w() + plugin->get_theme()->widget_border;
	y += BC_Pot::calculate_h() + plugin->get_theme()->widget_border;
	add_subwindow(title = new BC_Title(x, y, _("Level:")));
	x2 = MAX(x2, x + title->get_w() + plugin->get_theme()->widget_border);

	x = x2;
	y = y1;
	add_subwindow(wetness = new VocoderWetness(plugin, x, y));
	y += wetness->get_h() + plugin->get_theme()->widget_border;
	add_subwindow(level = new VocoderLevel(plugin, x, y));
	y += level->get_h() + plugin->get_theme()->widget_border;

	x = x1;
	add_subwindow(title = new BC_Title(x, y, _("Carrier Track:")));
	output = new VocoderCarrier(plugin, 
		this, 
		x + title->get_w() + plugin->get_theme()->widget_border, 
		y);
	output->create_objects();
	y += output->get_h() + plugin->get_theme()->widget_border;

	add_subwindow(title = new BC_Title(x, y, _("Bands:")));
	bands = new VocoderBands(plugin, 
		this, 
		x + title->get_w() + plugin->get_theme()->widget_border, 
		y);
	bands->create_objects();
	y += bands->get_h() + plugin->get_theme()->widget_border;

	show_window();
}