bool RegionChooser::on_button_press_event(GdkEventButton* event) { if (!instrument) return true; const int k = int(event->x / (get_width() - 1) * 128.0); if (event->type == GDK_BUTTON_PRESS) { if (event->y >= REGION_BLOCK_HEIGHT) { int velocity = (event->y >= REGION_BLOCK_HEIGHT + KEYBOARD_HEIGHT - 1) ? 127 : int(float(event->y - REGION_BLOCK_HEIGHT) / float(KEYBOARD_HEIGHT) * 128.0f) + 1; currentActiveKey = k; keyboard_key_hit_signal.emit(k, velocity); } } if (event->y >= REGION_BLOCK_HEIGHT) return true; if (event->type == GDK_BUTTON_PRESS && event->button == 3) { gig::Region* r = get_region(k); if (r) { region = r; queue_draw(); region_selected(); dimensionManager.set_region(region); popup_menu_inside_region->popup(event->button, event->time); } else { new_region_pos = k; popup_menu_outside_region->popup(event->button, event->time); } } else { if (is_in_resize_zone(event->x, event->y)) { get_window()->pointer_grab(false, Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK, Gdk::Cursor(Gdk::SB_H_DOUBLE_ARROW), event->time); resize.active = true; } else { gig::Region* r = get_region(k); if (r) { region = r; queue_draw(); region_selected(); dimensionManager.set_region(region); get_window()->pointer_grab(false, Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK, Gdk::Cursor(Gdk::FLEUR), event->time); move.active = true; move.from_x = event->x; move.pos = 0; } } } return true; }
void RegionChooser::set_instrument(gig::Instrument* instrument) { this->instrument = instrument; regions.update(instrument); region = regions.first(); queue_draw(); region_selected(); dimensionManager.set_region(region); }
void RegionChooser::delete_region() { instrument_struct_to_be_changed_signal.emit(instrument); instrument->DeleteRegion(region); instrument_struct_changed_signal.emit(instrument); regions.update(instrument); region = 0; queue_draw(); region_selected(); dimensionManager.set_region(region); instrument_changed(); }
void RegionChooser::add_region() { instrument_struct_to_be_changed_signal.emit(instrument); region = instrument->AddRegion(); region->SetKeyRange(new_region_pos, new_region_pos); instrument_struct_changed_signal.emit(instrument); regions.update(instrument); queue_draw(); region_selected(); dimensionManager.set_region(region); instrument_changed(); }
void MandelbrotShower::mouseReleaseEvent(QMouseEvent *e){ moving = false; update(); move_now = e->pos(); QPointF start(xmin + move_start.x()*xres, ymax - move_start.y()*yres); QPointF stop(xmin + move_now.x()*xres, ymax - move_now.y()*yres); QRectF new_rect(start, stop); QSize new_size; if (!lock_proportions){ new_size = size; if (size.width() < size.height()) new_size.setHeight(size.width()*fabs(new_rect.height()/new_rect.width())); else new_size.setWidth(size.height()*fabs(new_rect.width()/new_rect.height())); } if (!new_rect.isNull()) emit region_selected(new_rect, new_size); else if (!julia) emit julia_point(stop); }
void RegionChooser::on_dimension_manager_changed() { region_selected(); instrument_changed(); }
void RegionChooser::set_region(gig::Region* region) { this->region = region; queue_draw(); region_selected(); dimensionManager.set_region(region); }
bool RegionChooser::on_button_press_event(GdkEventButton* event) { if (!instrument) return true; const int w = get_width() - 1; const int k = x_to_key(event->x, w); if (event->type == GDK_BUTTON_PRESS) { if (event->y >= REGION_BLOCK_HEIGHT) { int velocity = (event->y >= REGION_BLOCK_HEIGHT + KEYBOARD_HEIGHT - 1) ? 127 : int(float(event->y - REGION_BLOCK_HEIGHT) / float(KEYBOARD_HEIGHT) * 128.0f) + 1; currentActiveKey = k; keyboard_key_hit_signal.emit(k, velocity); } } // left mouse button double click if (event->type == GDK_2BUTTON_PRESS && event->button == 1) { if (event->y < REGION_BLOCK_HEIGHT) { // show dimension manager dialog for this region manage_dimensions(); } } if (event->y >= REGION_BLOCK_HEIGHT) return true; if (event->type == GDK_BUTTON_PRESS && event->button == 3) { gig::Region* r = get_region(k); if (r) { region = r; queue_draw(); region_selected(); dimensionManager.set_region(region); popup_menu_inside_region->popup(event->button, event->time); } else { new_region_pos = k; popup_menu_outside_region->popup(event->button, event->time); } } else { if (is_in_resize_zone(event->x, event->y)) { #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 90) || GTKMM_MAJOR_VERSION < 2 get_window()->pointer_grab(false, Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK, Gdk::Cursor(Gdk::SB_H_DOUBLE_ARROW), event->time); #else Glib::wrap(event->device, true)->grab(get_window(), Gdk::OWNERSHIP_NONE, false, Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK, Gdk::Cursor::create(Gdk::SB_H_DOUBLE_ARROW), event->time); #endif resize.active = true; } else { gig::Region* r = get_region(k); if (r) { region = r; queue_draw(); region_selected(); dimensionManager.set_region(region); #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 90) || GTKMM_MAJOR_VERSION < 2 get_window()->pointer_grab(false, Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK, Gdk::Cursor(Gdk::FLEUR), event->time); #else Glib::wrap(event->device, true)->grab(get_window(), Gdk::OWNERSHIP_NONE, false, Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK, Gdk::Cursor::create(Gdk::FLEUR), event->time); #endif move.active = true; move.offset = event->x - key_to_x(region->KeyRange.low, w); } } } return true; }