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

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

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

revision 1303 by persson, Sun Aug 26 09:29:52 2007 UTC revision 1336 by schoenebeck, Sun Sep 9 21:31:20 2007 UTC
# Line 79  RegionChooser::RegionChooser() Line 79  RegionChooser::RegionChooser()
79      add_events(Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK |      add_events(Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK |
80                 Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK);                 Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK);
81    
82      dimensionManager.articulation_changed_signal.connect(      dimensionManager.region_to_be_changed_signal.connect(
83          sigc::mem_fun(*this, &RegionChooser::on_dimension_manager_changed)          region_to_be_changed_signal.make_slot()
84        );
85        dimensionManager.region_changed_signal.connect(
86            region_changed_signal.make_slot()
87        );
88        dimensionManager.region_changed_signal.connect(
89            sigc::hide(
90                sigc::mem_fun(*this, &RegionChooser::on_dimension_manager_changed)
91            )
92      );      );
93  }  }
94    
# Line 250  bool RegionChooser::on_button_release_ev Line 258  bool RegionChooser::on_button_release_ev
258    
259          if (resize.mode == resize.moving_high_limit) {          if (resize.mode == resize.moving_high_limit) {
260              if (resize.region->KeyRange.high != resize.pos - 1) {              if (resize.region->KeyRange.high != resize.pos - 1) {
261                  resize.region->KeyRange.high = resize.pos - 1;                  instrument_struct_to_be_changed_signal.emit(instrument);
262                  instrument_changed();                  resize.region->SetKeyRange(
263                        resize.region->KeyRange.low, // low
264                        resize.pos - 1 // high
265                    );
266                    instrument_changed.emit();
267                    instrument_struct_changed_signal.emit(instrument);
268              }              }
269          } else if (resize.mode == resize.moving_low_limit) {          } else if (resize.mode == resize.moving_low_limit) {
270              if (resize.region->KeyRange.low != resize.pos) {              if (resize.region->KeyRange.low != resize.pos) {
271                  resize.region->KeyRange.low = resize.pos;                  instrument_struct_to_be_changed_signal.emit(instrument);
272                  instrument_changed();                  resize.region->SetKeyRange(
273                        resize.pos, // low
274                        resize.region->KeyRange.high // high
275                    );
276                    instrument_changed.emit();
277                    instrument_struct_changed_signal.emit(instrument);
278              }              }
279          }          }
280    
# Line 269  bool RegionChooser::on_button_release_ev Line 287  bool RegionChooser::on_button_release_ev
287          move.active = false;          move.active = false;
288    
289          if (move.pos) {          if (move.pos) {
290              region->KeyRange.low += move.pos;              instrument_struct_to_be_changed_signal.emit(instrument);
291              region->KeyRange.high += move.pos;              region->SetKeyRange(
292                    region->KeyRange.low  + move.pos,
293              // find the r which is the first one to the right of region                  region->KeyRange.high + move.pos
294              // at its new position              );
295              gig::Region* r;              instrument_struct_changed_signal.emit(instrument);
             gig::Region* prev_region = 0;  
             for (r = instrument->GetFirstRegion() ; r ; r = instrument->GetNextRegion()) {  
                 if (r->KeyRange.low > region->KeyRange.low) break;  
                 prev_region = r;  
             }  
   
             // place region before r if it's not already there  
             if (prev_region != region) {  
                 instrument->MoveRegion(region, r);  
             }  
296          }          }
297    
298          if (is_in_resize_zone(event->x, event->y)) {          if (is_in_resize_zone(event->x, event->y)) {
# Line 645  void RegionChooser::show_region_properti Line 653  void RegionChooser::show_region_properti
653    
654  void RegionChooser::add_region()  void RegionChooser::add_region()
655  {  {
656      gig::Region* r;      instrument_struct_to_be_changed_signal.emit(instrument);
     for (r = instrument->GetFirstRegion() ; r ; r = instrument->GetNextRegion()) {  
         if (r->KeyRange.low > new_region_pos) break;  
     }  
657    
658      region = instrument->AddRegion();      region = instrument->AddRegion();
659      region->KeyRange.low = region->KeyRange.high = new_region_pos;      region->SetKeyRange(new_region_pos, new_region_pos);
660    
661        instrument_struct_changed_signal.emit(instrument);
662    
     instrument->MoveRegion(region, r);  
663      queue_draw();      queue_draw();
664      region_selected();      region_selected();
665      instrument_changed();      instrument_changed();
# Line 661  void RegionChooser::add_region() Line 667  void RegionChooser::add_region()
667    
668  void RegionChooser::delete_region()  void RegionChooser::delete_region()
669  {  {
670        instrument_struct_to_be_changed_signal.emit(instrument);
671      instrument->DeleteRegion(region);      instrument->DeleteRegion(region);
672        instrument_struct_changed_signal.emit(instrument);
673    
674      region = 0;      region = 0;
675      queue_draw();      queue_draw();
676      region_selected();      region_selected();
# Line 679  void RegionChooser::on_dimension_manager Line 688  void RegionChooser::on_dimension_manager
688      region_selected();      region_selected();
689      instrument_changed();      instrument_changed();
690  }  }
691    
692    sigc::signal<void, gig::Instrument*> RegionChooser::signal_instrument_struct_to_be_changed() {
693        return instrument_struct_to_be_changed_signal;
694    }
695    
696    sigc::signal<void, gig::Instrument*> RegionChooser::signal_instrument_struct_changed() {
697        return instrument_struct_changed_signal;
698    }
699    
700    sigc::signal<void, gig::Region*> RegionChooser::signal_region_to_be_changed() {
701        return region_to_be_changed_signal;
702    }
703    
704    sigc::signal<void, gig::Region*> RegionChooser::signal_region_changed_signal() {
705        return region_changed_signal;
706    }

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

  ViewVC Help
Powered by ViewVC