summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/SConscript1
-rw-r--r--gtk2_ardour/ardour-menus.xml58
-rw-r--r--gtk2_ardour/ardour_ui.cc31
-rw-r--r--gtk2_ardour/ardour_ui.h35
-rw-r--r--gtk2_ardour/ardour_ui2.cc57
-rw-r--r--gtk2_ardour/ardour_ui_dependents.cc1
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc100
-rw-r--r--gtk2_ardour/ardour_ui_options.cc152
-rw-r--r--gtk2_ardour/editor.cc46
-rw-r--r--gtk2_ardour/editor.h1
-rw-r--r--gtk2_ardour/editor_actions.cc15
-rw-r--r--gtk2_ardour/editor_ops.cc6
-rw-r--r--gtk2_ardour/editor_region_list.cc99
13 files changed, 459 insertions, 143 deletions
diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript
index 7dae69592a..79297a64f0 100644
--- a/gtk2_ardour/SConscript
+++ b/gtk2_ardour/SConscript
@@ -68,6 +68,7 @@ ardour_ui_dependents.cc
ardour_ui_dialogs.cc
ardour_ui_ed.cc
ardour_ui_mixer.cc
+ardour_ui_options.cc
audio_clock.cc
audio_time_axis.cc
automation_gain_line.cc
diff --git a/gtk2_ardour/ardour-menus.xml b/gtk2_ardour/ardour-menus.xml
index 246bfed631..6138db507a 100644
--- a/gtk2_ardour/ardour-menus.xml
+++ b/gtk2_ardour/ardour-menus.xml
@@ -57,6 +57,8 @@
<menuitem action='set-playhead'/>
<menuitem action='audition-at-mouse'/>
<menuitem action='brush-at-mouse'/>
+ <separator/>
+ <menuitem action='ToggleFollowPlayhead'/>
</menu>
<menu name='Edit' action='Edit'>
<menuitem action='undo'/>
@@ -125,6 +127,37 @@
<menuitem action='ToggleLocations'/>
<menuitem action='ToggleBigClock'/>
</menu>
+ <menu name='Options' action='Options'>
+ <menuitem action='SendMTC'/>
+ <menuitem action='SendMMC'/>
+ <menuitem action='UseMMC'/>
+ <menuitem action='SendMIDIfeedback'/>
+ <menuitem action='UseMIDIcontrol'/>
+ <separator/>
+ <menuitem action='AutoConnectNewTrackInputsToHardware'/>
+ <menuitem action='AutoConnectNewTrackOutputsToHardware'/>
+ <menuitem action='AutoConnectNewTrackOutputsToHardware'/>
+ <menuitem action='ManuallyConnectNewTrackOutputs'/>
+ <separator/>
+ <menuitem action='UseHardwareMonitoring'/>
+ <menuitem action='UseSoftwareMonitoring'/>
+ <menuitem action='UseExternalMonitoring'/>
+ <separator/>
+ <menuitem action='StopPluginsWithTransport'/>
+ <menuitem action='RunPluginsWhileRecording'/>
+ <separator/>
+ <menuitem action='VerifyRemoveLastCapture'/>
+ <menuitem action='StopRecordingOnXrun'/>
+ <menuitem action='StopTransportAtEndOfSession'/>
+ <menuitem action='GainReduceFastTransport'/>
+ <separator/>
+ <menuitem action='LatchedSolo'/>
+ <menuitem action='SoloInPlace'/>
+ <menuitem action='SoloViaBus'/>
+ <separator/>
+ <menuitem action='AutomaticallyCreateCrossfades'/>
+ <menuitem action='UnmuteNewFullCrossfades'/>
+ </menu>
</menubar>
<popup name='redirectmenu'>
@@ -157,4 +190,29 @@
<menuitem action='SetShuttleUnitsSemitones'/>
</popup>
+ <popup name='RegionListMenu'>
+ <menuitem action='rlAudition'/>
+ <menuitem action='rlHide'/>
+ <menuitem action='rlRemove'/>
+ <separator/>
+ <menuitem action='rlShowAll'/>
+ <menu name='Sort' action='RegionListSort'>
+ <menuitem action='SortAscending'/>
+ <menuitem action='SortDescending'/>
+ <separator/>
+ <menuitem action='SortByRegionName'/>
+ <menuitem action='SortByRegionLength'/>
+ <menuitem action='SortByRegionPosition'/>
+ <menuitem action='SortByRegionTimestamp'/>
+ <menuitem action='SortByRegionStartinFile'/>
+ <menuitem action='SortByRegionEndinFile'/>
+ <menuitem action='SortBySourceFileName'/>
+ <menuitem action='SortBySourceFileLength'/>
+ <menuitem action='SortBySourceFileCreationDate'/>
+ <menuitem action='SortBySourceFilesystem'/>
+ </menu>
+ <separator/>
+ <menuitem action='rlEmbedAudio'/>
+ <menuitem action='rlImportAudio'/>
+ </popup>
</ui>
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index d806313ef3..7941c61607 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -803,6 +803,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile)
/* transport */
+ time_master_button (_("time\nmaster")),
+
shuttle_units_button (_("% ")),
punch_in_button (_("punch\nin")),
@@ -811,7 +813,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile)
auto_play_button (_("auto\nplay")),
auto_input_button (_("auto\ninput")),
click_button (_("click")),
- follow_button (_("follow\nPH")),
auditioning_alert_button (_("AUDITIONING")),
solo_alert_button (_("SOLO")),
shown_flag (false)
@@ -1370,34 +1371,6 @@ ARDOUR_UI::toggle_click ()
}
void
-ARDOUR_UI::follow_changed ()
-{
- bool x;
-
- if (!editor) {
- return;
- }
-
- if (follow_button.get_active() != (x = editor->follow_playhead())) {
- follow_button.set_active (x);
- }
-}
-
-void
-ARDOUR_UI::toggle_follow ()
-{
- bool x;
-
- if (!editor) {
- return;
- }
-
- if (editor->follow_playhead() != (x = follow_button.get_active())) {
- editor->set_follow_playhead (x);
- }
-}
-
-void
ARDOUR_UI::toggle_session_auto_loop ()
{
if (session) {
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 3a6f72546a..4b4722d9fc 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -212,7 +212,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI
void toggle_punch_out ();
void toggle_auto_return ();
void toggle_click ();
- void toggle_follow ();
void toggle_session_auto_loop ();
void toggle_session_punch_in ();
@@ -366,6 +365,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI
Gtkmm2ext::StatefulButton rec_button;
+ Gtk::ToggleButton time_master_button;
+ Gtk::ComboBoxText sync_option_combo;
+
+ void sync_option_changed ();
+ void toggle_time_master ();
+
enum ShuttleBehaviour {
Sprung,
Wheel
@@ -408,14 +413,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI
Gtk::ToggleButton auto_play_button;
Gtk::ToggleButton auto_input_button;
Gtk::ToggleButton click_button;
- Gtk::ToggleButton follow_button;
Gtk::ToggleButton auditioning_alert_button;
Gtk::ToggleButton solo_alert_button;
Gtk::VBox alert_box;
- void follow_changed ();
-
void solo_blink (bool);
void audition_blink (bool);
@@ -671,6 +673,31 @@ class ARDOUR_UI : public Gtkmm2ext::UI
Glib::RefPtr<Gtk::ActionGroup> common_actions;
void editor_realized ();
+
+ void toggle_session_state (const char* group, const char* action, void (ARDOUR::Session::*set)(bool));
+ void toggle_send_midi_feedback ();
+ void toggle_use_mmc ();
+ void toggle_send_mmc ();
+ void toggle_use_midi_control();
+ void toggle_send_mtc ();
+
+ void toggle_AutoConnectNewTrackInputsToHardware();
+ void toggle_AutoConnectNewTrackOutputsToHardware();
+ void toggle_AutoConnectNewTrackOutputsToMaster();
+ void toggle_ManuallyConnectNewTrackOutputs();
+ void toggle_UseHardwareMonitoring();
+ void toggle_UseSoftwareMonitoring();
+ void toggle_UseExternalMonitoring();
+ void toggle_StopPluginsWithTransport();
+ void toggle_RunPluginsWhileRecording();
+ void toggle_VerifyRemoveLastCapture();
+ void toggle_StopRecordingOnXrun();
+ void toggle_StopTransportAtEndOfSession();
+ void toggle_GainReduceFastTransport();
+ void toggle_LatchedSolo();
+ void toggle_SoloViaBus();
+ void toggle_AutomaticallyCreateCrossfades();
+ void toggle_UnmuteNewFullCrossfades();
};
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index 7fcbdc6a85..bad43840c7 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -53,6 +53,16 @@ using namespace Gtk;
using namespace Glib;
using namespace sigc;
+
+static const gchar *psync_strings[] = {
+ N_("Internal"),
+ N_("Slave to MTC"),
+ N_("Sync with JACK"),
+ 0
+};
+
+static vector<string> positional_sync_strings;
+
int
ARDOUR_UI::setup_windows ()
{
@@ -293,6 +303,8 @@ ARDOUR_UI::setup_transport ()
act->connect_proxy (auto_loop_button);
act = ActionManager::get_action (X_("Transport"), X_("PlaySelection"));
act->connect_proxy (play_selection_button);
+ act = ActionManager::get_action (X_("Transport"), X_("ToggleTimeMaster"));
+ act->connect_proxy (time_master_button);
ARDOUR_UI::instance()->tooltips().set_tip (roll_button, _("Play from playhead"));
ARDOUR_UI::instance()->tooltips().set_tip (stop_button, _("Stop playback"));
@@ -306,7 +318,7 @@ ARDOUR_UI::setup_transport ()
ARDOUR_UI::instance()->tooltips().set_tip (punch_in_button, _("Start recording at auto-punch start"));
ARDOUR_UI::instance()->tooltips().set_tip (punch_out_button, _("Stop recording at auto-punch end"));
ARDOUR_UI::instance()->tooltips().set_tip (click_button, _("Enable/Disable audio click"));
- ARDOUR_UI::instance()->tooltips().set_tip (follow_button, _("Enable/Disable follow playhead"));
+ ARDOUR_UI::instance()->tooltips().set_tip (time_master_button, _("Does Ardour control the time?"));
ARDOUR_UI::instance()->tooltips().set_tip (shuttle_box, _("Shuttle speed control"));
ARDOUR_UI::instance()->tooltips().set_tip (shuttle_units_button, _("Select semitones or %%-age for speed display"));
ARDOUR_UI::instance()->tooltips().set_tip (speed_display_box, _("Current transport speed"));
@@ -329,8 +341,8 @@ ARDOUR_UI::setup_transport ()
punch_in_button.set_name ("TransportButton");
punch_out_button.set_name ("TransportButton");
click_button.set_name ("TransportButton");
- follow_button.set_name ("TransportButton");
-
+ time_master_button.set_name ("TransportButton");
+
goto_start_button.unset_flags (CAN_FOCUS);
goto_end_button.unset_flags (CAN_FOCUS);
roll_button.unset_flags (CAN_FOCUS);
@@ -344,7 +356,7 @@ ARDOUR_UI::setup_transport ()
punch_out_button.unset_flags (CAN_FOCUS);
punch_in_button.unset_flags (CAN_FOCUS);
click_button.unset_flags (CAN_FOCUS);
- follow_button.unset_flags (CAN_FOCUS);
+ time_master_button.unset_flags (CAN_FOCUS);
goto_start_button.set_events (goto_start_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
goto_end_button.set_events (goto_end_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
@@ -357,9 +369,9 @@ ARDOUR_UI::setup_transport ()
auto_play_button.set_events (auto_play_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
auto_input_button.set_events (auto_input_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
click_button.set_events (click_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
- follow_button.set_events (click_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
punch_in_button.set_events (punch_in_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
punch_out_button.set_events (punch_out_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
+ time_master_button.set_events (punch_out_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
shuttle_box.signal_button_press_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_button_press));
shuttle_box.signal_button_release_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_button_release));
@@ -386,7 +398,6 @@ ARDOUR_UI::setup_transport ()
auto_play_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_auto_play));
auto_input_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_auto_input));
click_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_click));
- follow_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_follow));
punch_in_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_punch_in));
punch_out_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_punch_out));
@@ -448,6 +459,12 @@ ARDOUR_UI::setup_transport ()
sdframe->set_shadow_type (SHADOW_IN);
sdframe->add (speed_display_box);
+ positional_sync_strings = internationalize (psync_strings);
+
+ set_popdown_strings (sync_option_combo, positional_sync_strings);
+ sync_option_combo.set_active_text (positional_sync_strings.front());
+ sync_option_combo.signal_changed().connect (mem_fun (*this, &ARDOUR_UI::sync_option_changed));
+
shbox->pack_start (*sdframe, false, false);
shbox->pack_start (shuttle_units_button, true, true);
shbox->pack_start (shuttle_style_button, false, false);
@@ -466,22 +483,20 @@ ARDOUR_UI::setup_transport ()
transport_tearoff_hbox.pack_start (primary_clock, false, false, 5);
transport_tearoff_hbox.pack_start (secondary_clock, false, false, 5);
+ transport_tearoff_hbox.pack_start (sync_option_combo, false, false);
+ transport_tearoff_hbox.pack_start (time_master_button, false, false);
+ transport_tearoff_hbox.pack_start (punch_in_button, false, false);
transport_tearoff_hbox.pack_start (punch_in_button, false, false);
transport_tearoff_hbox.pack_start (punch_out_button, false, false);
transport_tearoff_hbox.pack_start (auto_input_button, false, false);
transport_tearoff_hbox.pack_start (auto_return_button, false, false);
transport_tearoff_hbox.pack_start (auto_play_button, false, false);
transport_tearoff_hbox.pack_start (click_button, false, false);
- transport_tearoff_hbox.pack_start (follow_button, false, false);
/* desensitize */
set_transport_sensitivity (false);
- /* catch up with editor state */
-
- follow_changed ();
-
// transport_tearoff_hbox.pack_start (preroll_button, false, false);
// transport_tearoff_hbox.pack_start (preroll_clock, false, false);
@@ -859,3 +874,23 @@ ARDOUR_UI::editor_realized ()
const guint32 FUDGE = 20; // Combo's are stupid - they steal space from the entry for the button
set_size_request_to_display_given_text (shuttle_style_button, _("sprung"), 2+FUDGE, 10);
}
+
+void
+ARDOUR_UI::sync_option_changed ()
+{
+ string which;
+
+ if (session == 0) {
+ return;
+ }
+
+ which = sync_option_combo.get_active_text();
+
+ if (which == positional_sync_strings[Session::None]) {
+ session->request_slave_source (Session::None);
+ } else if (which == positional_sync_strings[Session::MTC]) {
+ session->request_slave_source (Session::MTC);
+ } else if (which == positional_sync_strings[Session::JACK]) {
+ session->request_slave_source (Session::JACK);
+ }
+}
diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc
index 8240073da9..eb700624c3 100644
--- a/gtk2_ardour/ardour_ui_dependents.cc
+++ b/gtk2_ardour/ardour_ui_dependents.cc
@@ -62,7 +62,6 @@ void
ARDOUR_UI::setup_keybindings ()
{
install_actions ();
- editor->register_actions ();
RedirectBox::register_actions ();
try {
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 1197f522c8..fd9f49a251 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -52,7 +52,6 @@ ARDOUR_UI::create_editor ()
return -1;
}
- editor->DisplayControlChanged.connect (mem_fun(*this, &ARDOUR_UI::editor_display_control_changed));
editor->Realized.connect (mem_fun (*this, &ARDOUR_UI::editor_realized));
return 0;
@@ -64,9 +63,15 @@ ARDOUR_UI::install_actions ()
Glib::RefPtr<ActionGroup> main_actions = ActionGroup::create (X_("Main"));
Glib::RefPtr<Action> act;
+ /* menus + submenus that need action items */
+
ActionManager::register_action (main_actions, X_("Session"), _("Session"));
ActionManager::register_action (main_actions, X_("Export"), _("Export"));
ActionManager::register_action (main_actions, X_("Cleanup"), _("Cleanup"));
+ ActionManager::register_action (main_actions, X_("Sync"), _("Sync"));
+ ActionManager::register_action (main_actions, X_("Options"), _("Options"));
+
+ /* the real actions */
act = ActionManager::register_action (main_actions, X_("New"), _("New"), bind (mem_fun(*this, &ARDOUR_UI::new_session), false, string ()));
@@ -159,7 +164,7 @@ ARDOUR_UI::install_actions ()
ActionManager::register_action (common_actions, X_("GotoEditor"), _("Editor"), mem_fun(*this, &ARDOUR_UI::goto_editor_window));
ActionManager::register_action (common_actions, X_("GotoMixer"), _("Mixer"), mem_fun(*this, &ARDOUR_UI::goto_mixer_window));
ActionManager::register_toggle_action (common_actions, X_("ToggleSoundFileBrowser"), _("Sound File Browser"), mem_fun(*this, &ARDOUR_UI::toggle_sound_file_browser));
- ActionManager::ActionManager::register_toggle_action (common_actions, X_("ToggleOptionsEditor"), _("Options Editor"), mem_fun(*this, &ARDOUR_UI::toggle_options_window));
+ ActionManager::register_toggle_action (common_actions, X_("ToggleOptionsEditor"), _("Options Editor"), mem_fun(*this, &ARDOUR_UI::toggle_options_window));
ActionManager::register_toggle_action (common_actions, X_("ToggleAudioLibrary"), _("Audio Library"), mem_fun(*this, &ARDOUR_UI::toggle_sound_file_browser));
act = ActionManager::register_toggle_action (common_actions, X_("ToggleInspector"), _("Track/Bus Inspector"), mem_fun(*this, &ARDOUR_UI::toggle_route_params_window));
ActionManager::session_sensitive_actions.push_back (act);
@@ -245,6 +250,14 @@ ARDOUR_UI::install_actions ()
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
+ /* XXX the newline in the displayed name of this action is really wrong, but its because we want the button
+ that proxies for this action to be more compact. It would be nice to find a way to override the action
+ name appearance on the button.
+ */
+
+ act = ActionManager::register_action (transport_actions, X_("ToggleTimeMaster"), _("time\nmaster"), mem_fun(*this, &ARDOUR_UI::toggle_time_master));
+ ActionManager::session_sensitive_actions.push_back (act);
+
act = ActionManager::register_action (common_actions, X_("SendAllMidiFeedback"), _("send all midi feedback"), mem_fun(*this, &ARDOUR_UI::send_all_midi_feedback));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack1"), _("toggle record enable track1"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 0U));
@@ -316,8 +329,79 @@ ARDOUR_UI::install_actions ()
shuttle_actions->add (Action::create (X_("SetShuttleUnitsPercentage"), _("Percentage")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Percentage));
shuttle_actions->add (Action::create (X_("SetShuttleUnitsSemitones"), _("Semitones")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Semitones));
+
+ Glib::RefPtr<ActionGroup> option_actions = ActionGroup::create ("options");
+
+ act = ActionManager::register_toggle_action (option_actions, X_("SendMTC"), _("Send MTC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_toggle_action (option_actions, X_("SendMMC"), _("Send MMC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_toggle_action (option_actions, X_("UseMMC"), _("Send MMC"), mem_fun (*this, &ARDOUR_UI::toggle_use_mmc));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_toggle_action (option_actions, X_("SendMIDIfeedback"), _("Send MIDI feedback"), mem_fun (*this, &ARDOUR_UI::toggle_send_midi_feedback));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_toggle_action (option_actions, X_("UseMIDIcontrol"), _("Use MIDI control"), mem_fun (*this, &ARDOUR_UI::toggle_use_midi_control));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ act = ActionManager::register_toggle_action (option_actions, X_("AutoConnectNewTrackInputsToHardware"), _("Connect newtrack inputs to hardware"), mem_fun (*this, &ARDOUR_UI::toggle_AutoConnectNewTrackInputsToHardware));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ RadioAction::Group connect_outputs_group;
+
+ act = ActionManager::register_radio_action (option_actions, connect_outputs_group, X_("AutoConnectNewTrackOutputsToHardware"), _("Connect new track outputs to hardware"), mem_fun (*this, &ARDOUR_UI::toggle_AutoConnectNewTrackOutputsToHardware));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_radio_action (option_actions, connect_outputs_group, X_("AutoConnectNewTrackOutputsToMaster"), _("Connect new track outputs to master"), mem_fun (*this, &ARDOUR_UI::toggle_AutoConnectNewTrackOutputsToMaster));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_radio_action (option_actions, connect_outputs_group, X_("ManuallyConnectNewTrackOutputs"), _("Manually connect new track outputs"), mem_fun (*this, &ARDOUR_UI::toggle_ManuallyConnectNewTrackOutputs));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ RadioAction::Group monitoring_group;
+
+ act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseHardwareMonitoring"), _("Hardware monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseHardwareMonitoring));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseSoftwareMonitoring"), _("Software monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseSoftwareMonitoring));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseExternalMonitoring"), _("External monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseExternalMonitoring));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ act = ActionManager::register_toggle_action (option_actions, X_("StopPluginsWithTransport"), _("Stop plugins with transport"), mem_fun (*this, &ARDOUR_UI::toggle_StopPluginsWithTransport));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_toggle_action (option_actions, X_("RunPluginsWhileRecording"), _("Run plugins while recording"), mem_fun (*this, &ARDOUR_UI::toggle_RunPluginsWhileRecording));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ act = ActionManager::register_toggle_action (option_actions, X_("VerifyRemoveLastCapture"), _("Verify remove last capture"), mem_fun (*this, &ARDOUR_UI::toggle_VerifyRemoveLastCapture));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_toggle_action (option_actions, X_("StopRecordingOnXrun"), _("Stop recording on xrun"), mem_fun (*this, &ARDOUR_UI::toggle_StopRecordingOnXrun));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_toggle_action (option_actions, X_("StopTransportAtEndOfSession"), _("Stop transport at session end"), mem_fun (*this, &ARDOUR_UI::toggle_StopTransportAtEndOfSession));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_toggle_action (option_actions, X_("GainReduceFastTransport"), _("-12dB gain reduce ffwd/rewind"), mem_fun (*this, &ARDOUR_UI::toggle_GainReduceFastTransport));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ act = ActionManager::register_toggle_action (option_actions, X_("LatchedSolo"), _("Latched solo"), mem_fun (*this, &ARDOUR_UI::toggle_LatchedSolo));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ RadioAction::Group solo_group;
+
+ act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloInPlace"), _("Solo in-place"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
+ act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloViaBus"), _("Solo via bus"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ act = ActionManager::register_action (option_actions, X_("AutomaticallyCreateCrossfades"), _("Automatically create crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_AutomaticallyCreateCrossfades));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (option_actions, X_("UnmuteNewFullCrossfades"), _("Unmute new full crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_UnmuteNewFullCrossfades));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+#ifdef NEW_ACTIONS
+ act = ActionManager::register_action (option_actions, X_("SetRegionLayerMode", _("SetRegionLayerMode"), mem_fun (*this, &ARDOUR_UI::toggle_SetRegionLayerMode)));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (option_actions, X_("SetCrossfadeModel", _("SetCrossfadeModel"), mem_fun (*this, &ARDOUR_UI::toggle_SetCrossfadeModel)));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+#endif
ActionManager::add_action_group (shuttle_actions);
+ ActionManager::add_action_group (option_actions);
ActionManager::add_action_group (jack_actions);
ActionManager::add_action_group (transport_actions);
ActionManager::add_action_group (main_actions);
@@ -366,15 +450,3 @@ ARDOUR_UI::build_menu_bar ()
menu_bar_base.add (menu_hbox);
}
-void
-ARDOUR_UI::editor_display_control_changed (Editing::DisplayControl c)
-{
- switch (c) {
- case Editing::FollowPlayhead:
- follow_button.set_active (editor->follow_playhead ());
- break;
- default:
- break;
- }
-}
-
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
new file mode 100644
index 0000000000..7bcd9e2dcb
--- /dev/null
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -0,0 +1,152 @@
+/*
+ Copyright (C) 2005 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ $Id$
+*/
+
+#include <ardour/configuration.h>
+#include <ardour/session.h>
+#include <ardour/audioengine.h>
+
+#include "ardour_ui.h"
+#include "actions.h"
+
+using namespace Gtk;
+using namespace ARDOUR;
+
+void
+ARDOUR_UI::toggle_time_master ()
+{
+ bool yn = time_master_button.get_active();
+
+ Config->set_jack_time_master (yn);
+
+ if (session) {
+ session->engine().reset_timebase ();
+ }
+}
+
+void
+ARDOUR_UI::toggle_session_state (const char* group, const char* action, void (Session::*set)(bool))
+{
+ if (session) {
+ Glib::RefPtr<Action> act = ActionManager::get_action (group, action);
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+ (session->*set) (tact->get_active());
+ }
+ }
+}
+
+void
+ARDOUR_UI::toggle_send_mtc ()
+{
+ toggle_session_state ("options", "SendMTC", &Session::set_send_mtc);
+}
+
+void
+ARDOUR_UI::toggle_send_mmc ()
+{
+ toggle_session_state ("options", "SendMMC", &Session::set_send_mmc);
+}
+
+void
+ARDOUR_UI::toggle_use_mmc ()
+{
+ toggle_session_state ("options", "UseMMC", &Session::set_mmc_control);
+}
+
+void
+ARDOUR_UI::toggle_use_midi_control ()
+{
+ toggle_session_state ("options", "UseMIDIcontrol", &Session::set_midi_control);
+}
+
+void
+ARDOUR_UI::toggle_send_midi_feedback ()
+{
+ toggle_session_state ("options", "SendMIDIfeedback", &Session::set_midi_feedback);
+}
+
+void
+ARDOUR_UI::toggle_AutoConnectNewTrackInputsToHardware()
+{
+}
+void
+ARDOUR_UI::toggle_AutoConnectNewTrackOutputsToHardware()
+{
+}
+void
+ARDOUR_UI::toggle_AutoConnectNewTrackOutputsToMaster()
+{
+}
+void
+ARDOUR_UI::toggle_ManuallyConnectNewTrackOutputs()
+{
+}
+void
+ARDOUR_UI::toggle_UseHardwareMonitoring()
+{
+}
+void
+ARDOUR_UI::toggle_UseSoftwareMonitoring()
+{
+}
+void
+ARDOUR_UI::toggle_UseExternalMonitoring()
+{
+}
+void
+ARDOUR_UI::toggle_StopPluginsWithTransport()
+{
+}
+void
+ARDOUR_UI::toggle_RunPluginsWhileRecording()
+{
+}
+void
+ARDOUR_UI::toggle_VerifyRemoveLastCapture()
+{
+}
+void
+ARDOUR_UI::toggle_StopRecordingOnXrun()
+{
+}
+void
+ARDOUR_UI::toggle_StopTransportAtEndOfSession()
+{
+}
+void
+ARDOUR_UI::toggle_GainReduceFastTransport()
+{
+}
+void
+ARDOUR_UI::toggle_LatchedSolo()
+{
+}
+void
+ARDOUR_UI::toggle_SoloViaBus()
+{
+}
+void
+ARDOUR_UI::toggle_AutomaticallyCreateCrossfades()
+{
+}
+void
+ARDOUR_UI::toggle_UnmuteNewFullCrossfades()
+{
+}
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 5d5f3e44c0..d5b917f75c 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -525,6 +525,7 @@ Editor::Editor (AudioEngine& eng)
route_display_model = ListStore::create(route_display_columns);
route_list_display.set_model (route_display_model);
route_list_display.append_column (_("Tracks"), route_display_columns.text);
+ route_list_display.set_headers_visible (false);
route_list_display.set_name ("TrackListDisplay");
route_list_display.get_selection()->set_mode (Gtk::SELECTION_MULTIPLE);
route_list_display.set_reorderable (true);
@@ -556,6 +557,7 @@ Editor::Editor (AudioEngine& eng)
edit_group_display.append_column (_("groupname"), group_columns.text);
edit_group_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0));
edit_group_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(1));
+ edit_group_display.set_headers_visible (false);
/* use checkbox for the active column */
@@ -593,11 +595,12 @@ Editor::Editor (AudioEngine& eng)
region_list_display.set_name ("RegionListDisplay");
region_list_model = TreeStore::create (region_list_columns);
- region_list_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter));
-
- region_list_display.set_model (region_list_model);
+ region_list_sort_model = TreeModelSort::create (region_list_model);
+ region_list_sort_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter));
+
+ region_list_display.set_model (region_list_sort_model);
region_list_display.append_column (_("Regions"), region_list_columns.name);
- region_list_display.set_reorderable (true);
+ region_list_display.set_headers_visible (false);
region_list_display.get_selection()->set_mode (SELECTION_SINGLE);
region_list_display.add_object_drag (region_list_columns.region.index(), "regions");
@@ -618,12 +621,10 @@ Editor::Editor (AudioEngine& eng)
region_list_display.signal_key_press_event().connect (mem_fun(*this, &Editor::region_list_display_key_press));
region_list_display.signal_key_release_event().connect (mem_fun(*this, &Editor::region_list_display_key_release));
- region_list_display.signal_button_press_event().connect (mem_fun(*this, &Editor::region_list_display_button_press));
+ region_list_display.signal_button_press_event().connect (mem_fun(*this, &Editor::region_list_display_button_press), false);
region_list_display.signal_button_release_event().connect (mem_fun(*this, &Editor::region_list_display_button_release));
region_list_display.get_selection()->signal_changed().connect (mem_fun(*this, &Editor::region_list_selection_changed));
- // GTK2FIX
- //region_list_display.unselect_row.connect (mem_fun(*this, &Editor::region_list_display_unselected));
- //region_list_display.signal_columns_changed().connect (mem_fun(*this, &Editor::region_list_column_click));
+ // region_list_display.signal_popup_menu().connect (bind (mem_fun (*this, &Editor::show_region_list_display_context_menu), 1, 0));
named_selection_scroller.add (named_selection_display);
named_selection_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
@@ -631,6 +632,7 @@ Editor::Editor (AudioEngine& eng)
named_selection_model = TreeStore::create (named_selection_columns);
named_selection_display.set_model (named_selection_model);
named_selection_display.append_column (_("Chunks"), named_selection_columns.text);
+ named_selection_display.set_headers_visible (false);
named_selection_display.set_size_request (100, -1);
named_selection_display.set_name ("RegionListDisplay");
@@ -670,6 +672,10 @@ Editor::Editor (AudioEngine& eng)
add_accel_group (ActionManager::ui_manager->get_accel_group());
vpacker.pack_end (global_hpacker, true, true);
+
+ /* register actions now so that set_state() can find them and set toggles/checks etc */
+
+ register_actions ();
XMLNode* node = ARDOUR_UI::instance()->editor_settings();
set_state (*node);
@@ -2108,8 +2114,13 @@ Editor::set_state (const XMLNode& node)
if ((prop = node.property ("follow-playhead"))) {
bool yn = (prop->value() == "yes");
- _follow_playhead = !yn;
- set_follow_playhead (yn);
+ RefPtr<Action> act = ActionManager::get_action (X_("Editor"), X_("ToggleFollowPlayhead"));
+ if (act) {
+ RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic(act);
+ /* do it twice to force the change */
+ tact->set_active (!yn);
+ tact->set_active (yn);
+ }
}
if ((prop = node.property ("xfades-visible"))) {
@@ -2789,8 +2800,6 @@ Editor::convert_drop_to_paths (vector<string>& paths,
where each pathname is delimited by \r\n
*/
- cerr << "by hand parsing of URI list\n";
-
const char* p = data.get_text().c_str();
const char* q;
@@ -2822,15 +2831,12 @@ Editor::convert_drop_to_paths (vector<string>& paths,
p++;
}
- cerr << "end result = " << uris.size() << endl;
-
if (uris.empty()) {
return -1;
}
}
for (vector<ustring>::iterator i = uris.begin(); i != uris.end(); ++i) {
- cerr << "looking at " << (*i) << endl;
if ((*i).substr (0,7) == "file://") {
string p = *i;
url_decode (p);
@@ -3693,6 +3699,16 @@ Editor::set_show_measures (bool yn)
}
void
+Editor::toggle_follow_playhead ()
+{
+ RefPtr<Action> act = ActionManager::get_action (X_("Editor"), X_("ToggleFollowPlayhead"));
+ if (act) {
+ RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic(act);
+ set_follow_playhead (tact->get_active());
+ }
+}
+
+void
Editor::set_follow_playhead (bool yn)
{
if (_follow_playhead != yn) {
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 480a7f1cb7..7443479ac1 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -707,6 +707,7 @@ class Editor : public PublicEditor
void region_list_clear ();
void region_list_selection_mapover (sigc::slot<void,ARDOUR::Region&>);
void build_region_list_menu ();
+ void show_region_list_display_context_menu (int button, int time);
Gtk::CheckMenuItem* toggle_auto_regions_item;
Gtk::CheckMenuItem* toggle_full_region_list_item;
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index 5fe3789398..6bfa452554 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -21,7 +21,7 @@ Editor::register_actions ()
RefPtr<ActionGroup> editor_actions = ActionGroup::create (X_("Editor"));
/* non-operative menu items for menu bar */
-
+-
ActionManager::register_action (editor_actions, X_("Edit"), _("Edit"));
ActionManager::register_action (editor_actions, X_("View"), _("View"));
ActionManager::register_action (editor_actions, X_("ZoomFocus"), _("ZoomFocus"));
@@ -192,7 +192,7 @@ Editor::register_actions ()
act = ActionManager::register_action (editor_actions, "extend-range-to-start-of-region", _("extend range to start of region"), bind (mem_fun(*this, &Editor::extend_selection_to_start_of_region), false));
ActionManager::session_sensitive_actions.push_back (act);
- act = ActionManager::register_action (editor_actions, "toggle-follow-playhead", _("toggle follow playhead"), (mem_fun(*this, &Editor::toggle_follow_playhead)));
+ act = ActionManager::register_toggle_action (editor_actions, "ToggleFollowPlayhead", _("follow playhead"), (mem_fun(*this, &Editor::toggle_follow_playhead)));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "remove-last-capture", _("remove last capture"), (mem_fun(*this, &Editor::remove_last_capture)));
ActionManager::session_sensitive_actions.push_back (act);
@@ -254,6 +254,9 @@ Editor::register_actions ()
RadioAction::Group sort_type_group;
RadioAction::Group sort_order_group;
+ /* the region list popup menu */
+ ActionManager::register_action (rl_actions, X_("RegionListSort"), _("Sort"));
+
act = ActionManager::register_action (rl_actions, X_("rlAudition"), _("Audition"), mem_fun(*this, &Editor::audition_region_from_region_list));
ActionManager::region_list_selection_sensitive_actions.push_back (act);
act = ActionManager::register_action (rl_actions, X_("rlHide"), _("Hide"), mem_fun(*this, &Editor::hide_region_from_region_list));
@@ -293,6 +296,14 @@ Editor::register_actions ()
act = ActionManager::register_action (rl_actions, X_("rlImportAudio"), _("Embed audio (link)"), bind (mem_fun(*this, &Editor::import_audio), false));
ActionManager::session_sensitive_actions.push_back (act);
+#ifdef NEW_ACTIONS
+
+ ToggleWaveformVisibility;
+ ToggleWaveformsWhileRecording;
+ ToggleMeasureVisibility;
+
+#endif
+
ActionManager::add_action_group (rl_actions);
ActionManager::add_action_group (zoom_actions);
ActionManager::add_action_group (mouse_mode_actions);
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index a971a17750..68baba3061 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -3384,12 +3384,6 @@ Editor::toggle_xfades_active ()
}
void
-Editor::toggle_follow_playhead ()
-{
- set_follow_playhead (!_follow_playhead);
-}
-
-void
Editor::set_xfade_visibility (bool yn)
{
diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc
index f17645b6f2..d610525e07 100644
--- a/gtk2_ardour/editor_region_list.cc
+++ b/gtk2_ardour/editor_region_list.cc
@@ -298,21 +298,27 @@ Editor::add_audio_region_to_region_display (AudioRegion *region)
void
Editor::region_list_selection_changed()
{
- bool sensitive;
+ bool selected;
if (region_list_display.get_selection()->count_selected_rows() > 0) {
- sensitive = true;
+ selected = true;
} else {
- sensitive = false;
+ selected = false;
}
- for (vector<Glib::RefPtr<Gtk::Action> >::iterator i = ActionManager::region_list_selection_sensitive_actions.begin(); i != ActionManager::region_list_selection_sensitive_actions.end(); ++i) {
- (*i)->set_sensitive (sensitive);
- }
-
- // GTK2FIX
- // set_selected_regionview_from_region_list (*region, false);
+ if (selected) {
+ TreeView::Selection::ListHandle_Path rows = region_list_display.get_selection()->get_selected_rows ();
+ TreeView::Selection::ListHandle_Path::iterator i = rows.begin();
+ TreeIter iter;
+ /* just set the first selected region (in fact, the selection model might be SINGLE, which
+ means there can only be one.
+ */
+
+ if ((iter = region_list_model->get_iter (*i))) {
+ set_selected_regionview_from_region_list (*((*iter)[region_list_columns.region]), false);
+ }
+ }
}
void
@@ -384,6 +390,22 @@ Editor::toggle_full_region_list ()
}
}
+void
+Editor::show_region_list_display_context_menu (int button, int time)
+{
+ if (region_list_menu == 0) {
+ build_region_list_menu ();
+ }
+
+ if (region_list_display.get_selection()->count_selected_rows() > 0) {
+ ActionManager::set_sensitive (ActionManager::region_list_selection_sensitive_actions, true);
+ } else {
+ ActionManager::set_sensitive (ActionManager::region_list_selection_sensitive_actions, false);
+ }
+
+ region_list_menu->popup (button, time);
+}
+
bool
Editor::region_list_display_key_press (GdkEventKey* ev)
{
@@ -415,6 +437,8 @@ Editor::region_list_display_button_press (GdkEventButton *ev)
int cellx;
int celly;
+ cerr << "RL button press\n";
+
if (region_list_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) {
if ((iter = region_list_model->get_iter (path))) {
region = (*iter)[region_list_columns.region];
@@ -431,10 +455,7 @@ Editor::region_list_display_button_press (GdkEventButton *ev)
}
if (Keyboard::is_context_menu_event (ev)) {
- if (region_list_menu == 0) {
- build_region_list_menu ();
- }
- region_list_menu->popup (ev->button, ev->time);
+ show_region_list_display_context_menu (ev->button, ev->time);
return true;
}
@@ -472,6 +493,8 @@ Editor::region_list_display_button_release (GdkEventButton *ev)
int celly;
Region* region;
+ cerr << "RL button release\n";
+
if (region_list_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) {
if ((iter = region_list_model->get_iter (path))) {
region = (*iter)[region_list_columns.region];
@@ -604,60 +627,14 @@ Editor::reset_region_list_sort_type (RegionListSortType type)
{
if (type != region_list_sort_type) {
region_list_sort_type = type;
-
- switch (type) {
- case ByName:
- region_list_display.get_column (0)->set_title (_("Regions/name"));
- break;
-
- case ByLength:
- region_list_display.get_column (0)->set_title (_("Regions/length"));
- break;
-
- case ByPosition:
- region_list_display.get_column (0)->set_title (_("Regions/position"));
- break;
-
- case ByTimestamp:
- region_list_display.get_column (0)->set_title (_("Regions/creation"));
- break;
-
- case ByStartInFile:
- region_list_display.get_column (0)->set_title (_("Regions/start"));
- break;
-
- case ByEndInFile:
- region_list_display.get_column (0)->set_title (_("Regions/end"));
- break;
-
- case BySourceFileName:
- region_list_display.get_column (0)->set_title (_("Regions/file name"));
- break;
-
- case BySourceFileLength:
- region_list_display.get_column (0)->set_title (_("Regions/file size"));
- break;
-
- case BySourceFileCreationDate:
- region_list_display.get_column (0)->set_title (_("Regions/file date"));
- break;
-
- case BySourceFileFS:
- region_list_display.get_column (0)->set_title (_("Regions/file system"));
- break;
- }
-
- // region_list_sort_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter));
+ region_list_sort_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter));
}
}
void
Editor::reset_region_list_sort_direction (bool up)
{
- // GTK2FIX
- //region_list_display.set_sort_type (up ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING);
- /* reset to force resort */
- // region_list_sort_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter));
+ // region_list_display.set_sort_type (up ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING);
}
void