Ubuntu 13.10 appears to have a broken GtkFileChooserButton in its GTK as well as...
[dcpomatic.git] / src / wx / audio_mapping_view.cc
index 5f0f74d23e17cdbf71d211a03490046c301124ce..3136b8679a6140902c225239832148a51f08326f 100644 (file)
@@ -22,6 +22,7 @@
 #include <wx/grid.h>
 #include <libdcp/types.h>
 #include "lib/audio_mapping.h"
+#include "lib/util.h"
 #include "audio_mapping_view.h"
 #include "wx_util.h"
 
@@ -97,7 +98,7 @@ AudioMappingView::AudioMappingView (wxWindow* parent)
        _sizer->Add (_grid, 1, wxEXPAND | wxALL);
        SetSizerAndFit (_sizer);
 
-       Connect (wxID_ANY, wxEVT_GRID_CELL_LEFT_CLICK, wxGridEventHandler (AudioMappingView::left_click), 0, this);
+       Bind (wxEVT_GRID_CELL_LEFT_CLICK, boost::bind (&AudioMappingView::left_click, this, _1));
 }
 
 void
@@ -113,7 +114,8 @@ AudioMappingView::left_click (wxGridEvent& ev)
                _grid->SetCellValue (ev.GetRow(), ev.GetCol(), wxT("1"));
        }
 
-       _map = AudioMapping ();
+       _map = AudioMapping (_map.content_channels ());
+       
        for (int i = 0; i < _grid->GetNumberRows(); ++i) {
                for (int j = 1; j < _grid->GetNumberCols(); ++j) {
                        if (_grid->GetCellValue (i, j) == wxT ("1")) {
@@ -134,27 +136,24 @@ AudioMappingView::set (AudioMapping map)
                _grid->DeleteRows (0, _grid->GetNumberRows ());
        }
 
-       list<int> content_channels = _map.content_channels ();
-       _grid->InsertRows (0, content_channels.size ());
+       _grid->InsertRows (0, _map.content_channels ());
 
-       for (size_t r = 0; r < content_channels.size(); ++r) {
+       for (int r = 0; r < _map.content_channels(); ++r) {
                for (int c = 1; c < 7; ++c) {
                        _grid->SetCellRenderer (r, c, new CheckBoxRenderer);
                }
        }
        
-       int n = 0;
-       for (list<int>::iterator i = content_channels.begin(); i != content_channels.end(); ++i) {
-               _grid->SetCellValue (n, 0, wxString::Format (wxT("%d"), *i + 1));
+       for (int i = 0; i < _map.content_channels(); ++i) {
+               _grid->SetCellValue (i, 0, wxString::Format (wxT("%d"), i + 1));
 
-               list<libdcp::Channel> const d = _map.content_to_dcp (*i);
+               list<libdcp::Channel> const d = _map.content_to_dcp (i);
                for (list<libdcp::Channel>::const_iterator j = d.begin(); j != d.end(); ++j) {
                        int const c = static_cast<int>(*j) + 1;
                        if (c < _grid->GetNumberCols ()) {
-                               _grid->SetCellValue (n, c, wxT("1"));
+                               _grid->SetCellValue (i, c, wxT("1"));
                        }
                }
-               ++n;
        }
 }