Move mouse cursor stuff out of Editor into its own class.
git-svn-id: svn://localhost/ardour2/branches/3.0@8048 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
840a81a0e4
commit
8fc660e76e
|
@ -115,6 +115,8 @@
|
|||
#include "editor_snapshots.h"
|
||||
#include "editor_summary.h"
|
||||
#include "region_layering_order_editor.h"
|
||||
#include "mouse_cursors.h"
|
||||
#include "editor_cursors.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
|
@ -136,8 +138,6 @@ using Gtkmm2ext::Keyboard;
|
|||
|
||||
const double Editor::timebar_height = 15.0;
|
||||
|
||||
#include "editor_xpms"
|
||||
|
||||
static const gchar *_snap_type_strings[] = {
|
||||
N_("CD Frames"),
|
||||
N_("Timecode Frames"),
|
||||
|
@ -207,45 +207,6 @@ static const gchar *_rb_opt_strings[] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
/* Soundfile drag-n-drop */
|
||||
|
||||
Gdk::Cursor* Editor::cross_hair_cursor = 0;
|
||||
Gdk::Cursor* Editor::selector_cursor = 0;
|
||||
Gdk::Cursor* Editor::trimmer_cursor = 0;
|
||||
Gdk::Cursor* Editor::left_side_trim_cursor = 0;
|
||||
Gdk::Cursor* Editor::right_side_trim_cursor = 0;
|
||||
Gdk::Cursor* Editor::left_side_trim_right_only_cursor = 0;
|
||||
Gdk::Cursor* Editor::right_side_trim_left_only_cursor = 0;
|
||||
Gdk::Cursor* Editor::fade_in_cursor = 0;
|
||||
Gdk::Cursor* Editor::fade_out_cursor = 0;
|
||||
Gdk::Cursor* Editor::grabber_cursor = 0;
|
||||
Gdk::Cursor* Editor::grabber_note_cursor = 0;
|
||||
Gdk::Cursor* Editor::grabber_edit_point_cursor = 0;
|
||||
Gdk::Cursor* Editor::zoom_in_cursor = 0;
|
||||
Gdk::Cursor* Editor::zoom_out_cursor = 0;
|
||||
Gdk::Cursor* Editor::time_fx_cursor = 0;
|
||||
Gdk::Cursor* Editor::fader_cursor = 0;
|
||||
Gdk::Cursor* Editor::speaker_cursor = 0;
|
||||
Gdk::Cursor* Editor::midi_pencil_cursor = 0;
|
||||
Gdk::Cursor* Editor::midi_select_cursor = 0;
|
||||
Gdk::Cursor* Editor::midi_resize_cursor = 0;
|
||||
Gdk::Cursor* Editor::midi_erase_cursor = 0;
|
||||
Gdk::Cursor* Editor::wait_cursor = 0;
|
||||
Gdk::Cursor* Editor::timebar_cursor = 0;
|
||||
Gdk::Cursor* Editor::transparent_cursor = 0;
|
||||
Gdk::Cursor* Editor::up_down_cursor = 0;
|
||||
Gdk::Cursor* Editor::resize_left_cursor = 0;
|
||||
Gdk::Cursor* Editor::resize_top_left_cursor = 0;
|
||||
Gdk::Cursor* Editor::resize_top_cursor = 0;
|
||||
Gdk::Cursor* Editor::resize_top_right_cursor = 0;
|
||||
Gdk::Cursor* Editor::resize_right_cursor = 0;
|
||||
Gdk::Cursor* Editor::resize_bottom_right_cursor = 0;
|
||||
Gdk::Cursor* Editor::resize_bottom_cursor = 0;
|
||||
Gdk::Cursor* Editor::resize_bottom_left_cursor = 0;
|
||||
Gdk::Cursor* Editor::move_cursor = 0;
|
||||
Gdk::Cursor* Editor::expand_left_right_cursor = 0;
|
||||
Gdk::Cursor* Editor::expand_up_down_cursor = 0;
|
||||
|
||||
void
|
||||
show_me_the_size (Requisition* r, const char* what)
|
||||
{
|
||||
|
@ -518,7 +479,7 @@ Editor::Editor ()
|
|||
controls_layout.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::edit_controls_button_release));
|
||||
controls_layout_size_request_connection = controls_layout.signal_size_request().connect (sigc::mem_fun (*this, &Editor::controls_layout_size_request));
|
||||
|
||||
build_cursors ();
|
||||
_cursors = new MouseCursors;
|
||||
|
||||
ArdourCanvas::Canvas* time_pad = manage(new ArdourCanvas::Canvas());
|
||||
ArdourCanvas::SimpleLine* pad_line_1 = manage(new ArdourCanvas::SimpleLine(*time_pad->root(),
|
||||
|
@ -1236,169 +1197,6 @@ Editor::action_pre_activated (Glib::RefPtr<Action> const & a)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::build_cursors ()
|
||||
{
|
||||
using namespace Gdk;
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> zoom_in_cursor_pixbuf (::get_icon ("zoom_in_cursor"));
|
||||
zoom_in_cursor = new Gdk::Cursor (Gdk::Display::get_default(), zoom_in_cursor_pixbuf, 5, 5);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> zoom_out_cursor_pixbuf (::get_icon ("zoom_out_cursor"));
|
||||
zoom_out_cursor = new Gdk::Cursor (Gdk::Display::get_default(), zoom_out_cursor_pixbuf, 5, 5);
|
||||
}
|
||||
|
||||
Gdk::Color fbg ("#ffffff" );
|
||||
Gdk::Color ffg ("#000000" );
|
||||
|
||||
{
|
||||
RefPtr<Bitmap> source, mask;
|
||||
|
||||
source = Bitmap::create (fader_cursor_bits, fader_cursor_width, fader_cursor_height);
|
||||
mask = Bitmap::create (fader_cursor_mask_bits, fader_cursor_width, fader_cursor_height);
|
||||
fader_cursor = new Gdk::Cursor (source, mask, ffg, fbg, fader_cursor_x_hot, fader_cursor_y_hot);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Bitmap> source, mask;
|
||||
source = Bitmap::create (speaker_cursor_bits, speaker_cursor_width, speaker_cursor_height);
|
||||
mask = Bitmap::create (speaker_cursor_mask_bits, speaker_cursor_width, speaker_cursor_height);
|
||||
speaker_cursor = new Gdk::Cursor (source, mask, ffg, fbg, speaker_cursor_x_hot, speaker_cursor_y_hot);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Bitmap> bits;
|
||||
char pix[4] = { 0, 0, 0, 0 };
|
||||
bits = Bitmap::create (pix, 2, 2);
|
||||
Gdk::Color c;
|
||||
transparent_cursor = new Gdk::Cursor (bits, bits, c, c, 0, 0);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Bitmap> bits;
|
||||
char pix[4] = { 0, 0, 0, 0 };
|
||||
bits = Bitmap::create (pix, 2, 2);
|
||||
Gdk::Color c;
|
||||
transparent_cursor = new Gdk::Cursor (bits, bits, c, c, 0, 0);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> grabber_pixbuf (::get_icon ("grabber"));
|
||||
grabber_cursor = new Gdk::Cursor (Gdk::Display::get_default(), grabber_pixbuf, 5, 0);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> grabber_note_pixbuf (::get_icon ("grabber_note"));
|
||||
grabber_note_cursor = new Gdk::Cursor (Gdk::Display::get_default(), grabber_note_pixbuf, 5, 10);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> grabber_edit_point_pixbuf (::get_icon ("grabber_edit_point"));
|
||||
grabber_edit_point_cursor = new Gdk::Cursor (Gdk::Display::get_default(), grabber_edit_point_pixbuf, 5, 17);
|
||||
}
|
||||
|
||||
cross_hair_cursor = new Gdk::Cursor (CROSSHAIR);
|
||||
trimmer_cursor = new Gdk::Cursor (SB_H_DOUBLE_ARROW);
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> apixbuf (::get_icon ("trim_left_cursor"));
|
||||
left_side_trim_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 5, 11);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> apixbuf (::get_icon ("trim_right_cursor"));
|
||||
right_side_trim_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 23, 11);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> apixbuf (::get_icon ("trim_left_cursor_right_only"));
|
||||
left_side_trim_right_only_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 5, 11);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> apixbuf (::get_icon ("trim_right_cursor_left_only"));
|
||||
right_side_trim_left_only_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 23, 11);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> apixbuf (::get_icon ("fade_in_cursor"));
|
||||
fade_in_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 0, 0);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> apixbuf (::get_icon ("fade_out_cursor"));
|
||||
fade_out_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 29, 0);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("resize_left_cursor"));
|
||||
resize_left_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 3, 10);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("resize_top_left_cursor"));
|
||||
resize_top_left_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 3, 3);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("resize_top_cursor"));
|
||||
resize_top_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 10, 3);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("resize_top_right_cursor"));
|
||||
resize_top_right_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 18, 3);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("resize_right_cursor"));
|
||||
resize_right_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 24, 10);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("resize_bottom_right_cursor"));
|
||||
resize_bottom_right_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 18, 18);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("resize_bottom_cursor"));
|
||||
resize_bottom_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 10, 24);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("resize_bottom_left_cursor"));
|
||||
resize_bottom_left_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 3, 18);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("move_cursor"));
|
||||
move_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 11, 11);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("expand_left_right_cursor"));
|
||||
expand_left_right_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 11, 4);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> p (::get_icon ("expand_up_down_cursor"));
|
||||
expand_up_down_cursor = new Gdk::Cursor (Gdk::Display::get_default(), p, 4, 11);
|
||||
}
|
||||
|
||||
selector_cursor = new Gdk::Cursor (XTERM);
|
||||
time_fx_cursor = new Gdk::Cursor (SIZING);
|
||||
wait_cursor = new Gdk::Cursor (WATCH);
|
||||
timebar_cursor = new Gdk::Cursor(LEFT_PTR);
|
||||
midi_pencil_cursor = new Gdk::Cursor (PENCIL);
|
||||
midi_select_cursor = new Gdk::Cursor (CENTER_PTR);
|
||||
midi_resize_cursor = new Gdk::Cursor (SIZING);
|
||||
midi_erase_cursor = new Gdk::Cursor (DRAPED_BOX);
|
||||
up_down_cursor = new Gdk::Cursor (Gdk::SB_V_DOUBLE_ARROW);
|
||||
}
|
||||
|
||||
/** Pop up a context menu for when the user clicks on a fade in or fade out */
|
||||
void
|
||||
Editor::popup_fade_context_menu (int button, int32_t time, ArdourCanvas::Item* item, ItemType item_type)
|
||||
|
|
|
@ -128,6 +128,8 @@ class EditorSnapshots;
|
|||
class EditorSummary;
|
||||
class RegionLayeringOrderEditor;
|
||||
class ProgressReporter;
|
||||
class EditorCursor;
|
||||
class MouseCursors;
|
||||
|
||||
/* <CMT Additions> */
|
||||
class ImageFrameView;
|
||||
|
@ -139,23 +141,6 @@ class ImageFrameSocketHandler ;
|
|||
class TimeAxisViewItem ;
|
||||
/* </CMT Additions> */
|
||||
|
||||
struct EditorCursor {
|
||||
Editor& editor;
|
||||
ArdourCanvas::Points points;
|
||||
ArdourCanvas::Line canvas_item;
|
||||
framepos_t current_frame;
|
||||
double length;
|
||||
|
||||
EditorCursor (Editor&, bool (Editor::*)(GdkEvent*,ArdourCanvas::Item*));
|
||||
~EditorCursor ();
|
||||
|
||||
void set_position (framepos_t);
|
||||
void set_length (double units);
|
||||
void set_y_axis (double position);
|
||||
|
||||
PBD::Signal1<void, framepos_t> PositionChanged;
|
||||
};
|
||||
|
||||
class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr
|
||||
{
|
||||
public:
|
||||
|
@ -450,50 +435,15 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
|||
|
||||
void maybe_autoscroll (bool, bool);
|
||||
|
||||
/* handy cursors for everyone to use */
|
||||
|
||||
static Gdk::Cursor* cross_hair_cursor;
|
||||
static Gdk::Cursor* trimmer_cursor;
|
||||
static Gdk::Cursor* right_side_trim_cursor;
|
||||
static Gdk::Cursor* left_side_trim_cursor;
|
||||
static Gdk::Cursor* right_side_trim_left_only_cursor;
|
||||
static Gdk::Cursor* left_side_trim_right_only_cursor;
|
||||
static Gdk::Cursor* fade_in_cursor;
|
||||
static Gdk::Cursor* fade_out_cursor;
|
||||
static Gdk::Cursor* selector_cursor;
|
||||
static Gdk::Cursor* grabber_cursor;
|
||||
static Gdk::Cursor* grabber_note_cursor;
|
||||
static Gdk::Cursor* grabber_edit_point_cursor;
|
||||
static Gdk::Cursor* zoom_in_cursor;
|
||||
static Gdk::Cursor* zoom_out_cursor;
|
||||
static Gdk::Cursor* time_fx_cursor;
|
||||
static Gdk::Cursor* fader_cursor;
|
||||
static Gdk::Cursor* speaker_cursor;
|
||||
static Gdk::Cursor* midi_pencil_cursor;
|
||||
static Gdk::Cursor* midi_select_cursor;
|
||||
static Gdk::Cursor* midi_resize_cursor;
|
||||
static Gdk::Cursor* midi_erase_cursor;
|
||||
static Gdk::Cursor* up_down_cursor;
|
||||
static Gdk::Cursor* wait_cursor;
|
||||
static Gdk::Cursor* timebar_cursor;
|
||||
static Gdk::Cursor* transparent_cursor;
|
||||
static Gdk::Cursor* resize_left_cursor;
|
||||
static Gdk::Cursor* resize_top_left_cursor;
|
||||
static Gdk::Cursor* resize_top_cursor;
|
||||
static Gdk::Cursor* resize_top_right_cursor;
|
||||
static Gdk::Cursor* resize_right_cursor;
|
||||
static Gdk::Cursor* resize_bottom_right_cursor;
|
||||
static Gdk::Cursor* resize_bottom_cursor;
|
||||
static Gdk::Cursor* resize_bottom_left_cursor;
|
||||
static Gdk::Cursor* move_cursor;
|
||||
static Gdk::Cursor* expand_left_right_cursor;
|
||||
static Gdk::Cursor* expand_up_down_cursor;
|
||||
|
||||
Gdk::Cursor* get_canvas_cursor () const { return current_canvas_cursor; }
|
||||
void set_canvas_cursor (Gdk::Cursor*, bool save=false);
|
||||
void set_current_trimmable (boost::shared_ptr<ARDOUR::Trimmable>);
|
||||
void set_current_movable (boost::shared_ptr<ARDOUR::Movable>);
|
||||
|
||||
MouseCursors const * cursors () const {
|
||||
return _cursors;
|
||||
}
|
||||
|
||||
protected:
|
||||
void map_transport_state ();
|
||||
void map_position_change (framepos_t);
|
||||
|
@ -1056,8 +1006,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
|||
|
||||
TrackViewList get_tracks_for_range_action () const;
|
||||
|
||||
static void build_cursors ();
|
||||
|
||||
sigc::connection super_rapid_screen_update_connection;
|
||||
framepos_t last_update_frame;
|
||||
void center_screen_internal (framepos_t, float);
|
||||
|
@ -2102,6 +2050,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
|||
void action_pre_activated (Glib::RefPtr<Gtk::Action> const &);
|
||||
|
||||
void set_canvas_cursor_for_region_view (double, RegionView *);
|
||||
|
||||
MouseCursors* _cursors;
|
||||
|
||||
friend class Drag;
|
||||
friend class RegionDrag;
|
||||
|
|
|
@ -60,6 +60,8 @@
|
|||
#include "utils.h"
|
||||
#include "gui_thread.h"
|
||||
#include "interthread_progress_window.h"
|
||||
#include "mouse_cursors.h"
|
||||
#include "editor_cursors.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
|
@ -519,7 +521,7 @@ Editor::import_sndfiles (vector<string> paths, ImportMode mode, SrcQuality quali
|
|||
import_status.track = track;
|
||||
import_status.replace = replace;
|
||||
|
||||
set_canvas_cursor (wait_cursor);
|
||||
set_canvas_cursor (_cursors->wait);
|
||||
gdk_flush ();
|
||||
|
||||
/* start import thread for this spec. this will ultimately call Session::import_audiofiles()
|
||||
|
@ -569,7 +571,7 @@ Editor::embed_sndfiles (vector<string> paths, bool multifile,
|
|||
SoundFileInfo finfo;
|
||||
int ret = 0;
|
||||
|
||||
set_canvas_cursor (wait_cursor);
|
||||
set_canvas_cursor (_cursors->wait);
|
||||
gdk_flush ();
|
||||
|
||||
for (vector<string>::iterator p = paths.begin(); p != paths.end(); ++p) {
|
||||
|
@ -642,7 +644,7 @@ Editor::embed_sndfiles (vector<string> paths, bool multifile,
|
|||
}
|
||||
}
|
||||
|
||||
set_canvas_cursor (wait_cursor);
|
||||
set_canvas_cursor (_cursors->wait);
|
||||
|
||||
for (int n = 0; n < finfo.channels; ++n) {
|
||||
try {
|
||||
|
|
|
@ -51,6 +51,8 @@
|
|||
#include "editor_routes.h"
|
||||
#include "editor_summary.h"
|
||||
#include "keyboard.h"
|
||||
#include "editor_cursors.h"
|
||||
#include "mouse_cursors.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
|
@ -940,7 +942,7 @@ Editor::track_canvas_key_press (GdkEventKey* event)
|
|||
{
|
||||
/* XXX: event does not report the modifier key pressed down, AFAICS, so use the Keyboard object instead */
|
||||
if (mouse_mode == Editing::MouseZoom && Keyboard::the_keyboard().key_is_down (GDK_Control_L)) {
|
||||
set_canvas_cursor (zoom_out_cursor);
|
||||
set_canvas_cursor (_cursors->zoom_out);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -950,7 +952,7 @@ bool
|
|||
Editor::track_canvas_key_release (GdkEventKey* event)
|
||||
{
|
||||
if (mouse_mode == Editing::MouseZoom && !Keyboard::the_keyboard().key_is_down (GDK_Control_L)) {
|
||||
set_canvas_cursor (zoom_in_cursor);
|
||||
set_canvas_cursor (_cursors->zoom_in);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <libgnomecanvas/libgnomecanvas.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "editor_cursors.h"
|
||||
#include "editor.h"
|
||||
|
||||
using namespace ARDOUR;
|
||||
|
|
39
gtk2_ardour/editor_cursors.h
Normal file
39
gtk2_ardour/editor_cursors.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
Copyright (C) 2000 Paul Davis
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
#include "pbd/signals.h"
|
||||
|
||||
class Editor;
|
||||
|
||||
struct EditorCursor {
|
||||
Editor& editor;
|
||||
ArdourCanvas::Points points;
|
||||
ArdourCanvas::Line canvas_item;
|
||||
framepos_t current_frame;
|
||||
double length;
|
||||
|
||||
EditorCursor (Editor&, bool (Editor::*)(GdkEvent*,ArdourCanvas::Item*));
|
||||
~EditorCursor ();
|
||||
|
||||
void set_position (framepos_t);
|
||||
void set_length (double units);
|
||||
void set_y_axis (double position);
|
||||
|
||||
PBD::Signal1<void, framepos_t> PositionChanged;
|
||||
};
|
|
@ -50,6 +50,8 @@
|
|||
#include "midi_selection.h"
|
||||
#include "automation_time_axis.h"
|
||||
#include "debug.h"
|
||||
#include "editor_cursors.h"
|
||||
#include "mouse_cursors.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace ARDOUR;
|
||||
|
@ -1409,9 +1411,9 @@ NoteResizeDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*ignored*/)
|
|||
float x_fraction = cnote->mouse_x_fraction ();
|
||||
|
||||
if (x_fraction > 0.0 && x_fraction < 0.25) {
|
||||
cursor = _editor->left_side_trim_cursor;
|
||||
cursor = _editor->cursors()->left_side_trim;
|
||||
} else {
|
||||
cursor = _editor->right_side_trim_cursor;
|
||||
cursor = _editor->cursors()->right_side_trim;
|
||||
}
|
||||
|
||||
Drag::start_grab (event, cursor);
|
||||
|
@ -1422,10 +1424,10 @@ NoteResizeDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*ignored*/)
|
|||
double const middle_point = region_start + cnote->x1() + (cnote->x2() - cnote->x1()) / 2.0L;
|
||||
|
||||
if (grab_x() <= middle_point) {
|
||||
cursor = _editor->left_side_trim_cursor;
|
||||
cursor = _editor->cursors()->left_side_trim;
|
||||
at_front = true;
|
||||
} else {
|
||||
cursor = _editor->right_side_trim_cursor;
|
||||
cursor = _editor->cursors()->right_side_trim;
|
||||
at_front = false;
|
||||
}
|
||||
|
||||
|
@ -1532,17 +1534,17 @@ TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
|
|||
|
||||
if (Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) {
|
||||
_operation = ContentsTrim;
|
||||
Drag::start_grab (event, _editor->trimmer_cursor);
|
||||
Drag::start_grab (event, _editor->cursors()->trimmer);
|
||||
} else {
|
||||
/* These will get overridden for a point trim.*/
|
||||
if (pf < (region_start + region_length/2)) {
|
||||
/* closer to start */
|
||||
_operation = StartTrim;
|
||||
Drag::start_grab (event, _editor->left_side_trim_cursor);
|
||||
Drag::start_grab (event, _editor->cursors()->left_side_trim);
|
||||
} else {
|
||||
/* closer to end */
|
||||
_operation = EndTrim;
|
||||
Drag::start_grab (event, _editor->right_side_trim_cursor);
|
||||
Drag::start_grab (event, _editor->cursors()->right_side_trim);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2613,7 +2615,7 @@ ControlPointDrag::ControlPointDrag (Editor* e, ArdourCanvas::Item* i)
|
|||
void
|
||||
ControlPointDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*cursor*/)
|
||||
{
|
||||
Drag::start_grab (event, _editor->fader_cursor);
|
||||
Drag::start_grab (event, _editor->cursors()->fader);
|
||||
|
||||
// start the grab at the center of the control point so
|
||||
// the point doesn't 'jump' to the mouse after the first drag
|
||||
|
@ -2758,7 +2760,7 @@ LineDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*cursor*/)
|
|||
return;
|
||||
}
|
||||
|
||||
Drag::start_grab (event, _editor->fader_cursor);
|
||||
Drag::start_grab (event, _editor->cursors()->fader);
|
||||
|
||||
/* store grab start in parent frame */
|
||||
|
||||
|
@ -3138,7 +3140,7 @@ SelectionDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
|
|||
} else {
|
||||
_copy = false;
|
||||
}
|
||||
cursor = _editor->selector_cursor;
|
||||
cursor = _editor->cursors()->selector;
|
||||
Drag::start_grab (event, cursor);
|
||||
break;
|
||||
|
||||
|
@ -3146,7 +3148,7 @@ SelectionDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
|
|||
if (_editor->clicked_axisview) {
|
||||
_editor->clicked_axisview->order_selection_trims (_item, true);
|
||||
}
|
||||
Drag::start_grab (event, _editor->left_side_trim_cursor);
|
||||
Drag::start_grab (event, _editor->cursors()->left_side_trim);
|
||||
start = _editor->selection->time[_editor->clicked_selection].start;
|
||||
_pointer_frame_offset = raw_grab_frame() - start;
|
||||
break;
|
||||
|
@ -3155,7 +3157,7 @@ SelectionDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
|
|||
if (_editor->clicked_axisview) {
|
||||
_editor->clicked_axisview->order_selection_trims (_item, false);
|
||||
}
|
||||
Drag::start_grab (event, _editor->right_side_trim_cursor);
|
||||
Drag::start_grab (event, _editor->cursors()->right_side_trim);
|
||||
end = _editor->selection->time[_editor->clicked_selection].end;
|
||||
_pointer_frame_offset = raw_grab_frame() - end;
|
||||
break;
|
||||
|
@ -3405,7 +3407,7 @@ RangeMarkerBarDrag::start_grab (GdkEvent* event, Gdk::Cursor *)
|
|||
} else {
|
||||
_copy = false;
|
||||
}
|
||||
cursor = _editor->selector_cursor;
|
||||
cursor = _editor->cursors()->selector;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3594,10 +3596,10 @@ void
|
|||
MouseZoomDrag::start_grab (GdkEvent* event, Gdk::Cursor *)
|
||||
{
|
||||
if (Keyboard::the_keyboard().key_is_down (GDK_Control_L)) {
|
||||
Drag::start_grab (event, _editor->zoom_out_cursor);
|
||||
Drag::start_grab (event, _editor->cursors()->zoom_out);
|
||||
_zoom_out = true;
|
||||
} else {
|
||||
Drag::start_grab (event, _editor->zoom_in_cursor);
|
||||
Drag::start_grab (event, _editor->cursors()->zoom_in);
|
||||
_zoom_out = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -56,6 +56,8 @@
|
|||
#include "editor_drag.h"
|
||||
#include "automation_region_view.h"
|
||||
#include "edit_note_dialog.h"
|
||||
#include "mouse_cursors.h"
|
||||
#include "editor_cursors.h"
|
||||
|
||||
#include "ardour/types.h"
|
||||
#include "ardour/profile.h"
|
||||
|
@ -171,20 +173,20 @@ Editor::event_frame (GdkEvent const * event, double* pcx, double* pcy) const
|
|||
Gdk::Cursor*
|
||||
Editor::which_grabber_cursor ()
|
||||
{
|
||||
Gdk::Cursor* c = grabber_cursor;
|
||||
Gdk::Cursor* c = _cursors->grabber;
|
||||
|
||||
if (_internal_editing) {
|
||||
switch (mouse_mode) {
|
||||
case MouseRange:
|
||||
c = midi_pencil_cursor;
|
||||
c = _cursors->midi_pencil;
|
||||
break;
|
||||
|
||||
case MouseObject:
|
||||
c = grabber_note_cursor;
|
||||
c = _cursors->grabber_note;
|
||||
break;
|
||||
|
||||
case MouseTimeFX:
|
||||
c = midi_resize_cursor;
|
||||
c = _cursors->midi_resize;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -195,12 +197,12 @@ Editor::which_grabber_cursor ()
|
|||
|
||||
switch (_edit_point) {
|
||||
case EditAtMouse:
|
||||
c = grabber_edit_point_cursor;
|
||||
c = _cursors->grabber_edit_point;
|
||||
break;
|
||||
default:
|
||||
boost::shared_ptr<Movable> m = _movable.lock();
|
||||
if (m && m->locked()) {
|
||||
c = speaker_cursor;
|
||||
c = _cursors->speaker;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -239,7 +241,7 @@ Editor::set_canvas_cursor ()
|
|||
|
||||
switch (mouse_mode) {
|
||||
case MouseRange:
|
||||
current_canvas_cursor = midi_pencil_cursor;
|
||||
current_canvas_cursor = _cursors->midi_pencil;
|
||||
break;
|
||||
|
||||
case MouseObject:
|
||||
|
@ -247,7 +249,7 @@ Editor::set_canvas_cursor ()
|
|||
break;
|
||||
|
||||
case MouseTimeFX:
|
||||
current_canvas_cursor = midi_resize_cursor;
|
||||
current_canvas_cursor = _cursors->midi_resize;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -258,7 +260,7 @@ Editor::set_canvas_cursor ()
|
|||
|
||||
switch (mouse_mode) {
|
||||
case MouseRange:
|
||||
current_canvas_cursor = selector_cursor;
|
||||
current_canvas_cursor = _cursors->selector;
|
||||
break;
|
||||
|
||||
case MouseObject:
|
||||
|
@ -266,23 +268,23 @@ Editor::set_canvas_cursor ()
|
|||
break;
|
||||
|
||||
case MouseGain:
|
||||
current_canvas_cursor = cross_hair_cursor;
|
||||
current_canvas_cursor = _cursors->cross_hair;
|
||||
break;
|
||||
|
||||
case MouseZoom:
|
||||
if (Keyboard::the_keyboard().key_is_down (GDK_Control_L)) {
|
||||
current_canvas_cursor = zoom_out_cursor;
|
||||
current_canvas_cursor = _cursors->zoom_out;
|
||||
} else {
|
||||
current_canvas_cursor = zoom_in_cursor;
|
||||
current_canvas_cursor = _cursors->zoom_in;
|
||||
}
|
||||
break;
|
||||
|
||||
case MouseTimeFX:
|
||||
current_canvas_cursor = time_fx_cursor; // just use playhead
|
||||
current_canvas_cursor = _cursors->time_fx; // just use playhead
|
||||
break;
|
||||
|
||||
case MouseAudition:
|
||||
current_canvas_cursor = speaker_cursor;
|
||||
current_canvas_cursor = _cursors->speaker;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -294,7 +296,7 @@ Editor::set_canvas_cursor ()
|
|||
current_canvas_cursor = which_grabber_cursor ();
|
||||
break;
|
||||
case JOIN_OBJECT_RANGE_RANGE:
|
||||
current_canvas_cursor = selector_cursor;
|
||||
current_canvas_cursor = _cursors->selector;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -303,7 +305,7 @@ Editor::set_canvas_cursor ()
|
|||
if (last_item_entered->property_parent() && (*last_item_entered->property_parent()).get_data (X_("timeselection"))) {
|
||||
pair<TimeAxisView*, int> tvp = trackview_by_y_position (_last_motion_y + vertical_adjustment.get_value() - canvas_timebars_vsize);
|
||||
if (dynamic_cast<AutomationTimeAxisView*> (tvp.first)) {
|
||||
current_canvas_cursor = up_down_cursor;
|
||||
current_canvas_cursor = _cursors->up_down;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -694,7 +696,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||
AutomationTimeAxisView* atv = dynamic_cast<AutomationTimeAxisView*> (tvp.first);
|
||||
if (join_object_range_button.get_active() && atv) {
|
||||
/* smart "join" mode: drag automation */
|
||||
_drags->set (new AutomationRangeDrag (this, atv->base_item(), selection->time), event, up_down_cursor);
|
||||
_drags->set (new AutomationRangeDrag (this, atv->base_item(), selection->time), event, _cursors->up_down);
|
||||
} else {
|
||||
/* this was debated, but decided the more common action was to
|
||||
make a new selection */
|
||||
|
@ -776,14 +778,14 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||
case FadeInHandleItem:
|
||||
{
|
||||
RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
|
||||
_drags->set (new FadeInDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, fade_in_cursor);
|
||||
_drags->set (new FadeInDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, _cursors->fade_in);
|
||||
return true;
|
||||
}
|
||||
|
||||
case FadeOutHandleItem:
|
||||
{
|
||||
RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
|
||||
_drags->set (new FadeOutDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, fade_out_cursor);
|
||||
_drags->set (new FadeOutDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, _cursors->fade_out);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -884,7 +886,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||
/* if we're over an automation track, start a drag of its data */
|
||||
AutomationTimeAxisView* atv = dynamic_cast<AutomationTimeAxisView*> (tvp.first);
|
||||
if (atv) {
|
||||
_drags->set (new AutomationRangeDrag (this, atv->base_item(), selection->time), event, up_down_cursor);
|
||||
_drags->set (new AutomationRangeDrag (this, atv->base_item(), selection->time), event, _cursors->up_down);
|
||||
}
|
||||
|
||||
/* if we're over a track and a region, and in the `object' part of a region,
|
||||
|
@ -1022,7 +1024,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||
scrub_reverse_distance = 0;
|
||||
last_scrub_x = event->button.x;
|
||||
scrubbing_direction = 0;
|
||||
set_canvas_cursor (transparent_cursor);
|
||||
set_canvas_cursor (_cursors->transparent);
|
||||
return true;
|
||||
break;
|
||||
|
||||
|
@ -1542,7 +1544,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
fraction = 1.0 - (cp->get_y() / cp->line().height());
|
||||
|
||||
if (is_drawable() && !_drags->active ()) {
|
||||
set_canvas_cursor (fader_cursor);
|
||||
set_canvas_cursor (_cursors->fader);
|
||||
}
|
||||
|
||||
set_verbose_canvas_cursor (cp->line().get_verbose_cursor_string (fraction), at_x, at_y);
|
||||
|
@ -1556,7 +1558,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
if (line)
|
||||
line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_EnteredGainLine.get();
|
||||
if (is_drawable()) {
|
||||
set_canvas_cursor (fader_cursor);
|
||||
set_canvas_cursor (_cursors->fader);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -1569,7 +1571,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_EnteredAutomationLine.get();
|
||||
}
|
||||
if (is_drawable()) {
|
||||
set_canvas_cursor (fader_cursor);
|
||||
set_canvas_cursor (_cursors->fader);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -1599,7 +1601,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
#endif
|
||||
|
||||
if (is_drawable()) {
|
||||
set_canvas_cursor (trimmer_cursor);
|
||||
set_canvas_cursor (_cursors->trimmer);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1607,10 +1609,10 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
if (is_drawable()) {
|
||||
switch (_edit_point) {
|
||||
case EditAtMouse:
|
||||
set_canvas_cursor (grabber_edit_point_cursor);
|
||||
set_canvas_cursor (_cursors->grabber_edit_point);
|
||||
break;
|
||||
default:
|
||||
set_canvas_cursor (grabber_cursor);
|
||||
set_canvas_cursor (_cursors->grabber);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1634,13 +1636,13 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
Gdk::Cursor *cursor;
|
||||
switch (mouse_mode) {
|
||||
case MouseRange:
|
||||
cursor = selector_cursor;
|
||||
cursor = _cursors->selector;
|
||||
break;
|
||||
case MouseZoom:
|
||||
cursor = zoom_in_cursor;
|
||||
cursor = _cursors->zoom_in;
|
||||
break;
|
||||
default:
|
||||
cursor = cross_hair_cursor;
|
||||
cursor = _cursors->cross_hair;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1661,7 +1663,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
case MeterBarItem:
|
||||
case TempoBarItem:
|
||||
if (is_drawable()) {
|
||||
set_canvas_cursor (timebar_cursor);
|
||||
set_canvas_cursor (_cursors->timebar);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1675,7 +1677,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
case MeterMarkerItem:
|
||||
case TempoMarkerItem:
|
||||
if (is_drawable()) {
|
||||
set_canvas_cursor (timebar_cursor);
|
||||
set_canvas_cursor (_cursors->timebar);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1685,7 +1687,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
if (rect) {
|
||||
rect->property_fill_color_rgba() = 0xBBBBBBAA;
|
||||
}
|
||||
set_canvas_cursor (fade_in_cursor);
|
||||
set_canvas_cursor (_cursors->fade_in);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1695,7 +1697,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
if (rect) {
|
||||
rect->property_fill_color_rgba() = 0xBBBBBBAA;
|
||||
}
|
||||
set_canvas_cursor (fade_out_cursor);
|
||||
set_canvas_cursor (_cursors->fade_out);
|
||||
}
|
||||
break;
|
||||
case FeatureLineItem:
|
||||
|
@ -1833,7 +1835,7 @@ Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
|||
case TempoMarkerItem:
|
||||
|
||||
if (is_drawable()) {
|
||||
set_canvas_cursor (timebar_cursor);
|
||||
set_canvas_cursor (_cursors->timebar);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -2719,15 +2721,15 @@ Editor::set_canvas_cursor_for_region_view (double x, RegionView* rv)
|
|||
Trimmable::CanTrim ct = rv->region()->can_trim ();
|
||||
if (x <= h) {
|
||||
if (ct & Trimmable::FrontTrimEarlier) {
|
||||
set_canvas_cursor (left_side_trim_cursor);
|
||||
set_canvas_cursor (_cursors->left_side_trim);
|
||||
} else {
|
||||
set_canvas_cursor (left_side_trim_right_only_cursor);
|
||||
set_canvas_cursor (_cursors->left_side_trim_right_only);
|
||||
}
|
||||
} else {
|
||||
if (ct & Trimmable::EndTrimLater) {
|
||||
set_canvas_cursor (right_side_trim_cursor);
|
||||
set_canvas_cursor (_cursors->right_side_trim);
|
||||
} else {
|
||||
set_canvas_cursor (right_side_trim_left_only_cursor);
|
||||
set_canvas_cursor (_cursors->right_side_trim_left_only);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,6 +82,8 @@
|
|||
#include "interthread_progress_window.h"
|
||||
#include "insert_time_dialog.h"
|
||||
#include "normalize_dialog.h"
|
||||
#include "editor_cursors.h"
|
||||
#include "mouse_cursors.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
|
@ -3547,7 +3549,7 @@ Editor::freeze_route ()
|
|||
|
||||
pthread_create_and_store (X_("freezer"), &itt.thread, _freeze_thread, this);
|
||||
|
||||
set_canvas_cursor (wait_cursor);
|
||||
set_canvas_cursor (_cursors->wait);
|
||||
|
||||
while (!itt.done && !itt.cancel) {
|
||||
gtk_main_iteration ();
|
||||
|
@ -4385,7 +4387,7 @@ Editor::normalize_region ()
|
|||
return;
|
||||
}
|
||||
|
||||
set_canvas_cursor (wait_cursor);
|
||||
set_canvas_cursor (_cursors->wait);
|
||||
gdk_flush ();
|
||||
|
||||
/* XXX: should really only count audio regions here */
|
||||
|
@ -4611,7 +4613,7 @@ Editor::fork_region ()
|
|||
|
||||
begin_reversible_command (_("Fork Region(s)"));
|
||||
|
||||
set_canvas_cursor (wait_cursor);
|
||||
set_canvas_cursor (_cursors->wait);
|
||||
gdk_flush ();
|
||||
|
||||
for (RegionSelection::iterator r = rs.begin(); r != rs.end(); ) {
|
||||
|
@ -4671,7 +4673,7 @@ Editor::apply_filter (Filter& filter, string command, ProgressReporter* progress
|
|||
|
||||
begin_reversible_command (command);
|
||||
|
||||
set_canvas_cursor (wait_cursor);
|
||||
set_canvas_cursor (_cursors->wait);
|
||||
gdk_flush ();
|
||||
|
||||
int n = 0;
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include "gui_thread.h"
|
||||
#include "time_axis_view.h"
|
||||
#include "editor_drag.h"
|
||||
#include "editor_cursors.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include "automation_line.h"
|
||||
#include "control_point.h"
|
||||
#include "editor_regions.h"
|
||||
#include "editor_cursors.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
|
@ -1482,7 +1483,7 @@ Editor::select_all_selectables_using_cursor (EditorCursor *cursor, bool after)
|
|||
|
||||
if (after) {
|
||||
begin_reversible_command (_("select all after cursor"));
|
||||
start = cursor->current_frame ;
|
||||
start = cursor->current_frame;
|
||||
end = _session->current_end_frame();
|
||||
} else {
|
||||
if (cursor->current_frame > 0) {
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
#include "rgb_macros.h"
|
||||
#include "keyboard.h"
|
||||
#include "editor_routes.h"
|
||||
#include "editor_cursors.h"
|
||||
#include "mouse_cursors.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace ARDOUR;
|
||||
|
@ -412,37 +414,37 @@ EditorSummary::set_cursor (Position p)
|
|||
{
|
||||
switch (p) {
|
||||
case LEFT:
|
||||
get_window()->set_cursor (*_editor->resize_left_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->resize_left);
|
||||
break;
|
||||
case LEFT_TOP:
|
||||
get_window()->set_cursor (*_editor->resize_top_left_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->resize_top_left);
|
||||
break;
|
||||
case TOP:
|
||||
get_window()->set_cursor (*_editor->resize_top_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->resize_top);
|
||||
break;
|
||||
case RIGHT_TOP:
|
||||
get_window()->set_cursor (*_editor->resize_top_right_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->resize_top_right);
|
||||
break;
|
||||
case RIGHT:
|
||||
get_window()->set_cursor (*_editor->resize_right_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->resize_right);
|
||||
break;
|
||||
case RIGHT_BOTTOM:
|
||||
get_window()->set_cursor (*_editor->resize_bottom_right_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->resize_bottom_right);
|
||||
break;
|
||||
case BOTTOM:
|
||||
get_window()->set_cursor (*_editor->resize_bottom_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->resize_bottom);
|
||||
break;
|
||||
case LEFT_BOTTOM:
|
||||
get_window()->set_cursor (*_editor->resize_bottom_left_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->resize_bottom_left);
|
||||
break;
|
||||
case INSIDE:
|
||||
get_window()->set_cursor (*_editor->move_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->move);
|
||||
break;
|
||||
case TO_LEFT_OR_RIGHT:
|
||||
get_window()->set_cursor (*_editor->expand_left_right_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->expand_left_right);
|
||||
break;
|
||||
case BELOW_OR_ABOVE:
|
||||
get_window()->set_cursor (*_editor->expand_up_down_cursor);
|
||||
get_window()->set_cursor (*_editor->_cursors->expand_up_down);
|
||||
break;
|
||||
default:
|
||||
get_window()->set_cursor ();
|
||||
|
|
|
@ -67,6 +67,7 @@
|
|||
#include "simpleline.h"
|
||||
#include "streamview.h"
|
||||
#include "utils.h"
|
||||
#include "mouse_cursors.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
|
@ -2699,9 +2700,9 @@ MidiRegionView::note_mouse_position (float x_fraction, float /*y_fraction*/, boo
|
|||
Editor* editor = dynamic_cast<Editor*>(&trackview.editor());
|
||||
|
||||
if (x_fraction > 0.0 && x_fraction < 0.25) {
|
||||
editor->set_canvas_cursor (editor->left_side_trim_cursor);
|
||||
editor->set_canvas_cursor (editor->cursors()->left_side_trim);
|
||||
} else if (x_fraction >= 0.75 && x_fraction < 1.0) {
|
||||
editor->set_canvas_cursor (editor->right_side_trim_cursor);
|
||||
editor->set_canvas_cursor (editor->cursors()->right_side_trim);
|
||||
} else {
|
||||
if (pre_enter_cursor && can_set_cursor) {
|
||||
editor->set_canvas_cursor (pre_enter_cursor);
|
||||
|
|
181
gtk2_ardour/mouse_cursors.cc
Normal file
181
gtk2_ardour/mouse_cursors.cc
Normal file
|
@ -0,0 +1,181 @@
|
|||
/*
|
||||
Copyright (C) 2000-2010 Paul Davis
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
#include <gdkmm/cursor.h>
|
||||
#include "utils.h"
|
||||
#include "mouse_cursors.h"
|
||||
#include "editor_xpms"
|
||||
|
||||
MouseCursors::MouseCursors ()
|
||||
{
|
||||
using namespace Glib;
|
||||
using namespace Gdk;
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("zoom_in_cursor"));
|
||||
zoom_in = new Cursor (Display::get_default(), p, 5, 5);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("zoom_out_cursor"));
|
||||
zoom_out = new Cursor (Display::get_default(), p, 5, 5);
|
||||
}
|
||||
|
||||
Color fbg ("#ffffff");
|
||||
Color ffg ("#000000");
|
||||
|
||||
{
|
||||
RefPtr<Bitmap> source = Bitmap::create (fader_cursor_bits, fader_cursor_width, fader_cursor_height);
|
||||
RefPtr<Bitmap> mask = Bitmap::create (fader_cursor_mask_bits, fader_cursor_width, fader_cursor_height);
|
||||
fader = new Cursor (source, mask, ffg, fbg, fader_cursor_x_hot, fader_cursor_y_hot);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Bitmap> source = Bitmap::create (speaker_cursor_bits, speaker_cursor_width, speaker_cursor_height);
|
||||
RefPtr<Bitmap> mask = Bitmap::create (speaker_cursor_mask_bits, speaker_cursor_width, speaker_cursor_height);
|
||||
speaker = new Cursor (source, mask, ffg, fbg, speaker_cursor_x_hot, speaker_cursor_y_hot);
|
||||
}
|
||||
|
||||
{
|
||||
char pix[4] = { 0, 0, 0, 0 };
|
||||
RefPtr<Bitmap> bits = Bitmap::create (pix, 2, 2);
|
||||
Color c;
|
||||
transparent = new Cursor (bits, bits, c, c, 0, 0);
|
||||
}
|
||||
|
||||
{
|
||||
char pix[4] = { 0, 0, 0, 0 };
|
||||
RefPtr<Bitmap> bits = Bitmap::create (pix, 2, 2);
|
||||
Color c;
|
||||
transparent = new Cursor (bits, bits, c, c, 0, 0);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("grabber"));
|
||||
grabber = new Cursor (Display::get_default(), p, 5, 0);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("grabber_note"));
|
||||
grabber_note = new Cursor (Display::get_default(), p, 5, 10);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("grabber_edit_point"));
|
||||
grabber_edit_point = new Cursor (Display::get_default(), p, 5, 17);
|
||||
}
|
||||
|
||||
cross_hair = new Cursor (CROSSHAIR);
|
||||
trimmer = new Cursor (SB_H_DOUBLE_ARROW);
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("trim_left_cursor"));
|
||||
left_side_trim = new Cursor (Display::get_default(), p, 5, 11);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("trim_right_cursor"));
|
||||
right_side_trim = new Cursor (Display::get_default(), p, 23, 11);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("trim_left_cursor_right_only"));
|
||||
left_side_trim_right_only = new Cursor (Display::get_default(), p, 5, 11);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("trim_right_cursor_left_only"));
|
||||
right_side_trim_left_only = new Cursor (Display::get_default(), p, 23, 11);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("fade_in_cursor"));
|
||||
fade_in = new Cursor (Display::get_default(), p, 0, 0);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("fade_out_cursor"));
|
||||
fade_out = new Cursor (Display::get_default(), p, 29, 0);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("resize_left_cursor"));
|
||||
resize_left = new Cursor (Display::get_default(), p, 3, 10);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("resize_top_left_cursor"));
|
||||
resize_top_left = new Cursor (Display::get_default(), p, 3, 3);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("resize_top_cursor"));
|
||||
resize_top = new Cursor (Display::get_default(), p, 10, 3);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("resize_top_right_cursor"));
|
||||
resize_top_right = new Cursor (Display::get_default(), p, 18, 3);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("resize_right_cursor"));
|
||||
resize_right = new Cursor (Display::get_default(), p, 24, 10);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("resize_bottom_right_cursor"));
|
||||
resize_bottom_right = new Cursor (Display::get_default(), p, 18, 18);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("resize_bottom_cursor"));
|
||||
resize_bottom = new Cursor (Display::get_default(), p, 10, 24);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("resize_bottom_left_cursor"));
|
||||
resize_bottom_left = new Cursor (Display::get_default(), p, 3, 18);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("move_cursor"));
|
||||
move = new Cursor (Display::get_default(), p, 11, 11);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("expand_left_right_cursor"));
|
||||
expand_left_right = new Cursor (Display::get_default(), p, 11, 4);
|
||||
}
|
||||
|
||||
{
|
||||
RefPtr<Pixbuf> p (::get_icon ("expand_up_down_cursor"));
|
||||
expand_up_down = new Cursor (Display::get_default(), p, 4, 11);
|
||||
}
|
||||
|
||||
selector = new Cursor (XTERM);
|
||||
time_fx = new Cursor (SIZING);
|
||||
wait = new Cursor (WATCH);
|
||||
timebar = new Cursor(LEFT_PTR);
|
||||
midi_pencil = new Cursor (PENCIL);
|
||||
midi_select = new Cursor (CENTER_PTR);
|
||||
midi_resize = new Cursor (SIZING);
|
||||
midi_erase = new Cursor (DRAPED_BOX);
|
||||
up_down = new Cursor (SB_V_DOUBLE_ARROW);
|
||||
}
|
66
gtk2_ardour/mouse_cursors.h
Normal file
66
gtk2_ardour/mouse_cursors.h
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
Copyright (C) 2000-2010 Paul Davis
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
/** @file Handling of bitmaps to be used for mouse cursors.
|
||||
*
|
||||
* Held centrally by the Editor because some cursors are used in several places.
|
||||
*/
|
||||
|
||||
class MouseCursors
|
||||
{
|
||||
public:
|
||||
MouseCursors ();
|
||||
|
||||
Gdk::Cursor* cross_hair;
|
||||
Gdk::Cursor* trimmer;
|
||||
Gdk::Cursor* right_side_trim;
|
||||
Gdk::Cursor* left_side_trim;
|
||||
Gdk::Cursor* right_side_trim_left_only;
|
||||
Gdk::Cursor* left_side_trim_right_only;
|
||||
Gdk::Cursor* fade_in;
|
||||
Gdk::Cursor* fade_out;
|
||||
Gdk::Cursor* selector;
|
||||
Gdk::Cursor* grabber;
|
||||
Gdk::Cursor* grabber_note;
|
||||
Gdk::Cursor* grabber_edit_point;
|
||||
Gdk::Cursor* zoom_in;
|
||||
Gdk::Cursor* zoom_out;
|
||||
Gdk::Cursor* time_fx;
|
||||
Gdk::Cursor* fader;
|
||||
Gdk::Cursor* speaker;
|
||||
Gdk::Cursor* midi_pencil;
|
||||
Gdk::Cursor* midi_select;
|
||||
Gdk::Cursor* midi_resize;
|
||||
Gdk::Cursor* midi_erase;
|
||||
Gdk::Cursor* up_down;
|
||||
Gdk::Cursor* wait;
|
||||
Gdk::Cursor* timebar;
|
||||
Gdk::Cursor* transparent;
|
||||
Gdk::Cursor* resize_left;
|
||||
Gdk::Cursor* resize_top_left;
|
||||
Gdk::Cursor* resize_top;
|
||||
Gdk::Cursor* resize_top_right;
|
||||
Gdk::Cursor* resize_right;
|
||||
Gdk::Cursor* resize_bottom_right;
|
||||
Gdk::Cursor* resize_bottom;
|
||||
Gdk::Cursor* resize_bottom_left;
|
||||
Gdk::Cursor* move;
|
||||
Gdk::Cursor* expand_left_right;
|
||||
Gdk::Cursor* expand_up_down;
|
||||
};
|
|
@ -86,6 +86,7 @@ class ImageFrameView;
|
|||
class ImageFrameTimeAxis;
|
||||
class MarkerView;
|
||||
class DragManager;
|
||||
class MouseCursors;
|
||||
|
||||
using ARDOUR::framepos_t;
|
||||
using ARDOUR::framecnt_t;
|
||||
|
@ -380,6 +381,8 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible {
|
|||
virtual void maybe_autoscroll (bool, bool) = 0;
|
||||
virtual void stop_canvas_autoscroll () = 0;
|
||||
|
||||
virtual MouseCursors const * cursors () const = 0;
|
||||
|
||||
/// Singleton instance, set up by Editor::Editor()
|
||||
|
||||
static PublicEditor* _instance;
|
||||
|
|
|
@ -146,6 +146,7 @@ gtk2_ardour_sources = [
|
|||
'mixer_strip.cc',
|
||||
'mixer_ui.cc',
|
||||
'monitor_section.cc',
|
||||
'mouse_cursors.cc',
|
||||
'nag.cc',
|
||||
'normalize_dialog.cc',
|
||||
'note_player.cc',
|
||||
|
|
Loading…
Reference in New Issue
Block a user