summaryrefslogtreecommitdiffstats
path: root/src/ProjectPropertiesDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ProjectPropertiesDialog.cpp')
-rw-r--r--src/ProjectPropertiesDialog.cpp35
1 files changed, 24 insertions, 11 deletions
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 <gtkmm.h>
#include <libglademm/xml.h>
+
+#include "LashProxy.hpp"
#include "Patchage.hpp"
#include "Project.hpp"
#include "ProjectPropertiesDialog.hpp"
@@ -28,18 +30,19 @@ using namespace std;
struct ProjectPropertiesDialogImpl {
- ProjectPropertiesDialogImpl(Glib::RefPtr<Gnome::Glade::Xml> xml);
+ ProjectPropertiesDialogImpl(LashProxy* proxy, Glib::RefPtr<Gnome::Glade::Xml> xml);
- Widget<Gtk::Dialog> _dialog;
- Widget<Gtk::Entry> _name;
- Widget<Gtk::Entry> _description;
+ LashProxy* _proxy;
+ Widget<Gtk::Dialog> _dialog;
+ Widget<Gtk::Entry> _name;
+ Widget<Gtk::Entry> _description;
Widget<Gtk::TextView> _notes;
};
-ProjectPropertiesDialog::ProjectPropertiesDialog(Glib::RefPtr<Gnome::Glade::Xml> xml)
+ProjectPropertiesDialog::ProjectPropertiesDialog(LashProxy* proxy, Glib::RefPtr<Gnome::Glade::Xml> xml)
{
- _impl = new ProjectPropertiesDialogImpl(xml);
+ _impl = new ProjectPropertiesDialogImpl(proxy, xml);
}
@@ -64,17 +67,27 @@ ProjectPropertiesDialog::run(shared_ptr<Project> 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<Gnome::Glade::Xml> xml)
- : _dialog(xml, "project_properties_dialog")
+ProjectPropertiesDialogImpl::ProjectPropertiesDialogImpl(
+ LashProxy* proxy,
+ Glib::RefPtr<Gnome::Glade::Xml> xml)
+ : _proxy(proxy)
+ , _dialog(xml, "project_properties_dialog")
, _name(xml, "project_name")
, _description(xml, "project_description")
, _notes(xml, "project_notes")