+
+HairlineItem::HairlineItem(KeyframeReticle *popup, int hairline)
+ : BC_MenuItem(popup->hairline_to_string(hairline))
+{
+ this->popup = popup;
+ this->hairline = hairline;
+}
+
+HairlineItem::~HairlineItem()
+{
+}
+
+int HairlineItem::handle_event()
+{
+ popup->pwindow->thread->redraw_overlays = 1;
+ popup->set_text(get_text());
+ *(popup->output) = hairline;
+ return 1;
+}
+
+
+KeyframeReticle::KeyframeReticle(PreferencesWindow *pwindow,
+ InterfacePrefs *iface_prefs, int x, int y, int *output)
+ : BC_PopupMenu(x, y, 220, hairline_to_string(*output))
+{
+ this->pwindow = pwindow;
+ this->iface_prefs = iface_prefs;
+ this->output = output;
+}
+
+KeyframeReticle::~KeyframeReticle()
+{
+}
+
+const char *KeyframeReticle::hairline_to_string(int type)
+{
+ switch( type ) {
+ case HAIRLINE_NEVER: return _("Never");
+ case HAIRLINE_DRAGGING: return _("Dragging");
+ case HAIRLINE_ALWAYS: return _("Always");
+ }
+ return _("Unknown");
+}
+
+void KeyframeReticle::create_objects()
+{
+ add_item(new HairlineItem(this, HAIRLINE_NEVER));
+ add_item(new HairlineItem(this, HAIRLINE_DRAGGING));
+ add_item(new HairlineItem(this, HAIRLINE_ALWAYS));
+}
+
+PrefsTrapSigSEGV::PrefsTrapSigSEGV(InterfacePrefs *subwindow, int x, int y)
+ : BC_CheckBox(x, y,
+ subwindow->pwindow->thread->preferences->trap_sigsegv,
+ _("trap sigSEGV"))
+{
+ this->subwindow = subwindow;
+}
+PrefsTrapSigSEGV::~PrefsTrapSigSEGV()
+{
+}
+int PrefsTrapSigSEGV::handle_event()
+{
+ subwindow->pwindow->thread->preferences->trap_sigsegv = get_value();
+ return 1;
+}
+
+PrefsTrapSigINTR::PrefsTrapSigINTR(InterfacePrefs *subwindow, int x, int y)
+ : BC_CheckBox(x, y,
+ subwindow->pwindow->thread->preferences->trap_sigintr,
+ _("trap sigINT"))
+{
+ this->subwindow = subwindow;
+}
+PrefsTrapSigINTR::~PrefsTrapSigINTR()
+{
+}
+int PrefsTrapSigINTR::handle_event()
+{
+ subwindow->pwindow->thread->preferences->trap_sigintr = get_value();
+ return 1;
+}
+
+
+void InterfacePrefs::start_probe_dialog()
+{
+ if( !file_probe_dialog )
+ file_probe_dialog = new FileProbeDialog(pwindow);
+ file_probe_dialog->start();
+}
+
+PrefsFileProbes::PrefsFileProbes(PreferencesWindow *pwindow,
+ InterfacePrefs *subwindow, int x, int y)
+ : BC_GenericButton(x, y, _("Probe Order"))
+{
+ this->pwindow = pwindow;
+ this->subwindow = subwindow;
+ set_tooltip(_("File Open Probe Ordering"));
+}
+
+int PrefsFileProbes::handle_event()
+{
+ subwindow->start_probe_dialog();
+ return 1;
+}
+
+
+PrefsYUV420P_DVDlace::PrefsYUV420P_DVDlace(PreferencesWindow *pwindow,
+ InterfacePrefs *subwindow, int x, int y)
+ : BC_CheckBox(x, y, pwindow->thread->preferences->dvd_yuv420p_interlace,
+ _("Use yuv420p dvd interlace format"))
+{
+ this->pwindow = pwindow;
+ this->subwindow = subwindow;
+}
+
+int PrefsYUV420P_DVDlace::handle_event()
+{
+ pwindow->thread->preferences->dvd_yuv420p_interlace = get_value();
+ return 1;
+}
+