Update project list on project rename
This commit is contained in:
parent
3c2dac1491
commit
9bb7fd8ba4
|
@ -173,7 +173,7 @@ lash_proxy::dbus_message_hook(
|
|||
}
|
||||
|
||||
me->info_msg((string)"Project '" + project_name + "' renamed to '" + new_project_name + "'.");
|
||||
//me->_app->on_project_renamed(project_name, new_project_name);
|
||||
me->_session_ptr->project_rename(project_name, new_project_name);
|
||||
|
||||
return DBUS_HANDLER_RESULT_HANDLED;
|
||||
}
|
||||
|
|
|
@ -49,6 +49,13 @@ project::get_name(
|
|||
name = _impl_ptr->name;
|
||||
}
|
||||
|
||||
void
|
||||
project::set_name(
|
||||
const string& name)
|
||||
{
|
||||
_impl_ptr->name = name;
|
||||
}
|
||||
|
||||
void
|
||||
project::get_modification_time(
|
||||
time_t& modification_time)
|
||||
|
|
|
@ -43,6 +43,10 @@ public:
|
|||
get_comment(
|
||||
string& comment);
|
||||
|
||||
void
|
||||
set_name(
|
||||
const string& name);
|
||||
|
||||
private:
|
||||
project_impl * _impl_ptr;
|
||||
};
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
struct project_list_column_record : public Gtk::TreeModel::ColumnRecord
|
||||
{
|
||||
Gtk::TreeModelColumn<Glib::ustring> name;
|
||||
Gtk::TreeModelColumn<shared_ptr<project> > project_ptr;
|
||||
};
|
||||
|
||||
struct project_list_impl : public sigc::trackable
|
||||
|
@ -46,6 +47,7 @@ struct project_list_impl : public sigc::trackable
|
|||
|
||||
void project_added(shared_ptr<project> project_ptr);
|
||||
void project_closed(shared_ptr<project> project_ptr);
|
||||
void project_renamed(shared_ptr<project> project_ptr);
|
||||
|
||||
bool on_button_press_event(GdkEventButton * event);
|
||||
|
||||
|
@ -64,6 +66,7 @@ project_list::project_list(
|
|||
_impl_ptr = new project_list_impl(xml, app);
|
||||
session_ptr->_signal_project_added.connect(mem_fun(_impl_ptr, &project_list_impl::project_added));
|
||||
session_ptr->_signal_project_closed.connect(mem_fun(_impl_ptr, &project_list_impl::project_closed));
|
||||
session_ptr->_signal_project_renamed.connect(mem_fun(_impl_ptr, &project_list_impl::project_renamed));
|
||||
}
|
||||
|
||||
project_list::~project_list()
|
||||
|
@ -79,6 +82,7 @@ project_list_impl::project_list_impl(
|
|||
_widget.init(xml, "projects_list");
|
||||
|
||||
_columns.add(_columns.name);
|
||||
_columns.add(_columns.project_ptr);
|
||||
|
||||
_model = Gtk::ListStore::create(_columns);
|
||||
_widget->set_model(_model);
|
||||
|
@ -195,12 +199,38 @@ project_list_impl::project_added(
|
|||
|
||||
row = *(_model->append());
|
||||
row[_columns.name] = project_name;
|
||||
row[_columns.project_ptr] = project_ptr;
|
||||
}
|
||||
|
||||
void
|
||||
project_list_impl::project_closed(
|
||||
shared_ptr<project> project_ptr)
|
||||
{
|
||||
shared_ptr<project> temp_project_ptr;
|
||||
Gtk::TreeModel::Children children = _model->children();
|
||||
Gtk::TreeModel::Children::iterator iter = children.begin();
|
||||
|
||||
while(iter != children.end())
|
||||
{
|
||||
Gtk::TreeModel::Row row = *iter;
|
||||
|
||||
temp_project_ptr = row[_columns.project_ptr];
|
||||
|
||||
if (temp_project_ptr == project_ptr)
|
||||
{
|
||||
_model->erase(iter);
|
||||
return;
|
||||
}
|
||||
|
||||
iter++;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
project_list_impl::project_renamed(
|
||||
shared_ptr<project> project_ptr)
|
||||
{
|
||||
shared_ptr<project> temp_project_ptr;
|
||||
string project_name;
|
||||
Gtk::TreeModel::Children children = _model->children();
|
||||
Gtk::TreeModel::Children::iterator iter = children.begin();
|
||||
|
@ -211,9 +241,11 @@ project_list_impl::project_closed(
|
|||
{
|
||||
Gtk::TreeModel::Row row = *iter;
|
||||
|
||||
if (row[_columns.name] == project_name)
|
||||
temp_project_ptr = row[_columns.project_ptr];
|
||||
|
||||
if (temp_project_ptr == project_ptr)
|
||||
{
|
||||
_model->erase(iter);
|
||||
row[_columns.name] = project_name;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -66,3 +66,24 @@ session::project_close(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
session::project_rename(
|
||||
const string& old_name,
|
||||
const string& new_name)
|
||||
{
|
||||
shared_ptr<project> project_ptr;
|
||||
string temp_name;
|
||||
|
||||
for (list<shared_ptr<project> >::iterator iter = _impl_ptr->projects.begin(); iter != _impl_ptr->projects.end(); iter++)
|
||||
{
|
||||
project_ptr = *iter;
|
||||
project_ptr->get_name(temp_name);
|
||||
|
||||
if (temp_name == old_name)
|
||||
{
|
||||
project_ptr->set_name(new_name);
|
||||
_signal_project_renamed.emit(project_ptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,8 +36,14 @@ public:
|
|||
project_close(
|
||||
const string& project_name);
|
||||
|
||||
void
|
||||
project_rename(
|
||||
const string& old_name,
|
||||
const string& new_name);
|
||||
|
||||
sigc::signal<void, shared_ptr<project> > _signal_project_added;
|
||||
sigc::signal<void, shared_ptr<project> > _signal_project_closed;
|
||||
sigc::signal<void, shared_ptr<project> > _signal_project_renamed;
|
||||
|
||||
private:
|
||||
session_impl * _impl_ptr;
|
||||
|
|
Loading…
Reference in New Issue