diff options
37 files changed, 480 insertions, 496 deletions
diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript index d55b151e72..d6ac933acb 100644 --- a/gtk2_ardour/SConscript +++ b/gtk2_ardour/SConscript @@ -73,13 +73,11 @@ automation_pan_line.cc automation_time_axis.cc axis_view.cc canvas-imageframe.c -imageframe.cc canvas-simpleline.c simpleline.cc canvas-simplerect.c simplerect.cc canvas-waveview.c -waveview.cc crossfade_edit.cc crossfade_view.cc curvetest.cc diff --git a/gtk2_ardour/actions.cc b/gtk2_ardour/actions.cc index 04a4bf3b02..3e49dca266 100644 --- a/gtk2_ardour/actions.cc +++ b/gtk2_ardour/actions.cc @@ -9,7 +9,6 @@ using namespace std; using namespace Gtk; using namespace Glib; using namespace sigc; -using namespace ActionManager; vector<Glib::RefPtr<Gtk::Action> > ActionManager::session_sensitive_actions; vector<Glib::RefPtr<Gtk::Action> > ActionManager::region_list_selection_sensitive_actions; @@ -19,6 +18,8 @@ vector<Glib::RefPtr<Gtk::Action> > ActionManager::plugin_selection_sensitive_act vector<Glib::RefPtr<Gtk::Action> > ActionManager::range_sensitive_actions; vector<Glib::RefPtr<Gtk::Action> > ActionManager::jack_sensitive_actions; +namespace ActionManager { + static vector<Glib::RefPtr<UIManager> > ui_managers; void @@ -45,6 +46,17 @@ register_action (RefPtr<ActionGroup> group, string name, string label, slot<void return act; } +RefPtr<Action> +register_action (RefPtr<ActionGroup> group, string name, string label) +{ + RefPtr<Action> act; + + act = Action::create (name, label); + group->add (act); + + return act; +} + RefPtr<Action> register_radio_action (RefPtr<ActionGroup> group, RadioAction::Group rgroup, string name, string label, slot<void> sl, guint key, Gdk::ModifierType mods) @@ -87,17 +99,6 @@ register_toggle_action (RefPtr<ActionGroup> group, string name, string label, sl return act; } -RefPtr<Action> -register_action (RefPtr<ActionGroup> group, string name, string label) -{ - RefPtr<Action> act; - - act = Action::create (name, label); - group->add (act); - - return act; -} - bool lookup_entry (const Glib::ustring accel_path, Gtk::AccelKey& key) { GtkAccelKey gkey; diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc index 5e129350cb..d999c823ac 100644 --- a/gtk2_ardour/crossfade_edit.cc +++ b/gtk2_ardour/crossfade_edit.cc @@ -507,7 +507,7 @@ CrossfadeEditor::Point::move_to (double nx, double ny, double xfract, double yfr } void -CrossfadeEditor::canvas_allocation (GtkAllocation *alloc) +CrossfadeEditor::canvas_allocation (Gtk::Allocation& alloc) { if (toplevel) { gnome_canvas_item_set (toplevel, diff --git a/gtk2_ardour/crossfade_edit.h b/gtk2_ardour/crossfade_edit.h index 307e9b860a..0c3bca97ba 100644 --- a/gtk2_ardour/crossfade_edit.h +++ b/gtk2_ardour/crossfade_edit.h @@ -135,7 +135,7 @@ class CrossfadeEditor : public ArdourDialog gint point_event (GnomeCanvasItem*, GdkEvent* event); gint curve_event (GnomeCanvasItem*, GdkEvent* event); - void canvas_allocation (GtkAllocation*); + void canvas_allocation (Gtk::Allocation&); void add_control_point (double x, double y); Point* make_point (); void redraw (); diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index d629281e8e..66fca641b2 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -890,13 +890,13 @@ Editor::initialize_canvas () transport_bar_drag_rect->set_property ("outline_pixels", 0); transport_bar_drag_rect->hide (); - marker_drag_line_points->push_back(Gnome::Art::Point(0.0, 0.0)); - marker_drag_line_points->push_back(Gnome::Art::Point(0.0, 0.0)); + marker_drag_line_points.push_back(Gnome::Art::Point(0.0, 0.0)); + marker_drag_line_points.push_back(Gnome::Art::Point(0.0, 0.0)); marker_drag_line = new Gnome::Canvas::Line (*track_canvas.root()); marker_drag_line->set_property ("width_pixels", 1); marker_drag_line->set_property("fill_color_rgba", color_map[cMarkerDragLine]); - marker_drag_line->set_property("points", marker_drag_line_points); + marker_drag_line->set_property("points", marker_drag_line_points.gobj()); marker_drag_line->hide(); range_marker_drag_rect = new Gnome::Canvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0); @@ -935,7 +935,7 @@ Editor::initialize_canvas () zoom_rect->set_property ("outline_pixels", 1); zoom_rect->hide(); - zoom_rect->signal_event().connect (mem_fun (*this, &PublicEditor::canvas_zoom_rect_event)); + zoom_rect->signal_event().connect (mem_fun (*this, &Editor::canvas_zoom_rect_event)); // used as rubberband rect rubberband_rect = new Gnome::Canvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0); @@ -944,30 +944,30 @@ Editor::initialize_canvas () rubberband_rect->set_property ("outline_pixels", 1); rubberband_rect->hide(); - tempo_bar->signal_event().connect (mem_fun (*this, &PublicEditor::canvas_tempo_bar_event)); - meter_bar->signal_event().connect (mem_fun (*this, &PublicEditor::canvas_meter_bar_event)); - marker_bar->signal_event().connect (mem_fun (*this, &PublicEditor::canvas_marker_bar_event)); - range_marker_bar->signal_event().connect (mem_fun (*this, &PublicEditor::canvas_range_marker_bar_event)); - transport_marker_bar->signal_event().connect (mem_fun (*this, &PublicEditor::canvas_transport_marker_bar_event)); + tempo_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_tempo_bar_event)); + meter_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_meter_bar_event)); + marker_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_marker_bar_event)); + range_marker_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_range_marker_bar_event)); + transport_marker_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_transport_marker_bar_event)); /* separator lines */ - tempo_line_points->push_back(Gnome::Art::Point(0, timebar_height)); - tempo_line_points->push_back(Gnome::Art::Point(max_canvas_coordinate, timebar_height)); + tempo_line_points.push_back(Gnome::Art::Point(0, timebar_height)); + tempo_line_points.push_back(Gnome::Art::Point(max_canvas_coordinate, timebar_height)); tempo_line = new Gnome::Canvas::Line (*tempo_group, *tempo_line_points); tempo_line->set_property ("width_pixels", 0); tempo_line->set_property ("fill_color", "#000000"); - meter_line_points->push_back(Gnome::Art::Point (0, timebar_height)); - meter_line_points->push_back(Gnome::Art::Point(max_canvas_coordinate, timebar_height)); + meter_line_points.push_back(Gnome::Art::Point (0, timebar_height)); + meter_line_points.push_back(Gnome::Art::Point(max_canvas_coordinate, timebar_height)); meter_line = new Gnome::Canvas::Line (*meter_group, *meter_line_points); meter_line->set_property ("width_pixels", 0); meter_line->set_property ("fill_color", "#000000"); - marker_line_points->push_back(Gnome::Art::Point (0, timebar_height)); - marker_line_points->push_back(Gnome::Art::Point(max_canvas_coordinate, timebar_height)); + marker_line_points.push_back(Gnome::Art::Point (0, timebar_height)); + marker_line_points.push_back(Gnome::Art::Point(max_canvas_coordinate, timebar_height)); marker_line = new Gnome::Canvas::Line (*marker_group, *marker_line_points); marker_line->set_property ("width_pixels", 0); @@ -988,8 +988,8 @@ Editor::initialize_canvas () double time_width = FLT_MAX/frames_per_unit; time_canvas.set_scroll_region(0.0, 0.0, time_width, time_height); - edit_cursor = new Cursor (*this, "blue", (GtkSignalFunc) _canvas_edit_cursor_event); - playhead_cursor = new Cursor (*this, "red", (GtkSignalFunc) _canvas_playhead_cursor_event); + edit_cursor = new Cursor (*this, "blue", canvas_edit_cursor_event); + playhead_cursor = new Cursor (*this, "red", canvas_playhead_cursor_event); track_canvas.signal_size_allocate().connect (mem_fun(*this, &Editor::track_canvas_allocate)); } @@ -1342,29 +1342,32 @@ Editor::reset_scrolling_region (GtkAllocation *alloc) if (playhead_cursor) playhead_cursor->set_length (canvas_alloc_height); if (marker_drag_line) { - marker_drag_line_points->coords[3] = canvas_height; - // cerr << "set mlA points, nc = " << marker_drag_line_points->num_points << endl; - marker_drag_line->set_property("points", marker_drag_line_points); + marker_drag_line_points[1].set_y (canvas_height); + marker_drag_line->set_property("points", marker_drag_line_points.gobj()); } if (range_marker_drag_rect) { - range_marker_drag_rect->set_property("y1", 0.0); - range_marker_drag_rect->set_property("y2", (double) canvas_height); + range_marker_drag_rect->set_property("y1", 0.0); + range_marker_drag_rect->set_property("y2", (double) canvas_height); } + if (transport_loop_range_rect) { - transport_loop_range_rect->set_property("y1", 0.0); - transport_loop_range_rect->set_property("y2", (double) canvas_height); + transport_loop_range_rect->set_property("y1", 0.0); + transport_loop_range_rect->set_property("y2", (double) canvas_height); } + if (transport_punch_range_rect) { - transport_punch_range_rect->set_property("y1", 0.0); - transport_punch_range_rect->set_property("y2", (double) canvas_height); + transport_punch_range_rect->set_property("y1", 0.0); + transport_punch_range_rect->set_property("y2", (double) canvas_height); } + if (transport_punchin_line) { - transport_punchin_line->set_property("y1", 0.0); - transport_punchin_line->set_property("y2", (double) canvas_height); + transport_punchin_line->set_property("y1", 0.0); + transport_punchin_line->set_property("y2", (double) canvas_height); } + if (transport_punchout_line) { - transport_punchout_line->set_property("y1", 0.0); - transport_punchout_line->set_property("y2", (double) canvas_height); + transport_punchout_line->set_property("y1", 0.0); + transport_punchout_line->set_property("y2", (double) canvas_height); } update_fixed_rulers (); @@ -1644,7 +1647,8 @@ Editor::connect_to_session (Session *t) route_display_model.clear (); session->foreach_route (this, &Editor::handle_new_route); // route_list.select_all (); - route_list.sort (); + // GTK2FIX + //route_list.sort (); route_list_reordered (); //route_list.thaw (); @@ -1709,48 +1713,53 @@ Editor::connect_to_session (Session *t) void Editor::build_cursors () { - Glib::RefPtr <Gdk::Pixmap> source, mask; Gdk::Color fg ("#ff0000"); /* Red. */ Gdk::Color bg ("#0000ff"); /* Blue. */ - Gdk::Pixmap::create_from_data (source, hand_bits, - hand_width, hand_height, 1, fg, bg); - Gdk::Pixmap::create_from_data(mask, handmask_bits, - handmask_width, handmask_height, 1, fg, bg); - grabber_cursor = new Gdk::Cursor (source, mask, fg, bg, hand_x_hot, hand_y_hot); - source->unreference(); - mask->unreference(); - + { + Glib::RefPtr <Gdk::Pixmap> source, mask; + source = Gdk::Pixmap::create_from_data (source, hand_bits, + hand_width, hand_height, 1, fg, bg); + Gdk::Pixmap::create_from_data(mask, handmask_bits, + handmask_width, handmask_height, 1, fg, bg); + grabber_cursor = new Gdk::Cursor (source, mask, fg, bg, hand_x_hot, hand_y_hot); + } + Gdk::Color mbg ("#000000" ); /* Black */ Gdk::Color mfg ("#0000ff" ); /* Blue. */ - - Gdk::Pixmap::create_from_data (source, mag_bits, - mag_width, mag_height, 1, fg, bg); - Gdk::Pixmap::create_from_data (mask, magmask_bits, - mag_width, mag_height, 1, fg, bg); - zoom_cursor = new Gdk::Cursor (source, mask, mfg, mbg, mag_x_hot, mag_y_hot); - source->unreference(); - mask->unreference(); + + { + Glib::RefPtr <Gdk::Pixmap> source, mask; + + Gdk::Pixmap::create_from_data (source, mag_bits, + mag_width, mag_height, 1, fg, bg); + Gdk::Pixmap::create_from_data (mask, magmask_bits, + mag_width, mag_height, 1, fg, bg); + zoom_cursor = new Gdk::Cursor (source, mask, mfg, mbg, mag_x_hot, mag_y_hot); + } Gdk::Color fbg ("#ffffff" ); Gdk::Color ffg ("#000000" ); - Gdk::Pixmap::create_from_data (source, fader_cursor_bits, - fader_cursor_width, fader_cursor_height, 1, fg, bg); - Gdk::Pixmap::create_from_data (mask, fader_cursor_mask_bits, - fader_cursor_width, fader_cursor_height, 1, fg, bg); - fader_cursor = new Gdk::Cursor (source, mask, ffg, fbg, fader_cursor_x_hot, fader_cursor_y_hot); - source->unreference(); - mask->unreference(); - - Gdk::Pixmap::create_from_data (source,speaker_cursor_bits, - speaker_cursor_width, speaker_cursor_height, 1, fg, bg); - Gdk::Pixmap::create_from_data (mask, speaker_cursor_mask_bits, - speaker_cursor_width, speaker_cursor_height, 1, fg, bg); - speaker_cursor = new Gdk::Cursor (source, mask, ffg, fbg, speaker_cursor_x_hot, speaker_cursor_y_hot); - source->unreference(); - mask->unreference(); - + { + Glib::RefPtr <Gdk::Pixmap> source, mask; + + Gdk::Pixmap::create_from_data (source, fader_cursor_bits, + fader_cursor_width, fader_cursor_height, 1, fg, bg); + Gdk::Pixmap::create_from_data (mask, fader_cursor_mask_bits, + fader_cursor_width, fader_cursor_height, 1, fg, bg); + fader_cursor = new Gdk::Cursor (source, mask, ffg, fbg, fader_cursor_x_hot, fader_cursor_y_hot); + } + + { + Glib::RefPtr <Gdk::Pixmap> source, mask; + Gdk::Pixmap::create_from_data (source,speaker_cursor_bits, + speaker_cursor_width, speaker_cursor_height, 1, fg, bg); + Gdk::Pixmap::create_from_data (mask, speaker_cursor_mask_bits, + speaker_cursor_width, speaker_cursor_height, 1, fg, bg); + speaker_cursor = new Gdk::Cursor (source, mask, ffg, fbg, speaker_cursor_x_hot, speaker_cursor_y_hot); + } + cross_hair_cursor = new Gdk::Cursor (Gdk::CROSSHAIR); trimmer_cursor = new Gdk::Cursor (Gdk::SB_H_DOUBLE_ARROW); selector_cursor = new Gdk::Cursor (Gdk::XTERM); @@ -2489,7 +2498,8 @@ Editor::set_state (const XMLNode& node) } set_default_size(width, height); - set_position(x, y-yoff); + // GTK2FIX + // set_position(x, y-yoff); if ((prop = node.property ("zoom-focus"))) { set_zoom_focus ((ZoomFocus) atoi (prop->value())); @@ -2882,9 +2892,9 @@ Editor::setup_toolbar () mouse_mode_tearoff->set_name ("MouseModeBase"); mouse_mode_tearoff->Detach.connect (bind (mem_fun(*this, &Editor::detach_tearoff), static_cast<Gtk::Box*>(&toolbar_hbox), - static_cast<Gtk::Widget*>(&mouse_mode_button_table))); + mouse_mode_tearoff->tearoff_window())); mouse_mode_tearoff->Attach.connect (bind (mem_fun(*this, &Editor::reattach_tearoff), static_cast<Gtk::Box*> (&toolbar_hbox), - static_cast<Gtk::Widget*> (&mouse_mode_button_table), 1)); + mmouse_mode_tearoff->tearoff_window(), 1)); mouse_move_button.set_name ("MouseModeButton"); mouse_select_button.set_name ("MouseModeButton"); @@ -3070,9 +3080,10 @@ Editor::setup_toolbar () tools_tearoff->set_name ("MouseModeBase"); tools_tearoff->Detach.connect (bind (mem_fun(*this, &Editor::detach_tearoff), static_cast<Gtk::Box*>(&toolbar_hbox), - static_cast<Gtk::Widget*>(hbox))); + tools_tearoff->tearoff_window()); tools_tearoff->Attach.connect (bind (mem_fun(*this, &Editor::reattach_tearoff), static_cast<Gtk::Box*> (&toolbar_hbox), - static_cast<Gtk::Widget*> (hbox), 0)); + tools_tearoff->tearoff_window(), 0)); + toolbar_hbox.set_spacing (8); toolbar_hbox.set_border_width (2); @@ -3668,7 +3679,7 @@ void Editor::set_edit_menu (Menu& menu) { edit_menu = &menu; - edit_menu->map_.connect (mem_fun(*this, &Editor::edit_menu_map_handler)); + edit_menu->signal_map.connect (mem_fun(*this, &Editor::edit_menu_map_handler)); } void @@ -3808,8 +3819,9 @@ Editor::duplicate_dialog (bool dup_region) entry.select_region (0, entry.get_text_length()); win.set_position (Gtk::WIN_POS_MOUSE); - win.realize (); - win.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); + // GTK2FIX + // win.realize (); + // win.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); entry.grab_focus (); @@ -4151,7 +4163,7 @@ Editor::ensure_float (Window& win) } void -Editor::pane_allocation_handler (GtkAllocation *alloc, Gtk::Paned* which) +Editor::pane_allocation_handler (Gtk::Allocation &alloc, Gtk::Paned* which) { /* recover or initialize pane positions. do this here rather than earlier because we don't want the positions to change the child allocations, which they seem to do. @@ -4244,18 +4256,18 @@ Editor::pane_allocation_handler (GtkAllocation *alloc, Gtk::Paned* which) } void -Editor::detach_tearoff (Gtk::Box* b, Gtk::Widget* w) +Editor::detach_tearoff (Gtk::Box* b, Gtk::Window* w) { if (tools_tearoff->torn_off() && mouse_mode_tearoff->torn_off()) { top_hbox.remove (toolbar_frame); } - ensure_float (*w->get_toplevel()); + ensure_float (*w); } void -Editor::reattach_tearoff (Gtk::Box* b, Gtk::Widget* w, int32_t n) +Editor::reattach_tearoff (Gtk::Box* b, Gtk::Window* w, int32_t n) { if (toolbar_frame.get_parent() == 0) { top_hbox.pack_end (toolbar_frame); @@ -4310,7 +4322,8 @@ Editor::edit_xfade (Crossfade* xfade) cew.ok_button.signal_clicked().connect (bind (mem_fun (cew, &ArdourDialog::stop), 1)); cew.cancel_button.signal_clicked().connect (bind (mem_fun (cew, &ArdourDialog::stop), 0)); - cew.signal_delete_event().connect (mem_fun (cew, &ArdourDialog::wm_doi_event_stop)); + // GTK2FIX + // cew.signal_delete_event().connect (mem_fun (cew, &ArdourDialog::wm_doi_event_stop)); cew.run (); @@ -4377,8 +4390,9 @@ Editor::playlist_deletion_dialog (Playlist* pl) keep_button.signal_clicked().connect (bind (mem_fun (dialog, &ArdourDialog::stop), 1)); abort_button.signal_clicked().connect (bind (mem_fun (dialog, &ArdourDialog::stop), 2)); - dialog.realize (); - dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); + // GTK2FIX + // dialog.realize (); + // dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); dialog.run (); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 43812439c4..3349ff4878 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -34,9 +34,6 @@ #include <gtkmm/layout.h> #include <gtkmm/comboboxtext.h> -#include <libgnomecanvas/libgnomecanvas.h> -#include <libgnomecanvas/gnome-canvas-util.h> - #include <libgnomecanvasmm/canvas.h> #include <libgnomecanvasmm/polygon.h> #include <libgnomecanvasmm/text.h> @@ -379,7 +376,7 @@ class Editor : public PublicEditor Editing::MouseMode mouse_mode; void mouse_insert (GdkEventButton *); - void pane_allocation_handler (GtkAllocation*, Gtk::Paned*); + void pane_allocation_handler (Gtk::Allocation&, Gtk::Paned*); Gtk::HPaned canvas_region_list_pane; Gtk::HPaned track_list_canvas_pane; @@ -587,11 +584,11 @@ class Editor : public PublicEditor Gnome::Canvas::Line* range_marker_line; Gnome::Canvas::Line* transport_marker_line; - Gnome::Canvas::Points* tempo_line_points; - Gnome::Canvas::Points* meter_line_points; - Gnome::Canvas::Points* marker_line_points; - Gnome::Canvas::Points* range_marker_line_points; - Gnome::Canvas::Points* transport_marker_line_points; + Gnome::Canvas::Points tempo_line_points; + Gnome::Canvas::Points meter_line_points; + Gnome::Canvas::Points marker_line_points; + Gnome::Canvas::Points range_marker_line_points; + Gnome::Canvas::Points transport_marker_line_points; Gtk::Label minsec_label; Gtk::Label bbt_label; @@ -608,19 +605,18 @@ class Editor : public PublicEditor Gtk::HBox time_button_hbox; struct Cursor { - Editor& editor; - Gnome::Canvas::Points* points; - Gnome::Canvas::Item* canvas_item; - jack_nframes_t current_frame; - GtkSignalFunc callback; - double length; - - Cursor (Editor&, const string& color, GtkSignalFunc callback); + Editor& editor; + Gnome::Canvas::Points points; + Gnome::Canvas::Item* canvas_item; + jack_nframes_t current_frame; + double length; + + Cursor (Editor&, const string& color, bool (Editor::*)(GdkEvent*)); ~Cursor (); void set_position (jack_nframes_t); void set_length (double units); - void set_y_axis (double position); + void set_y_axis (double position); }; friend struct Cursor; /* it needs access to several private @@ -670,7 +666,7 @@ class Editor : public PublicEditor bool edit_hscroll_dragging; double edit_hscroll_drag_last; - void hscroll_slider_allocate (GtkAllocation *); + void hscroll_slider_allocate (Gtk::Allocation &); gint hscroll_slider_expose (GdkEventExpose*); gint hscroll_slider_button_press (GdkEventButton*); gint hscroll_slider_button_release (GdkEventButton*); @@ -1454,11 +1450,11 @@ class Editor : public PublicEditor void end_range_markerbar_op (GnomeCanvasItem* item, GdkEvent* event); - Gnome::Canvas::Item *range_bar_drag_rect; - Gnome::Canvas::Item *transport_bar_drag_rect; - Gnome::Canvas::Item *marker_drag_line; - Gnome::Canvas::Points *marker_drag_line_points; - Gnome::Canvas::Item *range_marker_drag_rect; + Gnome::Canvas::Item* range_bar_drag_rect; + Gnome::Canvas::Item* transport_bar_drag_rect; + Gnome::Canvas::Item* marker_drag_line; + Gnome::Canvas::Points marker_drag_line_points; + Gnome::Canvas::Item* range_marker_drag_rect; void update_marker_drag_item (ARDOUR::Location *); @@ -1749,8 +1745,8 @@ class Editor : public PublicEditor void current_mixer_strip_hidden (); void current_mixer_strip_removed (); - void detach_tearoff (Gtk::Box* b, Gtk::Widget* w); - void reattach_tearoff (Gtk::Box* b, Gtk::Widget* w, int32_t n); + void detach_tearoff (Gtk::Box* b, Gtk::Window* w); + void reattach_tearoff (Gtk::Box* b, Gtk::Window* w, int32_t n); /* nudging tracks */ diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index c60de95e36..7ff4594743 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -3,6 +3,7 @@ #include "utils.h" #include "editor.h" #include "editing.h" +#include "actions.h" #include "i18n.h" diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 09c03547b3..1a31cc1962 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -317,10 +317,8 @@ gint Editor::track_canvas_motion (GnomeCanvasItem *item, GdkEvent *ev) { if (verbose_cursor_visible) { - gnome_canvas_item_set (verbose_canvas_cursor, - "x", ev->motion.x + 20, - "y", ev->motion.y + 20, - NULL); + verbose_canvas_cursor->set_property ("x", ev->motion.x + 20); + verbose_canvas_cursor->set_property ("y", ev->motion.y + 20); } return FALSE; } diff --git a/gtk2_ardour/editor_cursors.cc b/gtk2_ardour/editor_cursors.cc index edd300c67c..7d2e5e3f11 100644 --- a/gtk2_ardour/editor_cursors.cc +++ b/gtk2_ardour/editor_cursors.cc @@ -30,38 +30,26 @@ using namespace sigc; using namespace ARDOUR; using namespace Gtk; -Editor::Cursor::Cursor (Editor& ed, const string& color, GtkSignalFunc callbck) - : editor (ed), callback (callbck), length(1.0) +Editor::Cursor::Cursor (Editor& ed, const string& color, bool (Editor::*callbck)(GdkEvent*)) + : editor (ed), length(1.0) { - GnomeCanvasGroup *group; - points = gnome_canvas_points_new (2); - /* "randomly" initialize coords */ - - points->coords[0] = -9383839.0; - points->coords[1] = 0.0; - points->coords[2] = 1.0; - points->coords[3] = 0.0; - - group = GNOME_CANVAS_GROUP (editor.cursor_group); - - // cerr << "set cursor points, nc = " << points->num_points << endl; - canvas_item = gnome_canvas_item_new (group, - gnome_canvas_line_get_type(), - "points", points, - "fill_color", color.c_str(), - "width_pixels", 1, - "first_arrowhead", (gboolean) TRUE, - "last_arrowhead", (gboolean) TRUE, - "arrow_shape_a", 11.0, - "arrow_shape_b", 0.0, - "arrow_shape_c", 9.0, - NULL); - - // cerr << "cursor line @ " << canvas_item << endl; - - gtk_object_set_data (GTK_OBJECT(canvas_item), "cursor", this); - gtk_signal_connect (GTK_OBJECT(canvas_item), "event", callback, &editor); + + points.push_back (Gnome::Art::Point (-9383839.0, 0.0)); + points.push_back (Gnome::Art::Point (1.0, 0.0)); + + canvas_item = new Gnome::Canvas::Line (editor.cursor_group); + canvas_item->set_property ("points", points.gobj()); + canvas_item->set_property ("fill_color", color.c_str()); + canvas_item->set_property ("width_pixels", 1); + canvas_item->set_property ("first_arrowhead", (gboolean) TRUE); + canvas_item->set_property ("last_arrowhead", (gboolean) TRUE); + canvas_item->set_property ("arrow_shape_a", 11.0); + canvas_item->set_property ("arrow_shape_b", 0.0); + canvas_item->set_property ("arrow_shape_c", 9.0); + + canvas_item->set_data ("cursor", this); + canvas_item->signal_event().connect (slot (ed, callback)); current_frame = 1; /* force redraw at 0 */ } diff --git a/gtk2_ardour/editor_edit_groups.cc b/gtk2_ardour/editor_edit_groups.cc index 2153a2f90e..faaafc8f2c 100644 --- a/gtk2_ardour/editor_edit_groups.cc +++ b/gtk2_ardour/editor_edit_groups.cc @@ -181,7 +181,7 @@ Editor::edit_group_selection_changed () } else { for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) { if ((*j)->edit_group() == group) { - unselect_strip_in_display (*j); + unselect_strip_in_display (**j); } } } diff --git a/gtk2_ardour/editor_hscroller.cc b/gtk2_ardour/editor_hscroller.cc index 7f6b9996a0..b188060350 100644 --- a/gtk2_ardour/editor_hscroller.cc +++ b/gtk2_ardour/editor_hscroller.cc @@ -26,7 +26,7 @@ using namespace std; using namespace ARDOUR; void -Editor::hscroll_slider_allocate (GtkAllocation *alloc) +Editor::hscroll_slider_allocate (Gtk::Allocation &alloc) { //edit_hscroll_slider_width = alloc->width; //edit_hscroll_slider_height = alloc->height ; diff --git a/gtk2_ardour/editor_imageframe.cc b/gtk2_ardour/editor_imageframe.cc index fc23646aa9..a0967818a4 100644 --- a/gtk2_ardour/editor_imageframe.cc +++ b/gtk2_ardour/editor_imageframe.cc @@ -494,10 +494,10 @@ Editor::start_imageframe_grab(GnomeCanvasItem* item, GdkEvent* event) so move them to the top afterwards. */ - gnome_canvas_item_raise_to_top(drag_info.item) ; - gnome_canvas_item_raise_to_top(drag_info.last_trackview->canvas_display) ; - //gnome_canvas_item_raise_to_top(time_line_group) ; - gnome_canvas_item_raise_to_top (cursor_group); + drag_info.item->raise_to_top(); + drag_info.last_trackview->canvas_display->raise_to_top(); + //time_line_group->raise_to_top(); + cursor_group->raise_to_top (); start_grab(event) ; @@ -527,10 +527,10 @@ Editor::start_markerview_grab(GnomeCanvasItem* item, GdkEvent* event) so move them to the top afterwards. */ - gnome_canvas_item_raise_to_top(drag_info.item) ; - gnome_canvas_item_raise_to_top(drag_info.last_trackview->canvas_display) ; - //gnome_canvas_item_raise_to_top(time_line_group) ; - gnome_canvas_item_raise_to_top (cursor_group); + drag_info.item->raise_to_top(); + drag_info.last_trackview->canvas_display->raise_to_top(); + //time_line_group->raise_to_top(); + cursor_group->raise_to_top (); start_grab(event) ; @@ -1152,11 +1152,13 @@ Editor::handle_new_imageframe_time_axis_view(std::string track_name, void* src) iftav = new ImageFrameTimeAxis(track_name, *this, *session, track_canvas) ; iftav->set_time_axis_name(track_name, this) ; track_views.push_back(iftav) ; - const gchar *rowdata[1] ; - rowdata[0] = iftav->name().c_str() ; - route_list.rows().push_back(rowdata) ; - route_list.rows().back().set_data(iftav) ; - route_list.rows().back().select() ; + + TreeModel::Row row = *(route_display_mode->append()); + + row[route_display_columns.text] = iftav->name(); + row[route_display_columns.tv] = iftav; + route_list.get_selection()->select (row); + iftav->GoingAway.connect(bind(mem_fun(*this, &Editor::remove_route), (TimeAxisView*)iftav)) ; iftav->gui_changed.connect(mem_fun(*this, &Editor::handle_gui_changes)) ; } @@ -1167,11 +1169,13 @@ Editor::handle_new_imageframe_marker_time_axis_view(std::string track_name, Time MarkerTimeAxis* mta = new MarkerTimeAxis (*this, *this->current_session(), track_canvas, track_name, marked_track) ; ((ImageFrameTimeAxis*)marked_track)->add_marker_time_axis(mta, this) ; track_views.push_back(mta) ; - const gchar *rowdata[1] ; - rowdata[0] = mta->name().c_str() ; - route_list.rows().push_back(rowdata) ; - route_list.rows().back().set_data (mta) ; - route_list.rows().back().select() ; + + TreeModel::Row row = *(route_display_mode->append()); + + row[route_display_columns.text] = mta->name(); + row[route_display_columns.tv] = mta; + route_list.get_selection()->select (row); + mta->GoingAway.connect(bind(mem_fun(*this, &Editor::remove_route), (TimeAxisView*)mta)) ; } diff --git a/gtk2_ardour/editor_keyboard.cc b/gtk2_ardour/editor_keyboard.cc index c135e43d7b..cd444b62c6 100644 --- a/gtk2_ardour/editor_keyboard.cc +++ b/gtk2_ardour/editor_keyboard.cc @@ -31,15 +31,15 @@ Editor::kbd_driver (sigc::slot<void,GdkEvent*> theslot, bool use_track_canvas, b double dx, dy; GdkEvent ev; GdkModifierType mask; - GdkWindow evw (track_canvas.get_window()->get_pointer (x, y, mask)); bool doit = false; - if (use_track_canvas && gdk_window_get_pointer (track_canvas_event_box.get_window()->gobj(), - &x, &y, &mask)) { - doit = true; + /* get the pointer location */ + + RefPtr<GdkWindow> notused (track_canvas.get_window()->get_pointer (x, y, mask)); - } else if (use_time_canvas && gdk_window_get_pointer (time_canvas_event_box.get_window()->gobj(), - &x, &y, &mask)) { + if (use_track_canvas && (track_canvas_event_box.get_window()->get_pointer (x, y, mask) != 0)) { + doit = true; + } else if (use_time_canvas && (time_canvas_event_box.get_window()->get_pointer (x, y, mask)) != 0) { doit = true; } diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index c6daf022fb..7cd594bbda 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -926,7 +926,7 @@ Editor::button_release_handler (GnomeCanvasItem* item, GdkEvent* event, ItemType break; case MarkerItem: - remove_marker (item, &event); + remove_marker (item, event); break; case RegionItem: @@ -1941,9 +1941,9 @@ Editor::update_marker_drag_item (Location *location) double x2 = frame_to_pixel (location->end()); if (location->is_mark()) { - marker_drag_line_points->coords[0] = x1; - marker_drag_line_points->coords[2] = x1; - marker_drag_line->set_property ("points", marker_drag_line_points); + marker_drag_line_points[0].set_x (x1); + marker_drag_line_points[1].set_x (x1); + marker_drag_line->set_property ("points", marker_drag_line_points.gobj()); } else { range_marker_drag_rect->set_property ("x1", x1); @@ -4122,7 +4122,7 @@ Editor::drag_range_markerbar_op (GnomeCanvasItem* item, GdkEvent* event) jack_nframes_t start = 0; jack_nframes_t end = 0; - GnomeCanvasItem * crect = (range_marker_op == CreateRangeMarker) ? range_bar_drag_rect: transport_bar_drag_rect; + Gnome::Canvas::Item* crect = (range_marker_op == CreateRangeMarker) ? range_bar_drag_rect: transport_bar_drag_rect; if (!Keyboard::modifier_state_contains (event->button.state, Keyboard::snap_modifier())) { snap_to (drag_info.current_pointer_frame); @@ -4157,7 +4157,7 @@ Editor::drag_range_markerbar_op (GnomeCanvasItem* item, GdkEvent* event) temp_location->set (start, end); - gnome_canvas_item_show (crect); + crect->show (); update_marker_drag_item (temp_location); range_marker_drag_rect->show(); @@ -4177,7 +4177,8 @@ Editor::drag_range_markerbar_op (GnomeCanvasItem* item, GdkEvent* event) double x1 = frame_to_pixel (start); double x2 = frame_to_pixel (end); - gnome_canvas_item_set (crect, "x1", x1, "x2", x2, NULL); + crect->set_property ("x1", x1); + crect->set_property ("x2", x2); update_marker_drag_item (temp_location); } diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 5909bee1f8..617e9c17eb 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -998,13 +998,15 @@ Editor::scroll_tracks_up () void Editor::scroll_tracks_down_line () { - edit_vscrollbar.default_vmotion (0, 10); + GtkAdjustment* adj = edit_vscrollbar.get_adjustment(); + adj->set_value (adj->get_value() + 10); } void Editor::scroll_tracks_up_line () { - edit_vscrollbar.default_vmotion (0, -10); + GtkAdjustment* adj = edit_vscrollbar.get_adjustment(); + adj->set_value (adj->get_value() - 10); } /* ZOOM */ @@ -1461,7 +1463,7 @@ Editor::clear_locations () void Editor::insert_region_list_drag (AudioRegion& region) { - gint x, y; + double x, y; double wx, wy; double cx, cy; TimeAxisView *tv; @@ -1471,7 +1473,7 @@ Editor::insert_region_list_drag (AudioRegion& region) track_canvas.get_pointer (x, y); - gnome_canvas_window_to_world (GNOME_CANVAS(track_canvas), x, y, &wx, &wy); + track_canvas.window_to_world (x, y, wx, wy); GdkEvent event; event.type = GDK_BUTTON_RELEASE; @@ -1526,13 +1528,14 @@ Editor::insert_region_list_selection (float times) return; } - Gtk::CTree_Helpers::SelectionList& selected = region_list_display.selection(); + RefPtr<TreeSelection> selected = region_list_display.get_selection(); - if (selected.empty()) { + if (selected.count_selected_rows() != 1) { return; } - Region* region = reinterpret_cast<Region *> (selected.front().get_data ()); + TreeModel::iterator i = region_list_display.get_selection()->get_selected(); + Region* region = (*i)[region_list_display_columns.region]; begin_reversible_command (_("insert region")); session->add_undo (playlist->get_memento()); @@ -1874,7 +1877,7 @@ Editor::import_progress_timeout (void *arg) } if (import_status.doing_what == "building peak files") { - interthread_progress_bar.set_activity_mode (true); + interthread_progress_bar.pulse (); return FALSE; } else { interthread_progress_bar.set_fraction (import_status.progress/100); @@ -2104,7 +2107,7 @@ Editor::embed_sndfile (string path, bool split, bool multiple_files, bool& check } } - track_canvas_scroller.get_window()->set_cursor (GDK_WATCH); + track_canvas_scroller.get_window()->set_cursor (Gdk::Cursor (Gdk::WATCH)); ARDOUR_UI::instance()->flush_pending (); /* make the proper number of channels in the region */ @@ -2141,16 +2144,18 @@ Editor::embed_sndfile (string path, bool split, bool multiple_files, bool& check /* make sure we can see it in the list */ - Gtk::CTree_Helpers::RowList::iterator external_node; - external_node = region_list_display.rows().begin(); - ++external_node; /* its the second node, always */ - external_node->expand_recursive (); + /* its the second node, always */ + + // GTK2FIX ?? is it still always the 2nd node + + TreeModel::Path path ("2"); + region_list_display.expand_row (path, true); ARDOUR_UI::instance()->flush_pending (); } out: - track_canvas_scroller.get_window()->set_cursor (current_canvas_cursor); + track_canvas_scroller.get_window()->set_cursor (*current_canvas_cursor); } void @@ -2288,7 +2293,7 @@ Editor::insert_sndfile_into (string path, bool multi, AudioTimeAxisView* tv, jac return; } - track_canvas_scroller.get_window()->set_cursor (GDK_WATCH); + track_canvas_scroller.get_window()->set_cursor (Gdk::Cursor (Gdk::WATCH)); ARDOUR_UI::instance()->flush_pending (); /* make the proper number of channels in the region */ @@ -2331,7 +2336,7 @@ Editor::insert_sndfile_into (string path, bool multi, AudioTimeAxisView* tv, jac } out: - track_canvas_scroller.get_window()->set_cursor (current_canvas_cursor); + track_canvas_scroller.get_window()->set_cursor (*current_canvas_cursor); return; } @@ -2598,13 +2603,14 @@ Editor::region_fill_selection () Region *region; - Gtk::CTree_Helpers::SelectionList& selected = region_list_display.selection(); - - if (selected.empty()) { + RefPtr<TreeSelection> selected = region_list_display.get_selection(); + + if (selected.count_selected_rows() != 1) { return; } - region = reinterpret_cast<Region *> (selected.front().get_data()); + TreeModel::iterator i = region_list_display.get_selection()->get_selected(); + region = (*i)[region_list_display_columns.region]; jack_nframes_t start = selection->time[clicked_selection].start; jack_nframes_t end = selection->time[clicked_selection].end; @@ -2918,7 +2924,7 @@ Editor::freeze_route () pthread_create (&itt.thread, 0, _freeze_thread, this); - track_canvas_scroller.get_window()->set_cursor (Gdk::WATCH); + track_canvas_scroller.get_window()->set_cursor (Cursor (WATCH)); while (!itt.done && !itt.cancel) { gtk_main_iteration (); @@ -2927,7 +2933,7 @@ Editor::freeze_route () interthread_progress_connection.disconnect (); interthread_progress_window->hide_all (); current_interthread_info = 0; - track_canvas_scroller.get_window()->set_cursor (current_canvas_cursor); + track_canvas_scroller.get_window()->set_cursor (*current_canvas_cursor); } void @@ -3164,11 +3170,11 @@ Editor::paste (float times) void Editor::mouse_paste () { - gint x, y; + double x, y; double wx, wy; track_canvas.get_pointer (x, y); - gnome_canvas_window_to_world (GNOME_CANVAS(track_canvas), x, y, &wx, &wy); + track_canvas.window_to_world (x, y, wx, wy); GdkEvent event; event.type = GDK_BUTTON_RELEASE; @@ -3215,14 +3221,17 @@ Editor::paste_internal (jack_nframes_t position, float times) void Editor::paste_named_selection (float times) { - Gtk::CList_Helpers::SelectionList& selected = named_selection_display.selection(); TrackSelection::iterator i; - if (selected.empty() || selection->tracks.empty()) { + RefPtr<TreeSelection> selected = named_selection_display.get_selection(); + + if (selected.count_selected_rows() == 0 || selection->tracks.empty()) { return; } - NamedSelection* ns = static_cast<NamedSelection*> (selected.front()->get_data ()); + TreeModel::iterator i = selected->get_selected(); + NamedSection* ns = (*i)[named_selection_columns.selection]; + list<Playlist*>::iterator chunk; list<Playlist*>::iterator tmp; @@ -3457,7 +3466,7 @@ Editor::normalize_region () begin_reversible_command (_("normalize")); - track_canvas_scroller.get_window()->set_cursor (wait_cursor); + track_canvas_scroller.get_window()->set_cursor (*wait_cursor); gdk_flush (); for (AudioRegionSelection::iterator r = selection->audio_regions.begin(); r != selection->audio_regions.end(); ++r) { @@ -3467,7 +3476,7 @@ Editor::normalize_region () } commit_reversible_command (); - gdk_window_set_cursor (track_canvas_scroller.get_window()->gobj(), current_canvas_cursor); + track_canvas_scroller.get_window()->set_cursor (*current_canvas_cursor); } @@ -3514,7 +3523,7 @@ Editor::apply_filter (AudioFilter& filter, string command) begin_reversible_command (command); - track_canvas_scroller.get_window()->set_cursor (wait_cursor); + track_canvas_scroller.get_window()->set_cursor (*wait_cursor); gdk_flush (); for (AudioRegionSelection::iterator r = selection->audio_regions.begin(); r != selection->audio_regions.end(); ) { @@ -3543,7 +3552,7 @@ Editor::apply_filter (AudioFilter& filter, string command) selection->audio_regions.clear (); out: - gdk_window_set_cursor (track_canvas_scroller.get_window()->gobj(), current_canvas_cursor); + track_canvas_scroller.get_window()->set_cursor (*current_canvas_cursor); } void diff --git a/gtk2_ardour/editor_route_list.cc b/gtk2_ardour/editor_route_list.cc index 9d3090d97c..f4f6f4df76 100644 --- a/gtk2_ardour/editor_route_list.cc +++ b/gtk2_ardour/editor_route_list.cc @@ -173,14 +173,14 @@ Editor::route_display_selection_changed () } void -Editor::unselect_strip_in_display (TimeAxisView* tv) +Editor::unselect_strip_in_display (TimeAxisView& tv) { TreeModel::Children rows = route_display_model->children(); TreeModel::Children::iterator i; Glib::RefPtr<TreeSelection> selection = route_list.get_selection(); for (i = rows.begin(); i != rows.end(); ++i) { - if ((*i)[route_display_columns.tv] == tv) { + if ((*i)[route_display_columns.tv] == &tv) { selection->unselect (*i); } } diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index f8d73c6098..b0edcedd38 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -133,7 +133,7 @@ Editor::ruler_button_press (GdkEventButton* ev) else if (minsec_ruler->is_realized() && ev->window == minsec_ruler->get_window()->gobj()) grab_widget = minsec_ruler; if (grab_widget) { - Gtk::Main::grab_add (*grab_widget); + grab_widget->add_modal_grab (); ruler_grabbed_widget = grab_widget; } @@ -189,7 +189,7 @@ Editor::ruler_button_release (GdkEventButton* ev) if (ruler_grabbed_widget) { - Gtk::Main::grab_remove (*ruler_grabbed_widget); + ruler_grabbed_widget->remove_modal_grab(); ruler_grabbed_widget = 0; } @@ -605,8 +605,7 @@ Editor::update_ruler_visibility () if (ruler_shown[ruler_time_meter]) { lab_children.push_back (Element(meter_label, PACK_SHRINK, PACK_START)); - gtk_object_getv (GTK_OBJECT(meter_group), 1, args) ; - old_unit_pos = GTK_VALUE_DOUBLE (args[0]) ; + gtk_object_get (GTK_OBJECT(meter_group), "y", &old_unit_pos); if (tbpos != old_unit_pos) { meter_group->move ( 0.0, tbpos - old_unit_pos); } @@ -622,8 +621,7 @@ Editor::update_ruler_visibility () if (ruler_shown[ruler_time_tempo]) { lab_children.push_back (Element(tempo_label, PACK_SHRINK, PACK_START)); - gtk_object_getv (GTK_OBJECT(tempo_group), 1, args) ; - old_unit_pos = GTK_VALUE_DOUBLE (args[0]) ; + gtk_object_get (GTK_OBJECT(tempo_group), "y", &old_unit_pos); if (tbpos != old_unit_pos) { tempo_group->move(0.0, tbpos - old_unit_pos); } @@ -640,6 +638,7 @@ Editor::update_ruler_visibility () lab_children.push_back (Element(mark_label, PACK_SHRINK, PACK_START)); gtk_object_getv (GTK_OBJECT(marker_group), 1, args) ; old_unit_pos = GTK_VALUE_DOUBLE (args[0]) ; + gtk_object_get (GTK_OBJECT(marker_group), "y", &old_unit_pos); if (tbpos != old_unit_pos) { marker_group->move ( 0.0, tbpos - old_unit_pos); } @@ -670,8 +669,7 @@ Editor::update_ruler_visibility () if (ruler_shown[ruler_time_transport_marker]) { lab_children.push_back (Element(transport_mark_label, PACK_SHRINK, PACK_START)); - gtk_object_getv (GTK_OBJECT(transport_marker_group), 1, args) ; - old_unit_pos = GTK_VALUE_DOUBLE (args[0]) ; + gtk_object_get (GTK_OBJECT(transport_marker_group), "y", &old_unit_pos); if (tbpos != old_unit_pos) { transport_marker_group->move ( 0.0, tbpos - old_unit_pos); } diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc index 0beea96463..4866028ffc 100644 --- a/gtk2_ardour/editor_tempodisplay.cc +++ b/gtk2_ardour/editor_tempodisplay.cc @@ -256,8 +256,9 @@ Editor::mouse_add_new_tempo_event (jack_nframes_t frame) tempo_dialog.cancel_button.signal_clicked().connect (bind (mem_fun (tempo_dialog, &ArdourDialog::stop), -1)); tempo_dialog.set_position (Gtk::WIN_POS_MOUSE); - tempo_dialog.realize (); - tempo_dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); + // GTK2FIX + // tempo_dialog.realize (); + // tempo_dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); ensure_float (tempo_dialog); @@ -298,8 +299,9 @@ Editor::mouse_add_new_meter_event (jack_nframes_t frame) meter_dialog.cancel_button.signal_clicked().connect (bind (mem_fun (meter_dialog, &ArdourDialog::stop), -1)); meter_dialog.set_position (Gtk::WIN_POS_MOUSE); - meter_dialog.realize (); - meter_dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); + // GTK2FIX + // meter_dialog.realize (); + // meter_dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); ensure_float (meter_dialog); @@ -355,8 +357,9 @@ Editor::edit_meter_section (MeterSection* section) meter_dialog.cancel_button.signal_clicked().connect (bind (mem_fun (meter_dialog, &ArdourDialog::stop), -1)); meter_dialog.set_position (Gtk::WIN_POS_MOUSE); - meter_dialog.realize (); - meter_dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); + // GTK2FIX + // meter_dialog.realize (); + // meter_dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); ensure_float (meter_dialog); @@ -387,8 +390,9 @@ Editor::edit_tempo_section (TempoSection* section) tempo_dialog.cancel_button.signal_clicked().connect (bind (mem_fun (tempo_dialog, &ArdourDialog::stop), -1)); tempo_dialog.set_position (Gtk::WIN_POS_MOUSE); - tempo_dialog.realize (); - tempo_dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); + // GTK2FIX + // tempo_dialog.realize (); + // tempo_dialog.get_window()->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); ensure_float (tempo_dialog); diff --git a/gtk2_ardour/editor_timefx.cc b/gtk2_ardour/editor_timefx.cc index 2d3e84c767..274f9587d6 100644 --- a/gtk2_ardour/editor_timefx.cc +++ b/gtk2_ardour/editor_timefx.cc @@ -121,12 +121,14 @@ Editor::run_timestretch (AudioRegionSelection& regions, float fraction) current_timestretch->progress_bar.set_fraction (0.0f); current_timestretch->first_cancel = current_timestretch->cancel_button.signal_clicked().connect (bind (mem_fun (*current_timestretch, &ArdourDialog::stop), -1)); - current_timestretch->first_delete = current_timestretch->signal_delete_event().connect (mem_fun (*current_timestretch, &ArdourDialog::wm_close_event)); + // GTK2FIX + // current_timestretch->first_delete = current_timestretch->signal_delete_event().connect (mem_fun (*current_timestretch, &ArdourDialog::wm_close_event)); current_timestretch->run (); if (current_timestretch->run_status() != 1) { - current_timestretch->close (); + // GTK2FIX + // current_timestretch->close (); return 1; /* no error, but we did nothing */ } @@ -161,8 +163,9 @@ Editor::run_timestretch (AudioRegionSelection& regions, float fraction) } c.disconnect (); - - current_timestretch->close (); + + // GTK2FIX + // current_timestretch->close (); return current_timestretch->status; } diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index e83e796130..4899e58733 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -229,10 +229,10 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev) double fraction; - GdkWindow win (meter_metric_area.get_window()); - Gdk_GC fg_gc (meter_metric_area.get_style()->get_fg_gc (Gtk::STATE_NORMAL)); - Gdk_GC bg_gc (meter_metric_area.get_style()->get_bg_gc (Gtk::STATE_NORMAL)); - Gdk_Font font (meter_metric_area.get_style()->get_font()); + Glib::RefPtr<Gdk::Window> win (meter_metric_area.get_window()); + Glib::RefPtr<Gdk::GC> fg_gc (meter_metric_area.get_style()->get_fg_gc (Gtk::STATE_NORMAL)); + Glib::RefPtr<Gdk::GC> bg_gc (meter_metric_area.get_style()->get_bg_gc (Gtk::STATE_NORMAL)); + Pango::FontDescription font (meter_metric_area.get_style()->get_font()); gint x, y, width, height, depth; gint pos; int db_points[] = { -50, -10, -3, 0, 6 }; @@ -241,7 +241,7 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev) GdkRectangle base_rect; GdkRectangle draw_rect; - win.get_geometry (x, y, width, height, depth); + win->get_geometry (x, y, width, height, depth); base_rect.width = width; base_rect.height = height; @@ -249,7 +249,7 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev) base_rect.y = 0; gdk_rectangle_intersect (&ev->area, &base_rect, &draw_rect); - win.draw_rectangle (bg_gc, true, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height); + win->draw_rectangle (bg_gc, true, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height); for (i = 0; i < sizeof (db_points)/sizeof (db_points[0]); ++i) { fraction = log_meter (db_points[i]); @@ -257,21 +257,9 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev) snprintf (buf, sizeof (buf), "%d", db_points[i]); - gint twidth; - gint lbearing; - gint rbearing; - gint ascent; - gint descent; - - gdk_string_extents (font, - buf, - &lbearing, - &rbearing, - &twidth, - &ascent, - &descent); - - win.draw_text (font, fg_gc, width - twidth, pos + ascent, buf, strlen (buf)); + Glib::RefPtr<Pango::Layout> Layout = meter_metric_area.create_pango_layout(buf); + // GTK2FIX - how to get twidth, ascent + win->draw_layout(fg_gc, width /* - twidth */, pos /* + ascent */, Layout); } return TRUE; @@ -434,9 +422,7 @@ GainMeter::setup_meters () meters[n].width = width; meters[n].meter->add_events (Gdk::BUTTON_RELEASE_MASK); - meters[n].meter->signal_button_release_event().connect - (bind (mem_fun(*this, &GainMeter::meter_button_release), n)); - meters[n].meter->signal_button_release_event().connect_after (ptr_fun (do_not_propagate)); + meters[n].meter->signal_button_release_event().connect (bind (mem_fun(*this, &GainMeter::meter_button_release), n)); } meter_packer.pack_start (*meters[n].meter, false, false); diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 24704a0f72..201b13cbdd 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -373,11 +373,6 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer) mute_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::mute_press)); mute_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::mute_release)); - gain_automation_style_button.signal_button_press_event().connect_after (ptr_fun (do_not_propagate)); - pan_automation_style_button.signal_button_press_event().connect_after (ptr_fun (do_not_propagate)); - gain_automation_state_button.signal_button_press_event().connect_after (ptr_fun (do_not_propagate)); - pan_automation_state_button.signal_button_press_event().connect_after (ptr_fun (do_not_propagate)); - gain_automation_style_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::gain_automation_style_button_event)); gain_automation_style_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::gain_automation_style_button_event)); pan_automation_style_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::pan_automation_style_button_event)); @@ -1139,7 +1134,8 @@ MixerStrip::setup_comment_editor () comment_area.signal_focus_in_event().connect (ptr_fun (ARDOUR_UI::generic_focus_in_event)); comment_area.signal_focus_out_event().connect (ptr_fun (ARDOUR_UI::generic_focus_out_event)); comment_area.changed.connect (mem_fun(*this, &MixerStrip::comment_edited)); - comment_area.signal_button_release_event().connect_after (ptr_fun (do_not_propagate)); + // GTK2FIX + // comment_area.signal_button_release_event().connect_after (ptr_fun (do_not_propagate)); comment_area.show (); comment_window->add (comment_area); @@ -1153,11 +1149,11 @@ MixerStrip::comment_changed (void *src) if (src != this) { ignore_comment_edit = true; - comment_area.freeze (); + // comment_area.freeze (); //comment_area.get_buffer()->delete_text (0, -1); //comment_area.set_point (0); comment_area.get_buffer()->set_text (_route.comment()); - comment_area.thaw (); + // comment_area.thaw (); ignore_comment_edit = false; } } diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc index 4fe464ef4f..854e702232 100644 --- a/gtk2_ardour/new_session_dialog.cc +++ b/gtk2_ardour/new_session_dialog.cc @@ -63,7 +63,8 @@ NewSessionDialog::NewSessionDialog (ARDOUR::AudioEngine& engine, bool startup, s set_wmclass (_("ardour_new_session"), "Ardour"); set_position (Gtk::WIN_POS_MOUSE); set_keyboard_input (true); - set_policy (false, true, false); + // GTK2FIX + // set_policy (false, true, false); set_modal (true); /* sample rate */ diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc index c0ade537fc..b896a61506 100644 --- a/gtk2_ardour/option_editor.cc +++ b/gtk2_ardour/option_editor.cc @@ -950,9 +950,6 @@ OptionEditor::setup_midi_options () int n; ToggleButton* tb; RadioButton* rb; - RadioButton* first_mtc_button = 0; - RadioButton* first_mmc_button = 0; - RadioButton* first_midi_button = 0; Gtk::Table* table = manage (new Table (ports.size() + 4, 9)); @@ -1012,9 +1009,9 @@ OptionEditor::setup_midi_options () newpair.second.push_back (rb); rb->set_name ("OptionEditorToggleButton"); if (n == 0) { - first_mtc_button = rb; + mtc_button_group = rb->get_group(); } else { - rb->set_group (first_mtc_button->get_group()); + rb->set_group (mtc_button_group); } table->attach (*rb, 4, 5, n+2, n+3, FILL|EXPAND, FILL); rb->signal_button_press_event().connect (bind (mem_fun(*this, &OptionEditor::mtc_port_chosen), (*i).second, rb)); @@ -1027,9 +1024,9 @@ OptionEditor::setup_midi_options () newpair.second.push_back (rb); rb->set_name ("OptionEditorToggleButton"); if (n == 0) { - first_mmc_button = rb; + mmc_button_group = rb->get_group(); } else { - rb->set_group (first_mmc_button->get_group()); + rb->set_group (mmc_button_group); } table->attach (*rb, 6, 7, n+2, n+3, FILL|EXPAND, FILL); rb->signal_button_press_event().connect (bind (mem_fun(*this, &OptionEditor::mmc_port_chosen), (*i).second, rb)); @@ -1042,9 +1039,9 @@ OptionEditor::setup_midi_options () newpair.second.push_back (rb); rb->set_name ("OptionEditorToggleButton"); if (n == 0) { - first_midi_button = rb; + midi_button_group = rb->get_group(); } else { - rb->set_group (first_midi_button->get_group()); + rb->set_group (midi_button_group); } table->attach (*rb, 8, 9, n+2, n+3, FILL|EXPAND, FILL); rb->signal_button_press_event().connect (bind (mem_fun(*this, &OptionEditor::midi_port_chosen), (*i).second, rb)); @@ -1651,8 +1648,9 @@ OptionEditor::setup_misc_options() connect_box->set_spacing (3); connect_box->set_border_width (8); - auto_connect_output_manual_button.set_group (auto_connect_output_master_button.get_group()); - auto_connect_output_physical_button.set_group (auto_connect_output_master_button.get_group()); + auto_connect_output_button_group = auto_connect_output_master_button.get_group(); + auto_connect_output_manual_button.set_group (auto_connect_output_button_group); + auto_connect_output_physical_button.set_group (auto_connect_output_button_group); Gtk::HBox* useless_box = manage (new HBox); useless_box->pack_start (auto_connect_inputs_button, false, false); @@ -1991,7 +1989,7 @@ OptionEditor::fixup_combo_size (Gtk::Combo& combo, vector<string>& strings) const guint32 FUDGE = 10; // Combo's are stupid - they steal space from the entry for the button - set_size_request_to_display_given_text (*combo.get_entry(), maxstring.c_str(), 10 + FUDGE, 10); + set_size_request_to_display_given_text (combo, maxstring.c_str(), 10 + FUDGE, 10); } void diff --git a/gtk2_ardour/option_editor.h b/gtk2_ardour/option_editor.h index 02237103a2..5fcf6d2d0d 100644 --- a/gtk2_ardour/option_editor.h +++ b/gtk2_ardour/option_editor.h @@ -169,6 +169,10 @@ class OptionEditor : public ArdourDialog Gtk::CheckButton midi_control_button; Gtk::CheckButton mmc_control_button; + Gtk::RadioButton::Group mtc_button_group; + Gtk::RadioButton::Group mmc_button_group; + Gtk::RadioButton::Group midi_button_group; + void send_mmc_toggled (Gtk::CheckButton*); void mmc_control_toggled (Gtk::CheckButton*); void midi_control_toggled (Gtk::CheckButton*); @@ -258,6 +262,7 @@ class OptionEditor : public ArdourDialog Gtk::RadioButton auto_connect_output_physical_button; Gtk::RadioButton auto_connect_output_master_button; Gtk::RadioButton auto_connect_output_manual_button; + Gtk::RadioButton::Group auto_connect_output_button_group; Gtk::CheckButton hw_monitor_button; Gtk::CheckButton sw_monitor_button; diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc index 74da97cdec..374c73c0c6 100644 --- a/gtk2_ardour/panner2d.cc +++ b/gtk2_ardour/panner2d.cc @@ -455,11 +455,12 @@ Panner2d::on_expose_event (GdkEventExpose *event) x, y, 8, 8, 0, 360 * 64); - get_window().draw_text (get_style()->get_font(), - get_style()->get_fg_gc(Gtk::STATE_NORMAL), - x + 6, y + 6, - puck->text, - puck->textlen); + // GTK2FIX : needs a pango layout + // get_window().draw_text (get_style()->get_font(), + // get_style()->get_fg_gc(Gtk::STATE_NORMAL), + // x + 6, y + 6, + // puck->text, + // puck->textlen); } } diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index 8c5301f750..821d3ea465 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -85,6 +85,9 @@ static const gchar * revdblarrow_xpm[] = { PannerUI::PannerUI (IO& io, Session& s) : _io (io), _session (s), + hAdjustment(0.0, 0.0, 0.0), + vAdjustment(0.0, 0.0, 0.0), + panning_viewport(hAdjustment, vAdjustment), panning_up_arrow (Gtk::ARROW_UP, Gtk::SHADOW_OUT), panning_down_arrow (Gtk::ARROW_DOWN, Gtk::SHADOW_OUT), panning_link_button (_("link")) diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h index 0f062db790..e13be3684f 100644 --- a/gtk2_ardour/panner_ui.h +++ b/gtk2_ardour/panner_ui.h @@ -67,6 +67,8 @@ class PannerUI : public Gtk::HBox Panner2d* panner; Gtk::VBox pan_bar_packer; + Gtk::Adjustment hAdjustment; + Gtk::Adjustment vAdjustment; Gtk::Viewport panning_viewport; Gtk::EventBox panning_up; Gtk::Arrow panning_up_arrow; diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index bd8ed025b1..5ae594c617 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -121,6 +121,9 @@ PluginUI::PluginUI (AudioEngine &engine, PluginInsert& pi, bool scrollable) engine(engine), button_table (initial_button_rows, initial_button_cols), output_table (initial_output_rows, initial_output_cols), + hAdjustment(0.0, 0.0, 0.0), + vAdjustment(0.0, 0.0, 0.0), + scroller_view(hAdjustment, vAdjustment), automation_menu (0), is_scrollable(scrollable) { @@ -476,8 +479,8 @@ PluginUI::build_control_ui (AudioEngine &engine, guint32 port_index, MIDI::Contr control_ui->combo = new Gtk::ComboBoxText; //control_ui->combo->set_value_in_list(true, false); set_popdown_strings (*control_ui->combo, setup_scale_values(port_index, control_ui)); - control_ui->combo->signal_unmap_event().connect( mem_fun(*this, &PluginUI::control_combo_changed), control_ui); - plugin.ParameterChanged.connect (bind (mem_fun(*this, &PluginUI::parameter_changed), control_ui)); + control_ui->combo->signal_unmap_event().connect (bind (mem_fun(*this, &PluginUI::control_combo_changed), control_ui)); + plugin.ParameterChanged.connect (bind (mem_fun (*this, &PluginUI::parameter_changed), control_ui)); control_ui->pack_start(control_ui->label, true, true); control_ui->pack_start(*control_ui->combo, false, true); @@ -746,7 +749,7 @@ PluginUI::control_port_toggled (ControlUI* cui) } } -gint +bool PluginUI::control_combo_changed (GdkEventAny* ignored, ControlUI* cui) { if (!cui->ignore_change) { @@ -763,7 +766,7 @@ PluginUIWindow::plugin_going_away (ARDOUR::Redirect* ignored) { ENSURE_GUI_THREAD(bind (mem_fun(*this, &PluginUIWindow::plugin_going_away), ignored)); - _pluginui->stop_updating(0); + _pluginui->stop_updating(); delete_when_idle (this); } @@ -786,24 +789,22 @@ PluginUI::redirect_active_changed (Redirect* r, void* src) bypass_button.set_active (!r->active()); } -gint -PluginUI::start_updating (GdkEventAny *ev) +void +PluginUI::start_updating () { if (output_controls.size() > 0 ) { screen_update_connection.disconnect(); screen_update_connection = ARDOUR_UI::instance()->RapidScreenUpdate.connect (mem_fun(*this, &PluginUI::output_update)); } - return FALSE; } -gint -PluginUI::stop_updating (GdkEventAny *ev) +void +PluginUI::stop_updating () { if (output_controls.size() > 0 ) { screen_update_connection.disconnect(); } - return FALSE; } void @@ -840,10 +841,10 @@ PluginUI::output_update () } } -list<string> +vector<string> PluginUI::setup_scale_values(guint32 port_index, ControlUI* cui) { - list<string> enums; + vector<string> enums; LadspaPlugin* lp = dynamic_cast<LadspaPlugin*> (&plugin); cui->combo_map = new std::map<string, float>; diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h index c10dc26232..0046147c96 100644 --- a/gtk2_ardour/plugin_ui.h +++ b/gtk2_ardour/plugin_ui.h @@ -71,8 +71,8 @@ class PlugUIBase : public sigc::trackable virtual ~PlugUIBase() {} virtual gint get_preferred_height () = 0; - virtual gint start_updating(GdkEventAny*) = 0; - virtual gint stop_updating(GdkEventAny*) = 0; + virtual void start_updating() = 0; + virtual void stop_updating() = 0; protected: ARDOUR::PluginInsert& insert; @@ -94,8 +94,8 @@ class PluginUI : public PlugUIBase, public Gtk::VBox gint get_preferred_height () { return prefheight; } - gint start_updating(GdkEventAny*); - gint stop_updating(GdkEventAny*); + void start_updating(); + void stop_updating(); private: ARDOUR::AudioEngine &engine; @@ -108,6 +108,8 @@ class PluginUI : public PlugUIBase, public Gtk::VBox Gtk::Table output_table; Gtk::ScrolledWindow scroller; + Gtk::Adjustment hAdjustment; + Gtk::Adjustment vAdjustment; Gtk::Viewport scroller_view; Gtk::Label nameinfo_label; Gtk::Label paraminfo_label; @@ -179,12 +181,12 @@ class PluginUI : public PlugUIBase, public Gtk::VBox void build (ARDOUR::AudioEngine &); ControlUI* build_control_ui (ARDOUR::AudioEngine &, guint32 port_index, MIDI::Controllable *); - std::list<string> setup_scale_values(guint32 port_index, ControlUI* cui); + std::vector<string> setup_scale_values(guint32 port_index, ControlUI* cui); void control_adjustment_changed (ControlUI* cui); void parameter_changed (uint32_t, float, ControlUI* cui); void update_control_display (ControlUI* cui); void control_port_toggled (ControlUI* cui); - gint control_combo_changed (GdkEventAny* ignored, ControlUI* cui); + bool control_combo_changed (GdkEventAny* ignored, ControlUI* cui); gint entry_focus_event (GdkEventFocus* ev); void redirect_active_changed (ARDOUR::Redirect*, void*); @@ -222,8 +224,8 @@ class VSTPluginUI : public PlugUIBase, public Gtk::VBox ~VSTPluginUI (); gint get_preferred_height (); - gint start_updating(GdkEventAny*) { return 0; } - gint stop_updating(GdkEventAny*) { return 0; } + void start_updating() {} + void stop_updating() {} int package (Gtk::Window&); diff --git a/gtk2_ardour/regionview.cc b/gtk2_ardour/regionview.cc index 364923df64..b787c4097a 100644 --- a/gtk2_ardour/regionview.cc +++ b/gtk2_ardour/regionview.cc @@ -862,8 +862,9 @@ AudioRegionView::show_region_editor () { if (editor == 0) { editor = new AudioRegionEditor (trackview.session(), region, *this); - editor->realize (); - trackview.editor.ensure_float (*editor); + // GTK2FIX : how to ensure float without realizing + // editor->realize (); + // trackview.editor.ensure_float (*editor); } editor->show_all (); @@ -934,8 +935,7 @@ AudioRegionView::region_sync_changed () args[0].name = X_("points"); - gtk_object_getv (GTK_OBJECT(sync_mark), 1, args); - points = static_cast<GnomeCanvasPoints *> (GTK_VALUE_POINTER(args[0])); + sync_mark->get (X_("points"), &points); double offset = sync_offset / samples_per_unit; diff --git a/gtk2_ardour/route_params_ui.cc b/gtk2_ardour/route_params_ui.cc index 359ddc370e..9206f4489f 100644 --- a/gtk2_ardour/route_params_ui.cc +++ b/gtk2_ardour/route_params_ui.cc @@ -294,7 +294,7 @@ RouteParams_UI::cleanup_pre_view (bool stopupdate) PluginUI * plugui = 0; if (stopupdate && (plugui = dynamic_cast<PluginUI*>(_active_pre_view)) != 0) { - plugui->stop_updating (0); + plugui->stop_updating (); } _pre_plugin_conn.disconnect(); @@ -311,7 +311,7 @@ RouteParams_UI::cleanup_post_view (bool stopupdate) PluginUI * plugui = 0; if (stopupdate && (plugui = dynamic_cast<PluginUI*>(_active_post_view)) != 0) { - plugui->stop_updating (0); + plugui->stop_updating (); } _post_plugin_conn.disconnect(); post_redir_hpane.remove(*_active_post_view); @@ -573,7 +573,7 @@ RouteParams_UI::redirect_selected (ARDOUR::Redirect *redirect, ARDOUR::Placement if (place == PreFader) { cleanup_pre_view(); _pre_plugin_conn = plugin_insert->plugin().GoingAway.connect (bind (mem_fun(*this, &RouteParams_UI::plugin_going_away), PreFader)); - plugin_ui->start_updating (0); + plugin_ui->start_updating (); _active_pre_view = plugin_ui; pre_redir_hpane.add2 (*_active_pre_view); pre_redir_hpane.show_all(); @@ -581,7 +581,7 @@ RouteParams_UI::redirect_selected (ARDOUR::Redirect *redirect, ARDOUR::Placement else { cleanup_post_view(); _post_plugin_conn = plugin_insert->plugin().GoingAway.connect (bind (mem_fun(*this, &RouteParams_UI::plugin_going_away), PostFader)); - plugin_ui->start_updating (0); + plugin_ui->start_updating (); _active_post_view = plugin_ui; post_redir_hpane.add2 (*_active_post_view); post_redir_hpane.show_all(); diff --git a/gtk2_ardour/simplerect.cc b/gtk2_ardour/simplerect.cc index e2d92a08f5..8525a5d47a 100644 --- a/gtk2_ardour/simplerect.cc +++ b/gtk2_ardour/simplerect.cc @@ -33,14 +33,14 @@ namespace Canvas { SimpleRect::SimpleRect(Group& parentx, double x1, double y1, double x2, double y2) -: Shape(GNOME_CANVAS_SHAPE(g_object_new(get_type(),0))) +: Item(GNOME_CANVAS_ITEM(g_object_new(get_type(),0))) { item_construct(parentx); set("x1",x1,"y1",y1,"x2",x2,"y2",y2,0); } SimpleRect::SimpleRect(Group& parentx) -: Shape(GNOME_CANVAS_SHAPE(g_object_new(get_type(),0))) +: Item(GNOME_CANVAS_ITEM(g_object_new(get_type(),0))) { item_construct(parentx); } @@ -57,7 +57,7 @@ namespace namespace Glib { -Gnome::Canvas::SimpleRect* wrap(GnomeCanvasRect* object, bool take_copy) +Gnome::Canvas::SimpleRect* wrap(GnomeCanvasSimpleRect* object, bool take_copy) { return dynamic_cast<Gnome::Canvas::SimpleRect *> (Glib::wrap_auto ((GObject*)(object), take_copy)); } @@ -78,7 +78,7 @@ const Glib::Class& SimpleRect_Class::init() if(!gtype_) // create the GType if necessary { // Glib::Class has to know the class init function to clone custom types. - class_init_func_ = &Shape_Class::class_init_function; + class_init_func_ = &SimpleRect_Class::class_init_function; // This is actually just optimized away, apparently with no harm. // Make sure that the parent type has been created. @@ -109,14 +109,14 @@ Glib::ObjectBase* SimpleRect_Class::wrap_new(GObject* o) /* The implementation: */ SimpleRect::SimpleRect(const Glib::ConstructParams& construct_params) -: Shape(construct_params) +: Item(construct_params) { } SimpleRect::SimpleRect(GnomeCanvasSimpleRect* castitem) -: Shape ((GnomeCanvasShape*)(castitem)) +: Item ((GnomeCanvasItem*)(castitem)) { - } +} SimpleRect::~SimpleRect() { diff --git a/gtk2_ardour/simplerect.h b/gtk2_ardour/simplerect.h index 8804da448f..0228e64343 100644 --- a/gtk2_ardour/simplerect.h +++ b/gtk2_ardour/simplerect.h @@ -56,7 +56,7 @@ namespace Canvas //class Group; -class SimpleRect : public Shape +class SimpleRect : public Item { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 9e4c427233..a453a6e141 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -356,24 +356,23 @@ TimeAxisView::set_height (TrackHeight h) } - -gint +bool TimeAxisView::name_entry_button_press (GdkEventButton *ev) { if (ev->button == 3) { - return do_not_propagate (ev); + return true; } - return FALSE; + return false } -gint +bool TimeAxisView::name_entry_button_release (GdkEventButton *ev) { if (ev->button == 3) { popup_display_menu (ev->time); - return stop_signal (name_entry, "button_release_event"); + return true; } - return FALSE; + return false; } void diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h index a89fd7a87f..e2b634c064 100644 --- a/gtk2_ardour/time_axis_view.h +++ b/gtk2_ardour/time_axis_view.h @@ -195,14 +195,14 @@ class TimeAxisView : public virtual AxisView * * @param ev the event */ - virtual gint name_entry_button_press (GdkEventButton *ev); + virtual bool name_entry_button_press (GdkEventButton *ev); /** * Handle mouse relaese on our LHS control name entry. * *@ param ev the event */ - virtual gint name_entry_button_release (GdkEventButton *ev); + virtual bool name_entry_button_release (GdkEventButton *ev); /** * Handle mouse relaese on our LHS control name ebox. diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc index 26235953b1..c59bc0ae35 100644 --- a/gtk2_ardour/time_axis_view_item.cc +++ b/gtk2_ardour/time_axis_view_item.cc @@ -26,8 +26,7 @@ #include "public_editor.h" #include "time_axis_view_item.h" #include "time_axis_view.h" -#include "canvas-simplerect.h" -#include "canvas-imageframe.h" +#include "simplerect.h" #include "utils.h" #include "rgb_macros.h" @@ -61,7 +60,7 @@ const double TimeAxisViewItem::GRAB_HANDLE_LENGTH = 6 ; * @param start the start point of this item * @param duration the duration of this item */ -TimeAxisViewItem::TimeAxisViewItem(std::string it_name, GnomeCanvasGroup* parent, TimeAxisView& tv, double spu, Gdk::Color& base_color, +TimeAxisViewItem::TimeAxisViewItem(std::string it_name, Gnome::Canvas::Group& parent, TimeAxisView& tv, double spu, Gdk::Color& base_color, jack_nframes_t start, jack_nframes_t duration, Visibility visibility) : trackview (tv) @@ -87,57 +86,53 @@ TimeAxisViewItem::TimeAxisViewItem(std::string it_name, GnomeCanvasGroup* parent warning << "Time Axis Item Duration == 0" << endl ; } - group = gnome_canvas_item_new(GNOME_CANVAS_GROUP(parent),gnome_canvas_group_get_type(),NULL) ; + group = new Gnome::Canvas::Group (parent); - vestigial_frame = gnome_canvas_item_new(GNOME_CANVAS_GROUP(group), - gnome_canvas_simplerect_get_type(), - "x1", (double) 0.0, - "y1", (double) 1.0, - "x2", 2.0, - "y2", (double) trackview.height, - "outline_color_rgba", color_map[cVestigialFrameOutline], - "fill_color_rgba", color_map[cVestigialFrameFill], - NULL); - gnome_canvas_item_hide (vestigial_frame); + vestigial_frame = new Gnome::Canvas::SimpleRect (*group); + vestigial_frame->set_property ("x1", (double) 0.0); + vestigial_frame->set_property ("y1", (double) 1.0); + vestigial_frame->set_property ("x2", 2.0); + vestigial_frame->set_property ("y2", (double) trackview.height); + vestigial_frame->set_property ("outline_color_rgba", color_map[cVestigialFrameOutline]); + vestigial_frame->set_property ("fill_color_rgba", color_map[cVestigialFrameFill]); + vestigial_frame->hide (); if (visibility & ShowFrame) { - frame = gnome_canvas_item_new(GNOME_CANVAS_GROUP(group), - gnome_canvas_simplerect_get_type(), - "x1", (double) 0.0, - "y1", (double) 1.0, - "x2", (double) trackview.editor.frame_to_pixel(duration), - "y2", (double) trackview.height, - "outline_color_rgba", color_map[cTimeAxisFrameOutline], - "fill_color_rgba", color_map[cTimeAxisFrameFill], - NULL); + frame = new Gnome::Canvas::SimpleRect (*group); + frame->set_property ("x1", (double) 0.0); + frame->set_property ("y1", (double) 1.0); + frame->set_property ("x2", (double) trackview.editor.frame_to_pixel(duration)); + frame->set_property ("y2", (double) trackview.height); + frame->set_property ("outline_color_rgba", color_map[cTimeAxisFrameOutline]); + frame->set_property ("fill_color_rgba", color_map[cTimeAxisFrameFill]); + } else { frame = 0; } if (visibility & ShowNameHighlight) { - name_highlight = gnome_canvas_item_new(GNOME_CANVAS_GROUP(group), - gnome_canvas_simplerect_get_type(), - "x1", (double) 1.0, - "x2", (double) (trackview.editor.frame_to_pixel(item_duration)) - 1, - "y1", (double) (trackview.height - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE), - "y2", (double) (trackview.height - 1), - "outline_color_rgba", color_map[cNameHighlightFill], - "fill_color_rgba", color_map[cNameHighlightOutline], - NULL) ; - gtk_object_set_data(GTK_OBJECT(name_highlight), "timeaxisviewitem", this) ; + name_highlight = new Gnome::Canvas::SimpleRect (*group); + name_highlight->set_property ("x1", (double) 1.0); + name_highlight->set_property ("x2", (double) (trackview.editor.frame_to_pixel(item_duration)) - 1); + name_highlight->set_property ("y1", (double) (trackview.height - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE)); + name_highlight->set_property ("y2", (double) (trackview.height - 1)); + name_highlight->set_property ("outline_color_rgba", color_map[cNameHighlightFill]); + name_highlight->set_property ("fill_color_rgba", color_map[cNameHighlightOutline]); + + name_highlight->set_data ("timeaxisviewitem", this); + } else { name_highlight = 0; } if (visibility & ShowNameText) { - name_text = gnome_canvas_item_new(GNOME_CANVAS_GROUP(group), - gnome_canvas_text_get_type(), - "x", (double) TimeAxisViewItem::NAME_X_OFFSET, - "y", (double) trackview.height + 1.0 - TimeAxisViewItem::NAME_Y_OFFSET, - "font", NAME_FONT.c_str(), - "anchor", GTK_ANCHOR_NW, - NULL) ; - gtk_object_set_data(GTK_OBJECT(name_text), "timeaxisviewitem", this) ; + name_text = new Gnome::Canvas::Text (*group); + name_text->set_property ("x", (double) TimeAxisViewItem::NAME_X_OFFSET); + name_text->set_property ("y", (double) trackview.height + 1.0 - TimeAxisViewItem::NAME_Y_OFFSET); + name_text->set_property ("font", NAME_FONT); + name_text->set_property ("anchor", GTK_ANCHOR_NW); + + name_text->set_data ("timeaxisviewitem", this); } else { name_text = 0; @@ -146,25 +141,22 @@ TimeAxisViewItem::TimeAxisViewItem(std::string it_name, GnomeCanvasGroup* parent /* create our grab handles used for trimming/duration etc */ if (visibility & ShowHandles) { - frame_handle_start = gnome_canvas_item_new(GNOME_CANVAS_GROUP(group), - gnome_canvas_simplerect_get_type(), - "x1", (double) 0.0, - "x2", (double) TimeAxisViewItem::GRAB_HANDLE_LENGTH, - "y1", (double) 1.0, - "y2", (double) TimeAxisViewItem::GRAB_HANDLE_LENGTH+1, - "outline_color_rgba", color_map[cFrameHandleStartOutline], - "fill_color_rgba", color_map[cFrameHandleStartFill], - NULL) ; + frame_handle_start = new Gnome::Canvas::SimpleRect (*group); + frame_handle_start->set_property ("x1", (double) 0.0); + frame_handle_start->set_property ("x2", (double) TimeAxisViewItem::GRAB_HANDLE_LENGTH); + frame_handle_start->set_property ("y1", (double) 1.0); + frame_handle_start->set_property ("y2", (double) TimeAxisViewItem::GRAB_HANDLE_LENGTH+1); + frame_handle_start->set_property ("outline_color_rgba", color_map[cFrameHandleStartOutline]); + frame_handle_start->set_property ("fill_color_rgba", color_map[cFrameHandleStartFill]); - frame_handle_end = gnome_canvas_item_new(GNOME_CANVAS_GROUP(group), - gnome_canvas_simplerect_get_type(), - "x1", (double) (trackview.editor.frame_to_pixel(get_duration())) - (TimeAxisViewItem::GRAB_HANDLE_LENGTH), - "x2", (double) trackview.editor.frame_to_pixel(get_duration()), - "y1", (double) 1, - "y2", (double) TimeAxisViewItem::GRAB_HANDLE_LENGTH + 1, - "outline_color_rgba", color_map[cFrameHandleEndOutline], - "fill_color_rgba", color_map[cFrameHandleEndFill], - NULL) ; + frame_handle_end = new Gnome::Canvas::SimpleRect (*group); + frame_handle_end->set_property ("x1", (double) (trackview.editor.frame_to_pixel(get_duration())) - (TimeAxisViewItem::GRAB_HANDLE_LENGTH)); + frame_handle_end->set_property ("x2", (double) trackview.editor.frame_to_pixel(get_duration())); + frame_handle_end->set_property ("y1", (double) 1); + frame_handle_end->set_property ("y2", (double) TimeAxisViewItem::GRAB_HANDLE_LENGTH + 1); + frame_handle_end->set_property ("outline_color_rgba", color_map[cFrameHandleEndOutline]); + frame_handle_end->set_property ("fill_color_rgba", color_map[cFrameHandleEndFill]); + } else { frame_handle_start = 0; frame_handle_end = 0; @@ -182,7 +174,7 @@ TimeAxisViewItem::TimeAxisViewItem(std::string it_name, GnomeCanvasGroup* parent */ TimeAxisViewItem::~TimeAxisViewItem() { - gtk_object_destroy (GTK_OBJECT(group)); + delete group; } @@ -214,23 +206,20 @@ TimeAxisViewItem::set_position(jack_nframes_t pos, void* src, double* delta) version of GNOME Canvas rectifies this issue cleanly. */ - GtkArg args[1] ; double old_unit_pos ; double new_unit_pos = pos / samples_per_unit ; - args[0].name = "x" ; - gtk_object_getv (GTK_OBJECT(group), 1, args) ; - old_unit_pos = GTK_VALUE_DOUBLE (args[0]) ; + group->get_property ("x", &old_unit_pos); if (new_unit_pos != old_unit_pos) { - gnome_canvas_item_move (group, new_unit_pos - old_unit_pos, 0.0) ; + group->move (new_unit_pos - old_unit_pos, 0.0); } - + if (delta) { (*delta) = new_unit_pos - old_unit_pos; } - PositionChanged (frame_position, src) ; /* EMIT_SIGNAL */ + PositionChanged (frame_position, src) ; /* EMIT_SIGNAL */ return true; } @@ -263,7 +252,7 @@ TimeAxisViewItem::set_duration (jack_nframes_t dur, void* src) } if (dur == 0) { - gnome_canvas_item_hide (group); + group->hide(); } item_duration = dur; @@ -272,7 +261,7 @@ TimeAxisViewItem::set_duration (jack_nframes_t dur, void* src) reset_width_dependent_items (pixel_width); - DurationChanged (dur, src) ; /* EMIT_SIGNAL */ + DurationChanged (dur, src) ; /* EMIT_SIGNAL */ return true; } @@ -296,7 +285,7 @@ void TimeAxisViewItem::set_max_duration(jack_nframes_t dur, void* src) { max_item_duration = dur ; - MaxDurationChanged(max_item_duration, src) ; /* EMIT_SIGNAL */ + MaxDurationChanged(max_item_duration, src) ; /* EMIT_SIGNAL */ } /** @@ -307,7 +296,7 @@ TimeAxisViewItem::set_max_duration(jack_nframes_t dur, void* src) jack_nframes_t TimeAxisViewItem::get_max_duration() const { - return(max_item_duration) ; + return (max_item_duration) ; } /** @@ -320,7 +309,7 @@ void TimeAxisViewItem::set_min_duration(jack_nframes_t dur, void* src) { min_item_duration = dur ; - MinDurationChanged(max_item_duration, src) ; /* EMIT_SIGNAL */ + MinDurationChanged(max_item_duration, src) ; /* EMIT_SIGNAL */ } /** @@ -502,7 +491,7 @@ void TimeAxisViewItem::set_name_text(std::string new_name) { if (name_text) { - gnome_canvas_item_set (name_text, "text", new_name.c_str(), NULL); + name_text->set_property ("text", new_name.c_str()); } } @@ -516,43 +505,39 @@ TimeAxisViewItem::set_height(double height) { if (name_highlight) { if (height < NAME_HIGHLIGHT_THRESH) { - gnome_canvas_item_hide (name_highlight); - gnome_canvas_item_hide (name_text); + name_highlight->hide(); + name_text->hide(); } else { - gnome_canvas_item_show (name_highlight); - gnome_canvas_item_show (name_text); + name_highlight->show(); + name_text->show(); } if (height > NAME_HIGHLIGHT_SIZE) { - gnome_canvas_item_set (name_highlight, - "y1", (double) height+1 - NAME_HIGHLIGHT_SIZE, - "y2", (double) height, - NULL); + name_highlight->set_property ("y1", (double) height+1 - NAME_HIGHLIGHT_SIZE); + name_highlight->set_property ("y2", (double) height); } else { /* it gets hidden now anyway */ - gnome_canvas_item_set (name_highlight, - "y1", (double) 1.0, - "y2", (double) height, - NULL); + name_highlight->set_property ("y1", (double) 1.0); + name_highlight->set_property ("y2", (double) height); } } if (name_text) { - gnome_canvas_item_set (name_text, "y", height+1 - NAME_Y_OFFSET, NULL); + name_text->set ("y", height+1 - NAME_Y_OFFSET, NULL); if (height < NAME_HIGHLIGHT_THRESH) { - gnome_canvas_item_set(name_text, "fill_color_rgba", fill_color, NULL) ; + name_text->set_property ("fill_color_rgba", fill_color, NULL) ; } else { - gnome_canvas_item_set(name_text, "fill_color_rgba", label_color, NULL) ; + name_text->set_property ("fill_color_rgba", label_color, NULL) ; } } if (frame) { - gnome_canvas_item_set (frame, "y2", height+1, NULL) ; + frame->set_property ("y2", height+1, NULL) ; } - gnome_canvas_item_set (vestigial_frame, "y2", height+1, NULL) ; + vestigial_frame->set_property ("y2", height+1, NULL) ; } /** @@ -706,23 +691,20 @@ TimeAxisViewItem::set_colors() double height = NAME_HIGHLIGHT_THRESH; if (frame) { - GtkArg args[1] ; - args[0].name = "y2" ; - gtk_object_getv (GTK_OBJECT(frame), 1, args); - height = GTK_VALUE_DOUBLE (args[0]); + frame->get_property ("y2", &height); } if (height < NAME_HIGHLIGHT_THRESH) { - gnome_canvas_item_set(name_text, "fill_color_rgba", fill_color, NULL) ; + name_text->set_property ("fill_color_rgba", fill_color); } else { - gnome_canvas_item_set(name_text, "fill_color_rgba", label_color, NULL) ; + name_text->set_property ("fill_color_rgba", label_color); } } if (name_highlight) { - gnome_canvas_item_set(name_highlight, "fill_color_rgba", fill_color, NULL) ; - gnome_canvas_item_set(name_highlight, "outline_color_rgba", fill_color, NULL) ; + name_highlight->set_property ("fill_color_rgba", fill_color); + name_highlight->set_property ("outline_color_rgba", fill_color); } set_trim_handle_colors() ; } @@ -738,10 +720,10 @@ TimeAxisViewItem::set_frame_color() if (_selected && should_show_selection) { UINT_TO_RGBA(color_map[cSelectedFrameBase], &r, &g, &b, &a); - gnome_canvas_item_set(frame, "fill_color_rgba", RGBA_TO_UINT(r, g, b, fill_opacity), NULL) ; + frame->set_property ("fill_color_rgba", RGBA_TO_UINT(r, g, b, fill_opacity)); } else { UINT_TO_RGBA(color_map[cFrameBase], &r, &g, &b, &a); - gnome_canvas_item_set(frame, "fill_color_rgba", RGBA_TO_UINT(r, g, b, fill_opacity), NULL) ; + frame->set_property ("fill_color_rgba", RGBA_TO_UINT(r, g, b, fill_opacity)); } } } @@ -755,11 +737,11 @@ TimeAxisViewItem::set_trim_handle_colors() { if (frame_handle_start) { if (position_locked) { - gnome_canvas_item_set(frame_handle_start, "fill_color_rgba", color_map[cTrimHandleLockedStart], NULL); - gnome_canvas_item_set(frame_handle_end, "fill_color_rgba", color_map[cTrimHandleLockedEnd], NULL) ; + frame_handle_start->set_property ("fill_color_rgba", color_map[cTrimHandleLockedStart]); + frame_handle_end->set_property ("fill_color_rgba", color_map[cTrimHandleLockedEnd]); } else { - gnome_canvas_item_set(frame_handle_start, "fill_color_rgba", color_map[cTrimHandleStart], NULL) ; - gnome_canvas_item_set(frame_handle_end, "fill_color_rgba", color_map[cTrimHandleEnd], NULL) ; + frame_handle_start->set_property ("fill_color_rgba", color_map[cTrimHandleStart]); + frame_handle_end->set_property ("fill_color_rgba", color_map[cTrimHandleEnd]); } } } @@ -784,66 +766,62 @@ TimeAxisViewItem::reset_width_dependent_items (double pixel_width) if (pixel_width < GRAB_HANDLE_LENGTH * 2) { if (frame_handle_start) { - gnome_canvas_item_hide (frame_handle_start); - gnome_canvas_item_hide (frame_handle_end); + frame_handle_start->hide(); + frame_handle_end->hide(); } } if (pixel_width < 2.0) { if (show_vestigial) { - gnome_canvas_item_show (vestigial_frame); + vestigial_frame->hide (); } if (name_highlight) { - gnome_canvas_item_hide (name_highlight); - gnome_canvas_item_hide (name_text); + name_highlight->hide(); + name_text->hide(); } if (frame) { - gnome_canvas_item_hide (frame); + frame->hide (); } if (frame_handle_start) { - gnome_canvas_item_hide (frame_handle_start); - gnome_canvas_item_hide (frame_handle_end); + frame_handle_start->hide(); + frame_handle_end->hide(); } } else { - gnome_canvas_item_hide (vestigial_frame); + vestigial_frame->hide(); if (name_highlight) { - GtkArg args[1] ; - args[0].name = "y2" ; - gtk_object_getv (GTK_OBJECT(name_highlight), 1, args); - double height = GTK_VALUE_DOUBLE (args[0]); + name_highlight->get_property ("y2", &height); if (height < NAME_HIGHLIGHT_THRESH) { - gnome_canvas_item_hide (name_highlight); - gnome_canvas_item_hide (name_text); + name_highlight->hide(); + name_text->hide(); } else { - gnome_canvas_item_show (name_highlight); - gnome_canvas_item_show (name_text); + name_highlight->show(); + name_text->show(); reset_name_width (pixel_width); } - gnome_canvas_item_set (name_highlight, "x2", pixel_width - 1.0, NULL); + name_highlight->set_property ("x1", pixel_width - 1.0, NULL); } if (frame) { - gnome_canvas_item_show (frame); - gnome_canvas_item_set (frame, "x2", pixel_width, NULL); + frame->show(); + frame->set_property ("x2", pixel_width, NULL); } if (frame_handle_start) { if (pixel_width < (2*TimeAxisViewItem::GRAB_HANDLE_LENGTH)) { - gnome_canvas_item_hide (frame_handle_start); - gnome_canvas_item_hide (frame_handle_end); + frame_handle_start->hide(); + frame_handle_end->hide(); } - gnome_canvas_item_show (frame_handle_start); - gnome_canvas_item_set(GNOME_CANVAS_ITEM(frame_handle_end), "x1", pixel_width - (TimeAxisViewItem::GRAB_HANDLE_LENGTH ), NULL) ; - gnome_canvas_item_show (frame_handle_end); - gnome_canvas_item_set(GNOME_CANVAS_ITEM(frame_handle_end), "x2", pixel_width, NULL) ; + frame_handle_end->set_property ("x1", pixel_width - (TimeAxisViewItem::GRAB_HANDLE_LENGTH ), NULL) ; + frame_handle_end->show(); + frame_handle_end->set_property ("x2", pixel_width, NULL) ; } } } @@ -851,12 +829,9 @@ TimeAxisViewItem::reset_width_dependent_items (double pixel_width) void TimeAxisViewItem::reset_name_width (double pixel_width) { - gint width; - gint lbearing; - gint rbearing; - gint ascent; - gint descent; - Gdk_Font font (NAME_FONT); + int width; + int height; + FontDescription fd (NAME_FONT); if (name_text == 0) { return; @@ -866,15 +841,13 @@ TimeAxisViewItem::reset_name_width (double pixel_width) char cstr[namelen+1]; strcpy (cstr, item_name.c_str()); + RefPtr<Pango::Layout> layout = group.get_canvas()->create_pango_layout(); + layout->set_font_description (fd); + while (namelen) { - gdk_string_extents (font, - cstr, - &lbearing, - &rbearing, - &width, - &ascent, - &descent); + layout->set_text (cstr); + layout->get_pixel_size (width, height); if (width < (pixel_width - NAME_X_OFFSET)) { break; @@ -887,7 +860,7 @@ TimeAxisViewItem::reset_name_width (double pixel_width) if (namelen == 0) { - gnome_canvas_item_hide (name_text); + name_text->hide (); } else { @@ -905,8 +878,8 @@ TimeAxisViewItem::reset_name_width (double pixel_width) } } - gnome_canvas_item_set (name_text, "text", cstr, NULL); - gnome_canvas_item_show (name_text); + name_text->set_property ("text", cstr); + name_text->show(); } } @@ -939,7 +912,7 @@ TimeAxisViewItem::remove_this_item(void* src) * This is used to avoid deleting the obejct while inside the remove_this_item * method * - * @param item the ImageFrameTimeAxisGroup to remove + * @param item the TimeAxisViewItem to remove * @param src the identity of the object that initiated the change */ gint diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index ff651b9649..c86564eb62 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -22,11 +22,13 @@ #define __gtk_ardour_time_axis_view_item_h__ #include <sigc++/signal.h> -#include <libgnomecanvas/libgnomecanvas.h> #include <jack/jack.h> #include <string> +#include <libgnomecanvasmm/text.h> + #include "selectable.h" +#include "simplerect.h" class TimeAxisView; @@ -220,22 +222,22 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable /** * */ - GnomeCanvasItem* get_canvas_frame() ; + Gnome::Canvas::Item* get_canvas_frame() ; /** * */ - GnomeCanvasItem* get_canvas_group(); + Gnome::Canvas::Item* get_canvas_group(); /** * */ - GnomeCanvasItem* get_name_highlight(); + Gnome::Canvas::Item* get_name_highlight(); /** * */ - GnomeCanvasItem* get_name_text(); + Gnome::Canvas::Item* get_name_text(); /** * Sets the samples per unit of this item. @@ -335,7 +337,7 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable * @param start the start point of this item * @param duration the duration of this item */ - TimeAxisViewItem(std::string it_name, GnomeCanvasGroup* parent, TimeAxisView& tv, double spu, Gdk::Color& base_color, + TimeAxisViewItem(std::string it_name, Gnome::Canvas::Group& parent, TimeAxisView& tv, double spu, Gdk::Color& base_color, jack_nframes_t start, jack_nframes_t duration, Visibility v = Visibility (0)); /** @@ -441,13 +443,13 @@ class TimeAxisViewItem : public sigc::trackable, public Selectable uint32_t lock_handle_color_g ; uint32_t lock_handle_color_b ; - GnomeCanvasItem* group ; /* the group */ - GnomeCanvasItem* vestigial_frame ; /* simplerect */ - GnomeCanvasItem* frame ; /* simplerect */ - GnomeCanvasItem* name_text ; /* text */ - GnomeCanvasItem* name_highlight ; /* simplerect */ - GnomeCanvasItem* frame_handle_start ; /* simplerect */ - GnomeCanvasItem* frame_handle_end ; /* simplerect */ + Gnome::Canvas::Group* group; + Gnome::Canvas::SimpleRect* vestigial_frame; + Gnome::Canvas::SimpleRect* frame; + Gnome::Canvas::Text* name_text; + Gnome::Canvas::SimpleRect* name_highlight; + Gnome::Canvas::SimpleRect* frame_handle_start; + Gnome::Canvas::SimpleRect* frame_handle_end; }; /* class TimeAxisViewItem */ |