/*
* This file is part of gitg
*
* Copyright (C) 2012 - Jesse van den Kieboom
*
* gitg is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* gitg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gitg. If not, see .
*/
namespace GitgGtk
{
public class CommitListView : Gtk.TreeView, Gtk.Buildable
{
public CommitListView(GitgGtk.CommitModel model)
{
Object(model: model);
}
public CommitListView.for_repository(Gitg.Repository repository)
{
this(new GitgGtk.CommitModel(repository));
}
private void lanes_data_func(Gtk.CellLayout layout,
Gtk.CellRenderer cell,
Gtk.TreeModel model,
Gtk.TreeIter iter)
{
CommitModel? m = model as CommitModel;
if (m == null)
{
return;
}
CellRendererLanes lanes = (CellRendererLanes)cell;
Gitg.Commit? commit = m.commit_from_iter(iter);
if (commit == null)
{
return;
}
var cp = iter;
Gitg.Commit? next_commit = null;
if (m.iter_next(ref cp))
{
next_commit = m.commit_from_iter(cp);
}
unowned SList labels = m.repository.refs_for_id(commit.get_id());
lanes.commit = commit;
lanes.next_commit = next_commit;
lanes.labels = labels;
}
private void parser_finished(Gtk.Builder builder)
{
base.parser_finished(builder);
// Check if there is a cell renderer
foreach (var column in get_columns())
{
foreach (var cell in column.get_cells())
{
CellRendererLanes? lanes = cell as CellRendererLanes;
if (lanes == null)
{
continue;
}
column.set_cell_data_func(lanes,
lanes_data_func);
}
}
}
}
}
// vi:ts=4