*/
#include "aboutprefs.h"
+#include "appearanceprefs.h"
#include "asset.h"
#include "audiodevice.inc"
#include "bcsignals.h"
+#include "bctrace.h"
#include "cache.h"
#include "cplayback.h"
#include "cwindow.h"
-#define WIDTH 770
-#define HEIGHT 690
+#define WIDTH 800
+#define HEIGHT 700
PreferencesMenuitem::PreferencesMenuitem(MWindow *mwindow)
- : BC_MenuItem(_("Preferences..."), _("Shift+P"), 'P')
+ : BC_MenuItem(_("Preferences..."), _("Shift-P"), 'P')
{
this->mwindow = mwindow;
int scr_w = mwindow->gui->get_screen_w(0, -1);
int scr_h = mwindow->gui->get_screen_h(0, -1);
- int x = scr_x + scr_w / 2 - WIDTH / 2;
- int y = scr_h / 2 - HEIGHT / 2;
+ int w = WIDTH, h = HEIGHT;
+ int min_w = mwindow->theme->preferencescategory_x;
+ for(int i = 0; i < CATEGORIES; i++) {
+ min_w += PreferencesButton::calculate_w(mwindow->gui, category_to_text(i)) -
+ mwindow->theme->preferences_category_overlap;
+ }
+ if( w < min_w ) w = min_w;
+ int x = scr_x + scr_w / 2 - w / 2;
+ int y = scr_h / 2 - h / 2;
- window = new PreferencesWindow(mwindow, this, x, y);
+ window = new PreferencesWindow(mwindow, this, x, y, w, h);
window->create_objects();
mwindow->gui->unlock_window();
(preferences->force_uniprocessor != mwindow->preferences->force_uniprocessor) ||
this_playback_config->active_config != playback_config->active_config ||
(*this_aconfig != *aconfig) || (*this_vconfig != *vconfig) ||
- !preferences->brender_asset->equivalent(*mwindow->preferences->brender_asset, 0, 1);
+ !preferences->brender_asset->equivalent(*mwindow->preferences->brender_asset, 0, 1, edl);
+
+ if( preferences->yuv_color_space != mwindow->preferences->yuv_color_space ||
+ preferences->yuv_color_range != mwindow->preferences->yuv_color_range ) {
+ YUV::yuv.yuv_set_colors(
+ preferences->yuv_color_space,
+ preferences->yuv_color_range);
+ rerender = 1;
+ }
+
+ if( preferences->highlight_inverse != mwindow->preferences->highlight_inverse ) {
+ mwindow->gui->lock_window("PreferencesThread::apply_settings 0");
+ mwindow->gui->hide_cursor(0);
+ mwindow->gui->unlock_window();
+ redraw_overlays = 1;
+ }
+ PreferencesWindow *window = (PreferencesWindow*)get_gui();
+ if( window ) window->unlock_window();
+ mwindow->init_brender();
+ if( window ) window->lock_window("PreferencesThread::apply_settings 5");
if( strcmp(preferences->theme, mwindow->preferences->theme) != 0 )
mwindow->restart_status = -1; // reload, need new bcresources
+ if( strcmp(preferences->plugin_icons, mwindow->preferences->plugin_icons) != 0 )
+ mwindow->restart_status = -1;
mwindow->edl->copy_session(edl, 1);
mwindow->preferences->copy_from(preferences);
- mwindow->init_brender();
BC_Signals::set_catch_segv(mwindow->preferences->trap_sigsegv);
BC_Signals::set_catch_intr(mwindow->preferences->trap_sigintr);
+ BC_WindowBase::get_resources()->popupmenu_btnup = mwindow->preferences->popupmenu_btnup;
+ BC_WindowBase::get_resources()->grab_input_focus = mwindow->preferences->grab_input_focus;
+ BC_WindowBase::get_resources()->textbox_focus_policy = mwindow->preferences->textbox_focus_policy;
+ if( mwindow->preferences->trap_sigsegv || mwindow->preferences->trap_sigintr ) {
+ BC_Trace::enable_locks();
+ }
+ else {
+ BC_Trace::disable_locks();
+ }
mwindow->reset_android_remote();
- mwindow->gui->ffmpeg_toggle->update(mwindow->preferences->ffmpeg_early_probe);
+ int ffmpeg_early_probe = mwindow->preferences->get_file_probe_armed("FFMPEG_Early");
+ mwindow->gui->ffmpeg_toggle->update(ffmpeg_early_probe);
+ mwindow->gui->ffmpeg_toggle->set_tooltip(ffmpeg_early_probe ?
+ FFMPEG_EARLY_TIP : FFMPEG_LATE_TIP);
mwindow->gui->mainshbtns->load(mwindow->preferences);
- double tc_position =
- mwindow->edl->session->get_frame_offset() / mwindow->edl->session->frame_rate;
- mwindow->gui->mainclock->set_position_offset(tc_position);
//edl->session->recording_format->dump();
//mwindow->edl->session->recording_format->dump();
- for(int i = 0; i < mwindow->vwindows.size(); i++)
- {
+ for(int i = 0; i < mwindow->vwindows.size(); i++) {
VWindow *vwindow = mwindow->vwindows.get(i);
+ if( !vwindow->is_running() ) continue;
vwindow->gui->lock_window("PreferencesThread::apply_settings");
vwindow->gui->meters->change_format(edl->session->meter_format,
edl->session->min_meter_db,
if(redraw_overlays)
{
mwindow->gui->lock_window("PreferencesThread::apply_settings 2");
+ mwindow->gui->show_cursor(0);
mwindow->gui->draw_overlays(1);
mwindow->gui->unlock_window();
}
//printf("PreferencesThread::apply_settings 1\n");
// This doesn't stop and restart, only reloads the assets before
// the next play command.
- mwindow->cwindow->playback_engine->que->send_command(CURRENT_FRAME,
- CHANGE_ALL,
- mwindow->edl,
- 1);
+ mwindow->cwindow->refresh_frame(CHANGE_ALL, mwindow->edl);
//printf("PreferencesThread::apply_settings 10\n");
}
return _("Performance");
case INTERFACE:
return _("Interface");
+ case APPEARANCE:
+ return _("Appearance");
case ABOUT:
return _("About");
}
PreferencesWindow::PreferencesWindow(MWindow *mwindow,
- PreferencesThread *thread,
- int x,
- int y)
- : BC_Window(_(PROGRAM_NAME ": Preferences"),
- x,
- y,
- WIDTH,
- HEIGHT,
- (int)BC_INFINITY,
- (int)BC_INFINITY,
- 0,
- 0,
- 1)
+ PreferencesThread *thread, int x, int y, int w, int h)
+ : BC_Window(_(PROGRAM_NAME ": Preferences"), x,y, w,h,w,h, 1)
{
this->mwindow = mwindow;
this->thread = thread;
for(int i = 0; i < CATEGORIES; i++)
{
add_subwindow(category_button[i] = new PreferencesButton(mwindow,
- thread,
- x,
- y,
- i,
- thread->category_to_text(i),
+ 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")));
add_subwindow(dialog = new InterfacePrefs(mwindow, this));
break;
+ case PreferencesThread::APPEARANCE:
+ add_subwindow(dialog = new AppearancePrefs(mwindow, this));
+ break;
+
case PreferencesThread::ABOUT:
add_subwindow(dialog = new AboutPrefs(mwindow, this));
break;
//printf("PreferencesWindow::set_current_dialog %d\n", __LINE__);
dialog->create_objects();
//printf("PreferencesWindow::set_current_dialog %d\n", __LINE__);
+ dialog->lower_window();
dialog->show_window(0);
}
this->mwindow = mwindow;
this->thread = thread;
}
-
int PreferencesApply::handle_event()
{
thread->apply_settings();
return 1;
}
+int PreferencesApply::resize_event(int w, int h)
+{
+ reposition_window(w/2 - get_w()/2, h-get_h()-10);
+ return 1;
+}
this->mwindow = mwindow;
this->thread = thread;
}
-
int PreferencesOK::keypress_event()
{
if(get_keypress() == RETURN)
thread->window->set_done(0);
return 1;
}
+int PreferencesOK::resize_event(int w, int h)
+{
+ reposition_window(10, h-get_h()-10);
+ return 1;
+}
}
return 0;
}
-
int PreferencesCancel::handle_event()
{
thread->window->set_done(1);
return 1;
}
+int PreferencesCancel::resize_event(int w, int h)
+{
+ reposition_window(w-get_w()-10, h-get_h()-10);
+ return 1;
+}