fix, or at least improve, management of the editor toolbar when maximising editing...
[ardour.git] / gtk2_ardour / midi_tracer.cc
index 51c9ae174f2b646f97e8ee69a6495187c431151b..6da524460095900ecf3a290c83c6c6b034ebab29 100644 (file)
@@ -36,7 +36,7 @@ using namespace MIDI;
 using namespace Glib;
 
 MidiTracer::MidiTracer ()
-       : ArdourDialog (_("MIDI Tracer"))
+       : ArdourWindow (_("MIDI Tracer"))
        , parser (0)
        , line_count_adjustment (200, 1, 2000, 1, 10)
        , line_count_spinner (line_count_adjustment)
@@ -51,22 +51,24 @@ MidiTracer::MidiTracer ()
        , base_button (_("Decimal"))
        , collect_button (_("Enabled"))
 {
-       get_vbox()->set_spacing (4);
-
        Manager::instance()->PortsChanged.connect (_manager_connection, invalidator (*this), boost::bind (&MidiTracer::ports_changed, this), gui_context());
-       
+
+       VBox* vbox = manage (new VBox);
+       vbox->set_spacing (4);
+
        HBox* pbox = manage (new HBox);
+       pbox->set_spacing (6);
        pbox->pack_start (*manage (new Label (_("Port:"))), false, false);
 
        _port_combo.signal_changed().connect (sigc::mem_fun (*this, &MidiTracer::port_changed));
        pbox->pack_start (_port_combo);
        pbox->show_all ();
-       get_vbox()->pack_start (*pbox, false, false);
-       
+       vbox->pack_start (*pbox, false, false);
+
        scroller.add (text);
-       get_vbox()->set_border_width (12);
-       get_vbox()->pack_start (scroller, true, true);
-       
+       vbox->set_border_width (12);
+       vbox->pack_start (scroller, true, true);
+
        text.show ();
        text.set_name ("MidiTracerTextView");
        scroller.show ();
@@ -84,15 +86,16 @@ MidiTracer::MidiTracer ()
        line_count_label.show ();
        line_count_box.show ();
 
-       get_action_area()->add (line_count_box);
-
        HBox* bbox = manage (new HBox);
+       bbox->add (line_count_box);
        bbox->add (base_button);
        bbox->add (collect_button);
        bbox->add (autoscroll_button);
        bbox->show ();
-       
-       get_action_area()->add (*bbox);
+
+       vbox->pack_start (*bbox, false, false);
+
+       add (*vbox);
 
        base_button.signal_toggled().connect (sigc::mem_fun (*this, &MidiTracer::base_toggle));
        collect_button.signal_toggled().connect (sigc::mem_fun (*this, &MidiTracer::collect_toggle));
@@ -116,9 +119,9 @@ MidiTracer::ports_changed ()
 {
        string const c = _port_combo.get_active_text ();
        _port_combo.clear ();
-       
-       Manager::PortList const & p = Manager::instance()->get_midi_ports ();
-       for (Manager::PortList::const_iterator i = p.begin(); i != p.end(); ++i) {
+
+       boost::shared_ptr<const Manager::PortList> p = Manager::instance()->get_midi_ports ();
+       for (Manager::PortList::const_iterator i = p->begin(); i != p->end(); ++i) {
                _port_combo.append_text ((*i)->name());
        }
 
@@ -172,7 +175,7 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %-3d %-3d\n", "NoteOff", (msg[0]&0xf)+1, (int) msg[1], (int) msg[2]);
                }
                break;
-               
+
        case on:
                if (show_hex) {
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %02x %02x\n", "NoteOn", (msg[0]&0xf)+1, (int) msg[1], (int) msg[2]);
@@ -180,7 +183,7 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %-3d %-3d\n", "NoteOn", (msg[0]&0xf)+1, (int) msg[1], (int) msg[2]);
                }
                break;
-           
+
        case polypress:
                if (show_hex) {
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %02x\n", "PolyPressure", (msg[0]&0xf)+1, (int) msg[1]);
@@ -188,7 +191,7 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %-3d\n", "PolyPressure", (msg[0]&0xf)+1, (int) msg[1]);
                }
                break;
-           
+
        case MIDI::controller:
                if (show_hex) {
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %02x %02x\n", "Controller", (msg[0]&0xf)+1, (int) msg[1], (int) msg[2]);
@@ -196,7 +199,7 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %2d %-3d\n", "Controller", (msg[0]&0xf)+1, (int) msg[1], (int) msg[2]);
                }
                break;
-               
+
        case program:
                if (show_hex) {
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %02x\n", "Program Change", (msg[0]&0xf)+1, (int) msg[1]);
@@ -204,7 +207,7 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %-3d\n", "Program Change", (msg[0]&0xf)+1, (int) msg[1]);
                }
                break;
-               
+
        case chanpress:
                if (show_hex) {
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %02x/%-3d\n", "Channel Pressure", (msg[0]&0xf)+1, (int) msg[1], (int) msg[1]);
@@ -212,7 +215,7 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %02x/%-3d\n", "Channel Pressure", (msg[0]&0xf)+1, (int) msg[1], (int) msg[1]);
                }
                break;
-           
+
        case MIDI::pitchbend:
                if (show_hex) {
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %02x\n", "Pitch Bend", (msg[0]&0xf)+1, (int) msg[1]);
@@ -220,7 +223,7 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                        s += snprintf (&buf[s], bufsize, "%16s chn %2d %-3d\n", "Pitch Bend", (msg[0]&0xf)+1, (int) msg[1]);
                }
                break;
-           
+
        case MIDI::sysex:
                if (len == 1) {
                        switch (msg[0]) {
@@ -245,7 +248,7 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                        default:
                                s += snprintf (&buf[s], bufsize, "%16s %02x\n", "Sysex", (int) msg[1]);
                                break;
-                       } 
+                       }
 
                } else if (len > 5 && msg[0] == 0xf0 && msg[1] == 0x7f && msg[3] == 0x06) {
                        /* MMC */
@@ -274,7 +277,7 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                                        s += snprintf (&buf[s], bufsize, " MMC command %02x\n", cmd);
                                }
                        }
-                       
+
                } else if (len == 10 && msg[0] == 0xf0 && msg[1] == 0x7f && msg[9] == 0xf7)  {
 
                        /* MTC full frame */
@@ -283,12 +286,12 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                                );
 
                } else {
-                       
+
                        /* other sys-ex */
-                       
+
                        s += snprintf (&buf[s], bufsize, "%16s (%d) = [", "Sysex", (int) len);
                        bufsize -= s;
-                       
+
                        for (unsigned int i = 0; i < len && bufsize > 3; ++i) {
                                if (i > 0) {
                                        s += snprintf (&buf[s], bufsize, " %02x", msg[i]);
@@ -300,39 +303,39 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
                        s += snprintf (&buf[s], bufsize, "]\n");
                }
                break;
-           
+
        case MIDI::song:
                s += snprintf (&buf[s], bufsize, "%16s\n", "Song");
                break;
-           
+
        case MIDI::tune:
                s += snprintf (&buf[s], bufsize, "%16s\n", "Tune");
                break;
-           
+
        case MIDI::eox:
                s += snprintf (&buf[s], bufsize, "%16s\n", "EOX");
                break;
-           
+
        case MIDI::timing:
                s += snprintf (&buf[s], bufsize, "%16s\n", "Timing");
                break;
-           
+
        case MIDI::start:
                s += snprintf (&buf[s], bufsize, "%16s\n", "Start");
                break;
-           
+
        case MIDI::stop:
                s += snprintf (&buf[s], bufsize, "%16s\n", "Stop");
                break;
-           
+
        case MIDI::contineu:
                s += snprintf (&buf[s], bufsize, "%16s\n", "Continue");
                break;
-           
+
        case active:
                s += snprintf (&buf[s], bufsize, "%16s\n", "Active Sense");
                break;
-           
+
        default:
                s += snprintf (&buf[s], bufsize, "%16s\n", "Unknown");
                break;