From 7a838fc4ebae68fdcfde231ac6e52b90b4e0ed86 Mon Sep 17 00:00:00 2001 From: Joel Holdsworth Date: Fri, 26 Dec 2008 19:51:41 +0000 Subject: [PATCH] Added a name dialog for track --- src/gui/dialogs/name-chooser.cpp | 4 ++-- src/gui/dialogs/name-chooser.hpp | 4 ++-- src/gui/model/parent-track.cpp | 12 ------------ src/gui/model/parent-track.hpp | 8 -------- src/gui/model/track.cpp | 12 ++++++++++++ src/gui/model/track.hpp | 8 ++++++++ src/gui/widgets/timeline/timeline-track.cpp | 21 ++++++++++++++++++++- src/gui/widgets/timeline/timeline-track.hpp | 2 ++ 8 files changed, 46 insertions(+), 25 deletions(-) diff --git a/src/gui/dialogs/name-chooser.cpp b/src/gui/dialogs/name-chooser.cpp index 0017b8bb7..af55df155 100644 --- a/src/gui/dialogs/name-chooser.cpp +++ b/src/gui/dialogs/name-chooser.cpp @@ -30,8 +30,8 @@ using namespace Glib; namespace gui { namespace dialogs { -NameChooser::NameChooser(Window &parent, Glib::ustring title, - Glib::ustring default_name) : +NameChooser::NameChooser(Window &parent, const Glib::ustring title, + const Glib::ustring default_name) : Dialog::Dialog(title, parent, true), caption(_("Name:")) { diff --git a/src/gui/dialogs/name-chooser.hpp b/src/gui/dialogs/name-chooser.hpp index 12b30765e..99854c80a 100644 --- a/src/gui/dialogs/name-chooser.hpp +++ b/src/gui/dialogs/name-chooser.hpp @@ -46,8 +46,8 @@ public: * @param default_name The name that will be shown by default in the * edit box of the dialog. **/ - NameChooser(Gtk::Window &parent, Glib::ustring title, - Glib::ustring default_name); + NameChooser(Gtk::Window &parent, const Glib::ustring title, + const Glib::ustring default_name); /** * Gets the current name of the chosen in the dialog. diff --git a/src/gui/model/parent-track.cpp b/src/gui/model/parent-track.cpp index fa835e49a..c00048129 100644 --- a/src/gui/model/parent-track.cpp +++ b/src/gui/model/parent-track.cpp @@ -41,17 +41,5 @@ ParentTrack::get_child_track_list() return tracks; } -const Glib::ustring -ParentTrack::get_name() const -{ - return name; -} - -void -ParentTrack::set_name(const Glib::ustring &name) -{ - this->name = name; -} - } // namespace model } // namespace gui diff --git a/src/gui/model/parent-track.hpp b/src/gui/model/parent-track.hpp index bc697d903..925dbb3b0 100644 --- a/src/gui/model/parent-track.hpp +++ b/src/gui/model/parent-track.hpp @@ -47,14 +47,6 @@ public: lumiera::observable_list< boost::shared_ptr >& get_child_track_list(); - - const Glib::ustring get_name() const; - - void set_name(const Glib::ustring &name); - -private: - //----- Data -----// - Glib::ustring name; protected: lumiera::observable_list< boost::shared_ptr > tracks; diff --git a/src/gui/model/track.cpp b/src/gui/model/track.cpp index 03c8f88e5..4d49ea2b2 100644 --- a/src/gui/model/track.cpp +++ b/src/gui/model/track.cpp @@ -38,5 +38,17 @@ Track::get_child_tracks() const return Track::NoChildren; } +const Glib::ustring +Track::get_name() const +{ + return name; +} + +void +Track::set_name(const Glib::ustring &name) +{ + this->name = name; +} + } // namespace model } // namespace gui diff --git a/src/gui/model/track.hpp b/src/gui/model/track.hpp index 60357f56e..f57b1d254 100644 --- a/src/gui/model/track.hpp +++ b/src/gui/model/track.hpp @@ -40,6 +40,14 @@ protected: public: virtual std::list< boost::shared_ptr > get_child_tracks() const; + + const Glib::ustring get_name() const; + + void set_name(const Glib::ustring &name); + +private: + //----- Data -----// + Glib::ustring name; protected: static const std::list< boost::shared_ptr > NoChildren; diff --git a/src/gui/widgets/timeline/timeline-track.cpp b/src/gui/widgets/timeline/timeline-track.cpp index c07368b89..40317c982 100644 --- a/src/gui/widgets/timeline/timeline-track.cpp +++ b/src/gui/widgets/timeline/timeline-track.cpp @@ -26,6 +26,7 @@ #include "timeline-track.hpp" #include "../timeline-widget.hpp" #include "../../window-manager.hpp" +#include "../../dialogs/name-chooser.hpp" using namespace boost; using namespace Gtk; @@ -65,7 +66,7 @@ Track::Track(TimelineWidget &timeline_widget) : // Setup the title menu Menu::MenuList& title_list = titleMenuButton.get_menu().items(); title_list.push_back( Menu_Helpers::MenuElem(_("_Name..."), - mem_fun(this, &Track::on_remove_track) ) ); + mem_fun(this, &Track::on_set_name) ) ); // Setup the context menu Menu::MenuList& context_list = contextMenu.items(); @@ -105,6 +106,24 @@ Track::show_header_context_menu(guint button, guint32 time) contextMenu.popup(button, time); } +void +Track::on_set_name() +{ + shared_ptr model_track = + timelineWidget.lookup_model_track(this); + REQUIRE(model_track); + + Gtk::Window *window = dynamic_cast( + timelineWidget.get_toplevel()); + REQUIRE(window != NULL); + + dialogs::NameChooser dialog(*window, + _("Set Track Name"), model_track->get_name()); + + if(dialog.run() == RESPONSE_OK) + model_track->set_name(dialog.get_name()); +} + void Track::on_remove_track() { diff --git a/src/gui/widgets/timeline/timeline-track.hpp b/src/gui/widgets/timeline/timeline-track.hpp index 1407e3b94..0a6f99916 100644 --- a/src/gui/widgets/timeline/timeline-track.hpp +++ b/src/gui/widgets/timeline/timeline-track.hpp @@ -58,6 +58,8 @@ public: private: + void on_set_name(); + void on_remove_track();