rendered paste bodyusing System;
using ISIS.Private.Service.Shared;
using System.Xml;
using System.IO;
namespace ISIS.Private.App
{
public class ContractListWindow : ServiceBoundWindow<IContractService>
{
public Gtk.TreeView contractTreeView;
/// <summary>
/// Model for <see cref="Contract"/>s listed.
/// </summary>
private Gtk.TreeStore contractTreeStore;
private const int contractTreeStore_TYPE = 0;
private const int contractTreeStore_ID = 1;
private const int contractTreeStore_INTID = 2;
private const int contractTreeStore_NAME = 3;
/// <summary>
/// Creates a new instance.
/// </summary>
public ContractListWindow()
: base("")
{
Stetic.Gui.Build(this, typeof(ContractListWindow));
InitContractTreeView();
}
private void InitContractTreeView()
{
contractTreeStore = new Gtk.TreeStore(
typeof(int) /* type */,
typeof(object) /* id */,
typeof(int) /* id */,
typeof(string) /* name */
);
Gtk.TreeViewColumn c0 = new Gtk.TreeViewColumn();
c0.Title = "Id";
contractTreeView.AppendColumn(c0);
Gtk.CellRendererText c0r = new Gtk.CellRendererText();
c0.PackStart(c0r, false);
c0.AddAttribute(c0r, "text", contractTreeStore_INTID);
Gtk.TreeViewColumn c1 = new Gtk.TreeViewColumn();
c1.Title = "Name";
contractTreeView.AppendColumn(c1);
Gtk.CellRendererText c1r = new Gtk.CellRendererText();
c1.PackStart(c1r, false);
c1.SetCellDataFunc(c1r, DataFuncContractTreeViewTextCell);
contractTreeView.Model = contractTreeStore;
contractTreeView.SearchColumn = contractTreeStore_NAME;
contractTreeView.ExpanderColumn = c1;
FillContractTreeView();
}
private void DataFuncContractTreeViewTextCell(Gtk.TreeViewColumn treeViewColumn, Gtk.CellRenderer cellRenderer,
Gtk.TreeModel treeModel, Gtk.TreeIter treeIter)
{
GLib.Value val1 = new GLib.Value();
treeModel.GetValue(treeIter, contractTreeStore_TYPE, ref val1);
int rowType = (int)val1.Val;
GLib.Value val2 = new GLib.Value();
treeModel.GetValue(treeIter, contractTreeStore_NAME, ref val2);
string name = (string)val2.Val;
switch (rowType)
{
case 1:
((Gtk.CellRendererText)cellRenderer).Markup = "<b>" + name + "</b>";
break;
case 2:
((Gtk.CellRendererText)cellRenderer).Markup = name;
break;
default:
throw new Exception("Invalid row type.");
}
}
private void FillContractTreeView()
{
contractTreeStore.Clear();
foreach (IContractService_GetContracts_Client i in Service.GetContracts())
{
Gtk.TreeIter clientIter = contractTreeStore.AppendValues(1, i.Id, i.IntId, i.Name);
foreach (IContractService_GetContracts_Contract j in i.Contracts)
contractTreeStore.AppendValues(clientIter, 2, j.Id, j.IntId, j.Name);
}
}
private void contractPropertiesButton_Clicked(object sender, EventArgs args)
{
Console.WriteLine("clicked");
}
}
}