All pastes #488426 Raw Edit

Something

public text v1 · immutable
·published 2007-05-15 00:17 UTC
rendered paste body
using 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");
        }
		
	}
	
}