#include "pbd/stacktrace.h"
#include <glibmm/miscutils.h>
+#include <glibmm/uriutils.h>
#include <gtkmm/image.h>
#include <gdkmm/color.h>
#include <gdkmm/bitmap.h>
location_loop_color = ARDOUR_UI::config()->get_canvasvar_LocationLoop();
location_punch_color = ARDOUR_UI::config()->get_canvasvar_LocationPunch();
+ zoom_focus = ZoomFocusLeft;
_edit_point = EditAtMouse;
_internal_editing = false;
current_canvas_cursor = 0;
_scroll_callbacks = 0;
- zoom_focus = ZoomFocusLeft;
- set_zoom_focus (ZoomFocusLeft);
zoom_range_clock->ValueChanged.connect (sigc::mem_fun(*this, &Editor::zoom_adjustment_changed));
bbt_label.set_name ("EditorRulerLabel");
setup_toolbar ();
+ set_zoom_focus (zoom_focus);
_snap_type = SnapToBeat;
set_snap_to (_snap_type);
_snap_mode = SnapOff;
signal_configure_event().connect (sigc::mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler));
signal_delete_event().connect (sigc::mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::exit_on_main_window_close));
- Gtkmm2ext::Keyboard::the_keyboard().ShiftReleased.connect (sigc::mem_fun (*this, &Editor::shift_key_released));
+ Gtkmm2ext::Keyboard::the_keyboard().ZoomVerticalModifierReleased.connect (sigc::mem_fun (*this, &Editor::zoom_vertical_modifier_released));
/* allow external control surfaces/protocols to do various things */
/* These signals can all be emitted by a non-GUI thread. Therefore the
handlers for them must not attempt to directly interact with the GUI,
- but use Gtkmm2ext::UI::instance()->call_slot();
+ but use PBD::Signal<T>::connect() which accepts an event loop
+ ("context") where the handler will be asked to run.
*/
_session->StepEditStatusChange.connect (_session_connections, invalidator (*this), boost::bind (&Editor::step_edit_status_change, this, _1), gui_context());
edit_items.push_back (MenuElem (_("Bounce Range to Region List"), sigc::bind (sigc::mem_fun(*this, &Editor::bounce_range_selection), false, false)));
edit_items.push_back (MenuElem (_("Bounce Range to Region List With Processing"), sigc::bind (sigc::mem_fun(*this, &Editor::bounce_range_selection), false, true)));
edit_items.push_back (MenuElem (_("Export Range..."), sigc::mem_fun(*this, &Editor::export_selection)));
+ if (ARDOUR_UI::instance()->video_timeline->get_duration() > 0) {
+ edit_items.push_back (MenuElem (_("Export Video Range..."), sigc::bind (sigc::mem_fun(*this, &Editor::export_video), true)));
+ }
}
}
for (vector<string>::iterator i = uris.begin(); i != uris.end(); ++i) {
-
if ((*i).substr (0,7) == "file://") {
-
- string const p = PBD::url_decode (*i);
-
- // scan forward past three slashes
-
- string::size_type slashcnt = 0;
- string::size_type n = 0;
- string::const_iterator x = p.begin();
-
- while (slashcnt < 3 && x != p.end()) {
- if ((*x) == '/') {
- slashcnt++;
- } else if (slashcnt == 3) {
- break;
- }
- ++n;
- ++x;
- }
-
- if (slashcnt != 3 || x == p.end()) {
- error << _("malformed URL passed to drag-n-drop code") << endmsg;
- continue;
- }
-
- paths.push_back (p.substr (n - 1));
+ paths.push_back (Glib::filename_from_uri (*i));
}
}
void
Editor::new_tempo_section ()
-
{
}
ZoomChanged (); /* EMIT_SIGNAL */
- //reset_scrolling_region ();
+ ArdourCanvas::GtkCanvasViewport* c;
+
+ c = get_time_bars_canvas();
+ if (c) {
+ c->canvas()->zoomed ();
+ }
+ c = get_track_canvas();
+ if (c) {
+ c->canvas()->zoomed ();
+ }
if (playhead_cursor) {
playhead_cursor->set_position (playhead_cursor->current_frame ());
EditPoint ep = _edit_point;
if (from_context_menu && (ep == EditAtMouse)) {
- return window_event_frame (&context_click_event, 0, 0);
+ return canvas_event_frame (&context_click_event, 0, 0);
}
if (entered_marker) {
rtv->view()->RegionViewRemoved.connect (sigc::mem_fun (*this, &Editor::region_view_removed));
}
- _routes->routes_added (new_views);
- _summary->routes_added (new_views);
+ if (new_views.size() > 0) {
+ _routes->routes_added (new_views);
+ _summary->routes_added (new_views);
+ }
if (show_editor_mixer_when_tracks_arrive) {
show_editor_mixer (true);
}
void
-Editor::shift_key_released ()
+Editor::zoom_vertical_modifier_released()
{
_stepping_axis_view = 0;
}