X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Ftime_axis_view.h;h=0f9ea7e0174664cd835c86f35b5fd8bfb1c0d46b;hb=46bbe834009d51a652e03a7fd4fa57bfb6457e38;hp=e4e30fdc4f4726b02d8204a832856e57a793e1b6;hpb=140258d8abc366ddd600a7b3079b55a730b10225;p=ardour.git diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h index e4e30fdc4f..0f9ea7e017 100644 --- a/gtk2_ardour/time_axis_view.h +++ b/gtk2_ardour/time_axis_view.h @@ -1,21 +1,28 @@ /* - Copyright (C) 2003 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ + * Copyright (C) 2005-2008 Nick Mainsbridge + * Copyright (C) 2005-2019 Paul Davis + * Copyright (C) 2005 Karsten Wiese + * Copyright (C) 2005 Taybin Rutkin + * Copyright (C) 2006-2014 David Robillard + * Copyright (C) 2007 Doug McLain + * Copyright (C) 2009-2012 Carl Hetherington + * Copyright (C) 2014-2015 Ben Loftis + * Copyright (C) 2014-2019 Robin Gareus + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ #ifndef __ardour_gtk_time_axis_h__ #define __ardour_gtk_time_axis_h__ @@ -33,20 +40,19 @@ #include #include -#include - #include "pbd/stateful.h" #include "pbd/signals.h" +#include "evoral/Parameter.hpp" + #include "ardour/types.h" #include "ardour/presentation_info.h" #include "ardour/region.h" -#include "evoral/Parameter.hpp" - #include "canvas/line.h" -#include "prompter.h" +#include "widgets/focus_entry.h" + #include "axis_view.h" #include "enums.h" #include "editing.h" @@ -91,13 +97,13 @@ class PasteContext; */ class TimeAxisView : public virtual AxisView { - private: +private: enum NamePackingBits { NameLabelPacked = 0x1, NameEntryPacked = 0x2 }; - public: +public: TimeAxisView(ARDOUR::Session* sess, PublicEditor& ed, TimeAxisView* parent, ArdourCanvas::Canvas& canvas); virtual ~TimeAxisView (); @@ -171,7 +177,7 @@ class TimeAxisView : public virtual AxisView virtual void show_selection (TimeSelection&); virtual void hide_selection (); virtual void reshow_selection (TimeSelection&); - virtual void show_timestretch (framepos_t start, framepos_t end, int layers, int layer); + virtual void show_timestretch (samplepos_t start, samplepos_t end, int layers, int layer); virtual void hide_timestretch (); /* editing operations */ @@ -179,27 +185,31 @@ class TimeAxisView : public virtual AxisView virtual void cut_copy_clear (Selection&, Editing::CutCopyOp) {} /** Paste a selection. - * @param pos Position to paste to (session frames). + * @param pos Position to paste to (session samples). * @param selection Selection to paste. * @param ctx Paste context. */ - virtual bool paste (ARDOUR::framepos_t pos, - const Selection& selection, - PasteContext& ctx, - const int32_t sub_num) { return false; } + virtual bool paste (ARDOUR::samplepos_t pos, + const Selection& selection, + PasteContext& ctx, + const int32_t sub_num) + { + return false; + } + virtual void set_selected_regionviews (RegionSelection&) {} - virtual void set_selected_points (PointSelection&) {} + virtual void set_selected_points (PointSelection&); virtual void fade_range (TimeSelection&) {} - virtual boost::shared_ptr find_next_region (framepos_t /*pos*/, ARDOUR::RegionPoint, int32_t /*dir*/) { + virtual boost::shared_ptr find_next_region (samplepos_t /*pos*/, ARDOUR::RegionPoint, int32_t /*dir*/) { return boost::shared_ptr (); } void order_selection_trims (ArdourCanvas::Item *item, bool put_start_on_top); - virtual void get_selectables (ARDOUR::framepos_t, ARDOUR::framepos_t, double, double, std::list&, bool within = false); + virtual void get_selectables (ARDOUR::samplepos_t, ARDOUR::samplepos_t, double, double, std::list&, bool within = false); virtual void get_inverted_selectables (Selection&, std::list& results); void add_ghost (RegionView*); @@ -217,13 +227,11 @@ class TimeAxisView : public virtual AxisView virtual StreamView* view () const { return 0; } typedef std::vector > Children; - Children get_child_list (); - - SelectionRect* get_selection_rect(uint32_t id); + Children get_child_list () const; static uint32_t preset_height (Height); - protected: +protected: static Glib::RefPtr controls_meters_size_group; static Glib::RefPtr midi_scroomer_size_group; static unsigned int name_width_px; @@ -260,6 +268,7 @@ class TimeAxisView : public virtual AxisView void begin_name_edit (); void end_name_edit (std::string, int); + virtual std::string name () const { return name_label.get_text (); } /* derived classes can override these */ @@ -292,6 +301,7 @@ class TimeAxisView : public virtual AxisView Children children; bool is_child (TimeAxisView*); + virtual bool propagate_time_selection () const { return false; } virtual void remove_child (boost::shared_ptr); void add_child (boost::shared_ptr); @@ -301,12 +311,13 @@ class TimeAxisView : public virtual AxisView virtual void selection_click (GdkEventButton*); void color_handler (); + void parameter_changed (std::string const &); void conditionally_add_to_selection (); void build_size_menu (); - private: +private: Gtk::VBox* control_parent; int _order; uint32_t _effective_height; @@ -320,6 +331,8 @@ class TimeAxisView : public virtual AxisView static uint32_t extra_height; static int const _max_order; + SelectionRect* get_selection_rect(uint32_t id); + void compute_heights (); bool maybe_set_cursor (int y);