499 |
table[pageno]->attach(boolentry.widget, 1, 3, rowno, rowno + 1, |
table[pageno]->attach(boolentry.widget, 1, 3, rowno, rowno + 1, |
500 |
Gtk::FILL, Gtk::SHRINK); |
Gtk::FILL, Gtk::SHRINK); |
501 |
rowno++; |
rowno++; |
502 |
boolentry.signal_changed_by_user().connect(dimreg_changed_signal.make_slot()); |
boolentry.signal_changed_by_user().connect( |
503 |
|
sigc::bind(dimreg_changed_signal.make_slot(), sigc::ref(this->dimregion)) |
504 |
|
); |
505 |
} |
} |
506 |
|
|
507 |
void DimRegionEdit::addProp(BoolEntryPlus6& boolentry) |
void DimRegionEdit::addProp(BoolEntryPlus6& boolentry) |
509 |
table[pageno]->attach(boolentry.widget, 1, 3, rowno, rowno + 1, |
table[pageno]->attach(boolentry.widget, 1, 3, rowno, rowno + 1, |
510 |
Gtk::FILL, Gtk::SHRINK); |
Gtk::FILL, Gtk::SHRINK); |
511 |
rowno++; |
rowno++; |
512 |
boolentry.signal_changed_by_user().connect(dimreg_changed_signal.make_slot()); |
boolentry.signal_changed_by_user().connect( |
513 |
|
sigc::bind(dimreg_changed_signal.make_slot(), sigc::ref(this->dimregion)) |
514 |
|
); |
515 |
} |
} |
516 |
|
|
517 |
void DimRegionEdit::addProp(LabelWidget& prop) |
void DimRegionEdit::addProp(LabelWidget& prop) |
521 |
table[pageno]->attach(prop.widget, 2, 3, rowno, rowno + 1, |
table[pageno]->attach(prop.widget, 2, 3, rowno, rowno + 1, |
522 |
Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK); |
Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK); |
523 |
rowno++; |
rowno++; |
524 |
prop.signal_changed_by_user().connect(dimreg_changed_signal.make_slot()); |
prop.signal_changed_by_user().connect( |
525 |
|
sigc::bind(dimreg_changed_signal.make_slot(), sigc::ref(this->dimregion)) |
526 |
|
); |
527 |
} |
} |
528 |
|
|
529 |
|
|
531 |
{ |
{ |
532 |
dimregion = d; |
dimregion = d; |
533 |
|
|
534 |
|
// disconnect connections to old dimregion, to avoid segfaults |
535 |
|
connection_eVCFCutoffController.disconnect(); |
536 |
|
connection_eVCFVelocityCurve.disconnect(); |
537 |
|
connection_eVCFVelocityScale.disconnect(); |
538 |
|
connection_eVCFVelocityDynamicRange.disconnect(); |
539 |
|
connection_eVelocityResponseCurve.disconnect(); |
540 |
|
connection_eVelocityResponseDepth.disconnect(); |
541 |
|
connection_eVelocityResponseCurveScaling.disconnect(); |
542 |
|
connection_eReleaseVelocityResponseCurve.disconnect(); |
543 |
|
connection_eReleaseVelocityResponseDepth.disconnect(); |
544 |
|
connection_eGain.disconnect(); |
545 |
|
|
546 |
set_sensitive(d); |
set_sensitive(d); |
547 |
if (!d) return; |
if (!d) return; |
548 |
|
|
594 |
eVCFEnabled.set_ptr(&d->VCFEnabled); |
eVCFEnabled.set_ptr(&d->VCFEnabled); |
595 |
eVCFType.set_ptr(&d->VCFType); |
eVCFType.set_ptr(&d->VCFType); |
596 |
eVCFCutoffController.set_ptr(&d->VCFCutoffController); |
eVCFCutoffController.set_ptr(&d->VCFCutoffController); |
597 |
|
connection_eVCFCutoffController = |
598 |
|
eVCFCutoffController.signal_value_changed().connect( |
599 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetVCFCutoffController) |
600 |
|
); |
601 |
eVCFCutoffControllerInvert.set_ptr(&d->VCFCutoffControllerInvert); |
eVCFCutoffControllerInvert.set_ptr(&d->VCFCutoffControllerInvert); |
602 |
eVCFCutoff.set_ptr(&d->VCFCutoff); |
eVCFCutoff.set_ptr(&d->VCFCutoff); |
603 |
eVCFVelocityCurve.set_ptr(&d->VCFVelocityCurve); |
eVCFVelocityCurve.set_ptr(&d->VCFVelocityCurve); |
604 |
|
connection_eVCFVelocityCurve = |
605 |
|
eVCFVelocityCurve.signal_value_changed().connect( |
606 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetVCFVelocityCurve) |
607 |
|
); |
608 |
eVCFVelocityScale.set_ptr(&d->VCFVelocityScale); |
eVCFVelocityScale.set_ptr(&d->VCFVelocityScale); |
609 |
|
connection_eVCFVelocityScale = |
610 |
|
eVCFVelocityScale.signal_value_changed().connect( |
611 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetVCFVelocityScale) |
612 |
|
); |
613 |
eVCFVelocityDynamicRange.set_ptr(&d->VCFVelocityDynamicRange); |
eVCFVelocityDynamicRange.set_ptr(&d->VCFVelocityDynamicRange); |
614 |
|
connection_eVCFVelocityDynamicRange = |
615 |
|
eVCFVelocityDynamicRange.signal_value_changed().connect( |
616 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetVCFVelocityDynamicRange) |
617 |
|
); |
618 |
eVCFResonance.set_ptr(&d->VCFResonance); |
eVCFResonance.set_ptr(&d->VCFResonance); |
619 |
eVCFResonanceDynamic.set_ptr(&d->VCFResonanceDynamic); |
eVCFResonanceDynamic.set_ptr(&d->VCFResonanceDynamic); |
620 |
eVCFResonanceController.set_ptr(&d->VCFResonanceController); |
eVCFResonanceController.set_ptr(&d->VCFResonanceController); |
621 |
eVCFKeyboardTracking.set_ptr(&d->VCFKeyboardTracking); |
eVCFKeyboardTracking.set_ptr(&d->VCFKeyboardTracking); |
622 |
eVCFKeyboardTrackingBreakpoint.set_ptr(&d->VCFKeyboardTrackingBreakpoint); |
eVCFKeyboardTrackingBreakpoint.set_ptr(&d->VCFKeyboardTrackingBreakpoint); |
623 |
eVelocityResponseCurve.set_ptr(&d->VelocityResponseCurve); |
eVelocityResponseCurve.set_ptr(&d->VelocityResponseCurve); |
624 |
|
connection_eVelocityResponseCurve = |
625 |
|
eVelocityResponseCurve.signal_value_changed().connect( |
626 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetVelocityResponseCurve) |
627 |
|
); |
628 |
eVelocityResponseDepth.set_ptr(&d->VelocityResponseDepth); |
eVelocityResponseDepth.set_ptr(&d->VelocityResponseDepth); |
629 |
|
connection_eVelocityResponseDepth = |
630 |
|
eVelocityResponseDepth.signal_value_changed().connect( |
631 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetVelocityResponseDepth) |
632 |
|
); |
633 |
eVelocityResponseCurveScaling.set_ptr(&d->VelocityResponseCurveScaling); |
eVelocityResponseCurveScaling.set_ptr(&d->VelocityResponseCurveScaling); |
634 |
|
connection_eVelocityResponseCurveScaling = |
635 |
|
eVelocityResponseCurveScaling.signal_value_changed().connect( |
636 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetVelocityResponseCurveScaling) |
637 |
|
); |
638 |
eReleaseVelocityResponseCurve.set_ptr(&d->ReleaseVelocityResponseCurve); |
eReleaseVelocityResponseCurve.set_ptr(&d->ReleaseVelocityResponseCurve); |
639 |
|
connection_eReleaseVelocityResponseCurve = |
640 |
|
eReleaseVelocityResponseCurve.signal_value_changed().connect( |
641 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetReleaseVelocityResponseCurve) |
642 |
|
); |
643 |
eReleaseVelocityResponseDepth.set_ptr(&d->ReleaseVelocityResponseDepth); |
eReleaseVelocityResponseDepth.set_ptr(&d->ReleaseVelocityResponseDepth); |
644 |
|
connection_eReleaseVelocityResponseDepth = |
645 |
|
eReleaseVelocityResponseDepth.signal_value_changed().connect( |
646 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetReleaseVelocityResponseDepth) |
647 |
|
); |
648 |
eReleaseTriggerDecay.set_ptr(&d->ReleaseTriggerDecay); |
eReleaseTriggerDecay.set_ptr(&d->ReleaseTriggerDecay); |
649 |
|
|
650 |
eCrossfade_in_start.set_ptr(0); |
eCrossfade_in_start.set_ptr(0); |
670 |
eUnityNote.set_ptr(&d->UnityNote); |
eUnityNote.set_ptr(&d->UnityNote); |
671 |
eFineTune.set_ptr(&d->FineTune); |
eFineTune.set_ptr(&d->FineTune); |
672 |
eGain.set_ptr(&d->Gain); |
eGain.set_ptr(&d->Gain); |
673 |
|
connection_eGain = |
674 |
|
eGain.signal_value_changed().connect( |
675 |
|
sigc::mem_fun(d, &gig::DimensionRegion::SetGain) |
676 |
|
); |
677 |
eGainPlus6.set_ptr(&d->Gain); |
eGainPlus6.set_ptr(&d->Gain); |
678 |
|
|
679 |
eSampleLoopEnabled.set_active(d->SampleLoops); |
eSampleLoopEnabled.set_active(d->SampleLoops); |
849 |
loop.LoopStart = 0; |
loop.LoopStart = 0; |
850 |
loop.LoopLength = |
loop.LoopLength = |
851 |
(dimregion->pSample) ? dimregion->pSample->GetSize() : 0; |
(dimregion->pSample) ? dimregion->pSample->GetSize() : 0; |
852 |
|
dimreg_to_be_changed_signal.emit(dimregion); |
853 |
dimregion->AddSampleLoop(&loop); |
dimregion->AddSampleLoop(&loop); |
854 |
dimreg_changed_signal(); |
dimreg_changed_signal.emit(dimregion); |
855 |
} |
} |
856 |
} else { |
} else { |
857 |
if (dimregion->SampleLoops) { |
if (dimregion->SampleLoops) { |
858 |
|
dimreg_to_be_changed_signal.emit(dimregion); |
859 |
// delete ALL existing sample loops |
// delete ALL existing sample loops |
860 |
while (dimregion->SampleLoops) { |
while (dimregion->SampleLoops) { |
861 |
dimregion->DeleteSampleLoop(&dimregion->pSampleLoops[0]); |
dimregion->DeleteSampleLoop(&dimregion->pSampleLoops[0]); |
862 |
} |
} |
863 |
dimreg_changed_signal(); |
dimreg_changed_signal.emit(dimregion); |
864 |
} |
} |
865 |
} |
} |
866 |
updateLoopElements(); |
updateLoopElements(); |
872 |
eSampleLoopStart.set_sensitive(active); |
eSampleLoopStart.set_sensitive(active); |
873 |
eSampleLoopLength.set_sensitive(active); |
eSampleLoopLength.set_sensitive(active); |
874 |
eSampleLoopType.set_sensitive(active); |
eSampleLoopType.set_sensitive(active); |
875 |
eSampleLoopInfinite.set_sensitive(active); |
eSampleLoopInfinite.set_sensitive(active && dimregion && dimregion->pSample); |
876 |
eSampleLoopStart.set_ptr(0); |
eSampleLoopStart.set_ptr(0); |
877 |
eSampleLoopLength.set_ptr(0); |
eSampleLoopLength.set_ptr(0); |
878 |
eSampleLoopPlayCount.set_ptr(0); |
eSampleLoopPlayCount.set_ptr(0); |
913 |
|
|
914 |
void DimRegionEdit::loop_infinite_toggled() { |
void DimRegionEdit::loop_infinite_toggled() { |
915 |
eSampleLoopPlayCount.set_sensitive( |
eSampleLoopPlayCount.set_sensitive( |
916 |
|
dimregion && dimregion->pSample && |
917 |
!eSampleLoopInfinite.get_active() && |
!eSampleLoopInfinite.get_active() && |
918 |
eSampleLoopEnabled.get_active() |
eSampleLoopEnabled.get_active() |
919 |
); |
); |
926 |
bool DimRegionEdit::set_sample(gig::Sample* sample) |
bool DimRegionEdit::set_sample(gig::Sample* sample) |
927 |
{ |
{ |
928 |
if (dimregion) { |
if (dimregion) { |
929 |
|
//TODO: we should better move the code from MainWindow::on_sample_label_drop_drag_data_received() here |
930 |
|
|
931 |
|
// currently commented because we're sending a similar signal in MainWindow::on_sample_label_drop_drag_data_received() |
932 |
|
//dimreg_to_be_changed_signal.emit(dimregion); |
933 |
|
|
934 |
|
gig::Sample* oldref = dimregion->pSample; |
935 |
dimregion->pSample = sample; |
dimregion->pSample = sample; |
936 |
|
|
937 |
// copy sample information from Sample to DimensionRegion |
// copy sample information from Sample to DimensionRegion |
961 |
eSampleLoopEnabled.set_active(dimregion->SampleLoops); |
eSampleLoopEnabled.set_active(dimregion->SampleLoops); |
962 |
updateLoopElements(); |
updateLoopElements(); |
963 |
|
|
964 |
dimreg_changed_signal(); |
sample_ref_changed_signal.emit(oldref, sample); |
965 |
|
// currently commented because we're sending a similar signal in MainWindow::on_sample_label_drop_drag_data_received() |
966 |
|
//dimreg_changed_signal.emit(dimregion); |
967 |
return true; |
return true; |
968 |
} |
} |
969 |
return false; |
return false; |
970 |
} |
} |
971 |
|
|
972 |
|
sigc::signal<void, gig::DimensionRegion*>& DimRegionEdit::signal_dimreg_to_be_changed() { |
973 |
|
return dimreg_to_be_changed_signal; |
974 |
|
} |
975 |
|
|
976 |
|
sigc::signal<void, gig::DimensionRegion*>& DimRegionEdit::signal_dimreg_changed() { |
977 |
|
return dimreg_changed_signal; |
978 |
|
} |
979 |
|
|
980 |
|
sigc::signal<void, gig::Sample*/*old*/, gig::Sample*/*new*/>& DimRegionEdit::signal_sample_ref_changed() { |
981 |
|
return sample_ref_changed_signal; |
982 |
|
} |