#include <ardour/utils.h>
#include "ardour_ui.h"
-#include "check_mark.h"
#include "editor.h"
#include "grouped_buttons.h"
#include "keyboard.h"
Gdk::Cursor* Editor::time_fx_cursor = 0;
Gdk::Cursor* Editor::fader_cursor = 0;
Gdk::Cursor* Editor::speaker_cursor = 0;
-Gdk::Cursor* Editor::null_cursor = 0;
Gdk::Cursor* Editor::wait_cursor = 0;
Gdk::Cursor* Editor::timebar_cursor = 0;
-GdkPixmap *Editor::check_pixmap = 0;
-GdkBitmap *Editor::check_mask = 0;
-GdkPixmap *Editor::empty_pixmap = 0;
-GdkBitmap *Editor::empty_mask = 0;
+bool
+Editor::on_key_press_event (GdkEventKey* ev)
+{
+ GtkWindow* win = gobj();
+
+ /* This exists to allow us to override the way GTK handles
+ key events. The normal sequence is:
+
+ a) event is delivered to a GtkWindow
+ b) accelerators/mnemonics are activated
+ c) if (b) didn't handle the event, propagate to
+ the focus widget and/or focus chain
+
+ The problem with this is that if the accelerators include
+ keys without modifiers, such as the space bar or the
+ letter "e", then pressing the key while typing into
+ a text entry widget results in the accelerator being
+ activated, instead of the desired letter appearing
+ in the text entry.
+
+ There is no good way of fixing this, but this
+ represents a compromise. The idea is that
+ key events involving modifiers (not Shift)
+ get routed into the activation pathway first, then
+ get propagated to the focus widget if necessary.
+
+ If the key event doesn't involve modifiers,
+ we deliver to the focus widget first, thus allowing
+ it to get "normal text" without interference
+ from acceleration.
+
+ Of course, this can also be problematic: if there
+ is a widget with focus, then it will swallow
+ all "normal text" accelerators.
+ */
+
+ if (ev->state & ~Gdk::SHIFT_MASK) {
+ /* modifiers in effect, accelerate first */
+ if (!gtk_window_activate_key (win, ev)) {
+ return gtk_window_propagate_key_event (win, ev);
+ } else {
+ return true;
+ }
+ }
+
+ /* no modifiers, propagate first */
+
+ if (!gtk_window_propagate_key_event (win, ev)) {
+ return gtk_window_activate_key (win, ev);
+ }
+
+
+ return true;
+}
+
+void
+show_me_the_size (Requisition* r, const char* what)
+{
+ cerr << "size of " << what << " = " << r->width << " x " << r->height << endl;
+}
Editor::Editor (AudioEngine& eng)
: engine (eng),
transport_mark_label (_("Loop/Punch Ranges")),
edit_packer (3, 3, false),
- edit_hscroll_left_arrow (Gtk::ARROW_LEFT, Gtk::SHADOW_OUT),
- edit_hscroll_right_arrow (Gtk::ARROW_RIGHT, Gtk::SHADOW_OUT),
+
+ /* the values here don't matter: layout widgets
+ reset them as needed.
+ */
+
+ vertical_adjustment (0.0, 0.0, 400.0, 10),
+ horizontal_adjustment (0.0, 0.0, 1200.0, 20),
/* tool bar related */
init_colormap ();
- check_pixmap = gdk_pixmap_colormap_create_from_xpm_d (NULL,
- gtk_widget_get_colormap (GTK_WIDGET(edit_group_list.gobj())),
- &check_mask, NULL, (gchar **) check_xpm);
- empty_pixmap = gdk_pixmap_colormap_create_from_xpm_d (NULL,
- gtk_widget_get_colormap (GTK_WIDGET(edit_group_list.gobj())),
- &empty_mask, NULL, (gchar **) empty_xpm);
-
session = 0;
selection = new Selection;
_xfade_visibility = true;
editor_ruler_menu = 0;
no_ruler_shown_update = false;
+ edit_hscroll_dragging = false;
edit_group_list_menu = 0;
route_list_menu = 0;
region_list_menu = 0;
region_edit_menu_split_item = 0;
temp_location = 0;
region_edit_menu_split_multichannel_item = 0;
- edit_hscroll_dragging = false;
leftmost_frame = 0;
ignore_mouse_mode_toggle = false;
current_stepping_trackview = 0;
initialize_rulers ();
initialize_canvas ();
- track_canvas_scroller.add (track_canvas);
- track_canvas_scroller.set_policy (POLICY_NEVER, POLICY_NEVER);
- track_canvas_scroller.set_name ("TrackCanvasScroller");
-
- track_canvas_scroller.get_vadjustment()->signal_value_changed().connect (mem_fun(*this, &Editor::tie_vertical_scrolling));
- track_canvas_scroller.get_vadjustment()->set_step_increment (10.0);
-
- track_canvas_scroller.get_hadjustment()->set_lower (0.0);
- track_canvas_scroller.get_hadjustment()->set_upper (1200.0);
- track_canvas_scroller.get_hadjustment()->set_step_increment (20.0);
- track_canvas_scroller.get_hadjustment()->signal_value_changed().connect (mem_fun(*this, &Editor::canvas_horizontally_scrolled));
-
- edit_vscrollbar.set_adjustment(*track_canvas_scroller.get_vadjustment());
- edit_hscrollbar.set_adjustment(*track_canvas_scroller.get_hadjustment());
-
- edit_hscrollbar.signal_button_press_event().connect (mem_fun(*this, &Editor::hscroll_slider_button_press));
- edit_hscrollbar.signal_button_release_event().connect (mem_fun(*this, &Editor::hscroll_slider_button_release));
- edit_hscrollbar.signal_size_allocate().connect (mem_fun(*this, &Editor::hscroll_slider_allocate));
+ edit_controls_vbox.set_spacing (track_spacing);
+ horizontal_adjustment.signal_value_changed().connect (mem_fun(*this, &Editor::canvas_horizontally_scrolled));
+ vertical_adjustment.signal_value_changed().connect (mem_fun(*this, &Editor::tie_vertical_scrolling));
- time_canvas_scroller.add (time_canvas);
- time_canvas_scroller.set_policy (POLICY_NEVER, POLICY_NEVER);
- time_canvas_scroller.set_hadjustment (*track_canvas_scroller.get_hadjustment());
- time_canvas_scroller.set_name ("TimeCanvasScroller");
+ track_canvas.set_hadjustment (horizontal_adjustment);
+ track_canvas.set_vadjustment (vertical_adjustment);
+ time_canvas.set_hadjustment (horizontal_adjustment);
- track_canvas_scroller.signal_map_event().connect (mem_fun (*this, &Editor::track_canvas_map_handler));
- time_canvas_scroller.signal_map_event().connect (mem_fun (*this, &Editor::time_canvas_map_handler));
+ track_canvas.signal_map_event().connect (mem_fun (*this, &Editor::track_canvas_map_handler));
+ time_canvas.signal_map_event().connect (mem_fun (*this, &Editor::time_canvas_map_handler));
- edit_controls_vbox.set_spacing (track_spacing);
- edit_controls_hbox.pack_start (edit_controls_vbox, true, true);
- edit_controls_scroller.add (edit_controls_hbox);
- edit_controls_scroller.set_name ("EditControlsBase");
- edit_controls_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_NEVER);
+ // edit_controls_hbox.pack_start (edit_controls_vbox, true, true);
+ controls_layout.add (edit_controls_vbox);
+ controls_layout.set_name ("EditControlsBase");
+ controls_layout.signal_size_request().connect (mem_fun(*this, &Editor::set_layout_width), false);
+ controls_layout.signal_expose_event().connect (mem_fun(*this, &Editor::layout_expose), false);
+
+ controls_layout.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
+ controls_layout.signal_button_release_event().connect (mem_fun(*this, &Editor::edit_controls_button_release));
- Viewport* viewport = static_cast<Viewport*> (edit_controls_scroller.get_child());
+ edit_vscrollbar.set_adjustment (vertical_adjustment);
+ edit_hscrollbar.set_adjustment (horizontal_adjustment);
- viewport->set_shadow_type (Gtk::SHADOW_NONE);
- viewport->set_name ("EditControlsBase");
- viewport->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
- viewport->signal_button_release_event().connect (mem_fun(*this, &Editor::edit_controls_button_release));
+ edit_hscrollbar.signal_button_press_event().connect (mem_fun(*this, &Editor::hscrollbar_button_press));
+ edit_hscrollbar.signal_button_release_event().connect (mem_fun(*this, &Editor::hscrollbar_button_release));
+ edit_hscrollbar.signal_size_allocate().connect (mem_fun(*this, &Editor::hscrollbar_allocate));
build_cursors ();
setup_toolbar ();
time_canvas_vbox.pack_start (*smpte_ruler, false, false);
time_canvas_vbox.pack_start (*frames_ruler, false, false);
time_canvas_vbox.pack_start (*bbt_ruler, false, false);
- time_canvas_vbox.pack_start (time_canvas_scroller, true, true);
+ time_canvas_vbox.pack_start (time_canvas, true, true);
time_canvas_vbox.set_size_request (-1, (int)(timebar_height * visible_timebars));
bbt_label.set_name ("EditorTimeButton");
for the canvas areas.
*/
- track_canvas_event_box.add (track_canvas_scroller);
+ track_canvas_event_box.add (track_canvas);
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_name ("EditorWindow");
- edit_packer.attach (edit_hscrollbar, 1, 2, 0, 1, FILL|EXPAND, FILL, 0, 0);
+ edit_packer.attach (edit_hscrollbar, 1, 2, 0, 1, FILL|EXPAND, FILL, 0, 0);
- edit_packer.attach (time_button_event_box, 0, 1, 1, 2, FILL, FILL, 0, 0);
- edit_packer.attach (time_canvas_event_box, 1, 2, 1, 2, FILL|EXPAND, FILL, 0, 0);
+ edit_packer.attach (time_button_event_box, 0, 1, 1, 2, FILL, FILL, 0, 0);
+ edit_packer.attach (time_canvas_event_box, 1, 2, 1, 2, FILL|EXPAND, FILL, 0, 0);
- edit_packer.attach (edit_controls_scroller, 0, 1, 2, 3, FILL,FILL, 0, 0);
- edit_packer.attach (track_canvas_event_box, 1, 2, 2, 3, FILL|EXPAND, FILL|EXPAND, 0, 0);
- edit_packer.attach (edit_vscrollbar, 2, 3, 2, 3, FILL, FILL|EXPAND, 0, 0);
+ edit_packer.attach (controls_layout, 0, 1, 2, 3, FILL, FILL|EXPAND, 0, 0);
+ edit_packer.attach (track_canvas_event_box, 1, 2, 2, 3, FILL|EXPAND, FILL|EXPAND, 0, 0);
+ edit_packer.attach (edit_vscrollbar, 2, 3, 2, 3, FILL, FILL|EXPAND, 0, 0);
edit_frame.set_name ("BaseFrame");
edit_frame.set_shadow_type (SHADOW_IN);
edit_group_vbox.pack_start (edit_group_list_button, false, false);
edit_group_vbox.pack_start (edit_group_list_scroller, true, true);
- route_list_frame.set_name ("BaseFrame");
- route_list_frame.set_shadow_type (Gtk::SHADOW_IN);
- route_list_frame.add (route_list_scroller);
-
- edit_group_list_frame.set_name ("BaseFrame");
- edit_group_list_frame.set_shadow_type (Gtk::SHADOW_IN);
- edit_group_list_frame.add (edit_group_vbox);
-
- route_group_vpane.add1 (route_list_frame);
- route_group_vpane.add2 (edit_group_list_frame);
-
- list_vpacker.pack_start (route_group_vpane, true, true);
-
region_list_model = TreeStore::create (region_list_columns);
region_list_sort_model = TreeModelSort::create (region_list_model);
region_list_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter));
named_selection_display.signal_button_press_event().connect (mem_fun(*this, &Editor::named_selection_display_button_press));
named_selection_display.get_selection()->signal_changed().connect (mem_fun (*this, &Editor::named_selection_display_selection_changed));
- region_selection_vpane.pack1 (region_list_scroller, true, true);
- region_selection_vpane.pack2 (named_selection_scroller, true, true);
+ the_notebook.append_page (region_list_scroller, _("Regions"));
+ the_notebook.append_page (route_list_scroller, _("Tracks/Busses"));
+ the_notebook.append_page (edit_group_vbox, _("Edit Groups"));
+ the_notebook.append_page (named_selection_scroller, _("Chunks"));
+ the_notebook.set_show_tabs (true);
+ the_notebook.set_scrollable (true);
+ the_notebook.popup_enable ();
- canvas_region_list_pane.pack1 (edit_frame, true, true);
- canvas_region_list_pane.pack2 (region_selection_vpane, true, true);
+ TearOff *notebook_tearoff = manage (new TearOff (the_notebook));
- track_list_canvas_pane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&track_list_canvas_pane)));
- canvas_region_list_pane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&canvas_region_list_pane)));
- route_group_vpane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&route_group_vpane)));
- region_selection_vpane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler),
- static_cast<Gtk::Paned*> (®ion_selection_vpane)));
-
- track_list_canvas_pane.pack1 (list_vpacker, true, true);
- track_list_canvas_pane.pack2 (canvas_region_list_pane, true, true);
-
- /* provide special pane-handle event handling for easy "hide" action */
-
- /* 0: collapse to show left/upper child
- 1: collapse to show right/lower child
- */
-
- route_group_vpane.set_data ("collapse-direction", (gpointer) 0);
- region_selection_vpane.set_data ("collapse-direction", (gpointer) 0);
- canvas_region_list_pane.set_data ("collapse-direction", (gpointer) 0);
- track_list_canvas_pane.set_data ("collapse-direction", (gpointer) 1);
+ edit_pane.pack1 (edit_frame, true, true);
+ edit_pane.pack2 (*notebook_tearoff, true, true);
- route_group_vpane.signal_button_release_event().connect (bind (sigc::ptr_fun (pane_handler), static_cast<Paned*> (&route_group_vpane)));
- region_selection_vpane.signal_button_release_event().connect (bind (sigc::ptr_fun (pane_handler), static_cast<Paned*> (®ion_selection_vpane)));
- canvas_region_list_pane.signal_button_release_event().connect (bind (sigc::ptr_fun (pane_handler), static_cast<Paned*> (&canvas_region_list_pane)));
- track_list_canvas_pane.signal_button_release_event().connect (bind (sigc::ptr_fun (pane_handler), static_cast<Paned*> (&track_list_canvas_pane)));
+ edit_pane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler), static_cast<Gtk::Paned*> (&edit_pane)));
top_hbox.pack_start (toolbar_frame, true, true);
HBox *hbox = manage (new HBox);
- hbox->pack_start (track_list_canvas_pane, true, true);
+ hbox->pack_start (edit_pane, true, true);
global_vpacker.pack_start (top_hbox, false, false);
global_vpacker.pack_start (*hbox, true, true);
global_hpacker.pack_start (global_vpacker, true, true);
set_name ("EditorWindow");
+ cerr << "Adding accel group " << ActionManager::ui_manager->get_accel_group()->gobj() << endl;
add_accel_group (ActionManager::ui_manager->get_accel_group());
+ cerr << "... done\n";
vpacker.pack_end (global_hpacker, true, true);
void
Editor::tie_vertical_scrolling ()
{
- edit_controls_scroller.get_vadjustment()->set_value (track_canvas_scroller.get_vadjustment()->get_value());
+ double y1 = vertical_adjustment.get_value();
+ controls_layout.get_vadjustment()->set_value (y1);
- float y1 = track_canvas_scroller.get_vadjustment()->get_value();
playhead_cursor->set_y_axis(y1);
edit_cursor->set_y_axis(y1);
}
// convert fpu to frame count
- frames = (jack_nframes_t) (fpu * canvas_width);
+ frames = (jack_nframes_t) floor (fpu * canvas_width);
/* don't allow zooms that fit more than the maximum number
of frames into an 800 pixel wide space.
*/
if (session) {
- track_canvas_scroller.get_hadjustment()->set_upper (session->current_end_frame() / frames_per_unit);
+ horizontal_adjustment.set_upper (session->current_end_frame() / frames_per_unit);
}
if (!no_zoom_repos_update) {
- track_canvas_scroller.get_hadjustment()->set_value (leftmost_frame/frames_per_unit);
- update_hscroller ();
+ horizontal_adjustment.set_value (leftmost_frame/frames_per_unit);
update_fixed_rulers ();
tempo_map_changed (Change (0));
}
if (frame != leftmost_frame) {
leftmost_frame = frame;
double pixel = frame_to_pixel (frame);
- if (pixel >= track_canvas_scroller.get_hadjustment()->get_upper()) {
- track_canvas_scroller.get_hadjustment()->set_upper (frame_to_pixel (frame + (current_page_frames())));
+ if (pixel >= horizontal_adjustment.get_upper()) {
+ horizontal_adjustment.set_upper (frame_to_pixel (frame + (current_page_frames())));
}
- track_canvas_scroller.get_hadjustment()->set_value (frame/frames_per_unit);
+ horizontal_adjustment.set_value (frame/frames_per_unit);
XOriginChanged (); /* EMIT_SIGNAL */
}
}
return;
}
- double fpu = (double) zoom_range_clock.current_duration() / (double) canvas_width;
+ double fpu = zoom_range_clock.current_duration() / canvas_width;
if (fpu < 1.0) {
fpu = 1.0;
- zoom_range_clock.set ((jack_nframes_t) (fpu * canvas_width));
- }
- else if (fpu > session->current_end_frame() / (double) canvas_width) {
- fpu = session->current_end_frame() / (double) canvas_width;
- zoom_range_clock.set ((jack_nframes_t) (fpu * canvas_width));
+ zoom_range_clock.set ((jack_nframes_t) floor (fpu * canvas_width));
+ } else if (fpu > session->current_end_frame() / canvas_width) {
+ fpu = session->current_end_frame() / canvas_width;
+ zoom_range_clock.set ((jack_nframes_t) floor (fpu * canvas_width));
}
temporal_zoom (fpu);
void
Editor::canvas_horizontally_scrolled ()
{
- /* XXX note the potential loss of accuracy here caused by
- adjustments being 32bit floats with only a 24 bit mantissa,
- whereas jack_nframes_t is at least a 32 bit uint32_teger.
- */
-
- leftmost_frame = (jack_nframes_t) floor (track_canvas_scroller.get_hadjustment()->get_value() * frames_per_unit);
+ leftmost_frame = (jack_nframes_t) floor (horizontal_adjustment.get_value() * frames_per_unit);
- update_hscroller ();
update_fixed_rulers ();
if (!edit_hscroll_dragging) {
Editor::on_realize ()
{
Window::on_realize ();
-
- /* Even though we're not using acceleration, we want the
- labels to show up.
- */
-
- track_context_menu.accelerate (*this->get_toplevel());
- track_region_context_menu.accelerate (*this->get_toplevel());
-
- Glib::RefPtr<Gdk::Pixmap> empty_pixmap = Gdk::Pixmap::create(get_window(), 1, 1, 1);
- Glib::RefPtr<Gdk::Pixmap> empty_bitmap = Gdk::Pixmap::create(get_window(), 1, 1, 1);
- Gdk::Color white ("#ffffff" );
-
- null_cursor = new Gdk::Cursor(empty_pixmap, empty_bitmap, white, white, 0, 0);
+ Realized ();
}
-
void
Editor::queue_session_control_changed (Session::ControlType t)
{
void
Editor::center_screen (jack_nframes_t frame)
{
- float page = canvas_width * frames_per_unit;
+ double page = canvas_width * frames_per_unit;
/* if we're off the page, then scroll.
*/
if (frame < leftmost_frame || frame >= leftmost_frame + page) {
- center_screen_internal (frame,page);
+ center_screen_internal (frame, page);
}
}
reset_scrolling_region ();
if (session) {
- track_canvas_scroller.get_hadjustment()->set_upper (session->current_end_frame() / frames_per_unit);
- track_canvas_scroller.get_hadjustment()->set_value (leftmost_frame/frames_per_unit);
+ horizontal_adjustment.set_upper (session->current_end_frame() / frames_per_unit);
+ horizontal_adjustment.set_value (leftmost_frame/frames_per_unit);
}
-
- update_hscroller ();
}
void
-Editor::update_title_s (string snap_name)
+Editor::update_title_s (stringcr_t snap_name)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &Editor::update_title_s), snap_name));
leftmost_frame = 0;
- track_canvas_scroller.get_hadjustment()->set_upper (session->current_end_frame() / frames_per_unit);
- track_canvas_scroller.get_hadjustment()->set_value (0);
+ horizontal_adjustment.set_upper (session->current_end_frame() / frames_per_unit);
+ horizontal_adjustment.set_value (0);
- update_hscroller ();
restore_ruler_visibility ();
tempo_map_changed (Change (0));
}
set_default_size(width, height);
- // GTK2FIX
- // set_position(x, y-yoff);
+ move (x, y-yoff);
if ((prop = node.property ("zoom-focus"))) {
set_zoom_focus ((ZoomFocus) atoi (prop->value()));
geometry->add_property("x_off", string(buf));
snprintf(buf, sizeof(buf), "%d", yoff);
geometry->add_property("y_off", string(buf));
- snprintf(buf,sizeof(buf), "%d",gtk_paned_get_position (static_cast<Paned*>(&canvas_region_list_pane)->gobj()));
- geometry->add_property("canvas_region_list_pane_pos", string(buf));
- snprintf(buf,sizeof(buf), "%d", gtk_paned_get_position (static_cast<Paned*>(&track_list_canvas_pane)->gobj()));
- geometry->add_property("track_list_canvas_pane_pos", string(buf));
- snprintf(buf,sizeof(buf), "%d", gtk_paned_get_position (static_cast<Paned*>(®ion_selection_vpane)->gobj()));
- geometry->add_property("region_selection_pane_pos", string(buf));
- snprintf(buf,sizeof(buf), "%d", gtk_paned_get_position (static_cast<Paned*>(&route_group_vpane)->gobj()));
- geometry->add_property("route_group_pane_pos", string(buf));
+ snprintf(buf,sizeof(buf), "%d",gtk_paned_get_position (static_cast<Paned*>(&edit_pane)->gobj()));
+ geometry->add_property("edit_pane_pos", string(buf));
node->add_child_nocopy (*geometry);
}
/* XXX another disgusting hack because of the way combo boxes size themselves */
- Gtkmm2ext::set_size_request_to_display_given_text (edit_mode_selector, "EdgtMode", 2, 10);
+ const guint32 FUDGE = 20; // Combo's are stupid - they steal space from the entry for the button
+ Gtkmm2ext::set_size_request_to_display_given_text (edit_mode_selector, "EdgtMode", 2+FUDGE, 10);
set_popdown_strings (edit_mode_selector, internationalize (edit_mode_strings));
edit_mode_box.pack_start (edit_mode_label, false, false);
edit_mode_box.pack_start (edit_mode_selector, false, false);
/* XXX another disgusting hack because of the way combo boxes size themselves */
- const guint32 FUDGE = 10; // Combo's are stupid - they steal space from the entry for the button
- Gtkmm2ext::set_size_request_to_display_given_text (snap_type_selector, "Region bounds", 2+FUDGE, 10);
+ Gtkmm2ext::set_size_request_to_display_given_text (snap_type_selector, "SMPTE Seconds", 2+FUDGE, 10);
set_popdown_strings (snap_type_selector, internationalize (snap_type_strings));
snap_type_box.pack_start (snap_type_label, false, false);
snap_mode_box.set_spacing (3);
snap_mode_box.set_border_width (3);
- Gtkmm2ext::set_size_request_to_display_given_text (snap_mode_selector, "SngpMode", 2, 10);
+ Gtkmm2ext::set_size_request_to_display_given_text (snap_mode_selector, "SngpMode", 2+FUDGE, 10);
set_popdown_strings (snap_mode_selector, internationalize (snap_mode_strings));
snap_mode_box.pack_start (snap_mode_label, false, false);
/* XXX another disgusting hack because of the way combo boxes size themselves */
- Gtkmm2ext::set_size_request_to_display_given_text (zoom_focus_selector, "Edgt Cursor", 2, 10);
+ Gtkmm2ext::set_size_request_to_display_given_text (zoom_focus_selector, "Edgt Cursor", 2+FUDGE, 10);
set_popdown_strings (zoom_focus_selector, internationalize (zoom_focus_strings));
zoom_focus_box.pack_start (zoom_focus_label, false, false);
}
void
-Editor::set_verbose_canvas_cursor (string txt, double x, double y)
+Editor::set_verbose_canvas_cursor (stringcr_t txt, double x, double y)
{
/* XXX get origin of canvas relative to root window,
add x and y and check compared to gdk_screen_{width,height}
}
void
-Editor::set_verbose_canvas_cursor_text (string txt)
+Editor::set_verbose_canvas_cursor_text (stringcr_t txt)
{
verbose_canvas_cursor->property_text() = txt.c_str();
}
}
}
-void
-Editor::run_sub_event_loop ()
-{
- sub_event_loop_status = 0;
- Main::run ();
-}
-
-void
-Editor::finish_sub_event_loop (int status)
-{
- Main::quit ();
- sub_event_loop_status = status;
-}
-
-gint
-Editor::finish_sub_event_loop_on_delete (GdkEventAny *ignored, int32_t status)
-{
- finish_sub_event_loop (status);
- return TRUE;
-}
-
gint
Editor::mouse_select_button_release (GdkEventButton* ev)
{
height = atoi(geometry->property("y_size")->value());
}
- if (which == static_cast<Gtk::Paned*> (&track_list_canvas_pane)) {
+ if (which == static_cast<Gtk::Paned*> (&edit_pane)) {
if (done[0]) {
return;
}
- if (!geometry || (prop = geometry->property("track_list_canvas_pane_pos")) == 0) {
+ if (!geometry || (prop = geometry->property ("edit_pane_pos")) == 0) {
pos = 75;
snprintf (buf, sizeof(buf), "%d", pos);
} else {
pos = atoi (prop->value());
}
- if ((done[0] = GTK_WIDGET(track_list_canvas_pane.gobj())->allocation.width > pos)) {
- track_list_canvas_pane.set_position (pos);
- }
-
- } else if (which == static_cast<Gtk::Paned*> (&canvas_region_list_pane)) {
-
- if (done[1]) {
- return;
- }
-
- if (!geometry || (prop = geometry->property("canvas_region_list_pane_pos")) == 0) {
- pos = width - (95 * 2);
- snprintf (buf, sizeof(buf), "%d", pos);
- } else {
- pos = atoi (prop->value());
- }
-
- if ((done[1] = GTK_WIDGET(canvas_region_list_pane.gobj())->allocation.width > pos)) {
- canvas_region_list_pane.set_position (pos);
- }
-
- } else if (which == static_cast<Gtk::Paned*> (&route_group_vpane)) {
-
- if (done[2]) {
- return;
- }
-
- if (!geometry || (prop = geometry->property("route_group_pane_pos")) == 0) {
- pos = width - (95 * 2);
- snprintf (buf, sizeof(buf), "%d", pos);
- } else {
- pos = atoi (prop->value());
- }
-
- if ((done[2] = GTK_WIDGET(route_group_vpane.gobj())->allocation.height > pos)) {
- route_group_vpane.set_position (pos);
- }
-
- } else if (which == static_cast<Gtk::Paned*> (®ion_selection_vpane)) {
-
- if (done[3]) {
- return;
- }
-
- if (!geometry || (prop = geometry->property("region_selection_pane_pos")) == 0) {
- pos = width - (95 * 2);
- snprintf (buf, sizeof(buf), "%d", pos);
- } else {
- pos = atoi (prop->value());
- }
-
- if ((done[3] = GTK_WIDGET(region_selection_vpane.gobj())->allocation.height > pos)) {
- region_selection_vpane.set_position (pos);
+ if ((done[0] = GTK_WIDGET(edit_pane.gobj())->allocation.width > pos)) {
+ edit_pane.set_position (pos);
}
}
}
Editor::end_location_changed (Location* location)
{
ENSURE_GUI_THREAD (bind (mem_fun(*this, &Editor::end_location_changed), location));
- track_canvas_scroller.get_hadjustment()->set_upper (location->end() / frames_per_unit);
+ horizontal_adjustment.set_upper (location->end() / frames_per_unit);
}
int
return 0;
}
}
+
+void
+Editor::set_layout_width(Gtk::Requisition *r)
+{
+ edit_controls_vbox.check_resize();
+ int w = edit_controls_vbox.get_width();
+ cerr << "set_layout_width() called w = " << w << endl;
+
+ controls_layout.set_size_request (w, -1);
+}
+
+bool
+Editor::layout_expose (GdkEventExpose* ex)
+{
+ cerr << "layout_expose() called" << endl;
+ return TRUE;
+}