Added synchronisation between multiple views of the track title

This commit is contained in:
Joel Holdsworth 2009-01-31 23:45:32 +00:00
parent d3b6a7a07f
commit 3ad2230864
4 changed files with 40 additions and 1 deletions

View file

@ -53,6 +53,7 @@ void
Track::set_name(const string &name)
{
this->name = name;
nameChangedSignal.emit(name);
}
bool
@ -74,6 +75,12 @@ Track::find_descendant_track_parent(
return shared_ptr<ParentTrack>();
}
sigc::signal<void, std::string>
Track::signal_name_changed() const
{
return nameChangedSignal;
}
string
Track::print_branch_recursive(const unsigned int indentation)
{

View file

@ -79,7 +79,17 @@ public:
**/
virtual boost::shared_ptr<ParentTrack>
find_descendant_track_parent(boost::shared_ptr<Track> child);
public:
/**
* A signal which fires when the name changes.
* @return Returns the signal. The signal sends the new name for the
* track.
**/
sigc::signal<void, std::string> signal_name_changed() const;
public:
/**
* A debugging helper function that prints this track, and all it's
* child tracks in a human-readable form.
@ -109,6 +119,11 @@ private:
* The name of this track.
**/
std::string name;
/**
* A signal which fires when the name changes.
**/
sigc::signal<void, std::string> nameChangedSignal;
protected:
/**

View file

@ -89,6 +89,11 @@ Track::Track(TimelineWidget &timeline_widget,
mem_fun(timelineWidget, &TimelineWidget::on_add_track_command) ) );
context_list.push_back( Menu_Helpers::MenuElem(_("_Remove Track"),
mem_fun(this, &Track::on_remove_track) ) );
// Connect to the model
model_track->signal_name_changed().connect(sigc::mem_fun(this,
&Track::on_name_changed));
}
Gtk::Widget&
@ -247,6 +252,13 @@ Track::on_set_name()
}
}
void
Track::on_name_changed(std::string new_name)
{
if(new_name != titleMenuButton.get_label())
update_name();
}
void
Track::on_remove_track()
{

View file

@ -135,6 +135,11 @@ private:
//----- Event Handlers -----//
void on_set_name();
/**
* Event handler for when the track name changes
**/
void on_name_changed(std::string new_name);
void on_remove_track();