502 |
boolentry.signal_changed_by_user().connect(dimreg_changed_signal.make_slot()); |
boolentry.signal_changed_by_user().connect(dimreg_changed_signal.make_slot()); |
503 |
} |
} |
504 |
|
|
505 |
|
void DimRegionEdit::addProp(BoolEntryPlus6& boolentry) |
506 |
|
{ |
507 |
|
table[pageno]->attach(boolentry.widget, 1, 3, rowno, rowno + 1, |
508 |
|
Gtk::FILL, Gtk::SHRINK); |
509 |
|
rowno++; |
510 |
|
boolentry.signal_changed_by_user().connect(dimreg_changed_signal.make_slot()); |
511 |
|
} |
512 |
|
|
513 |
void DimRegionEdit::addProp(LabelWidget& prop) |
void DimRegionEdit::addProp(LabelWidget& prop) |
514 |
{ |
{ |
515 |
table[pageno]->attach(prop.label, 1, 2, rowno, rowno + 1, |
table[pageno]->attach(prop.label, 1, 2, rowno, rowno + 1, |
812 |
eSampleLoopStart.set_sensitive(active); |
eSampleLoopStart.set_sensitive(active); |
813 |
eSampleLoopLength.set_sensitive(active); |
eSampleLoopLength.set_sensitive(active); |
814 |
eSampleLoopType.set_sensitive(active); |
eSampleLoopType.set_sensitive(active); |
815 |
eSampleLoopInfinite.set_sensitive(active); |
eSampleLoopInfinite.set_sensitive(active && dimregion && dimregion->pSample); |
816 |
eSampleLoopStart.set_ptr(0); |
eSampleLoopStart.set_ptr(0); |
817 |
eSampleLoopLength.set_ptr(0); |
eSampleLoopLength.set_ptr(0); |
818 |
eSampleLoopPlayCount.set_ptr(0); |
eSampleLoopPlayCount.set_ptr(0); |
834 |
// sample loop shall never be longer than the actual sample size |
// sample loop shall never be longer than the actual sample size |
835 |
eSampleLoopStart.set_upper( |
eSampleLoopStart.set_upper( |
836 |
(dimregion->pSample) |
(dimregion->pSample) |
837 |
? dimregion->pSample->GetSize() - |
? dimregion->pSample->SamplesTotal - |
838 |
dimregion->pSampleLoops[0].LoopLength |
dimregion->pSampleLoops[0].LoopLength |
839 |
: 0 |
: 0 |
840 |
); |
); |
841 |
eSampleLoopLength.set_upper( |
eSampleLoopLength.set_upper( |
842 |
(dimregion->pSample) |
(dimregion->pSample) |
843 |
? dimregion->pSample->GetSize() - |
? dimregion->pSample->SamplesTotal - |
844 |
dimregion->pSampleLoops[0].LoopStart |
dimregion->pSampleLoops[0].LoopStart |
845 |
: 0 |
: 0 |
846 |
); |
); |
853 |
|
|
854 |
void DimRegionEdit::loop_infinite_toggled() { |
void DimRegionEdit::loop_infinite_toggled() { |
855 |
eSampleLoopPlayCount.set_sensitive( |
eSampleLoopPlayCount.set_sensitive( |
856 |
|
dimregion && dimregion->pSample && |
857 |
!eSampleLoopInfinite.get_active() && |
!eSampleLoopInfinite.get_active() && |
858 |
eSampleLoopEnabled.get_active() |
eSampleLoopEnabled.get_active() |
859 |
); |
); |
862 |
else if (!eSampleLoopPlayCount.get_value()) |
else if (!eSampleLoopPlayCount.get_value()) |
863 |
eSampleLoopPlayCount.set_value(1); |
eSampleLoopPlayCount.set_value(1); |
864 |
} |
} |
865 |
|
|
866 |
|
bool DimRegionEdit::set_sample(gig::Sample* sample) |
867 |
|
{ |
868 |
|
if (dimregion) { |
869 |
|
dimregion->pSample = sample; |
870 |
|
|
871 |
|
// copy sample information from Sample to DimensionRegion |
872 |
|
|
873 |
|
dimregion->UnityNote = sample->MIDIUnityNote; |
874 |
|
dimregion->FineTune = sample->FineTune; |
875 |
|
|
876 |
|
int loops = sample->Loops ? 1 : 0; |
877 |
|
while (dimregion->SampleLoops > loops) { |
878 |
|
dimregion->DeleteSampleLoop(&dimregion->pSampleLoops[0]); |
879 |
|
} |
880 |
|
while (dimregion->SampleLoops < sample->Loops) { |
881 |
|
DLS::sample_loop_t loop; |
882 |
|
dimregion->AddSampleLoop(&loop); |
883 |
|
} |
884 |
|
if (loops) { |
885 |
|
dimregion->pSampleLoops[0].Size = sizeof(DLS::sample_loop_t); |
886 |
|
dimregion->pSampleLoops[0].LoopType = sample->LoopType; |
887 |
|
dimregion->pSampleLoops[0].LoopStart = sample->LoopStart; |
888 |
|
dimregion->pSampleLoops[0].LoopLength = sample->LoopEnd - sample->LoopStart + 1; |
889 |
|
} |
890 |
|
|
891 |
|
// update ui |
892 |
|
wSample->set_text(dimregion->pSample->pInfo->Name); |
893 |
|
eUnityNote.set_ptr(&dimregion->UnityNote); |
894 |
|
eFineTune.set_ptr(&dimregion->FineTune); |
895 |
|
eSampleLoopEnabled.set_active(dimregion->SampleLoops); |
896 |
|
updateLoopElements(); |
897 |
|
|
898 |
|
dimreg_changed_signal(); |
899 |
|
return true; |
900 |
|
} |
901 |
|
return false; |
902 |
|
} |