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 |
|
|
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 |
|
|
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)) { |
616 |
return false; |
return false; |
617 |
} |
} |
618 |
|
|
619 |
sigc::signal<void> RegionChooser::signal_region_selected() |
sigc::signal<void>& RegionChooser::signal_region_selected() |
620 |
{ |
{ |
621 |
return region_selected; |
return region_selected; |
622 |
} |
} |
623 |
|
|
624 |
sigc::signal<void> RegionChooser::signal_instrument_changed() |
sigc::signal<void>& RegionChooser::signal_instrument_changed() |
625 |
{ |
{ |
626 |
return instrument_changed; |
return instrument_changed; |
627 |
} |
} |
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(); |
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(); |
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 |
|
} |