Reset the contents of the tree view to show one row per surface, with
        a column containing the alpha multiplier for the corresponding surface
        (in the range [0, 1]), indexed by surface name.

        For example:

            | index  | alpha  |
            |--------|--------|
            | layer1 | 1.00   |
            | layer2 | 0.65   |
            | ...    | ...    |

def set_surfaces(self, df_surfaces):
        '''
        Reset the contents of the tree view to show one row per surface, with
        a column containing the alpha multiplier for the corresponding surface
        (in the range [0, 1]), indexed by surface name.

        For example:

            | index  | alpha  |
            |--------|--------|
            | layer1 | 1.00   |
            | layer2 | 0.65   |
            | ...    | ...    |
        '''
        for column in self.treeview_layers.get_columns():
            self.treeview_layers.remove_column(column)

        self.df_surfaces = pd.DataFrame(df_surfaces.index.values,
                                        columns=[df_surfaces.index.name or
                                                 'index'],
                                        index=df_surfaces.index)

        if 'alpha' in df_surfaces:
            self.df_surfaces['alpha'] = df_surfaces.alpha.copy()
        else:
            self.df_surfaces['alpha'] = 1.

        self.df_py_dtypes, self.list_store = get_list_store(self.df_surfaces)
        add_columns(self.treeview_layers, self.df_py_dtypes, self.list_store)

        self._inserted_row_path = None

        # Adjustment for alpha multiplier for each surface.
        adjustment = gtk.Adjustment(1, 0, 1, .01, .1, 0)
        column = [c for c in self.treeview_layers.get_columns()
                  if c.get_name() == 'alpha'][0]
        cell_renderer = column.get_cells()[0]
        cell_renderer.set_properties(digits=2, editable=True,
                                     adjustment=adjustment)
        cell_renderer.connect('edited', self.on_edited, column,
                              self.df_py_dtypes, self.list_store,
                              self.df_surfaces)
        set_column_format(column, self.df_py_dtypes.ix['alpha'].i,
                          '{value:.2f}', cell_renderer=cell_renderer)
        # Bind handlers for reordering of surface layers.
        for k in ('inserted', 'deleted'):
            self.list_store.connect('row-' + k, getattr(self, 'on_row_' + k))