use canvas rulers now instead of gtk widgets

Some bugs that exist in master are still present.
This commit is contained in:
Paul Davis 2014-06-11 23:54:04 -04:00
parent 143f9509ea
commit b73352880e
3 changed files with 399 additions and 412 deletions

View File

@ -469,8 +469,8 @@ Editor::Editor ()
transport_mark_label.hide();
transport_mark_label.set_no_show_all();
initialize_rulers ();
initialize_canvas ();
initialize_rulers ();
_summary = new EditorSummary (this);
@ -512,36 +512,22 @@ Editor::Editor ()
// CAIROCANVAS
time_pad->show();
time_canvas_vbox.set_size_request (-1, (int)(timebar_height * visible_timebars) + 2);
time_canvas_vbox.set_size_request (-1, -1);
ruler_label_event_box.add (ruler_label_vbox);
ruler_label_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
ruler_label_event_box.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_label_button_release));
time_bars_event_box.add (time_bars_vbox);
time_bars_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
time_bars_event_box.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_label_button_release));
time_canvas_event_box.add (time_canvas_vbox);
time_canvas_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK);
edit_packer.set_col_spacings (0);
edit_packer.set_row_spacings (0);
edit_packer.set_homogeneous (false);
edit_packer.set_border_width (0);
edit_packer.set_name ("EditorWindow");
/* labels for the rulers */
edit_packer.attach (ruler_label_event_box, 1, 2, 0, 1, FILL, SHRINK, 0, 0);
/* labels for the marker "tracks" (time bars) */
edit_packer.attach (time_bars_event_box, 1, 2, 1, 2, FILL, SHRINK, 0, 0);
/* the rulers */
edit_packer.attach (time_canvas_event_box, 2, 3, 0, 1, FILL|EXPAND, FILL, 0, 0);
time_bars_event_box.add (time_bars_vbox);
time_bars_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
time_bars_event_box.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_label_button_release));
/* labels for the time bars */
edit_packer.attach (time_bars_event_box, 0, 1, 0, 1, FILL, SHRINK, 0, 0);
/* track controls */
edit_packer.attach (controls_layout, 0, 2, 2, 3, FILL, FILL|EXPAND, 0, 0);
/* track canvas */
edit_packer.attach (*_track_canvas_viewport, 2, 3, 1, 3, FILL|EXPAND, FILL|EXPAND, 0, 0);
edit_packer.attach (controls_layout, 0, 1, 1, 2, FILL, FILL|EXPAND, 0, 0);
/* canvas */
edit_packer.attach (*_track_canvas_viewport, 1, 2, 0, 2, FILL|EXPAND, FILL|EXPAND, 0, 0);
bottom_hbox.set_border_width (2);
bottom_hbox.set_spacing (3);

View File

@ -47,6 +47,7 @@
#include "ardour/types.h"
#include "canvas/fwd.h"
#include "canvas/ruler.h"
#include "gtk-custom-ruler.h"
#include "ardour_button.h"
@ -455,6 +456,13 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void override_visible_track_count ();
/* Ruler metrics methods */
void metric_get_timecode (std::vector<ArdourCanvas::Ruler::Mark>&, gdouble, gdouble, gint);
void metric_get_bbt (std::vector<ArdourCanvas::Ruler::Mark>&, gdouble, gdouble, gint);
void metric_get_samples (std::vector<ArdourCanvas::Ruler::Mark>&, gdouble, gdouble, gint);
void metric_get_minsec (std::vector<ArdourCanvas::Ruler::Mark>&, gdouble, gdouble, gint);
protected:
void map_transport_state ();
void map_position_change (framepos_t);
@ -706,9 +714,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
bool track_canvas_motion (GdkEvent*);
Gtk::EventBox time_canvas_event_box;
Gtk::EventBox time_bars_event_box;
Gtk::EventBox ruler_label_event_box;
Gtk::VBox time_bars_vbox;
ArdourCanvas::Pixbuf *logo_item;
#if 0
@ -771,7 +778,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
ruler_video_timeline = 10,
};
static GtkCustomMetric ruler_metrics[4];
Glib::RefPtr<Gtk::ToggleAction> ruler_timecode_action;
Glib::RefPtr<Gtk::ToggleAction> ruler_bbt_action;
Glib::RefPtr<Gtk::ToggleAction> ruler_samples_action;
@ -806,11 +812,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void store_ruler_visibility ();
void restore_ruler_visibility ();
static gint _metric_get_timecode (GtkCustomRulerMark **, gdouble, gdouble, gint);
static gint _metric_get_bbt (GtkCustomRulerMark **, gdouble, gdouble, gint);
static gint _metric_get_samples (GtkCustomRulerMark **, gdouble, gdouble, gint);
static gint _metric_get_minsec (GtkCustomRulerMark **, gdouble, gdouble, gint);
enum MinsecRulerScale {
minsec_show_seconds,
minsec_show_minutes,
@ -864,21 +865,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
ARDOUR::TempoMap::BBTPointList::const_iterator current_bbt_points_begin,
ARDOUR::TempoMap::BBTPointList::const_iterator current_bbt_points_end);
gint metric_get_timecode (GtkCustomRulerMark **, gdouble, gdouble, gint);
gint metric_get_bbt (GtkCustomRulerMark **, gdouble, gdouble, gint);
gint metric_get_samples (GtkCustomRulerMark **, gdouble, gdouble, gint);
gint metric_get_minsec (GtkCustomRulerMark **, gdouble, gdouble, gint);
Gtk::Widget *_ruler_separator;
GtkWidget *_timecode_ruler;
GtkWidget *_bbt_ruler;
GtkWidget *_samples_ruler;
GtkWidget *_minsec_ruler;
Gtk::Widget *timecode_ruler;
Gtk::Widget *bbt_ruler;
Gtk::Widget *samples_ruler;
Gtk::Widget *minsec_ruler;
static Editor *ruler_editor;
ArdourCanvas::Ruler* timecode_ruler;
ArdourCanvas::Ruler* bbt_ruler;
ArdourCanvas::Ruler* samples_ruler;
ArdourCanvas::Ruler* minsec_ruler;
static const double timebar_height;
guint32 visible_timebars;
@ -926,8 +916,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void export_video (bool range = false);
void toggle_region_video_lock ();
Gtk::VBox time_bars_vbox;
friend class EditorCursor;
EditorCursor* playhead_cursor;
@ -1000,9 +988,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
Gtk::Menu *edit_controls_left_menu;
Gtk::Menu *edit_controls_right_menu;
Gtk::VBox ruler_label_vbox;
Gtk::VBox track_canvas_vbox;
Gtk::VBox time_canvas_vbox;
Gtk::VBox edit_controls_vbox;
Gtk::HBox edit_controls_hbox;

File diff suppressed because it is too large Load Diff