From 14bd8256017d29f6f98f7e13ea60ef7abf3586aa Mon Sep 17 00:00:00 2001 From: VKamyshniy Date: Tue, 2 Dec 2014 23:59:52 +0200 Subject: [PATCH] [Summary] Progressing marker inspector --- gtk2_ardour/ardour_ui.cc | 7 ++++--- gtk2_ardour/ardour_ui.h | 7 +++++-- gtk2_ardour/ardour_ui_ed.cc | 13 +++++++++++++ gtk2_ardour/editor.cc | 3 +-- gtk2_ardour/marker.h | 17 ++++++++++++++--- gtk2_ardour/wscript | 2 ++ 6 files changed, 39 insertions(+), 10 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 5c9048b5c1..ccb97bcf11 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -201,9 +201,10 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) , location_ui (X_("locations"), _("Locations")) , route_params (X_("inspector"), _("Tracks and Busses")) , tracks_control_panel (X_("tracks-control-panel"), _("Preferences")) - , _add_tracks_dialog(new AddTracksDialog()) + , _add_tracks_dialog(new AddTracksDialog()) , session_lock_dialog (X_("session-lock-dialog"), _("System Lock")) - , session_option_editor (X_("session-options-editor"), _("Properties"), boost::bind (&ARDOUR_UI::create_session_option_editor, this)) + , marker_inspector_dialog (X_("marker-inspector-dialog"), _("Marker Insector")) + , session_option_editor (X_("session-options-editor"), _("Properties"), boost::bind (&ARDOUR_UI::create_session_option_editor, this)) , add_video_dialog (X_("add-video"), _("Add Tracks/Busses"), boost::bind (&ARDOUR_UI::create_add_video_dialog, this)) , bundle_manager (X_("bundle-manager"), _("Bundle Manager"), boost::bind (&ARDOUR_UI::create_bundle_manager, this)) , big_clock_window (X_("big-clock"), _("Big Clock"), boost::bind (&ARDOUR_UI::create_big_clock_window, this)) @@ -383,6 +384,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) WM::Manager::instance().register_window (&route_params); WM::Manager::instance().register_window (&tracks_control_panel); WM::Manager::instance().register_window (&session_lock_dialog); + WM::Manager::instance().register_window (&marker_inspector_dialog); WM::Manager::instance().register_window (&bundle_manager); WM::Manager::instance().register_window (&location_ui); WM::Manager::instance().register_window (&big_clock_window); @@ -2701,7 +2703,6 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri if (should_be_new || session_name.empty()) { /* need the dialog to get info from user */ - switch (session_dialog.run()) { case RESPONSE_ACCEPT: break; diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index e198ff39f3..c0a2f2f2ca 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -74,7 +74,7 @@ #include "editing.h" #include "session_lock_dialog.h" #include "tracks_control_panel.h" -//#include "meterbridge.h" +#include "marker_inspector_dialog.h" #include "ui_config.h" #include "enums.h" #include "visibility_group.h" @@ -97,6 +97,7 @@ #include "timecode/time.h" #include "time.h" +#include "selection.h" class VideoTimeLine; class ArdourKeyboard; @@ -355,7 +356,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr PBD::Signal0 lock_button_was_pressed; bool session_auto_save_is_allowed() const; - + void update_marker_inspector (MarkerSelection*); + protected: friend class PublicEditor; @@ -663,6 +665,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr WM::Proxy route_params; WM::Proxy tracks_control_panel; WM::Proxy session_lock_dialog; + WM::Proxy marker_inspector_dialog; /* Windows/Dialogs that require a creator method */ diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index b50d89f3c2..fb2770cd1b 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -957,3 +957,16 @@ ARDOUR_UI::focus_on_clock () } } +void +ARDOUR_UI::update_marker_inspector (MarkerSelection* markers) +{ + if (_session && _session->deletion_in_progress()) { + return; + } + + if(markers && !markers->empty()) { + marker_inspector_dialog->set_marker (markers->back ()); + } else { + marker_inspector_dialog->set_marker (0); + } +} diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 47dac6c197..d40b777e32 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -545,6 +545,7 @@ Editor::Editor () selection->PointsChanged.connect (sigc::mem_fun(*this, &Editor::point_selection_changed)); selection->MarkersChanged.connect (sigc::mem_fun(*this, &Editor::marker_selection_changed)); + selection->MarkersChanged.connect (sigc::bind (sigc::mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::update_marker_inspector), &selection->markers)); vertical_adjustment.signal_value_changed().connect (sigc::mem_fun(*this, &Editor::tie_vertical_scrolling), true); horizontal_adjustment.signal_value_changed().connect (sigc::mem_fun(*this, &Editor::tie_horizontal_scrolling), true); @@ -4355,8 +4356,6 @@ Editor::use_visual_state (VisualState& vs) void Editor::set_samples_per_pixel (framecnt_t spp) { - std::cout << "Editor::set_samples_per_pixel ( " << spp << ")" << std::endl; - if (spp < 1) { return; } diff --git a/gtk2_ardour/marker.h b/gtk2_ardour/marker.h index 43846a2b76..7c6680bcd6 100644 --- a/gtk2_ardour/marker.h +++ b/gtk2_ardour/marker.h @@ -24,6 +24,8 @@ #include #include +#include +#include #include "ardour/ardour.h" #include "pbd/signals.h" @@ -34,6 +36,13 @@ namespace ARDOUR { class TempoSection; class MeterSection; + class Location; +} + +namespace ArdourCanvas +{ + class Container; + class Item; } class PublicEditor; @@ -65,10 +74,12 @@ class Marker : public sigc::trackable static PBD::Signal1 CatchDeletion; ArdourCanvas::Item& the_item() const; - ARDOUR::Location* location() const { return _location; } + ARDOUR::Location* location() const { return _location; } + + virtual void canvas_height_set (double); + void set_has_scene_change (bool); + bool has_scene_change () const { return _have_scene_change; } - virtual void canvas_height_set (double); - void set_has_scene_change (bool); void set_name (const std::string&); diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 7d8b3d3a9e..50bc5c25cb 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -28,6 +28,8 @@ path_prefix = 'gtk2_ardour/' gtk2_ardour_sources = [ 'mixer_bridge_view.cc', + 'marker_inspector_dialog.cc', + 'marker_inspector_dialog.logic.cc', 'waves_message_dialog.cc', 'waves_dropdown.cc', 'waves_zoom_control.cc',