mainindexes = 0;
mainprogress = 0;
brender = 0;
+ brender_active = 0;
+ strcpy(cin_lang,"en");
channeldb_buz = new ChannelDB;
channeldb_v4l2jpeg = new ChannelDB;
//file_server = 0;
MWindow::~MWindow()
{
run_lock->lock("MWindow::~MWindow");
+ stop_playback(1);
in_destructor = 1;
//printf("MWindow::~MWindow %d\n", __LINE__);
gui->stop_drawing();
defaults->load();
}
+
+void MWindow::check_language()
+{
+ char curr_lang[BCTEXTLEN]; curr_lang[0] = 0;
+ const char *env_lang = getenv("LANGUAGE");
+ if( !env_lang ) env_lang = getenv("LC_ALL");
+ if( !env_lang ) env_lang = getenv("LANG");
+ if( !env_lang ) {
+ snprintf(curr_lang, sizeof(curr_lang), "%s_%s-%s",
+ BC_Resources::language, BC_Resources::region, BC_Resources::encoding);
+ env_lang = curr_lang;
+ }
+ char last_lang[BCTEXTLEN]; last_lang[0] = 0;
+ defaults->get("LAST_LANG",last_lang);
+ if( strcmp(env_lang,last_lang)) {
+ printf("lang changed from '%s' to '%s'\n", last_lang, env_lang);
+ defaults->update("LAST_LANG",env_lang);
+ char plugin_path[BCTEXTLEN];
+ create_defaults_path(plugin_path, PLUGIN_FILE);
+ ::remove(plugin_path);
+ char ladspa_path[BCTEXTLEN];
+ create_defaults_path(ladspa_path, LADSPA_FILE);
+ ::remove(ladspa_path);
+ defaults->save();
+ }
+ if( strlen(env_lang) > 1 &&
+ ( env_lang[2] == 0 || env_lang[2] == '_' || env_lang[2] == '.' ) ) {
+ cin_lang[0] = env_lang[0]; cin_lang[1] = env_lang[1]; cin_lang[2] = 0;
+ }
+ else
+ strcpy(cin_lang, "en");
+}
+
void MWindow::get_plugin_path(char *path, const char *plug_dir, const char *fs_path)
{
char *base_path = FileSystem::basepath(fs_path), *bp = base_path;
len = !cp ? strlen(path) : cp-path;
char index_path[BCTEXTLEN], plugin_path[BCTEXTLEN];
memcpy(plugin_path, path, len); plugin_path[len] = 0;
+ if( cp ) ++len;
char *plugin_dir = FileSystem::basepath(plugin_path);
strcpy(plugin_path, plugin_dir); delete [] plugin_dir;
create_defaults_path(index_path, LADSPA_FILE);
BC_Trace::disable_locks();
}
BC_WindowBase::get_resources()->popupmenu_btnup = preferences->popupmenu_btnup;
+ BC_WindowBase::get_resources()->textbox_focus_policy = preferences->textbox_focus_policy;
}
void MWindow::clean_indexes()
void MWindow::init_tipwindow()
{
+ TipWindow::load_tips(cin_lang);
if( !twindow )
twindow = new TipWindow(this);
twindow->start();
edl->create_objects();
fill_preset_defaults(default_standard, edl->session);
edl->load_defaults(defaults);
+ edl->session->brender_start = edl->session->brender_end = 0;
edl->create_default_tracks();
edl->tracks->update_y_pixels(theme);
}
session->brender_end = 0;
brender_lock->unlock();
}
- if(brender) brender->restart(edl);
+ brender_active = 0;
+ stop_brender();
}
void MWindow::restart_brender()
{
//printf("MWindow::restart_brender 1\n");
+ if(!brender_active || !preferences->use_brender) return;
if(brender) brender->restart(edl);
}
return result;
}
-void MWindow::set_brender_range()
+void MWindow::set_brender_active(int v, int update)
{
- edl->session->brender_start = edl->local_session->get_selectionstart(1);
- edl->session->brender_end = edl->local_session->get_selectionend(1);
+ if( !preferences->use_brender ) v = 0;
+ brender_active = v;
+ gui->mainmenu->brender_active->set_checked(v);
+ if( v != 0 ) {
+ edl->session->brender_start = edl->local_session->get_selectionstart(1);
+ edl->session->brender_end = edl->local_session->get_selectionend(1);
- if(EQUIV(edl->session->brender_end, edl->session->brender_start))
- {
- edl->session->brender_end = edl->tracks->total_video_length();
+ if(EQUIV(edl->session->brender_end, edl->session->brender_start)) {
+ edl->session->brender_end = edl->tracks->total_video_length();
+ }
+ restart_brender();
+ }
+ else
+ stop_brender();
+ if( update ) {
+ gui->update_timebar(0);
+ gui->draw_overlays(1);
}
-
- restart_brender();
- gui->draw_overlays(1);
}
-
int MWindow::has_commercials()
{
return theme->use_commercials;
int locked = gui->get_window_lock();
if( locked ) gui->unlock_window();
- cwindow->playback_engine->que->send_command(STOP,
- CHANGE_NONE,
- 0,
- 0);
- cwindow->playback_engine->interrupt_playback(wait);
+ cwindow->playback_engine->stop_playback();
for(int i = 0; i < vwindows.size(); i++) {
VWindow *vwindow = vwindows[i];
if( !vwindow->is_running() ) continue;
- vwindow->playback_engine->que->send_command(STOP, CHANGE_NONE, 0, 0);
- vwindow->playback_engine->interrupt_playback(wait);
+ vwindow->playback_engine->stop_playback();
}
if( locked ) gui->lock_window("MWindow::stop_playback");
}
case FILE_UNRECOGNIZED_CODEC:
{
// Test index file
- IndexFile indexfile(this, new_asset);
- result = indexfile.open_index();
- if(!result)
- {
- indexfile.close_index();
+ { IndexFile indexfile(this, new_asset);
+ if( !(result = indexfile.open_index()) )
+ indexfile.close_index();
}
// Test existing EDLs
new_edls[j]->assets->get_asset(new_asset->path) :
edl->assets->get_asset(new_asset->path);
if( old_asset ) {
- *new_asset = *old_asset;
+ new_asset->copy_from(old_asset,1);
result = 0;
}
}
edl->local_session->loop_playback = 0;
edl->local_session->set_selectionstart(0);
edl->local_session->set_selectionend(0);
+ set_brender_active(0, 0);
fit_selection();
goto_start();
}
if(debug) PRINT_TRACE
default_standard = default_std();
init_defaults(defaults, config_path);
+ check_language();
init_preferences();
if(splash_window)
splash_window->operation->update(_("Initializing Plugins"));
// Needs mwindow to do GUI
gui->set_mwindow(this);
gui->open_plugin(0, preferences, edl, plugin);
- gui->show_gui();
plugin->show = 1;
+ gui->show_gui();
}
}
plugin_gui_lock->unlock();
else if( delete_tracks )
edl->tracks->delete_track(track);
}
+ edl->retrack();
edl->resample(old_framerate, session->frame_rate, TRACK_VIDEO);
}
if( !result && asset->audio_data && asset->channels > 0 ) {