/[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 1265 by persson, Sun Jul 29 13:44:59 2007 UTC revision 1359 by schoenebeck, Sun Sep 30 18:30:52 2007 UTC
# 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());      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)
# Line 507  void DimRegionEdit::addProp(BoolEntryPlu Line 509  void DimRegionEdit::addProp(BoolEntryPlu
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)
# Line 517  void DimRegionEdit::addProp(LabelWidget& Line 521  void DimRegionEdit::addProp(LabelWidget&
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    
# Line 525  void DimRegionEdit::set_dim_region(gig:: Line 531  void DimRegionEdit::set_dim_region(gig::
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    
# Line 576  void DimRegionEdit::set_dim_region(gig:: Line 594  void DimRegionEdit::set_dim_region(gig::
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);
# Line 616  void DimRegionEdit::set_dim_region(gig:: Line 670  void DimRegionEdit::set_dim_region(gig::
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);
# Line 791  void DimRegionEdit::loop_enabled_toggled Line 849  void DimRegionEdit::loop_enabled_toggled
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();
# Line 812  void DimRegionEdit::updateLoopElements() Line 872  void DimRegionEdit::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);
# Line 853  void DimRegionEdit::updateLoopElements() Line 913  void DimRegionEdit::updateLoopElements()
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      );      );
# Line 865  void DimRegionEdit::loop_infinite_toggle Line 926  void DimRegionEdit::loop_infinite_toggle
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
# Line 894  bool DimRegionEdit::set_sample(gig::Samp Line 961  bool DimRegionEdit::set_sample(gig::Samp
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    }

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

  ViewVC Help
Powered by ViewVC