summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-12-26 00:43:59 +0100
committerRobin Gareus <robin@gareus.org>2015-12-26 00:43:59 +0100
commitd9fcd142b40f247001449442347089b75ef3988d (patch)
treec1605fa19c886512911ab025700822d0d3bba9f4
parentc85f1c7aa3324881fe24e00d0640b4efb3c3953f (diff)
save/restore plugin-sidebar expanded items
-rw-r--r--gtk2_ardour/mixer_ui.cc20
-rw-r--r--gtk2_ardour/mixer_ui.h1
2 files changed, 17 insertions, 4 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index a8e22c4976..683df81dfd 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -1662,7 +1662,6 @@ public:
if (biter != _user.end()) {
return false;
}
- printf("BITTER\n");
return ARDOUR::cmp_nocase((*a).name, (*b).name) == -1;
}
@@ -1753,18 +1752,22 @@ Mixer_UI::set_state (const XMLNode& node)
tact->set_active (yn);
}
+
XMLNode* plugin_order;
if ((plugin_order = find_named_node (node, "PluginOrder")) != 0) {
+ store_current_favorite_order ();
std::list<string> order;
const XMLNodeList& kids = plugin_order->children("PluginInfo");
XMLNodeConstIterator i;
for (i = kids.begin(); i != kids.end(); ++i) {
if ((prop = (*i)->property ("unique-id"))) {
- order.push_back (prop->value());
+ std::string unique_id = prop->value();
+ order.push_back (unique_id);
+ if ((prop = (*i)->property ("expanded"))) {
+ favorite_ui_state[unique_id] = string_is_affirmative (prop->value());
+ }
}
}
-
- store_current_favorite_order ();
PluginStateSorter cmp (order);
favorite_order.sort (cmp);
sync_treeview_from_favorite_order ();
@@ -1825,6 +1828,9 @@ Mixer_UI::get_state (void)
XMLNode* p = new XMLNode ("PluginInfo");
p->add_property ("sort", cnt);
p->add_property ("unique-id", (*i)->unique_id);
+ try {
+ p->add_property ("expanded", favorite_ui_state.at ((*i)->unique_id));
+ } catch (const std::out_of_range&) { }
plugin_order->add_child_nocopy (*p);
;
}
@@ -2234,6 +2240,7 @@ Mixer_UI::store_current_favorite_order ()
ARDOUR::PluginPresetPtr ppp = row[favorite_plugins_columns.plugin];
favorite_order.push_back (ppp->_pip);
std::string name = row[favorite_plugins_columns.name];
+ favorite_ui_state[(*ppp->_pip).unique_id] = favorite_plugins_display.row_expanded (favorite_plugins_model->get_path(iter));
}
}
@@ -2323,6 +2330,11 @@ Mixer_UI::sync_treeview_from_favorite_order ()
child_row[favorite_plugins_columns.name] = (*j).label;
child_row[favorite_plugins_columns.plugin] = PluginPresetPtr (new PluginPreset(pip, &(*j)));
}
+ try {
+ if (favorite_ui_state.at (pip->unique_id)) {
+ favorite_plugins_display.expand_row (favorite_plugins_model->get_path(newrow), true);
+ }
+ } catch (const std::out_of_range&) { }
}
}
diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h
index 77b61e4812..9712649130 100644
--- a/gtk2_ardour/mixer_ui.h
+++ b/gtk2_ardour/mixer_ui.h
@@ -278,6 +278,7 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
};
ARDOUR::PluginInfoList favorite_order;
+ std::map<std::string, bool> favorite_ui_state;
TrackDisplayModelColumns track_columns;
GroupDisplayModelColumns group_columns;