1942 |
for (std::set<gig::DimensionRegion*>::iterator itDimReg = dimregs.begin(); |
for (std::set<gig::DimensionRegion*>::iterator itDimReg = dimregs.begin(); |
1943 |
itDimReg != dimregs.end(); ++itDimReg) |
itDimReg != dimregs.end(); ++itDimReg) |
1944 |
{ |
{ |
1945 |
|
//NOTE: sample may be NULL ! |
1946 |
|
// (exactly: if called by nullOutSampleReference()) |
1947 |
result |= set_sample(*itDimReg, sample, copy_sample_unity, copy_sample_tune, copy_sample_loop); |
result |= set_sample(*itDimReg, sample, copy_sample_unity, copy_sample_tune, copy_sample_loop); |
1948 |
} |
} |
1949 |
return result; |
return result; |
1954 |
if (dimreg) { |
if (dimreg) { |
1955 |
//TODO: we should better move the code from MainWindow::on_sample_label_drop_drag_data_received() here |
//TODO: we should better move the code from MainWindow::on_sample_label_drop_drag_data_received() here |
1956 |
|
|
1957 |
|
//NOTE: sample may be NULL ! |
1958 |
|
// (exactly: if called by nullOutSampleReference()) |
1959 |
|
|
1960 |
// currently commented because we're sending a similar signal in MainWindow::on_sample_label_drop_drag_data_received() |
// currently commented because we're sending a similar signal in MainWindow::on_sample_label_drop_drag_data_received() |
1961 |
//DimRegionChangeGuard(this, dimregion); |
//DimRegionChangeGuard(this, dimregion); |
1962 |
|
|
1963 |
|
gig::Sample* oldref = dimreg->pSample; |
1964 |
|
|
1965 |
// make sure stereo samples always are the same in both |
// make sure stereo samples always are the same in both |
1966 |
// dimregs in the samplechannel dimension |
// dimregs in the samplechannel dimension |
1967 |
int nbDimregs = 1; |
int nbDimregs = 1; |
1968 |
gig::DimensionRegion* d[2] = { dimreg, 0 }; |
gig::DimensionRegion* d[2] = { dimreg, 0 }; |
1969 |
if (sample->Channels == 2) { |
if ((sample && sample->Channels == 2) || |
1970 |
|
(!sample && oldref && oldref->Channels == 2)) |
1971 |
|
{ |
1972 |
gig::Region* region = dimreg->GetParent(); |
gig::Region* region = dimreg->GetParent(); |
1973 |
|
|
1974 |
int bitcount = 0; |
int bitcount = 0; |
1994 |
} |
} |
1995 |
} |
} |
1996 |
|
|
|
gig::Sample* oldref = dimreg->pSample; |
|
|
|
|
1997 |
for (int i = 0 ; i < nbDimregs ; i++) { |
for (int i = 0 ; i < nbDimregs ; i++) { |
1998 |
d[i]->pSample = sample; |
d[i]->pSample = sample; |
1999 |
|
|
2022 |
|
|
2023 |
// update ui |
// update ui |
2024 |
update_model++; |
update_model++; |
2025 |
wSample->set_text(gig_to_utf8(dimreg->pSample->pInfo->Name)); |
wSample->set_text( |
2026 |
|
dimreg->pSample ? gig_to_utf8(dimreg->pSample->pInfo->Name) : |
2027 |
|
_("NULL") |
2028 |
|
); |
2029 |
eUnityNote.set_value(dimreg->UnityNote); |
eUnityNote.set_value(dimreg->UnityNote); |
2030 |
eFineTune.set_value(dimreg->FineTune); |
eFineTune.set_value(dimreg->FineTune); |
2031 |
eSampleLoopEnabled.set_value(dimreg->SampleLoops); |
eSampleLoopEnabled.set_value(dimreg->SampleLoops); |
2165 |
|
|
2166 |
void DimRegionEdit::nullOutSampleReference() { |
void DimRegionEdit::nullOutSampleReference() { |
2167 |
if (!dimregion) return; |
if (!dimregion) return; |
2168 |
gig::Sample* oldref = dimregion->pSample; |
set_sample(NULL/*sample*/, false, false, false); |
|
if (!oldref) return; |
|
|
|
|
|
DimRegionChangeGuard(this, dimregion); |
|
|
|
|
|
// in case currently assigned sample is a stereo one, then remove both |
|
|
// references (expected to be due to a "stereo dimension") |
|
|
gig::DimensionRegion* d[2] = { dimregion, NULL }; |
|
|
if (oldref->Channels == 2) { |
|
|
gig::Region* region = dimregion->GetParent(); |
|
|
{ |
|
|
int stereo_bit = 0; |
|
|
int bitcount = 0; |
|
|
for (int dim = 0 ; dim < region->Dimensions ; dim++) { |
|
|
if (region->pDimensionDefinitions[dim].dimension == gig::dimension_samplechannel) { |
|
|
stereo_bit = 1 << bitcount; |
|
|
break; |
|
|
} |
|
|
bitcount += region->pDimensionDefinitions[dim].bits; |
|
|
} |
|
|
|
|
|
if (stereo_bit) { |
|
|
int dimregno; |
|
|
for (dimregno = 0 ; dimregno < region->DimensionRegions ; dimregno++) { |
|
|
if (region->pDimensionRegions[dimregno] == dimregion) { |
|
|
break; |
|
|
} |
|
|
} |
|
|
d[0] = region->pDimensionRegions[dimregno & ~stereo_bit]; |
|
|
d[1] = region->pDimensionRegions[dimregno | stereo_bit]; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
if (d[0]) d[0]->pSample = NULL; |
|
|
if (d[1]) d[1]->pSample = NULL; |
|
|
|
|
|
// update UI elements |
|
|
set_dim_region(dimregion); |
|
|
|
|
|
sample_ref_changed_signal.emit(oldref, NULL); |
|
2169 |
} |
} |
2170 |
|
|
2171 |
void DimRegionEdit::onButtonSelectSamplePressed() { |
void DimRegionEdit::onButtonSelectSamplePressed() { |