using System; using ISIS.Private.Service.Shared; using System.Xml; using System.IO; namespace ISIS.Private.App { public class ContractListWindow : ServiceBoundWindow { public Gtk.TreeView contractTreeView; /// /// Model for s listed. /// 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; /// /// Creates a new instance. /// 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 = "" + name + ""; 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"); } } }