diff --git a/src/gui/Makefile.am b/src/gui/Makefile.am index 1c4c0fb67..ef0031754 100644 --- a/src/gui/Makefile.am +++ b/src/gui/Makefile.am @@ -80,14 +80,14 @@ lumigui_SOURCES = \ $(lumigui_srcdir)/widgets/timeline/timeline-clip.hpp \ $(lumigui_srcdir)/model/project.cpp \ $(lumigui_srcdir)/model/project.hpp \ - $(lumigui_srcdir)/model/track-base.cpp \ - $(lumigui_srcdir)/model/track-base.hpp \ - $(lumigui_srcdir)/model/sequence.cpp \ - $(lumigui_srcdir)/model/sequence.hpp \ $(lumigui_srcdir)/model/track.cpp \ $(lumigui_srcdir)/model/track.hpp \ $(lumigui_srcdir)/model/clip-track.cpp \ $(lumigui_srcdir)/model/clip-track.hpp \ + $(lumigui_srcdir)/model/parent-track.cpp \ + $(lumigui_srcdir)/model/parent-track.hpp \ + $(lumigui_srcdir)/model/sequence.cpp \ + $(lumigui_srcdir)/model/sequence.hpp \ $(lumigui_srcdir)/model/group-track.cpp \ $(lumigui_srcdir)/model/group-track.hpp \ $(lumigui_srcdir)/model/clip.cpp \ diff --git a/src/gui/model/group-track.cpp b/src/gui/model/group-track.cpp index a71d8db6c..c7572b4d9 100644 --- a/src/gui/model/group-track.cpp +++ b/src/gui/model/group-track.cpp @@ -28,12 +28,6 @@ namespace model { GroupTrack::GroupTrack() { } - -const std::list< boost::shared_ptr >& -GroupTrack::get_child_tracks() const -{ - return children; -} } // namespace model } // namespace gui diff --git a/src/gui/model/group-track.hpp b/src/gui/model/group-track.hpp index eb047cf37..de5ac8f4b 100644 --- a/src/gui/model/group-track.hpp +++ b/src/gui/model/group-track.hpp @@ -26,22 +26,16 @@ #ifndef GROUP_TRACK_HPP #define GROUP_TRACK_HPP -#include "track.hpp" +#include "parent-track.hpp" namespace gui { namespace model { -class GroupTrack : public Track +class GroupTrack : public ParentTrack { public: GroupTrack(); - - const std::list< boost::shared_ptr >& - get_child_tracks() const; - -private: - //----- Data -----// - std::list< boost::shared_ptr > children; + }; } // namespace model diff --git a/src/gui/model/track-base.cpp b/src/gui/model/parent-track.cpp similarity index 71% rename from src/gui/model/track-base.cpp rename to src/gui/model/parent-track.cpp index d6fd2357f..fa835e49a 100644 --- a/src/gui/model/track-base.cpp +++ b/src/gui/model/parent-track.cpp @@ -1,5 +1,5 @@ /* - track-base.cpp - Implementation of the TrackBase class + parent-track-.cpp - Implementation of the ParentTrack class Copyright (C) Lumiera.org 2008, Joel Holdsworth @@ -20,31 +20,35 @@ * *****************************************************/ -#include "track.hpp" +#include "parent-track.hpp" namespace gui { namespace model { -const std::list< boost::shared_ptr > TrackBase::NoChildren; - -TrackBase::TrackBase() +ParentTrack::ParentTrack() { } -const std::list< boost::shared_ptr >& -TrackBase::get_child_tracks() const +std::list< boost::shared_ptr > +ParentTrack::get_child_tracks() const { - return NoChildren; + return tracks.to_list(); +} + +lumiera::observable_list< boost::shared_ptr >& +ParentTrack::get_child_track_list() +{ + return tracks; } const Glib::ustring -TrackBase::get_name() const +ParentTrack::get_name() const { return name; } void -TrackBase::set_name(const Glib::ustring &name) +ParentTrack::set_name(const Glib::ustring &name) { this->name = name; } diff --git a/src/gui/model/track-base.hpp b/src/gui/model/parent-track.hpp similarity index 68% rename from src/gui/model/track-base.hpp rename to src/gui/model/parent-track.hpp index 5ae555e01..518140d9f 100644 --- a/src/gui/model/track-base.hpp +++ b/src/gui/model/parent-track.hpp @@ -1,5 +1,5 @@ /* - track-track.hpp - Definition of the TrackBase class + parent-track.hpp - Definition of the ParentTrack class Copyright (C) Lumiera.org 2008, Joel Holdsworth @@ -19,43 +19,48 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/** @file track-base.hpp - ** This file contains the definition of TrackBase, a class which +/** @file parent-track.hpp + ** This file contains the definition of ParentTrack, a class which ** represents a base functionality for tracks and sequences which ** are also track parents. This class wraps proc layer data */ -#include "../gtk-lumiera.hpp" +#include "track.hpp" +#include "../../common/observable-list.hpp" -#ifndef TRACK_BASE_HPP -#define TRACK_BASE_HPP +#ifndef PARENT_TRACK_HPP +#define PARENT_TRACK_HPP namespace gui { namespace model { -class Track; - -class TrackBase +class ParentTrack : public Track { +protected: + ParentTrack(); + public: - TrackBase(); - virtual void add_child_track(Track* child) {}; - - virtual const std::list< boost::shared_ptr >& + + std::list< boost::shared_ptr > get_child_tracks() const; + + 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; - static const std::list< boost::shared_ptr > NoChildren; +protected: + lumiera::observable_list< boost::shared_ptr > tracks; }; } // namespace model } // namespace gui -#endif // TRACK_BASE_HPP +#endif // PARENT_TRACK_HPP diff --git a/src/gui/model/sequence.cpp b/src/gui/model/sequence.cpp index e480b02db..87d9d1dc7 100644 --- a/src/gui/model/sequence.cpp +++ b/src/gui/model/sequence.cpp @@ -49,11 +49,5 @@ Sequence::Sequence() // END TEST CODE } -const std::list< boost::shared_ptr >& -Sequence::get_child_tracks() const -{ - return tracks; -} - } // namespace model } // namespace gui diff --git a/src/gui/model/sequence.hpp b/src/gui/model/sequence.hpp index 2df7a3f11..02a2869c2 100644 --- a/src/gui/model/sequence.hpp +++ b/src/gui/model/sequence.hpp @@ -27,7 +27,7 @@ #ifndef SEQUENCE_HPP #define SEQUENCE_HPP -#include "track-base.hpp" +#include "parent-track.hpp" // TEST CODE #include "group-track.hpp" @@ -38,17 +38,14 @@ namespace model { class Track; -class Sequence : public TrackBase +class Sequence : public ParentTrack { public: Sequence(); - const std::list< boost::shared_ptr >& - get_child_tracks() const; private: - //----- Data -----// - std::list< boost::shared_ptr > tracks; + }; } // namespace model diff --git a/src/gui/model/track.cpp b/src/gui/model/track.cpp index 8541e17f9..03c8f88e5 100644 --- a/src/gui/model/track.cpp +++ b/src/gui/model/track.cpp @@ -24,11 +24,19 @@ namespace gui { namespace model { + +const std::list< boost::shared_ptr > Track::NoChildren; Track::Track() { } +std::list< boost::shared_ptr > +Track::get_child_tracks() const +{ + return Track::NoChildren; +} + } // namespace model } // namespace gui diff --git a/src/gui/model/track.hpp b/src/gui/model/track.hpp index 4fe852b30..60357f56e 100644 --- a/src/gui/model/track.hpp +++ b/src/gui/model/track.hpp @@ -24,7 +24,7 @@ ** represents a track, and wraps proc layer data */ -#include "track-base.hpp" +#include "../gtk-lumiera.hpp" #ifndef TRACK_HPP #define TRACK_HPP @@ -32,12 +32,17 @@ namespace gui { namespace model { -class Track : public TrackBase +class Track { -public: +protected: Track(); +public: + virtual std::list< boost::shared_ptr > + get_child_tracks() const; +protected: + static const std::list< boost::shared_ptr > NoChildren; }; } // namespace model diff --git a/src/gui/widgets/timeline/timeline-header-container.cpp b/src/gui/widgets/timeline/timeline-header-container.cpp index c9330d109..d0dac87c5 100644 --- a/src/gui/widgets/timeline/timeline-header-container.cpp +++ b/src/gui/widgets/timeline/timeline-header-container.cpp @@ -497,7 +497,7 @@ TimelineHeaderContainer::lookup_timeline_track( return timeline_track; } -const std::list< boost::shared_ptr >& +const std::list< boost::shared_ptr > TimelineHeaderContainer::get_tracks() const { REQUIRE(timelineWidget != NULL); diff --git a/src/gui/widgets/timeline/timeline-header-container.hpp b/src/gui/widgets/timeline/timeline-header-container.hpp index 082f1e871..f787c5547 100644 --- a/src/gui/widgets/timeline/timeline-header-container.hpp +++ b/src/gui/widgets/timeline/timeline-header-container.hpp @@ -215,7 +215,7 @@ private: * @return Returns the track found, or returns NULL if no matching * track was found. **/ - const std::list< boost::shared_ptr >& + const std::list< boost::shared_ptr > get_tracks() const; /**