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 <sigc++/signal.h>
-
#include <jack/jack.h>
#include <string>
* 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() ;
+ virtual ~TimeAxisViewItem() ;
/**
* Set the position of this item upon the timeline to the specified value
* @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
* @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.
* @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
* @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
* 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
* @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
*
* @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) ;
-
+
/**
*
*/
/**
*
*/
- ArdourCanvas::Item* get_canvas_group();
+ ArdourCanvas::Group* get_canvas_group();
/**
*
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
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 ;
* the destructor, this allows us to capture the source of the deletion
* event
*/
+
sigc::signal<void,std::string,void*> ItemRemoved ;
/** Emitted when the name/Id of this item is changed */
sigc::signal<void,std::string,std::string,void*> NameChanged ;
/** Emiited when the position of this item changes */
- sigc::signal<void,jack_nframes_t,void*> PositionChanged ;
+ sigc::signal<void,nframes_t,void*> PositionChanged ;
/** Emitted when the position lock of this item is changed */
sigc::signal<void,bool,void*> PositionLockChanged ;
/** Emitted when the duration of this item changes */
- sigc::signal<void,jack_nframes_t,void*> DurationChanged ;
+ sigc::signal<void,nframes_t,void*> DurationChanged ;
/** Emitted when the maximum item duration is changed */
- sigc::signal<void,jack_nframes_t,void*> MaxDurationChanged ;
+ sigc::signal<void,nframes_t,void*> MaxDurationChanged ;
/** Emitted when the mionimum item duration is changed */
- sigc::signal<void,jack_nframes_t,void*> MinDurationChanged ;
-
- /** Emitted when the selected status of this item changes */
- sigc::signal<void, bool> Selected ;
-
-
- protected:
+ sigc::signal<void,nframes_t,void*> MinDurationChanged ;
enum Visibility {
ShowFrame = 0x1,
ShowNameHighlight = 0x2,
ShowNameText = 0x4,
ShowHandles = 0x8,
- HideFrameLR = 0x10,
- HideFrameTB = 0x20,
- FullWidthNameHighlight = 0x40
+ HideFrameLeft = 0x10,
+ HideFrameRight = 0x20,
+ HideFrameTB = 0x40,
+ FullWidthNameHighlight = 0x80
};
-
+ protected:
/**
* Constructs a new TimeAxisViewItem.
*
* @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, bool recording = false, 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
/**
* 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
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 ;
/** 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
ArdourCanvas::SimpleRect* frame_handle_start;
ArdourCanvas::SimpleRect* frame_handle_end;
+ int name_text_width;
+ double last_name_text_width;
+
+ std::map<Glib::ustring::size_type,int> name_text_size_cache;
+
Visibility visibility;
+ bool _recregion;
+
}; /* class TimeAxisViewItem */