seqroll::seqroll ( perform * a_perf, sequence * a_seq, int a_zoom, int a_snap, seqdata * a_seqdata_wid, seqevent * a_seqevent_wid, seqkeys * a_seqkeys_wid, int a_pos, Gtk::Adjustment * a_hadjust, Gtk::Adjustment * a_vadjust ) : m_gc (), m_window (), m_black (Gdk::Color("black")), m_white (Gdk::Color("white")), m_grey (Gdk::Color("gray")), m_dk_grey (Gdk::Color("gray50")), m_red (Gdk::Color("orange")), m_pixmap (), m_mainperf (a_perf), m_window_x (10), // why so small? m_window_y (10), m_current_x (0), m_current_y (0), m_drop_x (0), m_drop_y (0), m_vadjust (a_vadjust), m_hadjust (a_hadjust), m_background (), // another pixmap m_old (), m_selected (), m_seq (a_seq), m_clipboard (new sequence()), m_seqdata_wid (a_seqdata_wid), m_seqevent_wid (a_seqevent_wid), m_seqkeys_wid (a_seqkeys_wid), m_fruity_interaction (), m_seq24_interaction (), m_pos (a_pos), m_zoom (a_zoom), m_snap (a_snap), m_note_length (0), m_scale (0), m_key (0), m_selecting (false), m_moving (false), m_moving_init (false), m_growing (false), m_painting (false), m_paste (false), m_is_drag_pasting (false), m_is_drag_pasting_start (false), m_justselected_one (false), m_move_delta_x (0), m_move_delta_y (0), m_move_snap_offset_x (0), m_old_progress_x (0), m_scroll_offset_ticks (0), m_scroll_offset_key (0), m_scroll_offset_x (0), m_scroll_offset_y (0), m_background_sequence (0), m_drawing_background_seq(false), m_ignore_redraw (false) { Glib::RefPtr<Gdk::Colormap> colormap = get_default_colormap(); colormap->alloc_color(m_black); colormap->alloc_color(m_white); colormap->alloc_color(m_grey); colormap->alloc_color(m_dk_grey); colormap->alloc_color(m_red); // m_clipboard = new sequence(); add_events ( Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK | Gdk::FOCUS_CHANGE_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK | Gdk::SCROLL_MASK ); set_double_buffered(false); }
RegionChooser::RegionChooser() : activeKeyColor("red"), red("#8070ff"), grey1("grey69"), white("white"), black("black"), m_VirtKeybModeChoice(_("Virtual Keyboard Mode")), currentActiveKey(-1) { set_size_request(500, KEYBOARD_HEIGHT + REGION_BLOCK_HEIGHT); instrument = 0; region = 0; resize.active = false; move.active = false; cursor_is_resize = false; h1 = REGION_BLOCK_HEIGHT; // properties of the virtual keyboard { const char* choices[] = { _("normal"), _("chord"), 0 }; static const virt_keyboard_mode_t values[] = { VIRT_KEYBOARD_MODE_NORMAL, VIRT_KEYBOARD_MODE_CHORD }; m_VirtKeybModeChoice.set_choices(choices, values); m_VirtKeybModeChoice.set_value(VIRT_KEYBOARD_MODE_NORMAL); } m_VirtKeybVelocityLabelDescr.set_text(_("Note-On Velocity:")); m_VirtKeybVelocityLabel.set_text("-"); m_VirtKeybOffVelocityLabelDescr.set_text(_("Note-Off Velocity:")); m_VirtKeybOffVelocityLabel.set_text("-"); m_VirtKeybPropsBox.pack_start(m_VirtKeybModeChoice.label, Gtk::PACK_SHRINK); m_VirtKeybPropsBox.pack_start(m_VirtKeybModeChoice.widget, Gtk::PACK_SHRINK); m_VirtKeybPropsBox.pack_start(m_VirtKeybVelocityLabelDescr, Gtk::PACK_SHRINK); m_VirtKeybPropsBox.pack_start(m_VirtKeybVelocityLabel, Gtk::PACK_SHRINK); m_VirtKeybPropsBox.pack_start(m_VirtKeybOffVelocityLabelDescr, Gtk::PACK_SHRINK); m_VirtKeybPropsBox.pack_start(m_VirtKeybOffVelocityLabel, Gtk::PACK_SHRINK); m_VirtKeybPropsBox.set_spacing(10); m_VirtKeybPropsBox.show(); for (int i = 0 ; i < 128 ; i++) key_pressed[i] = false; actionGroup = Gtk::ActionGroup::create(); actionGroup->add(Gtk::Action::create("Properties", _("_Properties")), sigc::mem_fun(*this, &RegionChooser::show_region_properties)); actionGroup->add(Gtk::Action::create("Remove", _("_Remove")), sigc::mem_fun(*this, &RegionChooser::delete_region)); actionGroup->add(Gtk::Action::create("Add", _("_Add")), sigc::mem_fun(*this, &RegionChooser::add_region)); actionGroup->add(Gtk::Action::create("Dimensions", _("Dimensions...")), sigc::mem_fun(*this, &RegionChooser::manage_dimensions)); uiManager = Gtk::UIManager::create(); uiManager->insert_action_group(actionGroup); Glib::ustring ui_info = "<ui>" " <popup name='PopupMenuInsideRegion'>" " <menuitem action='Properties'/>" " <menuitem action='Dimensions'/>" " <menuitem action='Remove'/>" " </popup>" " <popup name='PopupMenuOutsideRegion'>" " <menuitem action='Add'/>" " </popup>" "</ui>"; uiManager->add_ui_from_string(ui_info); popup_menu_inside_region = dynamic_cast<Gtk::Menu*>( uiManager->get_widget("/PopupMenuInsideRegion")); popup_menu_outside_region = dynamic_cast<Gtk::Menu*>( uiManager->get_widget("/PopupMenuOutsideRegion")); add_events(Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK); dimensionManager.region_to_be_changed_signal.connect( region_to_be_changed_signal.make_slot() ); dimensionManager.region_changed_signal.connect( region_changed_signal.make_slot() ); dimensionManager.region_changed_signal.connect( sigc::hide( sigc::mem_fun(*this, &RegionChooser::on_dimension_manager_changed) ) ); keyboard_key_hit_signal.connect( sigc::mem_fun(*this, &RegionChooser::on_note_on_event) ); keyboard_key_released_signal.connect( sigc::mem_fun(*this, &RegionChooser::on_note_off_event) ); set_tooltip_text(_("Right click here for adding new region. Use mouse pointer for moving (dragging) or resizing existing regions (by pointing at region's boundary). Right click on an existing region for more actions.")); }