X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fassetedit.C;h=ad809f614e610a45a10727474fe55b6286786dfb;hp=9d878072aca702bd3621865c1587ed1f48ec4a6b;hb=b9f98da8f1cd8b7b31ead02fa41f299b56cac3da;hpb=3b4d085f4235e6313c25871877180a1a989e5b9f diff --git a/cinelerra-5.1/cinelerra/assetedit.C b/cinelerra-5.1/cinelerra/assetedit.C index 9d878072..ad809f61 100644 --- a/cinelerra-5.1/cinelerra/assetedit.C +++ b/cinelerra-5.1/cinelerra/assetedit.C @@ -76,33 +76,27 @@ AssetEdit::~AssetEdit() } -void AssetEdit::edit_asset(Indexable *indexable) +void AssetEdit::edit_asset(Indexable *indexable, int x, int y) { - if(this->indexable) - { - close_window(); - } - + close_window(); this->indexable = indexable; this->indexable->add_user(); + this->x = x; this->y = y; // Copy asset parameters into temporary storage for editing. - if(indexable->is_asset) - { + if( indexable->is_asset ) { changed_params->copy_from((Asset*)indexable, 0); } - else - { + else { EDL *nested_edl = (EDL*)indexable; - - strcpy(changed_params->path, nested_edl->path); + strcpy(changed_params->path, nested_edl->path); changed_params->sample_rate = nested_edl->session->sample_rate; - changed_params->channels = nested_edl->session->audio_channels; + changed_params->channels = nested_edl->session->audio_channels; //printf("AssetEdit::edit_asset %d %f\n", __LINE__, nested_edl->session->frame_rate); changed_params->frame_rate = nested_edl->session->frame_rate; - changed_params->width = nested_edl->session->output_w; - changed_params->height = nested_edl->session->output_h; + changed_params->width = nested_edl->session->output_w; + changed_params->height = nested_edl->session->output_h; } BC_DialogThread::start(); @@ -110,76 +104,53 @@ void AssetEdit::edit_asset(Indexable *indexable) void AssetEdit::handle_done_event(int result) { - if( !result ) { - changed_params->tcstart = ceil(indexable->get_frame_rate() * - (atoi(window->tc_hours_textbox->get_text()) * 3600 + - atoi(window->tc_minutes_textbox->get_text()) * 60 + - atoi(window->tc_seconds_textbox->get_text()))) + - atoi(window->tc_rest_textbox->get_text()); - } } void AssetEdit::handle_close_event(int result) { - if(!result) - { + if( !result ) { int changed = 0; Asset *asset = 0; EDL *nested_edl = 0; - if(indexable->is_asset) - { + if( indexable->is_asset ) { asset = (Asset*)indexable; - if(!changed_params->equivalent(*asset, 1, 1)) + if( !changed_params->equivalent(*asset, 1, 1, mwindow->edl) ) changed = 1; } - else - { + else { nested_edl = (EDL*)indexable; - if(strcmp(changed_params->path, nested_edl->path) -// || -// changed_params->sample_rate != nested_edl->session->sample_rate || -// !EQUIV(changed_params->frame_rate, nested_edl->session->frame_rate) - ) + if( strcmp(changed_params->path, nested_edl->path) +// || changed_params->sample_rate != nested_edl->session->sample_rate +// || !EQUIV(changed_params->frame_rate, nested_edl->session->frame_rate + ) changed = 1; } -//printf("AssetEdit::handle_close_event %d\n", __LINE__); - - if(changed) - { + if( changed ) { mwindow->gui->lock_window(); //printf("AssetEdit::handle_close_event %d\n", __LINE__); // Omit index status from copy since an index rebuild may have been // happening when new_asset was created but not be happening anymore. - if(asset) - { + if( asset ) { mwindow->remove_asset_from_caches(asset); //printf("AssetEdit::handle_close_event %d %f\n", __LINE__, asset->get_frame_rate()); asset->copy_from(changed_params, 0); //printf("AssetEdit::handle_close_event %d %d %d\n", __LINE__, changed_params->bits, asset->bits); } - else - { + else { strcpy(nested_edl->path, changed_params->path); // Other parameters can't be changed because they're defined in the other EDL -// nested_edl->session->frame_rate = changed_params->frame_rate; -// nested_edl->session->sample_rate = changed_params->sample_rate; +// nested_edl->session->frame_rate = changed_params->frame_rate; +// nested_edl->session->sample_rate = changed_params->sample_rate; } //printf("AssetEdit::handle_close_event %d\n", __LINE__); - mwindow->gui->update(0, - 2, - 0, - 0, - 0, - 0, - 0); + mwindow->gui->update(0, 2, 0, 0, 0, 0, 0); //printf("AssetEdit::handle_close_event %d\n", __LINE__); // Start index rebuilding - if( (asset && asset->audio_data) || nested_edl) - { + if( (asset && asset->audio_data) || nested_edl) { char source_filename[BCTEXTLEN]; char index_filename[BCTEXTLEN]; IndexFile::get_index_filename(source_filename, @@ -193,6 +164,7 @@ void AssetEdit::handle_close_event(int result) } mwindow->gui->unlock_window(); //printf("AssetEdit::handle_close_event %d\n", __LINE__); + mwindow->awindow->gui->update_picon(indexable); mwindow->awindow->gui->async_update_assets(); mwindow->restart_brender(); @@ -213,23 +185,25 @@ BC_Window* AssetEdit::new_gui() return window; } - - - - - - - +int AssetEdit::window_height() +{ + int h = 128 + 64; + if( indexable->have_audio() ) h += 200; + if( indexable->have_video() ) { + h += 210; + if( indexable->is_asset ) { + Asset *asset = (Asset *)indexable; + if( File::can_scale_input(asset) ) + h += 42; + } + } + return h; +} AssetEditWindow::AssetEditWindow(MWindow *mwindow, AssetEdit *asset_edit) : BC_Window(_(PROGRAM_NAME ": Asset Info"), - mwindow->gui->get_abs_cursor_x(1) - 400 / 2, - mwindow->gui->get_abs_cursor_y(1) - (128 + 64 + - (!asset_edit->indexable->have_audio() ? 0 : 180) + - (!asset_edit->indexable->have_video() ? 0 : 350)) / 2, - 450, (128 + 64 + - (!asset_edit->indexable->have_audio() ? 0 : 180) + - (!asset_edit->indexable->have_video() ? 0 : 350)), 0, 0, 1) + asset_edit->x - 450/2, asset_edit->y - asset_edit->window_height()/2, + 450, asset_edit->window_height(), 0, 0, 1) { this->mwindow = mwindow; this->asset_edit = asset_edit; @@ -239,7 +213,9 @@ AssetEditWindow::AssetEditWindow(MWindow *mwindow, AssetEdit *asset_edit) hilo = 0; lohi = 0; allow_edits = 0; - detail_thread = 0; + detail_dialog = 0; + win_width = 0; + win_height = 0; } @@ -249,8 +225,8 @@ AssetEditWindow::AssetEditWindow(MWindow *mwindow, AssetEdit *asset_edit) AssetEditWindow::~AssetEditWindow() { lock_window("AssetEditWindow::~AssetEditWindow"); - if(bitspopup) delete bitspopup; - if(detail_thread) delete detail_thread; + delete bitspopup; + delete detail_dialog; unlock_window(); } @@ -270,37 +246,33 @@ void AssetEditWindow::create_objects() Asset *asset = 0; EDL *nested_edl = 0; - if(asset_edit->indexable->is_asset) + if( asset_edit->indexable->is_asset ) asset = (Asset*)asset_edit->indexable; else nested_edl = (EDL*)asset_edit->indexable; - if(asset && asset->format == FILE_PCM) + if( asset && asset->format == FILE_PCM ) allow_edits = 1; else allow_edits = 0; lock_window("AssetEditWindow::create_objects"); - if(allow_edits) + if( allow_edits ) vmargin = 30; else vmargin = 20; add_subwindow(path_text = new AssetEditPathText(this, y)); - add_subwindow(path_button = new AssetEditPath(mwindow, - this, - path_text, - y, - asset_edit->indexable->path, - _(PROGRAM_NAME ": Asset path"), _("Select a file for this asset:"))); + add_subwindow(path_button = new AssetEditPath(mwindow, this, + path_text, y, asset_edit->indexable->path, + _(PROGRAM_NAME ": Asset path"), + _("Select a file for this asset:"))); y += 30; - if(asset) - { + if( asset ) { add_subwindow(new BC_Title(x, y, _("File format:"))); x = x2; - add_subwindow(new BC_Title(x, y, File::formattostr(mwindow->plugindb, - asset->format), + add_subwindow(new BC_Title(x, y, File::formattostr(asset->format), MEDIUMFONT, mwindow->theme->assetedit_color)); x = x1; @@ -313,9 +285,8 @@ void AssetEditWindow::create_objects() add_subwindow(new BC_Title(x2, y, string, MEDIUMFONT, mwindow->theme->assetedit_color)); - if(asset->format == FILE_MPEG || asset->format == FILE_FFMPEG) - { - detail_thread = new DetailAssetThread(mwindow); + if( asset->format == FILE_MPEG || asset->format == FILE_FFMPEG ) { + detail_dialog = new DetailAssetDialog(mwindow); BC_GenericButton *detail = new DetailAssetButton(this, x2+120, y); add_subwindow(detail); } @@ -327,12 +298,12 @@ void AssetEditWindow::create_objects() y += 20; x = x1; - if(asset->audio_length > 0) + if( asset->audio_length > 0 ) length = (double)asset->audio_length / asset->sample_rate; - if(asset->video_length > 0) + if( asset->video_length > 0 ) length = MAX(length, (double)asset->video_length / asset->frame_rate); int64_t bitrate; - if(!EQUIV(length, 0)) + if( !EQUIV(length, 0) ) bitrate = (int64_t)(bytes * 8 / length); else bitrate = bytes; @@ -346,8 +317,7 @@ void AssetEditWindow::create_objects() x = x1; } - if((asset && asset->audio_data) || nested_edl) - { + if( (asset && asset->audio_data) || nested_edl ) { add_subwindow(new BC_Bar(x, y, get_w() - x * 2)); y += 5; @@ -355,10 +325,8 @@ void AssetEditWindow::create_objects() y += 30; - if(asset) - { - if(asset->get_compression_text(1, 0)) - { + if( asset ) { + if( asset->get_compression_text(1, 0) ) { add_subwindow(new BC_Title(x, y, _("Compression:"))); x = x2; add_subwindow(new BC_Title(x, @@ -375,8 +343,7 @@ void AssetEditWindow::create_objects() sprintf(string, "%d", asset_edit->changed_params->channels); x = x2; - if(allow_edits) - { + if( allow_edits ) { BC_TumbleTextBox *textbox = new AssetEditChannels(this, string, x, @@ -384,8 +351,7 @@ void AssetEditWindow::create_objects() textbox->create_objects(); y += vmargin; } - else - { + else { add_subwindow(new BC_Title(x, y, string, MEDIUMFONT, mwindow->theme->assetedit_color)); y += 20; } @@ -395,36 +361,26 @@ void AssetEditWindow::create_objects() sprintf(string, "%d", asset_edit->changed_params->sample_rate); x = x2; - if(asset) - { + if( asset ) { BC_TextBox *textbox; add_subwindow(textbox = new AssetEditRate(this, string, x, y)); x += textbox->get_w(); add_subwindow(new SampleRatePulldown(mwindow, textbox, x, y)); } - else - { + else { add_subwindow(new BC_Title(x, y, string, MEDIUMFONT, mwindow->theme->assetedit_color)); } y += 30; x = x1; - if(asset) - { + if( asset ) { add_subwindow(new BC_Title(x, y, _("Bits:"))); x = x2; - if(allow_edits) - { - bitspopup = new BitsPopup(this, - x, - y, + if( allow_edits ) { + bitspopup = new BitsPopup(this, x, y, &asset_edit->changed_params->bits, - 1, - 1, - 1, - 0, - 1); + 1, 1, 1, 0, 1); bitspopup->create_objects(); } else @@ -437,7 +393,7 @@ void AssetEditWindow::create_objects() sprintf(string, "%d", asset->header); x = x2; - if(allow_edits) + if( allow_edits ) add_subwindow(new AssetEditHeader(this, string, x, y)); else add_subwindow(new BC_Title(x, y, string, MEDIUMFONT, mwindow->theme->assetedit_color)); @@ -447,7 +403,7 @@ void AssetEditWindow::create_objects() add_subwindow(new BC_Title(x, y, _("Byte order:"))); - if(allow_edits) + if( allow_edits ) { x = x2; @@ -462,10 +418,9 @@ void AssetEditWindow::create_objects() y)); y += vmargin; } - else - { + else { x = x2; - if(asset->byte_order) + if( asset->byte_order ) add_subwindow(new BC_Title(x, y, _("Lo-Hi"), MEDIUMFONT, mwindow->theme->assetedit_color)); else add_subwindow(new BC_Title(x, y, _("Hi-Lo"), MEDIUMFONT, mwindow->theme->assetedit_color)); @@ -474,14 +429,12 @@ void AssetEditWindow::create_objects() x = x1; - if(allow_edits) - { + if( allow_edits ) { // add_subwindow(new BC_Title(x, y, _("Values are signed:"))); add_subwindow(new AssetEditSigned(this, asset->signed_, x, y)); } - else - { - if(!asset->signed_ && asset->bits == 8) + else { + if( !asset->signed_ && asset->bits == 8 ) add_subwindow(new BC_Title(x, y, _("Values are unsigned"))); else add_subwindow(new BC_Title(x, y, _("Values are signed"))); @@ -492,8 +445,7 @@ void AssetEditWindow::create_objects() } x = x1; - if((asset && asset->video_data) || nested_edl) - { + if( (asset && asset->video_data) || nested_edl ) { add_subwindow(new BC_Bar(x, y, get_w() - x * 2)); y += 5; @@ -502,8 +454,7 @@ void AssetEditWindow::create_objects() x = x1; - if(asset && asset->get_compression_text(0,1)) - { + if( asset && asset->get_compression_text(0,1) ) { add_subwindow(new BC_Title(x, y, _("Compression:"))); x = x2; add_subwindow(new BC_Title(x, @@ -520,15 +471,13 @@ void AssetEditWindow::create_objects() sprintf(string, "%.4f", asset_edit->changed_params->frame_rate); //printf("AssetEditWindow::create_objects %d %f\n", __LINE__, asset_edit->changed_params->frame_rate); - if(asset) - { + if( asset ) { BC_TextBox *framerate; add_subwindow(framerate = new AssetEditFRate(this, string, x, y)); x += 105; add_subwindow(new FrameRatePulldown(mwindow, framerate, x, y)); } - else - { + else { add_subwindow(new BC_Title(x, y, string, MEDIUMFONT, mwindow->theme->assetedit_color)); } @@ -549,8 +498,7 @@ void AssetEditWindow::create_objects() add_subwindow(win_height); y += win_height->get_h() + 5; - if(asset && (asset->format == FILE_MPEG || asset->format == FILE_FFMPEG ) ) - { + if( asset && File::can_scale_input(asset) ) { y += 5; x = x1; add_subwindow(new BC_Title(x, y, _("Actual width:"))); @@ -577,11 +525,11 @@ void AssetEditWindow::create_objects() y += ilacefixoption_chkboxw->get_h() + 5; // -------------------- add_subwindow(title = new BC_Title(x1, y, _("Asset's interlacing:"))); - add_subwindow(textboxw = new AssetEditILacemode(this, "", BC_ILACE_ASSET_MODEDEFAULT, x2, y, 200)); + add_subwindow(textboxw = new AssetEditILacemode(this, "", ILACE_ASSET_MODEDEFAULT, x2, y, 200)); ilacefixoption_chkboxw->ilacemode_textbox = textboxw; add_subwindow(listboxw = new AssetEditInterlacemodePulldown(mwindow, textboxw, - &asset->interlace_mode, + &asset_edit->changed_params->interlace_mode, (ArrayList*)&mwindow->interlace_asset_modes, ilacefixoption_chkboxw, x2 + textboxw->get_w(), @@ -591,55 +539,17 @@ void AssetEditWindow::create_objects() // -------------------- add_subwindow(title = new BC_Title(x1, y, _("Interlace correction:"))); - add_subwindow(textboxw = new AssetEditILacefixmethod(this, "", BC_ILACE_FIXDEFAULT, x2, y, 200)); + add_subwindow(textboxw = new AssetEditILacefixmethod(this, "", ILACE_FIXDEFAULT, x2, y, 200)); ilacefixoption_chkboxw->ilacefixmethod_textbox = textboxw; add_subwindow(listboxw = new InterlacefixmethodPulldown(mwindow, textboxw, - &asset->interlace_fixmethod, + &asset_edit->changed_params->interlace_fixmethod, (ArrayList*)&mwindow->interlace_asset_fixmethods, x2 + textboxw->get_w(), y)); ilacefixoption_chkboxw->ilacefixmethod_listbox = listboxw; ilacefixoption_chkboxw->showhideotherwidgets(); y += textboxw->get_h() + 5; - - x = x1; - add_subwindow(new BC_Title(x, y, _("Reel Name:"))); - x = x2; - add_subwindow(new AssetEditReelName(this, x, y)); - y += 30; - - x = x1; - add_subwindow(new BC_Title(x, y, _("Reel Number:"))); - x = x2; - add_subwindow(new AssetEditReelNumber(this, x, y)); - y += 30; - - x = x1; - add_subwindow(new BC_Title(x, y, _("Time Code Start:"))); - x = x2; - -// Calculate values to enter into textboxes - char text[32], *tc = text; - Units::totext(tc, asset->tcstart / asset->frame_rate, - TIME_HMSF, asset->sample_rate, asset->frame_rate); - - const char *tc_hours = tc, *tc_minutes, *tc_seconds, *tc_rest; - tc = strchr(tc, ':'); *tc++ = 0; tc_minutes = tc; - tc = strchr(tc, ':'); *tc++ = 0; tc_seconds = tc; - tc = strchr(tc, ':'); *tc++ = 0; tc_rest = tc; - - int padw = BC_Title::calculate_w(this, ":", MEDIUMFONT); - int fldw = BC_Title::calculate_w(this, "00", MEDIUMFONT) + 5; - add_subwindow(tc_hours_textbox = new BC_TextBox(x, y, fldw, 1, tc_hours)); - add_subwindow(new BC_Title(x += tc_hours_textbox->get_w(), y, ":")); - add_subwindow(tc_minutes_textbox = new BC_TextBox(x += padw, y, fldw, 1, tc_minutes)); - add_subwindow(new BC_Title(x += tc_minutes_textbox->get_w(), y, ":")); - add_subwindow(tc_seconds_textbox = new BC_TextBox(x += padw, y , fldw, 1, tc_seconds)); - add_subwindow(new BC_Title(x += tc_seconds_textbox->get_w(), y, ":")); - add_subwindow(tc_rest_textbox = new BC_TextBox(x += 10, y, fldw, 1, tc_rest)); - - y += 30; } add_subwindow(new BC_OKButton(this)); @@ -650,7 +560,9 @@ void AssetEditWindow::create_objects() void AssetEditWindow::show_info_detail() { - detail_thread->start((Asset*)asset_edit->indexable); + int cur_x, cur_y; + get_abs_cursor(cur_x, cur_y, 0); + detail_dialog->start((Asset*)asset_edit->indexable, cur_x, cur_y); } @@ -704,7 +616,7 @@ int AssetEditFRate::handle_event() Interlaceautofix::Interlaceautofix(MWindow *mwindow,AssetEditWindow *fwindow, int x, int y) : BC_CheckBox(x, y, - ((Asset *)fwindow->asset_edit->indexable)->interlace_autofixoption, + fwindow->asset_edit->changed_params->interlace_autofixoption, _("Automatically Fix Interlacing")) { this->fwindow = fwindow; @@ -717,7 +629,7 @@ Interlaceautofix::~Interlaceautofix() int Interlaceautofix::handle_event() { - Asset *asset = (Asset *)fwindow->asset_edit->indexable; + Asset *asset = fwindow->asset_edit->changed_params; asset->interlace_autofixoption = get_value(); showhideotherwidgets(); return 1; @@ -727,25 +639,23 @@ void Interlaceautofix::showhideotherwidgets() { int thevalue = get_value(); - Asset *asset = (Asset *)fwindow->asset_edit->indexable; - if (thevalue == BC_ILACE_AUTOFIXOPTION_AUTO) - { - this->ilacemode_textbox->enable(); - this->ilacemode_listbox->enable(); - this->ilacefixmethod_textbox->disable(); - this->ilacefixmethod_listbox->disable(); - int xx = ilaceautofixmethod(mwindow->edl->session->interlace_mode,asset->interlace_mode); - ilacefixmethod_to_text(string,xx); - this->ilacefixmethod_textbox->update(string); - } - if (thevalue == BC_ILACE_AUTOFIXOPTION_MANUAL) - { - this->ilacemode_textbox->disable(); - this->ilacemode_listbox->disable(); - this->ilacefixmethod_textbox->enable(); - this->ilacefixmethod_listbox->enable(); - ilacefixmethod_to_text(string,asset->interlace_fixmethod); - this->ilacefixmethod_textbox->update(string); + Asset *asset = fwindow->asset_edit->changed_params; + if( thevalue == ILACE_AUTOFIXOPTION_AUTO ) { + this->ilacemode_textbox->enable(); + this->ilacemode_listbox->enable(); + this->ilacefixmethod_textbox->disable(); + this->ilacefixmethod_listbox->disable(); + int xx = ilaceautofixmethod(mwindow->edl->session->interlace_mode,asset->interlace_mode); + ilacefixmethod_to_text(string, xx); + this->ilacefixmethod_textbox->update(string); + } + if( thevalue == ILACE_AUTOFIXOPTION_MANUAL ) { + this->ilacemode_textbox->disable(); + this->ilacemode_listbox->disable(); + this->ilacefixmethod_textbox->enable(); + this->ilacefixmethod_listbox->enable(); + ilacefixmethod_to_text(string, asset->interlace_fixmethod); + this->ilacefixmethod_textbox->update(string); } } @@ -788,7 +698,7 @@ AssetEditILaceautofixoption::AssetEditILaceautofixoption(AssetEditWindow *fwindo int AssetEditILaceautofixoption::handle_event() { - Asset *asset = (Asset *)fwindow->asset_edit->indexable; + Asset *asset = fwindow->asset_edit->changed_params; asset->interlace_autofixoption = ilaceautofixoption_from_text(get_text(), this->thedefault); return 1; } @@ -803,7 +713,7 @@ AssetEditILacemode::AssetEditILacemode(AssetEditWindow *fwindow, const char *tex int AssetEditILacemode::handle_event() { - Asset *asset = (Asset *)fwindow->asset_edit->indexable; + Asset *asset = fwindow->asset_edit->changed_params; asset->interlace_mode = ilacemode_from_text(get_text(),this->thedefault); return 1; } @@ -950,7 +860,7 @@ int AssetEditPathText::handle_event() AssetEditPath::AssetEditPath(MWindow *mwindow, AssetEditWindow *fwindow, BC_TextBox *textbox, int y, const char *text, const char *window_title, const char *window_caption) - : BrowseButton(mwindow, fwindow, textbox, 310, y, text, + : BrowseButton(mwindow->theme, fwindow, textbox, 310, y, text, window_title, window_caption, 0) { this->fwindow = fwindow; @@ -961,32 +871,11 @@ AssetEditPath::~AssetEditPath() {} - - -AssetEditFormat::AssetEditFormat(AssetEditWindow *fwindow, char* default_, int y) - : FormatPopup(fwindow->mwindow->plugindb, 90, y) -{ - this->fwindow = fwindow; -} -AssetEditFormat::~AssetEditFormat() -{ -} -int AssetEditFormat::handle_event() -{ - Asset *asset = fwindow->asset_edit->changed_params; - asset->format = File::strtoformat(fwindow->mwindow->plugindb, - get_selection(0, 0)->get_text()); - return 1; -} - - - - DetailAssetButton::DetailAssetButton(AssetEditWindow *fwindow, int x, int y) : BC_GenericButton(x, y, _("Detail")) { - this->fwindow = fwindow; - set_underline(0); + this->fwindow = fwindow; + set_underline(0); } DetailAssetButton::~DetailAssetButton() @@ -996,16 +885,16 @@ DetailAssetButton::~DetailAssetButton() int DetailAssetButton::handle_event() { fwindow->show_info_detail(); - return 1; + return 1; } -DetailAssetWindow::DetailAssetWindow(MWindow *mwindow, Asset *asset) +DetailAssetWindow::DetailAssetWindow(MWindow *mwindow, + DetailAssetDialog *detail_dialog, Asset *asset) : BC_Window(_("Asset Detail"), - mwindow->gui->get_abs_cursor_x(1) - 600/2, - mwindow->gui->get_abs_cursor_y(1) - 500/2, - 600, 500) + detail_dialog->x - 600/2, detail_dialog->y - 500/2, 600, 500) { this->mwindow = mwindow; + this->detail_dialog = detail_dialog; this->asset = asset; asset->add_user(); info[0] = 0; @@ -1018,26 +907,16 @@ DetailAssetWindow::~DetailAssetWindow() delete text; } -DetailAssetThread::DetailAssetThread(MWindow *mwindow) - : Thread(1, 0, 0) +DetailAssetDialog::DetailAssetDialog(MWindow *mwindow) + : BC_DialogThread() { this->mwindow = mwindow; dwindow = 0; } -DetailAssetThread::~DetailAssetThread() -{ - stop(); -} - -void DetailAssetThread::stop() +DetailAssetDialog::~DetailAssetDialog() { - if( Thread::running() ) { - dwindow->lock_window("DetailAssetThread::stop"); - dwindow->set_done(1); - dwindow->unlock_window(); - } - Thread::join(); + close_window(); } void DetailAssetWindow::create_objects() @@ -1048,15 +927,17 @@ void DetailAssetWindow::create_objects() strncpy(info,_("no info available"),len); if( !mwindow->preferences->get_asset_file_path(asset, file_name) ) { switch( asset->format ) { +#ifdef HAVE_LIBZMPEG case FILE_MPEG: FileMPEG::get_info(asset->path, file_name, &info[0],len); break; +#endif case FILE_FFMPEG: FileFFMPEG::get_info(asset->path, &info[0],len); break; } } - lock_window("DetailAssetThread::create_objects"); + lock_window("DetailAssetWindow::create_objects"); text = new BC_ScrollTextBox(this, x, y, get_w()-32, 23, info, -len); text->create_objects(); text->set_text_row(0); add_subwindow(new BC_OKButton(this)); @@ -1064,62 +945,18 @@ void DetailAssetWindow::create_objects() unlock_window(); } -void DetailAssetThread::start(Asset *asset) +void DetailAssetDialog::start(Asset *asset, int x, int y) { - stop(); - delete dwindow; - dwindow = new DetailAssetWindow(mwindow, asset); - Thread::start(); + close_window(); + this->asset = asset; + this->x = x; this->y = y; + BC_DialogThread::start(); } -void DetailAssetThread::run() +BC_Window *DetailAssetDialog::new_gui() { -// Get length from TOC + dwindow = new DetailAssetWindow(mwindow, this, asset); dwindow->create_objects(); - dwindow->run_window(); - delete dwindow; - dwindow = 0; -} - - - - - -AssetEditReelName::AssetEditReelName(AssetEditWindow *fwindow, int x, int y) - : BC_TextBox(x, y, 220, 1, - ((Asset *)fwindow->asset_edit->indexable)->reel_name, - 1, MEDIUMFONT, 1) -{ - this->fwindow = fwindow; + return dwindow; } -AssetEditReelName::~AssetEditReelName() -{ -} -int AssetEditReelName::handle_event() -{ - Asset *asset = fwindow->asset_edit->changed_params; - strcpy(asset->reel_name, get_text()); - return 1; -} - - - - - -AssetEditReelNumber::AssetEditReelNumber(AssetEditWindow *fwindow, int x, int y) - : BC_TextBox(x, y, 200, 1, ((Asset *)fwindow->asset_edit->indexable)->reel_number) -{ - this->fwindow = fwindow; -} -AssetEditReelNumber::~AssetEditReelNumber() -{ -} -int AssetEditReelNumber::handle_event() -{ - Asset *asset = fwindow->asset_edit->changed_params; - asset->reel_number = atoi(get_text()); - return 1; -} - -