/[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 1225 by schoenebeck, Sun Jun 10 10:56:11 2007 UTC revision 1265 by persson, Sun Jul 29 13:44:59 2007 UTC
# Line 413  DimRegionEdit::DimRegionEdit() : Line 413  DimRegionEdit::DimRegionEdit() :
413      eVCFResonanceController.signal_changed().connect(      eVCFResonanceController.signal_changed().connect(
414          sigc::mem_fun(*this, &DimRegionEdit::VCFResonanceController_changed) );          sigc::mem_fun(*this, &DimRegionEdit::VCFResonanceController_changed) );
415    
416      eCrossfade_in_start.signal_value_changed().connect(      eCrossfade_in_start.signal_changed_by_user().connect(
417          sigc::mem_fun(*this, &DimRegionEdit::crossfade1_changed));          sigc::mem_fun(*this, &DimRegionEdit::crossfade1_changed));
418      eCrossfade_in_end.signal_value_changed().connect(      eCrossfade_in_end.signal_changed_by_user().connect(
419          sigc::mem_fun(*this, &DimRegionEdit::crossfade2_changed));          sigc::mem_fun(*this, &DimRegionEdit::crossfade2_changed));
420      eCrossfade_out_start.signal_value_changed().connect(      eCrossfade_out_start.signal_changed_by_user().connect(
421          sigc::mem_fun(*this, &DimRegionEdit::crossfade3_changed));          sigc::mem_fun(*this, &DimRegionEdit::crossfade3_changed));
422      eCrossfade_out_end.signal_value_changed().connect(      eCrossfade_out_end.signal_changed_by_user().connect(
423          sigc::mem_fun(*this, &DimRegionEdit::crossfade4_changed));          sigc::mem_fun(*this, &DimRegionEdit::crossfade4_changed));
424    
425      eSampleLoopEnabled.signal_toggled().connect(      eSampleLoopEnabled.signal_toggled().connect(
426          sigc::mem_fun(*this, &DimRegionEdit::loop_enabled_toggled));          sigc::mem_fun(*this, &DimRegionEdit::loop_enabled_toggled));
427      eSampleLoopStart.signal_value_changed().connect(      eSampleLoopStart.signal_changed_by_user().connect(
428          sigc::mem_fun(*this, &DimRegionEdit::updateLoopElements));          sigc::mem_fun(*this, &DimRegionEdit::updateLoopElements));
429      eSampleLoopLength.signal_value_changed().connect(      eSampleLoopLength.signal_changed_by_user().connect(
430          sigc::mem_fun(*this, &DimRegionEdit::updateLoopElements));          sigc::mem_fun(*this, &DimRegionEdit::updateLoopElements));
431      eSampleLoopInfinite.signal_toggled().connect(      eSampleLoopInfinite.signal_toggled().connect(
432          sigc::mem_fun(*this, &DimRegionEdit::loop_infinite_toggled));          sigc::mem_fun(*this, &DimRegionEdit::loop_infinite_toggled));
# Line 499  void DimRegionEdit::addProp(BoolEntry& b Line 499  void DimRegionEdit::addProp(BoolEntry& b
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());
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)
# Line 508  void DimRegionEdit::addProp(LabelWidget& Line 517  void DimRegionEdit::addProp(LabelWidget&
517      table[pageno]->attach(prop.widget, 2, 3, rowno, rowno + 1,      table[pageno]->attach(prop.widget, 2, 3, rowno, rowno + 1,
518                            Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK);                            Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK);
519      rowno++;      rowno++;
520        prop.signal_changed_by_user().connect(dimreg_changed_signal.make_slot());
521  }  }
522    
523    
# Line 518  void DimRegionEdit::set_dim_region(gig:: Line 528  void DimRegionEdit::set_dim_region(gig::
528      set_sensitive(d);      set_sensitive(d);
529      if (!d) return;      if (!d) return;
530    
     update_gui = false;  
531      wSample->set_text(d->pSample ? d->pSample->pInfo->Name.c_str() : "NULL");      wSample->set_text(d->pSample ? d->pSample->pInfo->Name.c_str() : "NULL");
532      eEG1PreAttack.set_ptr(&d->EG1PreAttack);      eEG1PreAttack.set_ptr(&d->EG1PreAttack);
533      eEG1Attack.set_ptr(&d->EG1Attack);      eEG1Attack.set_ptr(&d->EG1Attack);
# Line 583  void DimRegionEdit::set_dim_region(gig:: Line 592  void DimRegionEdit::set_dim_region(gig::
592      eReleaseVelocityResponseCurve.set_ptr(&d->ReleaseVelocityResponseCurve);      eReleaseVelocityResponseCurve.set_ptr(&d->ReleaseVelocityResponseCurve);
593      eReleaseVelocityResponseDepth.set_ptr(&d->ReleaseVelocityResponseDepth);      eReleaseVelocityResponseDepth.set_ptr(&d->ReleaseVelocityResponseDepth);
594      eReleaseTriggerDecay.set_ptr(&d->ReleaseTriggerDecay);      eReleaseTriggerDecay.set_ptr(&d->ReleaseTriggerDecay);
595    
596        eCrossfade_in_start.set_ptr(0);
597        eCrossfade_in_end.set_ptr(0);
598        eCrossfade_out_start.set_ptr(0);
599        eCrossfade_out_end.set_ptr(0);
600      eCrossfade_in_start.set_ptr(&d->Crossfade.in_start);      eCrossfade_in_start.set_ptr(&d->Crossfade.in_start);
601      eCrossfade_in_end.set_ptr(&d->Crossfade.in_end);      eCrossfade_in_end.set_ptr(&d->Crossfade.in_end);
602      eCrossfade_out_start.set_ptr(&d->Crossfade.out_start);      eCrossfade_out_start.set_ptr(&d->Crossfade.out_start);
603      eCrossfade_out_end.set_ptr(&d->Crossfade.out_end);      eCrossfade_out_end.set_ptr(&d->Crossfade.out_end);
604    
605      ePitchTrack.set_ptr(&d->PitchTrack);      ePitchTrack.set_ptr(&d->PitchTrack);
606      eDimensionBypass.set_ptr(&d->DimensionBypass);      eDimensionBypass.set_ptr(&d->DimensionBypass);
607      ePan.set_ptr(&d->Pan);      ePan.set_ptr(&d->Pan);
# Line 607  void DimRegionEdit::set_dim_region(gig:: Line 622  void DimRegionEdit::set_dim_region(gig::
622      updateLoopElements();      updateLoopElements();
623    
624      VCFEnabled_toggled();      VCFEnabled_toggled();
   
     update_gui = true;  
625  }  }
626    
627  void DimRegionEdit::VCFEnabled_toggled()  void DimRegionEdit::VCFEnabled_toggled()
# Line 779  void DimRegionEdit::loop_enabled_toggled Line 792  void DimRegionEdit::loop_enabled_toggled
792              loop.LoopLength =              loop.LoopLength =
793                  (dimregion->pSample) ? dimregion->pSample->GetSize() : 0;                  (dimregion->pSample) ? dimregion->pSample->GetSize() : 0;
794              dimregion->AddSampleLoop(&loop);              dimregion->AddSampleLoop(&loop);
795                dimreg_changed_signal();
796          }          }
797      } else {      } else {
798          // delete ALL existing sample loops          if (dimregion->SampleLoops) {
799          while (dimregion->SampleLoops)              // delete ALL existing sample loops
800              dimregion->DeleteSampleLoop(&dimregion->pSampleLoops[0]);              while (dimregion->SampleLoops) {
801                    dimregion->DeleteSampleLoop(&dimregion->pSampleLoops[0]);
802                }
803                dimreg_changed_signal();
804            }
805      }      }
806      updateLoopElements();      updateLoopElements();
807  }  }
# Line 795  void DimRegionEdit::updateLoopElements() Line 813  void DimRegionEdit::updateLoopElements()
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);
816        eSampleLoopStart.set_ptr(0);
817        eSampleLoopLength.set_ptr(0);
818        eSampleLoopPlayCount.set_ptr(0);
819    
820      if (dimregion && dimregion->SampleLoops) {      if (dimregion && dimregion->SampleLoops) {
821          eSampleLoopStart.set_ptr(&dimregion->pSampleLoops[0].LoopStart);          eSampleLoopStart.set_ptr(&dimregion->pSampleLoops[0].LoopStart);
822          eSampleLoopLength.set_ptr(&dimregion->pSampleLoops[0].LoopLength);          eSampleLoopLength.set_ptr(&dimregion->pSampleLoops[0].LoopLength);
823          eSampleLoopType.set_ptr(&dimregion->pSampleLoops[0].LoopType);          eSampleLoopType.set_ptr(&dimregion->pSampleLoops[0].LoopType);
         eSampleLoopPlayCount.set_ptr(  
             (dimregion->pSample) ? &dimregion->pSample->LoopPlayCount : NULL  
         );  
824          eSampleLoopInfinite.set_active(          eSampleLoopInfinite.set_active(
825              dimregion->pSample && !dimregion->pSample->LoopPlayCount              dimregion->pSample && !dimregion->pSample->LoopPlayCount
826          );          );
827            // updated enabled state of loop play count widget
828            loop_infinite_toggled();
829    
830            eSampleLoopPlayCount.set_ptr(
831                (dimregion->pSample) ? &dimregion->pSample->LoopPlayCount : 0
832            );
833    
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          );          );
847      } else { // no sample loop(s)      } else { // no sample loop(s)
848          eSampleLoopStart.set_ptr(NULL);          eSampleLoopType.set_ptr(0);
849          eSampleLoopLength.set_ptr(NULL);          // updated enabled state of loop play count widget
850          eSampleLoopType.set_ptr(NULL);          loop_infinite_toggled();
         eSampleLoopPlayCount.set_ptr(NULL);  
851      }      }
     // updated enabled state of loop play count widget  
     loop_infinite_toggled();  
852  }  }
853    
854  void DimRegionEdit::loop_infinite_toggled() {  void DimRegionEdit::loop_infinite_toggled() {
# Line 838  void DimRegionEdit::loop_infinite_toggle Line 861  void DimRegionEdit::loop_infinite_toggle
861      else if (!eSampleLoopPlayCount.get_value())      else if (!eSampleLoopPlayCount.get_value())
862          eSampleLoopPlayCount.set_value(1);          eSampleLoopPlayCount.set_value(1);
863  }  }
864    
865    bool DimRegionEdit::set_sample(gig::Sample* sample)
866    {
867        if (dimregion) {
868            dimregion->pSample = sample;
869    
870            // copy sample information from Sample to DimensionRegion
871    
872            dimregion->UnityNote = sample->MIDIUnityNote;
873            dimregion->FineTune = sample->FineTune;
874    
875            int loops = sample->Loops ? 1 : 0;
876            while (dimregion->SampleLoops > loops) {
877                dimregion->DeleteSampleLoop(&dimregion->pSampleLoops[0]);
878            }
879            while (dimregion->SampleLoops < sample->Loops) {
880                DLS::sample_loop_t loop;
881                dimregion->AddSampleLoop(&loop);
882            }
883            if (loops) {
884                dimregion->pSampleLoops[0].Size = sizeof(DLS::sample_loop_t);
885                dimregion->pSampleLoops[0].LoopType = sample->LoopType;
886                dimregion->pSampleLoops[0].LoopStart = sample->LoopStart;
887                dimregion->pSampleLoops[0].LoopLength = sample->LoopEnd - sample->LoopStart + 1;
888            }
889    
890            // update ui
891            wSample->set_text(dimregion->pSample->pInfo->Name);
892            eUnityNote.set_ptr(&dimregion->UnityNote);
893            eFineTune.set_ptr(&dimregion->FineTune);
894            eSampleLoopEnabled.set_active(dimregion->SampleLoops);
895            updateLoopElements();
896    
897            dimreg_changed_signal();
898            return true;
899        }
900        return false;
901    }

Legend:
Removed from v.1225  
changed lines
  Added in v.1265

  ViewVC Help
Powered by ViewVC