summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2008-12-25 09:28:57 +0000
committerHans Baier <hansfbaier@googlemail.com>2008-12-25 09:28:57 +0000
commitc3636a8c61401c2e487313566348e0f6d1fab990 (patch)
tree5644ecea7aff1f36061270cf11b407c0e99c23c2
parentacf19ca513dcb76448288d139f01f1815a8080b3 (diff)
* Made MIDI channel coloring work in the track channel selector
* added loudspeaker button to MIDI toolbar git-svn-id: svn://localhost/ardour2/branches/3.0@4347 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/editor.cc29
-rw-r--r--gtk2_ardour/editor.h7
-rw-r--r--gtk2_ardour/icons/midi_sound_notes.pngbin0 -> 314 bytes
-rw-r--r--gtk2_ardour/midi_channel_selector.cc27
-rw-r--r--gtk2_ardour/midi_channel_selector.h3
-rw-r--r--gtk2_ardour/midi_time_axis.cc7
6 files changed, 63 insertions, 10 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 634f1fd2be..9740c8857c 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -3241,15 +3241,18 @@ Editor::setup_toolbar ()
}
void
-Editor::midi_panic_toggle ()
+Editor::midi_panic_button_pressed ()
{
if (session) {
session->midi_panic();
- midi_panic_button.set_active (false);
- midi_panic_button.set_state (STATE_NORMAL);
}
}
+void Editor::midi_sound_notes_toggled ()
+{
+ cerr << "toggle sound notes" << endl;
+}
+
void
Editor::setup_midi_toolbar ()
{
@@ -3281,18 +3284,18 @@ Editor::setup_midi_toolbar ()
midi_tool_button_box.pack_start(midi_tool_pencil_button, true, true);
midi_tool_button_box.pack_start(midi_tool_select_button, true, true);
midi_tool_button_box.pack_start(midi_tool_resize_button, true, true);
- midi_tool_button_box.pack_start(midi_tool_erase_button, true, true);
+ midi_tool_button_box.pack_start(midi_tool_erase_button , true, true);
midi_tool_button_box.set_homogeneous(true);
midi_tool_pencil_button.set_name ("MouseModeButton");
midi_tool_select_button.set_name ("MouseModeButton");
midi_tool_resize_button.set_name ("MouseModeButton");
- midi_tool_erase_button.set_name ("MouseModeButton");
+ midi_tool_erase_button .set_name ("MouseModeButton");
ARDOUR_UI::instance()->tooltips().set_tip (midi_tool_pencil_button, _("Add/Move/Stretch Notes"));
ARDOUR_UI::instance()->tooltips().set_tip (midi_tool_select_button, _("Select/Move Notes"));
ARDOUR_UI::instance()->tooltips().set_tip (midi_tool_resize_button, _("Resize Notes"));
- ARDOUR_UI::instance()->tooltips().set_tip (midi_tool_erase_button, _("Erase Notes"));
+ ARDOUR_UI::instance()->tooltips().set_tip (midi_tool_erase_button, _("Erase Notes"));
midi_tool_pencil_button.unset_flags (CAN_FOCUS);
midi_tool_select_button.unset_flags (CAN_FOCUS);
@@ -3308,12 +3311,22 @@ Editor::setup_midi_toolbar ()
midi_tool_erase_button.signal_toggled().connect (bind (mem_fun(*this,
&Editor::midi_edit_mode_toggled), Editing::MidiEditErase));
+
+ /* Midi sound notes */
+ midi_sound_notes.add (*(manage (new Image (::get_icon("midi_sound_notes")))));
+ midi_sound_notes.set_relief(Gtk::RELIEF_NONE);
+ ARDOUR_UI::instance()->tooltips().set_tip (midi_sound_notes, _("Sound Notes"));
+ midi_sound_notes.unset_flags (CAN_FOCUS);
+ midi_sound_notes.signal_toggled().connect (mem_fun(*this,
+ &Editor::midi_sound_notes_toggled));
+
/* Panic */
- VBox* panic_box = manage (new VBox);
+ HBox* panic_box = manage (new HBox);
midi_panic_button.set_name("MidiPanicButton");
midi_panic_button.signal_pressed().connect (
- mem_fun(this, &Editor::midi_panic_toggle));
+ mem_fun(this, &Editor::midi_panic_button_pressed));
+ panic_box->pack_start (midi_sound_notes , true, true);
panic_box->pack_start (midi_panic_button, true, true);
/* Pack everything in... */
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index e9f83ddf68..a79b165ba1 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -1749,9 +1749,13 @@ public:
Gtk::ToggleButton midi_tool_select_button;
Gtk::ToggleButton midi_tool_resize_button;
Gtk::ToggleButton midi_tool_erase_button;
- Gtk::ToggleButton midi_panic_button;
+ Gtk::Button midi_panic_button;
+ Gtk::ToggleButton midi_sound_notes;
GroupedButtons *midi_tool_button_set;
void midi_edit_mode_toggled (Editing::MidiEditMode m);
+ void midi_panic_button_pressed ();
+ void midi_sound_notes_toggled();
+
bool ignore_midi_edit_mode_toggle;
Gtkmm2ext::TearOff* midi_tools_tearoff;
@@ -1759,7 +1763,6 @@ public:
Gtk::EventBox midi_toolbar_base;
Gtk::Frame midi_toolbar_frame;
- void midi_panic_toggle ();
void setup_midi_toolbar ();
/* selection process */
diff --git a/gtk2_ardour/icons/midi_sound_notes.png b/gtk2_ardour/icons/midi_sound_notes.png
new file mode 100644
index 0000000000..65f52e1fb0
--- /dev/null
+++ b/gtk2_ardour/icons/midi_sound_notes.png
Binary files differ
diff --git a/gtk2_ardour/midi_channel_selector.cc b/gtk2_ardour/midi_channel_selector.cc
index 281c6f5e2d..4415a65f65 100644
--- a/gtk2_ardour/midi_channel_selector.cc
+++ b/gtk2_ardour/midi_channel_selector.cc
@@ -21,6 +21,7 @@
#include "midi_channel_selector.h"
#include "gtkmm/separator.h"
#include "i18n.h"
+#include "rgb_macros.h"
using namespace std;
using namespace Gtk;
@@ -63,6 +64,32 @@ MidiChannelSelector::~MidiChannelSelector()
{
}
+void
+MidiChannelSelector::set_channel_colors(const uint32_t new_channel_colors[16])
+{
+ for (int row = 0; row < 4; ++row) {
+ for (int column = 0; column < 4; ++column) {
+ char color_normal[8];
+ char color_active[8];
+ snprintf(color_normal, 8, "#%x", UINT_INTERPOLATE(new_channel_colors[row * 4 + column], 0x000000ff, 0.6));
+ snprintf(color_active, 8, "#%x", new_channel_colors[row * 4 + column]);
+ _buttons[row][column].modify_bg(STATE_NORMAL, Gdk::Color(color_normal));
+ _buttons[row][column].modify_bg(STATE_ACTIVE, Gdk::Color(color_active));
+ }
+ }
+}
+
+void
+MidiChannelSelector::set_default_channel_color()
+{
+ for (int row = 0; row < 4; ++row) {
+ for (int column = 0; column < 4; ++column) {
+ _buttons[row][column].unset_bg(STATE_NORMAL);
+ _buttons[row][column].unset_bg(STATE_ACTIVE);
+ }
+ }
+}
+
SingleMidiChannelSelector::SingleMidiChannelSelector(uint8_t active_channel)
: MidiChannelSelector()
{
diff --git a/gtk2_ardour/midi_channel_selector.h b/gtk2_ardour/midi_channel_selector.h
index 1f15f3eef5..e026c12325 100644
--- a/gtk2_ardour/midi_channel_selector.h
+++ b/gtk2_ardour/midi_channel_selector.h
@@ -38,6 +38,9 @@ public:
sigc::signal<void, ARDOUR::ChannelMode, uint16_t> mode_changed;
+ void set_channel_colors(const uint32_t new_channel_colors[16]);
+ void set_default_channel_color();
+
protected:
virtual void button_toggled(Gtk::ToggleButton* button, uint8_t button_nr) = 0;
Gtk::Label _button_labels[4][4];
diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc
index 1b66fa53af..709f740bf0 100644
--- a/gtk2_ardour/midi_time_axis.cc
+++ b/gtk2_ardour/midi_time_axis.cc
@@ -71,6 +71,7 @@
#include "midi_scroomer.h"
#include "piano_roll_header.h"
#include "ghostregion.h"
+#include "canvas-note-event.h"
#include <ardour/midi_track.h>
@@ -369,6 +370,12 @@ void
MidiTimeAxisView::set_color_mode(ColorMode mode)
{
if (_color_mode != mode) {
+ if (mode == ChannelColors) {
+ _channel_selector.set_channel_colors(CanvasNoteEvent::midi_channel_colors);
+ } else {
+ _channel_selector.set_default_channel_color();
+ }
+
_color_mode = mode;
_view->redisplay_diskstream();
}