X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Ftime_axis_view_item.h;h=18d6638738cab141d121db24249593da17462e28;hb=a606a83d2ec43d9fbf9b65969afb3b3c46c546fa;hp=c9e4fd5dd5883243966cf7f7a6841a114c60567b;hpb=868f557f2612903f72614a2b3a317c7a528188d1;p=ardour.git diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index c9e4fd5dd5..18d6638738 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -15,14 +15,11 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_time_axis_view_item_h__ #define __gtk_ardour_time_axis_view_item_h__ -#include - #include #include @@ -38,7 +35,7 @@ class TimeAxisView; * A base class for 'items' that may appear upon a TimeAxisView * */ -class TimeAxisViewItem : public sigc::trackable, public Selectable +class TimeAxisViewItem : public Selectable { public: virtual ~TimeAxisViewItem() ; @@ -50,14 +47,14 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable * @param src the identity of the object that initiated the change * @return true if the position change was a success, false otherwise */ - virtual bool set_position(jack_nframes_t pos, void* src, double* delta = 0) ; + virtual bool set_position(nframes_t pos, void* src, double* delta = 0) ; /** * Return the position of this item upon the timeline * * @return the position of this item */ - jack_nframes_t get_position() const ; + nframes_t get_position() const ; /** * Sets the duration of this item @@ -66,13 +63,13 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable * @param src the identity of the object that initiated the change * @return true if the duration change was succesful, false otherwise */ - virtual bool set_duration(jack_nframes_t dur, void* src) ; + virtual bool set_duration(nframes_t dur, void* src) ; /** * Returns the duration of this item * */ - jack_nframes_t get_duration() const ; + nframes_t get_duration() const ; /** * Sets the maximum duration that this item make have. @@ -80,14 +77,14 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable * @param dur the new maximum duration * @param src the identity of the object that initiated the change */ - virtual void set_max_duration(jack_nframes_t dur, void* src) ; + virtual void set_max_duration(nframes_t dur, void* src) ; /** * Returns the maxmimum duration that this item may be set to * * @return the maximum duration that this item may be set to */ - jack_nframes_t get_max_duration() const ; + nframes_t get_max_duration() const ; /** * Sets the minimu duration that this item may be set to @@ -95,14 +92,14 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable * @param the minimum duration that this item may be set to * @param src the identity of the object that initiated the change */ - virtual void set_min_duration(jack_nframes_t dur, void* src) ; + virtual void set_min_duration(nframes_t dur, void* src) ; /** * Returns the minimum duration that this item mey be set to * * @return the nimum duration that this item mey be set to */ - jack_nframes_t get_min_duration() const ; + nframes_t get_min_duration() const ; /** * Sets whether the position of this Item is locked to its current position @@ -170,9 +167,8 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable * Set to true to indicate that this item is currently selected * * @param yn true if this item is currently selected - * @param src the identity of the object that initiated the change */ - virtual void set_selected(bool yn, void* src) ; + virtual void set_selected(bool yn) ; /** * Set to true to indicate that this item should show its selection status @@ -180,13 +176,9 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable * @param yn true if this item should show its selected status */ virtual void set_should_show_selection (bool yn) ; - - /** - * Returns whether this item is currently selected. - * - * @return true if this item is currently selected, false otherwise - */ - bool get_selected() const ; + + void set_sensitive (bool yn) { _sensitive = yn; } + bool sensitive () const { return _sensitive; } //---------------------------------------------------------------------------------------// // Parent Component Methods @@ -207,14 +199,9 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable * * @param new_name the new name text to display */ - void set_name_text(std::string new_name) ; + void set_name_text(const Glib::ustring& new_name) ; - /** - * Set the height of this item - * - * @param h the new height - */ - virtual void set_height(double h) ; + virtual void set_y_position_and_height(double y, double h) ; /** * @@ -242,6 +229,11 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable ArdourCanvas::Text* get_name_text(); + /** + * Returns the time axis that this item is upon + */ + TimeAxisView& get_trackview() const { return trackview; } + /** * Sets the samples per unit of this item. * this item is used to determine the relative visual size and position of this item @@ -269,7 +261,7 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable bool name_active() const { return name_connected; } // Default sizes, font and spacing - static Pango::FontDescription NAME_FONT ; + static Pango::FontDescription* NAME_FONT ; static bool have_name_font; static const double NAME_X_OFFSET ; static const double GRAB_HANDLE_LENGTH ; @@ -305,24 +297,20 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable sigc::signal NameChanged ; /** Emiited when the position of this item changes */ - sigc::signal PositionChanged ; + sigc::signal PositionChanged ; /** Emitted when the position lock of this item is changed */ sigc::signal PositionLockChanged ; /** Emitted when the duration of this item changes */ - sigc::signal DurationChanged ; + sigc::signal DurationChanged ; /** Emitted when the maximum item duration is changed */ - sigc::signal MaxDurationChanged ; + sigc::signal MaxDurationChanged ; /** Emitted when the mionimum item duration is changed */ - sigc::signal MinDurationChanged ; + sigc::signal MinDurationChanged ; - /** Emitted when the selected status of this item changes */ - sigc::signal Selected ; - - protected: enum Visibility { @@ -330,9 +318,10 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable ShowNameHighlight = 0x2, ShowNameText = 0x4, ShowHandles = 0x8, - HideFrameLR = 0x10, - HideFrameTB = 0x20, - FullWidthNameHighlight = 0x40 + HideFrameLeft = 0x10, + HideFrameRight = 0x20, + HideFrameTB = 0x40, + FullWidthNameHighlight = 0x80 }; /** @@ -347,7 +336,11 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable * @param duration the duration of this item */ TimeAxisViewItem(const std::string & it_name, ArdourCanvas::Group& parent, TimeAxisView& tv, double spu, Gdk::Color& base_color, - jack_nframes_t start, jack_nframes_t duration, Visibility v = Visibility (0)); + nframes_t start, nframes_t duration, Visibility v = Visibility (0)); + + TimeAxisViewItem (const TimeAxisViewItem& other); + + void init (const std::string& it_name, double spu, Gdk::Color& base_color, nframes_t start, nframes_t duration, Visibility vis); /** * Calculates some contrasting color for displaying various parts of this item, based upon the base color @@ -364,7 +357,7 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable /** * Sets the frame color depending on whether this item is selected */ - void set_frame_color() ; + virtual void set_frame_color() ; /** * Sets the colors of the start and end trim handle depending on object state @@ -392,16 +385,16 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable bool position_locked ; /** The posotion of this item on the timeline */ - jack_nframes_t frame_position ; + nframes_t frame_position ; /** the duration of this item upon the timeline */ - jack_nframes_t item_duration ; + nframes_t item_duration ; /** the maximum duration that we allow this item to take */ - jack_nframes_t max_item_duration ; + nframes_t max_item_duration ; /** the minimu duration that we allow this item to take */ - jack_nframes_t min_item_duration ; + nframes_t min_item_duration ; /** indicates whether this Max Duration constraint is active */ bool max_duration_active ; @@ -417,6 +410,9 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable /** should the item show its selected status */ bool should_show_selection; + + /** should the item respond to events */ + bool _sensitive; /** * The unique item name of this Item @@ -460,6 +456,11 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable ArdourCanvas::SimpleRect* frame_handle_start; ArdourCanvas::SimpleRect* frame_handle_end; + int name_text_width; + double last_name_text_width; + + std::map name_text_size_cache; + Visibility visibility; }; /* class TimeAxisViewItem */