summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-01-11 21:03:35 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-01-11 21:03:35 +0000
commita56b852a2b325468f893758825d4d0a4c2bcd215 (patch)
tree8b199b19b71330ab34c278955c694d7b64f883fa
parent5c3ba06c8dc8f695f3bacf929e0b598cad83b04c (diff)
fixes for region menus; fixes for new session dialog/Gnome VFS assertion
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2897 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/editor.cc10
-rw-r--r--gtk2_ardour/editor.h6
-rw-r--r--gtk2_ardour/editor_ops.cc25
-rw-r--r--gtk2_ardour/new_session_dialog.cc21
4 files changed, 30 insertions, 32 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index a15c884bfe..ff49af5c61 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -1748,7 +1748,7 @@ Editor::add_region_context_items (AudioStreamView* sv, boost::shared_ptr<Region>
sigc::connection fooc;
items.push_back (CheckMenuElem (_("Lock")));
- region_lock_item = static_cast<CheckMenuItem*>(&items.back());
+ CheckMenuItem* region_lock_item = static_cast<CheckMenuItem*>(&items.back());
fooc = region_lock_item->signal_activate().connect (mem_fun(*this, &Editor::toggle_region_lock));
if (region->locked()) {
fooc.block (true);
@@ -1756,7 +1756,7 @@ Editor::add_region_context_items (AudioStreamView* sv, boost::shared_ptr<Region>
fooc.block (false);
}
items.push_back (CheckMenuElem (_("Mute")));
- region_mute_item = static_cast<CheckMenuItem*>(&items.back());
+ CheckMenuItem* region_mute_item = static_cast<CheckMenuItem*>(&items.back());
fooc = region_mute_item->signal_activate().connect (mem_fun(*this, &Editor::toggle_region_mute));
if (region->muted()) {
fooc.block (true);
@@ -1766,7 +1766,7 @@ Editor::add_region_context_items (AudioStreamView* sv, boost::shared_ptr<Region>
if (!Profile->get_sae()) {
items.push_back (CheckMenuElem (_("Opaque")));
- region_opaque_item = static_cast<CheckMenuItem*>(&items.back());
+ CheckMenuItem* region_opaque_item = static_cast<CheckMenuItem*>(&items.back());
fooc = region_opaque_item->signal_activate().connect (mem_fun(*this, &Editor::toggle_region_opaque));
if (region->opaque()) {
fooc.block (true);
@@ -1791,7 +1791,7 @@ Editor::add_region_context_items (AudioStreamView* sv, boost::shared_ptr<Region>
items.push_back (MenuElem (_("Reset Envelope"), mem_fun(*this, &Editor::reset_region_gain_envelopes)));
items.push_back (CheckMenuElem (_("Envelope Visible")));
- region_envelope_visible_item = static_cast<CheckMenuItem*> (&items.back());
+ CheckMenuItem* region_envelope_visible_item = static_cast<CheckMenuItem*> (&items.back());
fooc = region_envelope_visible_item->signal_activate().connect (mem_fun(*this, &Editor::toggle_gain_envelope_visibility));
if (arv->envelope_visible()) {
fooc.block (true);
@@ -1800,7 +1800,7 @@ Editor::add_region_context_items (AudioStreamView* sv, boost::shared_ptr<Region>
}
items.push_back (CheckMenuElem (_("Envelope Active")));
- region_envelope_active_item = static_cast<CheckMenuItem*> (&items.back());
+ CheckMenuItem* region_envelope_active_item = static_cast<CheckMenuItem*> (&items.back());
fooc = region_envelope_active_item->signal_activate().connect (mem_fun(*this, &Editor::toggle_gain_envelope_active));
if (ar->envelope_active()) {
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index a6c548507e..c0f532879b 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -2006,12 +2006,6 @@ class Editor : public PublicEditor
void toggle_gain_envelope_active ();
void reset_region_gain_envelopes ();
- Gtk::CheckMenuItem* region_envelope_visible_item;
- Gtk::CheckMenuItem* region_envelope_active_item;
- Gtk::CheckMenuItem* region_mute_item;
- Gtk::CheckMenuItem* region_lock_item;
- Gtk::CheckMenuItem* region_opaque_item;
-
bool on_key_press_event (GdkEventKey*);
bool on_key_release_event (GdkEventKey*);
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index e860ff185a..58c88ab3c6 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -4223,10 +4223,7 @@ Editor::toggle_gain_envelope_visibility ()
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
if (arv) {
- bool x = region_envelope_visible_item->get_active();
- if (x != arv->envelope_visible()) {
- arv->set_envelope_visible (x);
- }
+ arv->set_envelope_visible (!arv->envelope_visible());
}
}
}
@@ -4237,10 +4234,7 @@ Editor::toggle_gain_envelope_active ()
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
if (arv) {
- bool x = region_envelope_active_item->get_active();
- if (x != arv->audio_region()->envelope_active()) {
- arv->audio_region()->set_envelope_active (x);
- }
+ arv->audio_region()->set_envelope_active (!arv->audio_region()->envelope_active());
}
}
}
@@ -4251,10 +4245,7 @@ Editor::toggle_region_lock ()
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
if (arv) {
- bool x = region_lock_item->get_active();
- if (x != arv->audio_region()->locked()) {
- arv->audio_region()->set_locked (x);
- }
+ arv->audio_region()->set_locked (!arv->audio_region()->locked());
}
}
}
@@ -4265,10 +4256,7 @@ Editor::toggle_region_mute ()
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
if (arv) {
- bool x = region_mute_item->get_active();
- if (x != arv->audio_region()->muted()) {
- arv->audio_region()->set_muted (x);
- }
+ arv->audio_region()->set_muted (!arv->audio_region()->muted());
}
}
}
@@ -4279,10 +4267,7 @@ Editor::toggle_region_opaque ()
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
if (arv) {
- bool x = region_opaque_item->get_active();
- if (x != arv->audio_region()->opaque()) {
- arv->audio_region()->set_opaque (x);
- }
+ arv->audio_region()->set_opaque (!arv->audio_region()->opaque());
}
}
}
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc
index adc36df8b6..a5accb208e 100644
--- a/gtk2_ardour/new_session_dialog.cc
+++ b/gtk2_ardour/new_session_dialog.cc
@@ -539,7 +539,26 @@ NewSessionDialog::set_session_name (const Glib::ustring& name)
void
NewSessionDialog::set_session_folder(const Glib::ustring& dir)
{
- m_folder->set_current_folder (dir);
+ Glib::ustring realdir = dir;
+
+ /* GtkFileChooser doesn't accept non-absolute pathnames without vomiting */
+
+ if (!Glib::path_is_absolute (realdir)) {
+ if (realdir.length() == 1 && realdir[0] == '.') {
+ realdir.replace (0, 1, Glib::get_current_dir());
+ } else if (realdir.length() > 1 && realdir[0] == '.' && realdir[1] != '.') {
+ realdir.replace (0, 1, Glib::get_current_dir());
+ } else if (realdir.length() == 2 && realdir[0] == '.' && realdir[1] == '.') {
+ realdir.replace (0, 2, Glib::path_get_dirname (Glib::get_current_dir()));
+ } else if (realdir.length() > 2 && realdir[0] == '.' && realdir[1] == '.') {
+ realdir.replace (0, 2, Glib::path_get_dirname (Glib::get_current_dir()));
+ } else {
+ error << string_compose (_("Non-absolute path \"%1\" not usable - ignored"), realdir) << endmsg;
+ return;
+ }
+ }
+
+ m_folder->set_current_folder (realdir);
}
std::string