Fix mismatched types (warnings).
[ardour.git] / gtk2_ardour / editor.cc
index 60a93a63d61bb5cfd03844d29aec829958e73521..fb62ad8d70409945ac8f2cfbebfc6359b79ce9ae 100644 (file)
@@ -238,6 +238,9 @@ Editor::Editor ()
          automation_mode_button (_("mode")),
          global_automation_button (_("automation")),
 
+         midi_panic_button (_("Panic")),
+         midi_tools_tearoff (0),
+
 #ifdef WITH_CMT
          image_socket_listener(0),
 #endif
@@ -402,7 +405,7 @@ Editor::Editor ()
        
        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));
-       controls_layout.signal_size_request().connect (mem_fun (*this, &Editor::controls_layout_size_request));
+       controls_layout_size_request_connection = controls_layout.signal_size_request().connect (mem_fun (*this, &Editor::controls_layout_size_request));
 
        edit_vscrollbar.set_adjustment (vertical_adjustment);
        edit_hscrollbar.set_adjustment (horizontal_adjustment);
@@ -652,10 +655,18 @@ Editor::Editor ()
        region_list_display.append_column (_("Start"), region_list_columns.start);
        region_list_display.append_column (_("End"), region_list_columns.end);
        region_list_display.append_column (_("Length"), region_list_columns.length);
+       region_list_display.append_column (_("Sync"), region_list_columns.sync);
+       region_list_display.append_column (_("Fade In"), region_list_columns.fadein);
+       region_list_display.append_column (_("Fade Out"), region_list_columns.fadeout);
+       region_list_display.append_column (_("L"), region_list_columns.locked);
+       region_list_display.append_column (_("G"), region_list_columns.glued);
+       region_list_display.append_column (_("M"), region_list_columns.muted);
+       region_list_display.append_column (_("O"), region_list_columns.opaque);
        region_list_display.append_column (_("Used"), region_list_columns.used);
-       region_list_display.append_column (_("Path to parent file"), region_list_columns.path);
+       region_list_display.append_column (_("Path"), region_list_columns.path);
        region_list_display.set_headers_visible (true);
-
+       region_list_display.set_grid_lines (TREE_VIEW_GRID_LINES_BOTH);
+       
        CellRendererText* region_name_cell = dynamic_cast<CellRendererText*>(region_list_display.get_column_cell_renderer (0));
        region_name_cell->property_editable() = true;
        region_name_cell->signal_edited().connect (mem_fun (*this, &Editor::region_name_edit));
@@ -691,7 +702,8 @@ Editor::Editor ()
        region_list_display.get_selection()->signal_changed().connect (mem_fun(*this, &Editor::region_list_selection_changed));
        // region_list_display.signal_popup_menu().connect (bind (mem_fun (*this, &Editor::show_region_list_display_context_menu), 1, 0));
        
-       ARDOUR_UI::instance()->secondary_clock.mode_changed.connect (mem_fun(*this, &Editor::redisplay_regions));
+       //ARDOUR_UI::instance()->secondary_clock.mode_changed.connect (mem_fun(*this, &Editor::redisplay_regions));
+       ARDOUR_UI::instance()->secondary_clock.mode_changed.connect (mem_fun(*this, &Editor::update_all_region_rows));
        ARDOUR::Region::RegionPropertyChanged.connect (mem_fun(*this, &Editor::update_region_row));
        
        named_selection_scroller.add (named_selection_display);
@@ -2368,7 +2380,7 @@ Editor::set_edit_point_preference (EditPoint ep, bool force)
                break;
        }
 
-       const char* action;
+       const char* action=NULL;
 
        switch (_edit_point) {
        case EditAtPlayhead:
@@ -2422,12 +2434,12 @@ Editor::set_state (const XMLNode& node)
 
        } else {
 
-               g.base_width = atoi(geometry->property("x_size")->value());
-               g.base_height = atoi(geometry->property("y_size")->value());
-               x = atoi(geometry->property("x_pos")->value());
-               y = atoi(geometry->property("y_pos")->value());
-               xoff = atoi(geometry->property("x_off")->value());
-               yoff = atoi(geometry->property("y_off")->value());
+               g.base_width = atoi(geometry->property("x-size")->value());
+               g.base_height = atoi(geometry->property("y-size")->value());
+               x = atoi(geometry->property("x-pos")->value());
+               y = atoi(geometry->property("y-pos")->value());
+               xoff = atoi(geometry->property("x-off")->value());
+               yoff = atoi(geometry->property("y-off")->value());
        }
 
        set_default_size (g.base_width, g.base_height);
@@ -2595,17 +2607,17 @@ Editor::get_state ()
                XMLNode* geometry = new XMLNode ("geometry");
 
                snprintf(buf, sizeof(buf), "%d", width);
-               geometry->add_property("x_size", string(buf));
+               geometry->add_property("x-size", string(buf));
                snprintf(buf, sizeof(buf), "%d", height);
-               geometry->add_property("y_size", string(buf));
+               geometry->add_property("y-size", string(buf));
                snprintf(buf, sizeof(buf), "%d", x);
-               geometry->add_property("x_pos", string(buf));
+               geometry->add_property("x-pos", string(buf));
                snprintf(buf, sizeof(buf), "%d", y);
-               geometry->add_property("y_pos", string(buf));
+               geometry->add_property("y-pos", string(buf));
                snprintf(buf, sizeof(buf), "%d", xoff);
-               geometry->add_property("x_off", string(buf));
+               geometry->add_property("x-off", string(buf));
                snprintf(buf, sizeof(buf), "%d", yoff);
-               geometry->add_property("y_off", string(buf));
+               geometry->add_property("y-off", 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));
 
@@ -3161,6 +3173,15 @@ Editor::setup_toolbar ()
        toolbar_frame.add (toolbar_base);
 }
 
+void
+Editor::midi_panic_toggle ()
+{
+       if (session) {
+               session->midi_panic();
+               midi_panic_button.set_active (false);
+               midi_panic_button.set_state (STATE_NORMAL);
+       }
+}
 
 void
 Editor::setup_midi_toolbar ()
@@ -3219,6 +3240,14 @@ Editor::setup_midi_toolbar ()
                                &Editor::midi_edit_mode_toggled), Editing::MidiEditResize));
        midi_tool_erase_button.signal_toggled().connect (bind (mem_fun(*this,
                                &Editor::midi_edit_mode_toggled), Editing::MidiEditErase));
+
+       /* Panic */
+       
+       VBox* panic_box = manage (new VBox);
+       midi_panic_button.set_name("MidiPanicButton");
+       midi_panic_button.signal_pressed().connect (
+                       mem_fun(this, &Editor::midi_panic_toggle));
+       panic_box->pack_start (midi_panic_button, true, true);
        
        /* Pack everything in... */
 
@@ -3240,6 +3269,8 @@ Editor::setup_midi_toolbar ()
        midi_toolbar_hbox.set_border_width (1);
 
        midi_toolbar_hbox.pack_start (*midi_tools_tearoff, false, true);
+       
+       midi_toolbar_hbox.pack_start(*panic_box, false, true, 4);
 
        midi_tool_button_box.show_all ();
        midi_toolbar_hbox.show_all();
@@ -3889,8 +3920,8 @@ Editor::pane_allocation_handler (Allocation &alloc, Paned* which)
                width = default_width;
                height = default_height;
        } else {
-               width = atoi(geometry->property("x_size")->value());
-               height = atoi(geometry->property("y_size")->value());
+               width = atoi(geometry->property("x-size")->value());
+               height = atoi(geometry->property("y-size")->value());
        }
 
        if (which == static_cast<Paned*> (&edit_pane)) {
@@ -3899,7 +3930,7 @@ Editor::pane_allocation_handler (Allocation &alloc, Paned* which)
                        return;
                }
 
-               if (!geometry || (prop = geometry->property ("edit_pane_pos")) == 0) {
+               if (!geometry || (prop = geometry->property ("edit-pane-pos")) == 0) {
                        /* initial allocation is 90% to canvas, 10% to notebook */
                        pos = (int) floor (alloc.get_width() * 0.90f);
                        snprintf (buf, sizeof(buf), "%d", pos);
@@ -4351,7 +4382,9 @@ void
 Editor::new_playlists (TimeAxisView* v)
 {
        begin_reversible_command (_("new playlists"));
-       mapover_tracks (mem_fun (*this, &Editor::mapped_use_new_playlist), v);
+       vector<boost::shared_ptr<ARDOUR::Playlist> > playlists;
+       session->get_playlists(playlists);
+       mapover_tracks ( bind(mem_fun (*this, &Editor::mapped_use_new_playlist), playlists), v );
        commit_reversible_command ();
 }
 
@@ -4365,7 +4398,9 @@ void
 Editor::copy_playlists (TimeAxisView* v)
 {
        begin_reversible_command (_("copy playlists"));
-       mapover_tracks (mem_fun (*this, &Editor::mapped_use_copy_playlist), v);
+       vector<boost::shared_ptr<ARDOUR::Playlist> > playlists;
+       session->get_playlists(playlists);
+       mapover_tracks ( bind(mem_fun (*this, &Editor::mapped_use_copy_playlist), playlists), v );
        commit_reversible_command ();
 }
 
@@ -4379,20 +4414,22 @@ void
 Editor::clear_playlists (TimeAxisView* v)
 {
        begin_reversible_command (_("clear playlists"));
-       mapover_tracks (mem_fun (*this, &Editor::mapped_clear_playlist), v);
+       vector<boost::shared_ptr<ARDOUR::Playlist> > playlists;
+       session->get_playlists(playlists);
+       mapover_tracks ( mem_fun (*this, &Editor::mapped_clear_playlist), v );
        commit_reversible_command ();
 }
 
 void 
-Editor::mapped_use_new_playlist (RouteTimeAxisView& atv, uint32_t sz)
+Editor::mapped_use_new_playlist (RouteTimeAxisView& atv, uint32_t sz, vector<boost::shared_ptr<ARDOUR::Playlist> > const & playlists)
 {
-       atv.use_new_playlist (sz > 1 ? false : true);
+       atv.use_new_playlist (sz > 1 ? false : true, playlists);
 }
 
 void
-Editor::mapped_use_copy_playlist (RouteTimeAxisView& atv, uint32_t sz)
+Editor::mapped_use_copy_playlist (RouteTimeAxisView& atv, uint32_t sz, vector<boost::shared_ptr<ARDOUR::Playlist> > const & playlists)
 {
-       atv.use_copy_playlist (sz > 1 ? false : true);
+       atv.use_copy_playlist (sz > 1 ? false : true, playlists);
 }
 
 void 
@@ -4634,7 +4671,7 @@ Editor::idle_visual_changer ()
        }
        if (p & VisualChange::TimeOrigin) {
 
-               nframes64_t csf, cef;
+               nframes64_t csf=0, cef=0;
                nframes64_t current_time_origin = (nframes64_t) floor (horizontal_adjustment.get_value() * frames_per_unit);
 
                if (session) {
@@ -4645,10 +4682,8 @@ Editor::idle_visual_changer ()
                /* if we seek beyond the current end of the canvas, move the end */
 
                if (current_time_origin != pending_visual_change.time_origin) {
-                       //if (horizontal_adjustment.get_upper() < pending_visual_change.time_origin) {
                        last_canvas_frame = (cef > (pending_visual_change.time_origin + current_page_frames())) ? cef : pending_visual_change.time_origin + current_page_frames();
                        horizontal_adjustment.set_upper ((cef - csf) / frames_per_unit);
-                       //}
                        horizontal_adjustment.set_value (pending_visual_change.time_origin / frames_per_unit);
                } else {
                        update_fixed_rulers();