From 02dbee4a9bd8a02873b359cbc45e55f0b3de3973 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 15 Dec 2010 04:35:58 +0000 Subject: Remove LashProxy dependency from Project. git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@2696 a436a847-0d15-0410-975c-d299462d15a1 --- src/ProjectPropertiesDialog.cpp | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'src/ProjectPropertiesDialog.cpp') diff --git a/src/ProjectPropertiesDialog.cpp b/src/ProjectPropertiesDialog.cpp index ef52c3d..36f0a1f 100644 --- a/src/ProjectPropertiesDialog.cpp +++ b/src/ProjectPropertiesDialog.cpp @@ -18,6 +18,8 @@ #include #include + +#include "LashProxy.hpp" #include "Patchage.hpp" #include "Project.hpp" #include "ProjectPropertiesDialog.hpp" @@ -28,18 +30,19 @@ using namespace std; struct ProjectPropertiesDialogImpl { - ProjectPropertiesDialogImpl(Glib::RefPtr xml); + ProjectPropertiesDialogImpl(LashProxy* proxy, Glib::RefPtr xml); - Widget _dialog; - Widget _name; - Widget _description; + LashProxy* _proxy; + Widget _dialog; + Widget _name; + Widget _description; Widget _notes; }; -ProjectPropertiesDialog::ProjectPropertiesDialog(Glib::RefPtr xml) +ProjectPropertiesDialog::ProjectPropertiesDialog(LashProxy* proxy, Glib::RefPtr xml) { - _impl = new ProjectPropertiesDialogImpl(xml); + _impl = new ProjectPropertiesDialogImpl(proxy, xml); } @@ -64,17 +67,27 @@ ProjectPropertiesDialog::run(shared_ptr project) result = _impl->_dialog->run(); if (result == 2) { - project->do_change_description(_impl->_description->get_text()); - project->do_change_notes(buffer->get_text()); - project->do_rename(_impl->_name->get_text()); + const std::string& old_name = project->get_name(); + const std::string& desc = _impl->_description->get_text(); + const std::string& notes = buffer->get_text(); + const std::string& name = _impl->_name->get_text(); + if (project->get_description() != desc) + _impl->_proxy->project_set_description(old_name, _impl->_description->get_text()); + if (project->get_notes() != notes) + _impl->_proxy->project_set_notes(old_name, buffer->get_text()); + if (old_name != name) + _impl->_proxy->project_rename(old_name, buffer->get_text()); } _impl->_dialog->hide(); } -ProjectPropertiesDialogImpl::ProjectPropertiesDialogImpl(Glib::RefPtr xml) - : _dialog(xml, "project_properties_dialog") +ProjectPropertiesDialogImpl::ProjectPropertiesDialogImpl( + LashProxy* proxy, + Glib::RefPtr xml) + : _proxy(proxy) + , _dialog(xml, "project_properties_dialog") , _name(xml, "project_name") , _description(xml, "project_description") , _notes(xml, "project_notes") -- cgit v1.2.1