void BuildTaskColumns()
{
var completed_column = new TreeViewColumn ();
completed_column.Widget = new Gtk.Image (Stock.Apply, IconSize.Menu);
completed_column.Widget.Show ();
var ctoggle = new Gtk.CellRendererToggle ();
ctoggle.Xalign = 0.5f;
ctoggle.Activatable = true;
ctoggle.Toggled += HandleTaskCompletedToggled;
completed_column.PackStart (ctoggle, false);
completed_column.SetCellDataFunc (ctoggle, (TreeCellDataFunc)TaskCompletedCellDataFunc);
var flag_column = new TreeViewColumn ();
flag_column.Widget = new Gtk.Image (System.Reflection.Assembly.GetExecutingAssembly (), "Resources.flag-green.png");
flag_column.Widget.Show ();
var cflag = new CellRendererFlag ();
cflag.Mode = CellRendererMode.Editable;
cflag.Changed += delegate (object o, FlagArgs e) {
var path = new Gtk.TreePath (e.Path);
FlagSelectedTask (path);
};
flag_column.PackStart (cflag, true);
flag_column.SetCellDataFunc (cflag, (TreeCellDataFunc)TaskFlagCellDataFunc);
var attach_column = new TreeViewColumn ();
var attach_pixbuf = GetResourcePixbuf ("Resources.attachment-16.png");
attach_column.Widget = new Gtk.Image (attach_pixbuf);
attach_column.Widget.Show ();
var attach_cpix = new CellRendererPixbuf ();
attach_column.PackStart (attach_cpix, true);
attach_column.Alignment = 0.5f;
attach_column.SetCellDataFunc (attach_cpix, (TreeCellDataFunc)TaskAttachCellDataFunc);
task_title_column = new TreeViewColumn ();
task_title_column.Title = Catalog.GetString ("Title");
task_title_column.Expand = true;
var ctext = new CellRendererText ();
ctext.Ellipsize = Pango.EllipsizeMode.End;
ctext.Editable = true;
ctext.Edited += OnTaskTitleEdited;
ctext.EditingStarted += delegate {
this.OnEditingStarted (ctext);
};
ctext.EditingCanceled += delegate {
this.OnEditingStopped ();
};
task_title_column.PackStart (ctext, true);
task_title_column.SetCellDataFunc (ctext, (TreeCellDataFunc)TaskTitleCellDataFunc);
var next_action_column = new TreeViewColumn ();
next_action_column.Title = Catalog.GetString ("Next Action");
ctext = new CellRendererText ();
ctext.Ellipsize = Pango.EllipsizeMode.End;
ctext.Editable = true;
ctext.Edited += OnTaskNextActionEdited;
ctext.EditingStarted += delegate {
this.OnEditingStarted (ctext);
};
ctext.EditingCanceled += delegate {
this.OnEditingStopped ();
};
next_action_column.PackStart (ctext, true);
next_action_column.SetCellDataFunc (ctext, (TreeCellDataFunc)TaskNextActionCellDataFunc);
m_tasksTreeView.AppendColumn (completed_column);
m_tasksTreeView.AppendColumn (flag_column);
m_tasksTreeView.AppendColumn (attach_column);
m_tasksTreeView.AppendColumn (task_title_column);
m_tasksTreeView.AppendColumn (next_action_column);
var targetEntries = new TargetEntry[] {
new TargetEntry ("application/adroit-task", TargetFlags.App, 0),
};
this.m_tasksTreeView.EnableModelDragSource (Gdk.ModifierType.Button1Mask, targetEntries, Gdk.DragAction.Default | Gdk.DragAction.Move);
this.m_tasksTreeView.DragDataGet += delegate(object o, DragDataGetArgs args) {
TreeIter iter;
TreeModel model;
m_tasksTreeView.Selection.GetSelected (out model, out iter);
var task = (Task)model.GetValue (iter, 0);
args.SelectionData.Set (null, 0, BitConverter.GetBytes (task.Id));
};
}