_menu->popup (1, gtk_get_current_event_time());
}
-const char* _order_key = N_("editor");
-
void
EditorRoutes::redisplay ()
{
to tracks.
*/
- route->set_order_key (_order_key, n);
+ route->set_order_key (N_ ("editor"), n);
}
bool visible = (*i)[_columns.visible];
}
if (!_redisplay_does_not_reset_order_keys && !_redisplay_does_not_sync_order_keys) {
- _editor->current_session()->sync_order_keys (_order_key);
+ _editor->current_session()->sync_order_keys (N_ ("editor"));
}
}
_ignore_reorder = true;
/* added a new fresh one at the end */
- if ((*x)->route()->order_key(_order_key) == -1) {
- (*x)->route()->set_order_key (_order_key, _model->children().size()-1);
+ if ((*x)->route()->order_key (N_ ("editor")) == -1) {
+ (*x)->route()->set_order_key (N_ ("editor"), _model->children().size()-1);
}
_ignore_reorder = false;
void
-EditorRoutes::sync_order_keys (char const * src)
+EditorRoutes::sync_order_keys (string const & src)
{
vector<int> neworder;
TreeModel::Children rows = _model->children();
ARDOUR::Session* s = _editor->current_session ();
- if ((strcmp (src, _order_key) == 0) || !s || (s->state_of_the_state() & Session::Loading) || rows.empty()) {
+ if (src != N_ ("editor") || !s || (s->state_of_the_state() & Session::Loading) || rows.empty()) {
return;
}
boost::shared_ptr<Route> route = (*ri)[_columns.route];
int old_key = order;
- int new_key = route->order_key (_order_key);
+ int new_key = route->order_key (N_ ("editor"));
neworder[new_key] = old_key;
struct EditorOrderRouteSorter {
bool operator() (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
/* use of ">" forces the correct sort order */
- return a->order_key (_order_key) < b->order_key (_order_key);
+ return a->order_key (N_ ("editor")) < b->order_key (N_ ("editor"));
}
};
}
for (leading = view_routes.begin(); leading != view_routes.end(); ++leading) {
- neworder.push_back (leading->second->order_key (_order_key));
+ neworder.push_back (leading->second->order_key (N_ ("editor")));
}
_model->reorder (neworder);
- _editor->current_session()->sync_order_keys (_order_key);
+ _editor->current_session()->sync_order_keys (N_ ("editor"));
}
void
void reordered (Gtk::TreeModel::Path const &, Gtk::TreeModel::iterator const &, int *);
bool button_press (GdkEventButton *);
void route_name_changed (boost::weak_ptr<ARDOUR::Route>);
- void sync_order_keys (char const *);
+ void sync_order_keys (std::string const &);
void route_removed (TimeAxisView *);
void handle_gui_changes (std::string const &, void *);
void update_rec_display ();
strip_redisplay_does_not_sync_order_keys = false;
}
-const char*
+string
Mixer_UI::get_order_key()
{
return X_("signal");
}
void
-Mixer_UI::sync_order_keys (const char *src)
+Mixer_UI::sync_order_keys (string const & src)
{
vector<int> neworder;
TreeModel::Children rows = track_model->children();
TreeModel::Children::iterator ri;
- if ((strcmp (src, get_order_key()) == 0) || !session || (session->state_of_the_state() & Session::Loading) || rows.empty()) {
+ if (src != get_order_key() || !session || (session->state_of_the_state() & Session::Loading) || rows.empty()) {
return;
}
RouteRedirectSelection& selection() { return _selection; }
- static const char* get_order_key();
+ static std::string get_order_key();
private:
ARDOUR::Session *session;
Width _strip_width;
- void sync_order_keys (const char *src);
+ void sync_order_keys (std::string const &);
bool strip_redisplay_does_not_reset_order_keys;
bool strip_redisplay_does_not_sync_order_keys;
bool ignore_sync;
bool set_name (const std::string& str);
- long order_key (const char* name) const;
- void set_order_key (const char* name, long n);
+ long order_key (std::string const &) const;
+ void set_order_key (std::string const &, long);
bool is_hidden() const { return _flags & Hidden; }
bool is_master() const { return _flags & MasterOut; }
uint32_t remote_control_id () const;
sigc::signal<void> RemoteControlIDChanged;
- void sync_order_keys (const char* base);
- static sigc::signal<void,const char*> SyncOrderKeys;
+ void sync_order_keys (std::string const &);
+ static sigc::signal<void, std::string const &> SyncOrderKeys;
protected:
friend class Session;
static uint32_t order_key_cnt;
- struct ltstr {
- bool operator()(const char* s1, const char* s2) const {
- return strcmp(s1, s2) < 0;
- }
- };
-
- typedef std::map<const char*,long,ltstr> OrderKeys;
+ typedef std::map<std::string, long> OrderKeys;
OrderKeys order_keys;
void input_change_handler (IOChange, void *src);
bool operator() (boost::shared_ptr<Route>, boost::shared_ptr<Route> b);
};
- void sync_order_keys (const char* base);
+ void sync_order_keys (std::string const &);
template<class T> void foreach_route (T *obj, void (T::*func)(Route&));
template<class T> void foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>));
using namespace PBD;
uint32_t Route::order_key_cnt = 0;
-sigc::signal<void,const char*> Route::SyncOrderKeys;
+sigc::signal<void, string const &> Route::SyncOrderKeys;
Route::Route (Session& sess, string name, Flag flg, DataType default_type)
: SessionObject (sess, name)
processor_max_streams.reset();
_solo_safe = false;
_recordable = true;
- order_keys[strdup (N_("signal"))] = order_key_cnt++;
+ order_keys[N_("signal")] = order_key_cnt++;
_silent = false;
_meter_point = MeterPostFader;
_initial_delay = 0;
clear_processors (PreFader);
clear_processors (PostFader);
-
- for (OrderKeys::iterator i = order_keys.begin(); i != order_keys.end(); ++i) {
- free ((void*)(i->first));
- }
}
void
}
long
-Route::order_key (const char* name) const
+Route::order_key (std::string const & name) const
{
- OrderKeys::const_iterator i;
-
- for (i = order_keys.begin(); i != order_keys.end(); ++i) {
- if (!strcmp (name, i->first)) {
- return i->second;
- }
+ OrderKeys::const_iterator i = order_keys.find (name);
+ if (i == order_keys.end()) {
+ return -1;
}
- return -1;
+ return i->second;
}
void
-Route::set_order_key (const char* name, long n)
+Route::set_order_key (std::string const & name, long n)
{
- order_keys[strdup(name)] = n;
+ order_keys[name] = n;
if (Config->get_sync_all_route_ordering()) {
for (OrderKeys::iterator x = order_keys.begin(); x != order_keys.end(); ++x) {
}
void
-Route::sync_order_keys (const char* base)
+Route::sync_order_keys (std::string const & base)
{
if (order_keys.empty()) {
return;
error << string_compose (_("badly formed order key string in state file! [%1] ... ignored."), remaining)
<< endmsg;
} else {
- set_order_key (remaining.substr (0, equal).c_str(), n);
+ set_order_key (remaining.substr (0, equal), n);
}
}
}
void
-Session::sync_order_keys (const char* base)
+Session::sync_order_keys (std::string const & base)
{
if (!Config->get_sync_all_route_ordering()) {
/* leave order keys as they are */