summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-03-29 09:46:29 +0100
committerRobin Gareus <robin@gareus.org>2013-03-29 12:35:57 +0100
commit941898843ead9677792df9e10e6a545f29d43499 (patch)
tree0708126a736bece657148aa3122dcb1861c9b74e /gtk2_ardour
parent0c2d95b08f1310533aa14604f7745be8681d10ec (diff)
vtl: add close/remove video menu entry
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour.menus.in1
-rw-r--r--gtk2_ardour/ardour_ui.cc13
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc3
-rw-r--r--gtk2_ardour/video_timeline.cc13
5 files changed, 29 insertions, 2 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index 8ad92c89f1..0451146b2a 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -36,6 +36,7 @@
<!--menuitem action='importFromSession'/-->
#ifdef WITH_VIDEOTIMELINE
<menuitem action='OpenVideo'/>
+ <menuitem action='CloseVideo'/>
<menu name='Video' action='Video'>
<menuitem action='StartVideoServer'/>
<menuitem action='StopVideoServer'/>
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index dc53f8fa6e..4ab24dcd18 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -3485,6 +3485,19 @@ ARDOUR_UI::add_video (Gtk::Window* float_window)
}
void
+ARDOUR_UI::remove_video ()
+{
+ video_timeline->close_session();
+ editor->toggle_ruler_video(false);
+
+ /* delete session state */
+ XMLNode* node = new XMLNode(X_("Videotimeline"));
+ _session->add_extra_xml(*node);
+ node = new XMLNode(X_("Videomonitor"));
+ _session->add_extra_xml(*node);
+}
+
+void
ARDOUR_UI::flush_videotimeline_cache (bool localcacheonly)
{
if (localcacheonly) {
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 0716813436..6c7edff1ba 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -227,6 +227,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void add_routes_thread ();
#ifdef WITH_VIDEOTIMELINE
void add_video (Gtk::Window* float_window);
+ void remove_video ();
void start_video_server_menu (Gtk::Window* float_window);
bool start_video_server (Gtk::Window* float_window, bool popup_msg);
void stop_video_server (bool ask_confirm=false);
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 6228fcb4ba..5d6b230796 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -136,6 +136,9 @@ ARDOUR_UI::install_actions ()
act = ActionManager::register_action (main_actions, X_("OpenVideo"), _("Open Video"),
sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::add_video), (Gtk::Window*) 0));
ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (main_actions, X_("CloseVideo"), _("Remove Video"),
+ sigc::mem_fun (*this, &ARDOUR_UI::remove_video));
+ ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (main_actions, X_("ExportVideo"), _("Export To Video File"),
sigc::mem_fun (*editor, &PublicEditor::export_video));
ActionManager::session_sensitive_actions.push_back (act);
diff --git a/gtk2_ardour/video_timeline.cc b/gtk2_ardour/video_timeline.cc
index e214341d20..328d1311ac 100644
--- a/gtk2_ardour/video_timeline.cc
+++ b/gtk2_ardour/video_timeline.cc
@@ -153,12 +153,16 @@ VideoTimeLine::save_session ()
void
VideoTimeLine::close_session ()
{
+ if (video_duration == 0) {
+ return;
+ }
close_video_monitor();
save_session();
remove_frames();
video_filename = "";
- video_duration = 0L;
+ video_duration = 0;
+ GuiUpdate("set-xjadeo-sensitive-off");
}
/** load settings from session */
@@ -171,6 +175,11 @@ VideoTimeLine::set_session (ARDOUR::Session *s)
LocaleGuard lg (X_("POSIX"));
XMLNode* node = _session->extra_xml (X_("Videotimeline"));
+
+ if (!node || !node->property (X_("Filename"))) {
+ return;
+ }
+
if (node) {
ARDOUR_UI::instance()->start_video_server((Gtk::Window*)0, false);
@@ -210,7 +219,7 @@ VideoTimeLine::set_session (ARDOUR::Session *s)
node = _session->extra_xml (X_("Videomonitor"));
if (node) {
const XMLProperty* prop = node->property (X_("active"));
- if (prop->value() == "yes" && found_xjadeo() && !video_filename.empty() && local_file) {
+ if (prop && prop->value() == "yes" && found_xjadeo() && !video_filename.empty() && local_file) {
open_video_monitor(false);
}
}