X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_ed.cc;h=35100e940b0e47a3f787c9eeac9d87c91068e632;hb=6ee23029a338951705c589be6c61ab52099758b6;hp=d5ff1b3c5ccdc8dafb00465b5a72aa731bd58835;hpb=f12701fda2322430f4b8e8a35d02662c04597476;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index d5ff1b3c5c..35100e940b 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -35,6 +35,7 @@ #include "gtkmm2ext/utils.h" #include "gtkmm2ext/window_title.h" #include "gtkmm2ext/tearoff.h" +#include "gtkmm2ext/cairo_packer.h" #include "pbd/file_utils.h" #include "pbd/fpu.h" @@ -53,6 +54,7 @@ #include "utils.h" #include "window_proxy.h" #include "global_port_matrix.h" +#include "location_ui.h" #include @@ -93,26 +95,28 @@ void ARDOUR_UI::install_actions () { Glib::RefPtr main_actions = ActionGroup::create (X_("Main")); + Glib::RefPtr main_menu_actions = ActionGroup::create (X_("Main_menu")); Glib::RefPtr act; /* menus + submenus that need action items */ - ActionManager::register_action (main_actions, X_("Session"), _("Session")); - act = ActionManager::register_action (main_actions, X_("Cleanup"), _("Clean-up")); + ActionManager::register_action (main_menu_actions, X_("Session"), _("Session")); + act = ActionManager::register_action (main_menu_actions, X_("Cleanup"), _("Clean-up")); ActionManager::write_sensitive_actions.push_back (act); - ActionManager::register_action (main_actions, X_("Sync"), _("Sync")); - ActionManager::register_action (main_actions, X_("TransportOptions"), _("Options")); - ActionManager::register_action (main_actions, X_("Help"), _("Help")); - ActionManager::register_action (main_actions, X_("KeyMouseActions"), _("Misc. Shortcuts")); - ActionManager::register_action (main_actions, X_("AudioFileFormat"), _("Audio File Format")); - ActionManager::register_action (main_actions, X_("AudioFileFormatHeader"), _("File Type")); - ActionManager::register_action (main_actions, X_("AudioFileFormatData"), _("Sample Format")); - ActionManager::register_action (main_actions, X_("ControlSurfaces"), _("Control Surfaces")); - ActionManager::register_action (main_actions, X_("Plugins"), _("Plugins")); - ActionManager::register_action (main_actions, X_("Metering"), _("Metering")); - ActionManager::register_action (main_actions, X_("MeteringFallOffRate"), _("Fall Off Rate")); - ActionManager::register_action (main_actions, X_("MeteringHoldTime"), _("Hold Time")); - ActionManager::register_action (main_actions, X_("Denormals"), _("Denormal Handling")); + ActionManager::register_action (main_menu_actions, X_("Sync"), _("Sync")); + ActionManager::register_action (main_menu_actions, X_("TransportOptions"), _("Options")); + ActionManager::register_action (main_menu_actions, X_("WindowMenu"), _("Window")); + ActionManager::register_action (main_menu_actions, X_("Help"), _("Help")); + ActionManager::register_action (main_menu_actions, X_("KeyMouseActions"), _("Misc. Shortcuts")); + ActionManager::register_action (main_menu_actions, X_("AudioFileFormat"), _("Audio File Format")); + ActionManager::register_action (main_menu_actions, X_("AudioFileFormatHeader"), _("File Type")); + ActionManager::register_action (main_menu_actions, X_("AudioFileFormatData"), _("Sample Format")); + ActionManager::register_action (main_menu_actions, X_("ControlSurfaces"), _("Control Surfaces")); + ActionManager::register_action (main_menu_actions, X_("Plugins"), _("Plugins")); + ActionManager::register_action (main_menu_actions, X_("Metering"), _("Metering")); + ActionManager::register_action (main_menu_actions, X_("MeteringFallOffRate"), _("Fall Off Rate")); + ActionManager::register_action (main_menu_actions, X_("MeteringHoldTime"), _("Hold Time")); + ActionManager::register_action (main_menu_actions, X_("Denormals"), _("Denormal Handling")); /* the real actions */ @@ -216,7 +220,6 @@ ARDOUR_UI::install_actions () /* these actions are intended to be shared across all windows */ common_actions = ActionGroup::create (X_("Common")); - ActionManager::register_action (main_actions, X_("WindowMenu"), _("Window")); ActionManager::register_action (common_actions, X_("Quit"), _("Quit"), (hide_return (sigc::mem_fun(*this, &ARDOUR_UI::finish)))); /* windows visibility actions */ @@ -225,7 +228,7 @@ ARDOUR_UI::install_actions () act = ActionManager::register_toggle_action (common_actions, X_("KeepTearoffs"), _("Toolbars when Maximised"), mem_fun (*this, &ARDOUR_UI::toggle_keep_tearoffs)); ActionManager::session_sensitive_actions.push_back (act); - ActionManager::register_toggle_action (common_actions, X_("toggle-mixer"), _("Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_window)); + ActionManager::register_toggle_action (common_actions, X_("toggle-mixer"), S_("Window|Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_window)); ActionManager::register_toggle_action (common_actions, X_("toggle-mixer-on-top"), _("Mixer on Top"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_on_top)); ActionManager::register_toggle_action (common_actions, X_("ToggleRCOptionsEditor"), _("Preferences"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_rc_options_window)); ActionManager::register_toggle_action (common_actions, X_("ToggleSessionOptionsEditor"), _("Properties"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_session_options_window)); @@ -246,7 +249,8 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::register_action (common_actions, X_("About"), _("About"), sigc::mem_fun(*this, &ARDOUR_UI::show_about)); ActionManager::register_action (common_actions, X_("Chat"), _("Chat"), sigc::mem_fun(*this, &ARDOUR_UI::launch_chat)); - ActionManager::register_action (common_actions, X_("Manual"), _("Manual"), mem_fun(*this, &ARDOUR_UI::launch_manual)); + /** TRANSLATORS: This is `Manual' in the sense of an instruction book that tells a user how to use Ardour */ + ActionManager::register_action (common_actions, X_("Manual"), S_("Help|Manual"), mem_fun(*this, &ARDOUR_UI::launch_manual)); ActionManager::register_action (common_actions, X_("Reference"), _("Reference"), mem_fun(*this, &ARDOUR_UI::launch_reference)); ActionManager::register_toggle_action (common_actions, X_("ToggleThemeManager"), _("Theme Manager"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_theme_manager)); ActionManager::register_toggle_action (common_actions, X_("ToggleKeyEditor"), _("Key Bindings"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_key_editor)); @@ -265,8 +269,6 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (common_actions, X_("Save"), _("Save"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::save_state), string(""), false)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::write_sensitive_actions.push_back (act); - act = ActionManager::register_action (common_actions, X_("RemoveLastCapture"), _("Remove Last Capture"), sigc::mem_fun(*this, &ARDOUR_UI::remove_last_capture)); - ActionManager::session_sensitive_actions.push_back (act); Glib::RefPtr transport_actions = ActionGroup::create (X_("Transport")); @@ -285,6 +287,10 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); + act = ActionManager::register_toggle_action (transport_actions, X_("AlwaysPlayRange"), _("Always Play Range"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_always_play_range)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::transport_sensitive_actions.push_back (act); + act = ActionManager::register_action (transport_actions, X_("ToggleRoll"), _("Start/Stop"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_roll), false, false)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); @@ -354,7 +360,7 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); - act = ActionManager::register_action (transport_actions, X_("focus-on-clock"), _("Focus On Clock"), sigc::mem_fun(primary_clock, &AudioClock::focus)); + act = ActionManager::register_action (transport_actions, X_("focus-on-clock"), _("Focus On Clock"), sigc::mem_fun(*this, &ARDOUR_UI::focus_on_clock)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); @@ -454,6 +460,7 @@ ARDOUR_UI::install_actions () ActionManager::add_action_group (jack_actions); ActionManager::add_action_group (transport_actions); ActionManager::add_action_group (main_actions); + ActionManager::add_action_group (main_menu_actions); ActionManager::add_action_group (common_actions); ActionManager::add_action_group (midi_actions); } @@ -530,39 +537,26 @@ ARDOUR_UI::build_menu_bar () EventBox* ev = manage (new EventBox); ev->show (); - HBox* hbox = manage (new HBox); + CairoHPacker* hbox = manage (new CairoHPacker); hbox->show (); - - ev->add (*hbox); + hbox->set_border_width (3); - wall_clock_box.add (wall_clock_label); - wall_clock_box.set_name ("WallClock"); - wall_clock_label.set_name ("WallClock"); + VBox* vbox = manage (new VBox); + vbox->pack_start (*hbox, true, false); + vbox->show(); + + ev->add (*vbox); - disk_space_box.add (disk_space_label); - disk_space_box.set_name ("WallClock"); + wall_clock_label.set_name ("WallClock"); + wall_clock_label.set_use_markup (); disk_space_label.set_name ("WallClock"); disk_space_label.set_use_markup (); - - cpu_load_box.add (cpu_load_label); - cpu_load_box.set_name ("CPULoad"); cpu_load_label.set_name ("CPULoad"); cpu_load_label.set_use_markup (); - - buffer_load_box.add (buffer_load_label); - buffer_load_box.set_name ("BufferLoad"); buffer_load_label.set_name ("BufferLoad"); buffer_load_label.set_use_markup (); - - resize_text_widgets (); - - sample_rate_box.add (sample_rate_label); - sample_rate_box.set_name ("SampleRate"); sample_rate_label.set_name ("SampleRate"); sample_rate_label.set_use_markup (); - - format_box.add (format_label); - format_box.set_name ("Format"); format_label.set_name ("Format"); format_label.set_use_markup (); @@ -583,24 +577,24 @@ ARDOUR_UI::build_menu_bar () disk_space = true; } - hbox->pack_end (wall_clock_box, false, false, 2); - hbox->pack_end (disk_space_box, false, false, 4); - hbox->pack_end (cpu_load_box, false, false, 4); - hbox->pack_end (buffer_load_box, false, false, 4); - hbox->pack_end (sample_rate_box, false, false, 4); - hbox->pack_end (format_box, false, false, 4); + hbox->pack_end (wall_clock_label, false, false, 2); + hbox->pack_end (disk_space_label, false, false, 4); + hbox->pack_end (cpu_load_label, false, false, 4); + hbox->pack_end (buffer_load_label, false, false, 4); + hbox->pack_end (sample_rate_label, false, false, 4); + hbox->pack_end (format_label, false, false, 4); - menu_hbox.pack_end (*ev, false, false); + menu_hbox.pack_end (*ev, false, false, 6); menu_bar_base.set_name ("MainMenuBar"); menu_bar_base.add (menu_hbox); - _status_bar_visibility.add (&wall_clock_box, X_("WallClock"), _("Wall Clock"), wall_clock); - _status_bar_visibility.add (&disk_space_box, X_("Disk"), _("Disk Space"), disk_space); - _status_bar_visibility.add (&cpu_load_box, X_("DSP"), _("DSP"), true); - _status_bar_visibility.add (&buffer_load_box, X_("Buffers"), _("Buffers"), true); - _status_bar_visibility.add (&sample_rate_box, X_("JACK"), _("JACK Sampling Rate and Latency"), true); - _status_bar_visibility.add (&format_box, X_("Format"), _("File Format"), true); + _status_bar_visibility.add (&wall_clock_label, X_("WallClock"), _("Wall Clock"), wall_clock); + _status_bar_visibility.add (&disk_space_label, X_("Disk"), _("Disk Space"), disk_space); + _status_bar_visibility.add (&cpu_load_label, X_("DSP"), _("DSP"), true); + _status_bar_visibility.add (&buffer_load_label, X_("Buffers"), _("Buffers"), true); + _status_bar_visibility.add (&sample_rate_label, X_("JACK"), _("JACK Sampling Rate and Latency"), true); + _status_bar_visibility.add (&format_label, X_("Format"), _("File Format"), true); ev->signal_button_press_event().connect (sigc::mem_fun (_status_bar_visibility, &VisibilityGroup::button_press_event)); } @@ -630,10 +624,20 @@ ARDOUR_UI::use_menubar_as_top_menubar () app->set_menu_bar (*menu_bar); } +void +ARDOUR_UI::big_clock_catch_focus () +{ + PublicEditor::instance().reset_focus (); +} + void ARDOUR_UI::setup_clock () { - ARDOUR_UI::Clock.connect (sigc::bind (sigc::mem_fun (big_clock, &AudioClock::set), false)); + ARDOUR_UI::Clock.connect (sigc::mem_fun (big_clock, &AudioClock::set)); + + big_clock->set_corner_radius (0.0); + big_clock->set_fixed_width (false); + big_clock->mode_changed.connect (sigc::mem_fun (*this, &ARDOUR_UI::big_clock_reset_aspect_ratio)); big_clock_window->set (new Window (WINDOW_TOPLEVEL), false); @@ -643,13 +647,29 @@ ARDOUR_UI::setup_clock () big_clock_window->get()->set_title (_("Big Clock")); big_clock_window->get()->signal_realize().connect (sigc::mem_fun (*this, &ARDOUR_UI::big_clock_realized)); - big_clock_window->get()->signal_unmap().connect (sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleBigClock"))); big_clock_window->get()->signal_key_press_event().connect (sigc::bind (sigc::ptr_fun (relay_key_press), big_clock_window->get()), false); big_clock_window->get()->signal_size_allocate().connect (sigc::mem_fun (*this, &ARDOUR_UI::big_clock_size_allocate)); + big_clock_window->get()->signal_unmap().connect (sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleBigClock"))); + big_clock_window->get()->signal_unmap().connect (sigc::mem_fun (*this, &ARDOUR_UI::big_clock_catch_focus)); + manage_window (*big_clock_window->get()); } +void +ARDOUR_UI::big_clock_reset_aspect_ratio () +{ + Gtk::Requisition req; + big_clock->size_request (req); + float aspect = req.width/(float)req.height; + Gdk::Geometry geom; + + geom.min_aspect = aspect; + geom.max_aspect = aspect; + + big_clock_window->get()->set_geometry_hints (*big_clock, geom, Gdk::HINT_ASPECT); +} + void ARDOUR_UI::big_clock_realized () { @@ -658,6 +678,8 @@ ARDOUR_UI::big_clock_realized () set_decoration (big_clock_window->get(), (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)); big_clock_window->get()->get_window()->get_geometry (x, y, w, big_clock_height, d); + big_clock_reset_aspect_ratio (); + original_big_clock_height = big_clock_height; original_big_clock_width = w; @@ -798,9 +820,15 @@ ARDOUR_UI::save_ardour_state () if (_session) { _session->add_instant_xml (enode); _session->add_instant_xml (mnode); + if (location_ui->get ()) { + _session->add_instant_xml (location_ui->get()->ui().get_state ()); + } } else { Config->add_instant_xml (enode); Config->add_instant_xml (mnode); + if (location_ui->get ()) { + Config->add_instant_xml (location_ui->get()->ui().get_state ()); + } } Keyboard::save_keybindings (); @@ -834,3 +862,12 @@ ARDOUR_UI::resize_text_widgets () set_size_request_to_display_given_text (cpu_load_label, "DSP: 100.0%", 2, 2); set_size_request_to_display_given_text (buffer_load_label, "Buffers: p:100% c:100%", 2, 2); } + +void +ARDOUR_UI::focus_on_clock () +{ + if (editor && primary_clock) { + editor->present (); + primary_clock->focus (); + } +}