/[svn]/gigedit/trunk/src/gigedit/dimregionedit.cpp
ViewVC logotype

Diff of /gigedit/trunk/src/gigedit/dimregionedit.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1261 by persson, Thu Jul 5 17:12:20 2007 UTC revision 1303 by persson, Sun Aug 26 09:29:52 2007 UTC
# Line 502  void DimRegionEdit::addProp(BoolEntry& b Line 502  void DimRegionEdit::addProp(BoolEntry& b
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,
# Line 804  void DimRegionEdit::updateLoopElements() Line 812  void DimRegionEdit::updateLoopElements()
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);
# Line 826  void DimRegionEdit::updateLoopElements() Line 834  void DimRegionEdit::updateLoopElements()
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          );          );
# Line 845  void DimRegionEdit::updateLoopElements() Line 853  void DimRegionEdit::updateLoopElements()
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      );      );
# Line 853  void DimRegionEdit::loop_infinite_toggle Line 862  void DimRegionEdit::loop_infinite_toggle
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    }

Legend:
Removed from v.1261  
changed lines
  Added in v.1303

  ViewVC Help
Powered by ViewVC