>From 23a43efe4dbf66047a20976e67273314e94f854e Mon Sep 17 00:00:00 2001
From: Arnaud <arnaud.champion@devatom.fr>
Date: Sat, 13 Nov 2010 16:20:18 +0100
Subject: [PATCH] Add sample "virDomainStats"

---
 .../virConnectSetErrorFunc.csproj                  |   62 ++-
 .../MonoDevelop/virDomainStats/AssemblyInfo.cs     |   27 +
 examples/MonoDevelop/virDomainStats/Main.cs        |   17 +
 examples/MonoDevelop/virDomainStats/MainWindow.cs  |  177 ++++
 .../virDomainStats/gtk-gui/MainWindow.cs           |  721 +++++++++++++
 .../virDomainStats/gtk-gui/generated.cs            |   29 +
 .../MonoDevelop/virDomainStats/gtk-gui/gui.stetic  | 1082 ++++++++++++++++++++
 .../virDomainStats/virDomainStats.csproj           |    1 +
 .../VisualStudio/virDomainStats/Form1.Designer.cs  |  620 +++++++++++
 examples/VisualStudio/virDomainStats/Form1.cs      |  131 +++
 examples/VisualStudio/virDomainStats/Form1.resx    |  120 +++
 examples/VisualStudio/virDomainStats/Program.cs    |   21 +
 .../virDomainStats/Properties/AssemblyInfo.cs      |   36 +
 .../Properties/Resources.Designer.cs               |   71 ++
 .../virDomainStats/Properties/Resources.resx       |  117 +++
 .../virDomainStats/Properties/Settings.Designer.cs |   30 +
 .../virDomainStats/Properties/Settings.settings    |    7 +
 .../virDomainStats/virDomainStats.csproj           |   93 ++
 projects/MonoDevelop/LibvirtBindings.sln           |    9 +-
 projects/VisualStudio/LibvirtBindings.sln          |   13 +
 20 files changed, 3382 insertions(+), 2 deletions(-)
 rewrite examples/MonoDevelop/virConnectSetErrorFunc/virConnectSetErrorFunc.csproj (97%)
 create mode 100644 examples/MonoDevelop/virDomainStats/AssemblyInfo.cs
 create mode 100644 examples/MonoDevelop/virDomainStats/Main.cs
 create mode 100644 examples/MonoDevelop/virDomainStats/MainWindow.cs
 create mode 100644 examples/MonoDevelop/virDomainStats/gtk-gui/MainWindow.cs
 create mode 100644 examples/MonoDevelop/virDomainStats/gtk-gui/generated.cs
 create mode 100644 examples/MonoDevelop/virDomainStats/gtk-gui/gui.stetic
 create mode 100644 examples/MonoDevelop/virDomainStats/virDomainStats.csproj
 create mode 100644 examples/VisualStudio/virDomainStats/Form1.Designer.cs
 create mode 100644 examples/VisualStudio/virDomainStats/Form1.cs
 create mode 100644 examples/VisualStudio/virDomainStats/Form1.resx
 create mode 100644 examples/VisualStudio/virDomainStats/Program.cs
 create mode 100644 examples/VisualStudio/virDomainStats/Properties/AssemblyInfo.cs
 create mode 100644 examples/VisualStudio/virDomainStats/Properties/Resources.Designer.cs
 create mode 100644 examples/VisualStudio/virDomainStats/Properties/Resources.resx
 create mode 100644 examples/VisualStudio/virDomainStats/Properties/Settings.Designer.cs
 create mode 100644 examples/VisualStudio/virDomainStats/Properties/Settings.settings
 create mode 100644 examples/VisualStudio/virDomainStats/virDomainStats.csproj

diff --git a/examples/MonoDevelop/virConnectSetErrorFunc/virConnectSetErrorFunc.csproj b/examples/MonoDevelop/virConnectSetErrorFunc/virConnectSetErrorFunc.csproj
dissimilarity index 97%
index 5a9715e..1fa6edc 100644
--- a/examples/MonoDevelop/virConnectSetErrorFunc/virConnectSetErrorFunc.csproj
+++ b/examples/MonoDevelop/virConnectSetErrorFunc/virConnectSetErrorFunc.csproj
@@ -1 +1,61 @@
-<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>9.0.21022</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{243DD685-9AB3-4CD0-93D5-92034C1D97D8}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <RootNamespace>virConnectSetErrorFunc</RootNamespace>
    <AssemblyName>virConnectSetErrorFunc</AssemblyName>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug</OutputPath>
    <DefineConstants>DEBUG</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <ConsolePause>false</ConsolePause>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>none</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Release</OutputPath>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <ConsolePause>false</ConsolePause>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="Mono.Posix" />
    <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Include="gtk-gui\gui.stetic">
      <LogicalName>gui.stetic</LogicalName>
    </EmbeddedResource>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="gtk-gui\generated.cs" />
    <Compile Include="MainWindow.cs" />
    <Compile Include="gtk-gui\MainWindow.cs" />
    <Compile Include="Main.cs" />
    <Compile Include="AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\..\projects\MonoDevelop\LibvirtBindings.csproj">
      <Project>{C51C70EB-9040-4F8E-9A18-DF2A77D04A37}</Project>
      <Name>LibvirtBindings</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{243DD685-9AB3-4CD0-93D5-92034C1D97D8}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <RootNamespace>virConnectSetErrorFunc</RootNamespace>
+    <AssemblyName>virConnectSetErrorFunc</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>none</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="Mono.Posix" />
+    <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <Reference Include="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="gtk-gui\gui.stetic">
+      <LogicalName>gui.stetic</LogicalName>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="gtk-gui\generated.cs" />
+    <Compile Include="MainWindow.cs" />
+    <Compile Include="gtk-gui\MainWindow.cs" />
+    <Compile Include="Main.cs" />
+    <Compile Include="AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\projects\MonoDevelop\LibvirtBindings.csproj">
+      <Project>{C51C70EB-9040-4F8E-9A18-DF2A77D04A37}</Project>
+      <Name>LibvirtBindings</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project>\ No newline at end of file
diff --git a/examples/MonoDevelop/virDomainStats/AssemblyInfo.cs b/examples/MonoDevelop/virDomainStats/AssemblyInfo.cs
new file mode 100644
index 0000000..abe62b6
--- /dev/null
+++ b/examples/MonoDevelop/virDomainStats/AssemblyInfo.cs
@@ -0,0 +1,27 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes. 
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle("virDomainStats")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+
+[assembly: AssemblyVersion("1.0.*")]
+
+// The following attributes are used to specify the signing key for the assembly, 
+// if desired. See the Mono documentation for more information about signing.
+
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]
+
diff --git a/examples/MonoDevelop/virDomainStats/Main.cs b/examples/MonoDevelop/virDomainStats/Main.cs
new file mode 100644
index 0000000..0b915ae
--- /dev/null
+++ b/examples/MonoDevelop/virDomainStats/Main.cs
@@ -0,0 +1,17 @@
+using System;
+using Gtk;
+
+namespace virDomainStats
+{
+	class MainClass
+	{
+		public static void Main (string[] args)
+		{
+			Application.Init ();
+			MainWindow win = new MainWindow ();
+			win.Show ();
+			Application.Run ();
+		}
+	}
+}
+
diff --git a/examples/MonoDevelop/virDomainStats/MainWindow.cs b/examples/MonoDevelop/virDomainStats/MainWindow.cs
new file mode 100644
index 0000000..1b1be0f
--- /dev/null
+++ b/examples/MonoDevelop/virDomainStats/MainWindow.cs
@@ -0,0 +1,177 @@
+using System;
+using Gtk;
+using Libvirt;
+using System.Collections;
+using System.Xml;
+using System.Linq;
+
+public partial class MainWindow : Gtk.Window
+{
+	private IntPtr _conn;
+    private IntPtr _domainPtr;
+	private ListStore _domainsStore;
+	private ListStore _blockDevStore;
+	private ListStore _interfaceStore;
+	
+	public MainWindow () : base(Gtk.WindowType.Toplevel)
+	{
+		Build ();
+		
+		_domainsStore = new ListStore(typeof(string));
+		CellRendererText cell = new CellRendererText();
+		cbDomains.PackStart(cell, false);
+		cbDomains.AddAttribute(cell, "text", 0);
+		cbDomains.Model = _domainsStore;
+		
+		_blockDevStore = new ListStore(typeof(string));
+		cbBlockDevice.PackStart(cell, false);
+		cbBlockDevice.AddAttribute(cell, "text", 0);
+		cbBlockDevice.Model = _blockDevStore;
+		
+		_interfaceStore = new ListStore(typeof(string));
+		cbInterface.PackStart(cell, false);
+		cbInterface.AddAttribute(cell, "text", 0);
+		cbInterface.Model = _interfaceStore;
+	}
+
+	protected void OnDeleteEvent (object sender, DeleteEventArgs a)
+	{
+		Domain.Free(_domainPtr);
+		Connect.Close(_conn);
+		Application.Quit ();
+		a.RetVal = true;
+	}
+	
+	protected virtual void OnButton1Clicked (object sender, System.EventArgs e)
+	{
+		_conn = Connect.Open(entry1.Text);
+        Errors.SetErrorFunc(IntPtr.Zero, ErrorCallback);
+        int nbDomains = Connect.NumOfDomains(_conn);
+        int[] domainIDs = new int[nbDomains];
+        Connect.ListDomains(_conn, domainIDs, nbDomains);
+		_domainsStore.Clear();
+        foreach (int domainID in domainIDs)
+        {
+			IntPtr domainPtr = Domain.LookupByID(_conn, domainID);
+			string domainName = Domain.GetName(domainPtr);
+			_domainsStore.AppendValues(domainName);
+            Domain.Free(domainPtr);
+        }
+		TreeIter iter;
+		_domainsStore.GetIterFirst(out iter);
+		cbDomains.SetActiveIter(iter);
+	}
+	
+	private void ErrorCallback(IntPtr userData, Error error)
+    {
+        ShowError(error);
+    }
+	
+	private void ShowError(Error error)
+	{
+		MessageDialog errorMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Close, error.Message);
+        errorMsg.Title = "Error";
+		if ((ResponseType) errorMsg.Run() == ResponseType.Close)
+		{ 
+        	errorMsg.Destroy(); 
+		}
+	}
+	
+	protected virtual void OnCbDomainsChanged (object sender, System.EventArgs e)
+	{
+		TreeIter currentIter;
+		cbDomains.GetActiveIter(out currentIter);
+		string selectedDomainName =  (string) _domainsStore.GetValue(currentIter, 0);
+		
+		_domainPtr = Domain.LookupByName(_conn, selectedDomainName);
+
+        UpdateDomainInfo();
+		
+		_blockDevStore.Clear();
+		foreach (string dev in  GetDomainBlockDevices(Domain.GetXMLDesc(_domainPtr, 0)))
+        {
+            _blockDevStore.AppendValues(dev);
+        }
+		TreeIter iter;
+		_blockDevStore.GetIterFirst(out iter);
+		cbBlockDevice.SetActiveIter(iter);
+		
+        _interfaceStore.Clear();
+        foreach (string iface in GetDomainInterfaces(Domain.GetXMLDesc(_domainPtr, 0)))
+        {
+            _interfaceStore.AppendValues(iface);
+        }
+        _interfaceStore.GetIterFirst(out iter);
+		cbInterface.SetActiveIter(iter);
+	}
+	
+	private void UpdateDomainInfo()
+    {
+        DomainInfo domainInfo = new DomainInfo();
+        Domain.GetInfo(_domainPtr, domainInfo);
+
+        eState.Text = domainInfo.State.ToString();
+        eMaxMem.Text = domainInfo.maxMem.ToString();
+        eMemory.Text = domainInfo.memory.ToString();
+        eNumVirtCPU.Text = domainInfo.nrVirtCpu.ToString();
+        eCPUTime.Text = domainInfo.cpuTime.ToString();
+    }
+	
+	private string[] GetDomainBlockDevices(string xmlDomainDescription)
+    {
+        XmlDocument xmlDescription = new XmlDocument();
+        xmlDescription.LoadXml(xmlDomainDescription);
+        XmlNodeList devNodeList = xmlDescription.SelectNodes("//domain/devices/disk");
+
+        return (from XmlNode xn in devNodeList select xn.SelectSingleNode("target").Attributes["dev"].Value).ToArray();
+    }
+
+	private string[] GetDomainInterfaces(string xmlDomainDescription)
+    {
+        XmlDocument xmlDescription = new XmlDocument();
+        xmlDescription.LoadXml(xmlDomainDescription);
+        XmlNodeList iFaceNodeList = xmlDescription.SelectNodes("//domain/devices/interface");
+
+        return (from XmlNode xn in iFaceNodeList select xn.SelectSingleNode("target").Attributes["dev"].Value).ToArray();
+    }
+
+	protected virtual void OnCbBlockDeviceChanged (object sender, System.EventArgs e)
+	{
+		TreeIter currentIter;
+		cbBlockDevice.GetActiveIter(out currentIter);
+		string selectedBlockDev =  (string) _blockDevStore.GetValue(currentIter, 0);
+		if (!string.IsNullOrEmpty(selectedBlockDev))
+		{
+			DomainBlockStatsStruct blockStat;
+	        Domain.BlockStats(_domainPtr, selectedBlockDev, out blockStat);
+	        eReadRequests.Text = blockStat.rd_req.ToString();
+	        eReadBytes.Text = blockStat.rd_bytes.ToString();
+	        eWriteRequests.Text = blockStat.wr_req.ToString();
+	        eWriteBytes.Text = blockStat.wr_bytes.ToString();
+	        eErrors.Text = blockStat.errs.ToString();
+		}
+	}
+	
+	protected virtual void OnCbInterfaceChanged (object sender, System.EventArgs e)
+	{
+		TreeIter currentIter;
+		cbInterface.GetActiveIter(out currentIter);
+		string selectedInterface =  (string) _interfaceStore.GetValue(currentIter, 0);
+		if (!string.IsNullOrEmpty(selectedInterface))
+		{
+			DomainInterfaceStatsStruct interfaceStat;
+	        Domain.InterfaceStats(_domainPtr, selectedInterface, out interfaceStat);
+	        eRxBytes.Text = interfaceStat.rx_bytes.ToString();
+	        eRxDrops.Text = interfaceStat.rx_drop.ToString();
+	        eRxErrs.Text = interfaceStat.rx_errs.ToString();
+	        eRxPackets.Text = interfaceStat.rx_packets.ToString();
+	        eTxBytes.Text = interfaceStat.tx_bytes.ToString();
+	        eTxDrops.Text = interfaceStat.tx_drop.ToString();
+	        eTxErrs.Text = interfaceStat.tx_errs.ToString();
+	        eTxPackets.Text = interfaceStat.tx_packets.ToString();
+		}
+	}
+	
+	
+	
+}
diff --git a/examples/MonoDevelop/virDomainStats/gtk-gui/MainWindow.cs b/examples/MonoDevelop/virDomainStats/gtk-gui/MainWindow.cs
new file mode 100644
index 0000000..f7264d6
--- /dev/null
+++ b/examples/MonoDevelop/virDomainStats/gtk-gui/MainWindow.cs
@@ -0,0 +1,721 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+
+public partial class MainWindow
+{
+	private global::Gtk.Table table1;
+
+	private global::Gtk.Button button1;
+
+	private global::Gtk.ComboBox cbDomains;
+
+	private global::Gtk.Entry entry1;
+
+	private global::Gtk.Frame frame1;
+
+	private global::Gtk.Alignment GtkAlignment;
+
+	private global::Gtk.Table table2;
+
+	private global::Gtk.Entry eCPUTime;
+
+	private global::Gtk.Entry eMaxMem;
+
+	private global::Gtk.Entry eMemory;
+
+	private global::Gtk.Entry eNumVirtCPU;
+
+	private global::Gtk.Entry eState;
+
+	private global::Gtk.Label label3;
+
+	private global::Gtk.Label label4;
+
+	private global::Gtk.Label label5;
+
+	private global::Gtk.Label label6;
+
+	private global::Gtk.Label label7;
+
+	private global::Gtk.Label GtkLabel1;
+
+	private global::Gtk.Frame frame2;
+
+	private global::Gtk.Alignment GtkAlignment1;
+
+	private global::Gtk.Table table3;
+
+	private global::Gtk.ComboBox cbBlockDevice;
+
+	private global::Gtk.Entry eErrors;
+
+	private global::Gtk.Entry eReadBytes;
+
+	private global::Gtk.Entry eReadRequests;
+
+	private global::Gtk.Entry eWriteBytes;
+
+	private global::Gtk.Entry eWriteRequests;
+
+	private global::Gtk.Label label10;
+
+	private global::Gtk.Label label11;
+
+	private global::Gtk.Label label12;
+
+	private global::Gtk.Label label13;
+
+	private global::Gtk.Label label8;
+
+	private global::Gtk.Label label9;
+
+	private global::Gtk.Label GtkLabel2;
+
+	private global::Gtk.Frame frame4;
+
+	private global::Gtk.Alignment GtkAlignment2;
+
+	private global::Gtk.Table table5;
+
+	private global::Gtk.ComboBox cbInterface;
+
+	private global::Gtk.Entry eRxBytes;
+
+	private global::Gtk.Entry eRxDrops;
+
+	private global::Gtk.Entry eRxErrs;
+
+	private global::Gtk.Entry eRxPackets;
+
+	private global::Gtk.Entry eTxBytes;
+
+	private global::Gtk.Entry eTxDrops;
+
+	private global::Gtk.Entry eTxErrs;
+
+	private global::Gtk.Entry eTxPackets;
+
+	private global::Gtk.Label label15;
+
+	private global::Gtk.Label label16;
+
+	private global::Gtk.Label label17;
+
+	private global::Gtk.Label label18;
+
+	private global::Gtk.Label label19;
+
+	private global::Gtk.Label label20;
+
+	private global::Gtk.Label label21;
+
+	private global::Gtk.Label label22;
+
+	private global::Gtk.Label label23;
+
+	private global::Gtk.Label GtkLabel3;
+
+	private global::Gtk.Label label1;
+
+	private global::Gtk.Label label14;
+
+	protected virtual void Build ()
+	{
+		global::Stetic.Gui.Initialize (this);
+		// Widget MainWindow
+		this.Name = "MainWindow";
+		this.Title = global::Mono.Unix.Catalog.GetString ("MainWindow");
+		this.WindowPosition = ((global::Gtk.WindowPosition)(4));
+		// Container child MainWindow.Gtk.Container+ContainerChild
+		this.table1 = new global::Gtk.Table (((uint)(5)), ((uint)(2)), false);
+		this.table1.Name = "table1";
+		this.table1.RowSpacing = ((uint)(6));
+		this.table1.ColumnSpacing = ((uint)(6));
+		// Container child table1.Gtk.Table+TableChild
+		this.button1 = new global::Gtk.Button ();
+		this.button1.CanFocus = true;
+		this.button1.Name = "button1";
+		this.button1.UseUnderline = true;
+		this.button1.Label = global::Mono.Unix.Catalog.GetString ("Connect");
+		this.table1.Add (this.button1);
+		global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table1[this.button1]));
+		w1.TopAttach = ((uint)(1));
+		w1.BottomAttach = ((uint)(2));
+		w1.LeftAttach = ((uint)(1));
+		w1.RightAttach = ((uint)(2));
+		w1.XOptions = ((global::Gtk.AttachOptions)(4));
+		w1.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table1.Gtk.Table+TableChild
+		this.cbDomains = global::Gtk.ComboBox.NewText ();
+		this.cbDomains.Name = "cbDomains";
+		this.table1.Add (this.cbDomains);
+		global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1[this.cbDomains]));
+		w2.TopAttach = ((uint)(2));
+		w2.BottomAttach = ((uint)(3));
+		w2.LeftAttach = ((uint)(1));
+		w2.RightAttach = ((uint)(2));
+		w2.XOptions = ((global::Gtk.AttachOptions)(4));
+		w2.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table1.Gtk.Table+TableChild
+		this.entry1 = new global::Gtk.Entry ();
+		this.entry1.CanFocus = true;
+		this.entry1.Name = "entry1";
+		this.entry1.Text = global::Mono.Unix.Catalog.GetString ("qemu+tcp://192.168.220.198/session");
+		this.entry1.IsEditable = true;
+		this.table1.Add (this.entry1);
+		global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1[this.entry1]));
+		w3.LeftAttach = ((uint)(1));
+		w3.RightAttach = ((uint)(2));
+		w3.XOptions = ((global::Gtk.AttachOptions)(4));
+		w3.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table1.Gtk.Table+TableChild
+		this.frame1 = new global::Gtk.Frame ();
+		this.frame1.Name = "frame1";
+		this.frame1.ShadowType = ((global::Gtk.ShadowType)(1));
+		// Container child frame1.Gtk.Container+ContainerChild
+		this.GtkAlignment = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+		this.GtkAlignment.Name = "GtkAlignment";
+		this.GtkAlignment.LeftPadding = ((uint)(12));
+		// Container child GtkAlignment.Gtk.Container+ContainerChild
+		this.table2 = new global::Gtk.Table (((uint)(5)), ((uint)(2)), false);
+		this.table2.Name = "table2";
+		this.table2.RowSpacing = ((uint)(6));
+		this.table2.ColumnSpacing = ((uint)(6));
+		// Container child table2.Gtk.Table+TableChild
+		this.eCPUTime = new global::Gtk.Entry ();
+		this.eCPUTime.CanFocus = true;
+		this.eCPUTime.Name = "eCPUTime";
+		this.eCPUTime.IsEditable = false;
+		this.table2.Add (this.eCPUTime);
+		global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table2[this.eCPUTime]));
+		w4.TopAttach = ((uint)(4));
+		w4.BottomAttach = ((uint)(5));
+		w4.LeftAttach = ((uint)(1));
+		w4.RightAttach = ((uint)(2));
+		w4.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table2.Gtk.Table+TableChild
+		this.eMaxMem = new global::Gtk.Entry ();
+		this.eMaxMem.CanFocus = true;
+		this.eMaxMem.Name = "eMaxMem";
+		this.eMaxMem.IsEditable = false;
+		this.table2.Add (this.eMaxMem);
+		global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table2[this.eMaxMem]));
+		w5.TopAttach = ((uint)(1));
+		w5.BottomAttach = ((uint)(2));
+		w5.LeftAttach = ((uint)(1));
+		w5.RightAttach = ((uint)(2));
+		w5.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table2.Gtk.Table+TableChild
+		this.eMemory = new global::Gtk.Entry ();
+		this.eMemory.CanFocus = true;
+		this.eMemory.Name = "eMemory";
+		this.eMemory.IsEditable = false;
+		this.table2.Add (this.eMemory);
+		global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table2[this.eMemory]));
+		w6.TopAttach = ((uint)(2));
+		w6.BottomAttach = ((uint)(3));
+		w6.LeftAttach = ((uint)(1));
+		w6.RightAttach = ((uint)(2));
+		w6.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table2.Gtk.Table+TableChild
+		this.eNumVirtCPU = new global::Gtk.Entry ();
+		this.eNumVirtCPU.CanFocus = true;
+		this.eNumVirtCPU.Name = "eNumVirtCPU";
+		this.eNumVirtCPU.IsEditable = false;
+		this.table2.Add (this.eNumVirtCPU);
+		global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table2[this.eNumVirtCPU]));
+		w7.TopAttach = ((uint)(3));
+		w7.BottomAttach = ((uint)(4));
+		w7.LeftAttach = ((uint)(1));
+		w7.RightAttach = ((uint)(2));
+		w7.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table2.Gtk.Table+TableChild
+		this.eState = new global::Gtk.Entry ();
+		this.eState.CanFocus = true;
+		this.eState.Name = "eState";
+		this.eState.IsEditable = false;
+		this.table2.Add (this.eState);
+		global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table2[this.eState]));
+		w8.LeftAttach = ((uint)(1));
+		w8.RightAttach = ((uint)(2));
+		w8.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table2.Gtk.Table+TableChild
+		this.label3 = new global::Gtk.Label ();
+		this.label3.Name = "label3";
+		this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("State :");
+		this.table2.Add (this.label3);
+		global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table2[this.label3]));
+		w9.XOptions = ((global::Gtk.AttachOptions)(4));
+		w9.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table2.Gtk.Table+TableChild
+		this.label4 = new global::Gtk.Label ();
+		this.label4.Name = "label4";
+		this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("Max. memory :");
+		this.table2.Add (this.label4);
+		global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table2[this.label4]));
+		w10.TopAttach = ((uint)(1));
+		w10.BottomAttach = ((uint)(2));
+		w10.XOptions = ((global::Gtk.AttachOptions)(4));
+		w10.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table2.Gtk.Table+TableChild
+		this.label5 = new global::Gtk.Label ();
+		this.label5.Name = "label5";
+		this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Memory :");
+		this.table2.Add (this.label5);
+		global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table2[this.label5]));
+		w11.TopAttach = ((uint)(2));
+		w11.BottomAttach = ((uint)(3));
+		w11.XOptions = ((global::Gtk.AttachOptions)(4));
+		w11.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table2.Gtk.Table+TableChild
+		this.label6 = new global::Gtk.Label ();
+		this.label6.Name = "label6";
+		this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("Num. virt CPU :");
+		this.table2.Add (this.label6);
+		global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table2[this.label6]));
+		w12.TopAttach = ((uint)(3));
+		w12.BottomAttach = ((uint)(4));
+		w12.XOptions = ((global::Gtk.AttachOptions)(4));
+		w12.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table2.Gtk.Table+TableChild
+		this.label7 = new global::Gtk.Label ();
+		this.label7.Name = "label7";
+		this.label7.LabelProp = global::Mono.Unix.Catalog.GetString ("CPU time :");
+		this.table2.Add (this.label7);
+		global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table2[this.label7]));
+		w13.TopAttach = ((uint)(4));
+		w13.BottomAttach = ((uint)(5));
+		w13.XOptions = ((global::Gtk.AttachOptions)(4));
+		w13.YOptions = ((global::Gtk.AttachOptions)(4));
+		this.GtkAlignment.Add (this.table2);
+		this.frame1.Add (this.GtkAlignment);
+		this.GtkLabel1 = new global::Gtk.Label ();
+		this.GtkLabel1.Name = "GtkLabel1";
+		this.GtkLabel1.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Domain infos</b>");
+		this.GtkLabel1.UseMarkup = true;
+		this.frame1.LabelWidget = this.GtkLabel1;
+		this.table1.Add (this.frame1);
+		global::Gtk.Table.TableChild w16 = ((global::Gtk.Table.TableChild)(this.table1[this.frame1]));
+		w16.TopAttach = ((uint)(3));
+		w16.BottomAttach = ((uint)(4));
+		w16.XOptions = ((global::Gtk.AttachOptions)(4));
+		w16.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table1.Gtk.Table+TableChild
+		this.frame2 = new global::Gtk.Frame ();
+		this.frame2.Name = "frame2";
+		this.frame2.ShadowType = ((global::Gtk.ShadowType)(1));
+		// Container child frame2.Gtk.Container+ContainerChild
+		this.GtkAlignment1 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+		this.GtkAlignment1.Name = "GtkAlignment1";
+		this.GtkAlignment1.LeftPadding = ((uint)(12));
+		// Container child GtkAlignment1.Gtk.Container+ContainerChild
+		this.table3 = new global::Gtk.Table (((uint)(6)), ((uint)(2)), false);
+		this.table3.Name = "table3";
+		this.table3.RowSpacing = ((uint)(6));
+		this.table3.ColumnSpacing = ((uint)(6));
+		// Container child table3.Gtk.Table+TableChild
+		this.cbBlockDevice = global::Gtk.ComboBox.NewText ();
+		this.cbBlockDevice.Name = "cbBlockDevice";
+		this.table3.Add (this.cbBlockDevice);
+		global::Gtk.Table.TableChild w17 = ((global::Gtk.Table.TableChild)(this.table3[this.cbBlockDevice]));
+		w17.LeftAttach = ((uint)(1));
+		w17.RightAttach = ((uint)(2));
+		w17.XOptions = ((global::Gtk.AttachOptions)(4));
+		w17.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.eErrors = new global::Gtk.Entry ();
+		this.eErrors.CanFocus = true;
+		this.eErrors.Name = "eErrors";
+		this.eErrors.IsEditable = false;
+		this.table3.Add (this.eErrors);
+		global::Gtk.Table.TableChild w18 = ((global::Gtk.Table.TableChild)(this.table3[this.eErrors]));
+		w18.TopAttach = ((uint)(5));
+		w18.BottomAttach = ((uint)(6));
+		w18.LeftAttach = ((uint)(1));
+		w18.RightAttach = ((uint)(2));
+		w18.XOptions = ((global::Gtk.AttachOptions)(4));
+		w18.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.eReadBytes = new global::Gtk.Entry ();
+		this.eReadBytes.CanFocus = true;
+		this.eReadBytes.Name = "eReadBytes";
+		this.eReadBytes.IsEditable = false;
+		this.table3.Add (this.eReadBytes);
+		global::Gtk.Table.TableChild w19 = ((global::Gtk.Table.TableChild)(this.table3[this.eReadBytes]));
+		w19.TopAttach = ((uint)(2));
+		w19.BottomAttach = ((uint)(3));
+		w19.LeftAttach = ((uint)(1));
+		w19.RightAttach = ((uint)(2));
+		w19.XOptions = ((global::Gtk.AttachOptions)(4));
+		w19.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.eReadRequests = new global::Gtk.Entry ();
+		this.eReadRequests.CanFocus = true;
+		this.eReadRequests.Name = "eReadRequests";
+		this.eReadRequests.IsEditable = false;
+		this.table3.Add (this.eReadRequests);
+		global::Gtk.Table.TableChild w20 = ((global::Gtk.Table.TableChild)(this.table3[this.eReadRequests]));
+		w20.TopAttach = ((uint)(1));
+		w20.BottomAttach = ((uint)(2));
+		w20.LeftAttach = ((uint)(1));
+		w20.RightAttach = ((uint)(2));
+		w20.XOptions = ((global::Gtk.AttachOptions)(4));
+		w20.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.eWriteBytes = new global::Gtk.Entry ();
+		this.eWriteBytes.CanFocus = true;
+		this.eWriteBytes.Name = "eWriteBytes";
+		this.eWriteBytes.IsEditable = false;
+		this.table3.Add (this.eWriteBytes);
+		global::Gtk.Table.TableChild w21 = ((global::Gtk.Table.TableChild)(this.table3[this.eWriteBytes]));
+		w21.TopAttach = ((uint)(4));
+		w21.BottomAttach = ((uint)(5));
+		w21.LeftAttach = ((uint)(1));
+		w21.RightAttach = ((uint)(2));
+		w21.XOptions = ((global::Gtk.AttachOptions)(4));
+		w21.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.eWriteRequests = new global::Gtk.Entry ();
+		this.eWriteRequests.CanFocus = true;
+		this.eWriteRequests.Name = "eWriteRequests";
+		this.eWriteRequests.IsEditable = false;
+		this.table3.Add (this.eWriteRequests);
+		global::Gtk.Table.TableChild w22 = ((global::Gtk.Table.TableChild)(this.table3[this.eWriteRequests]));
+		w22.TopAttach = ((uint)(3));
+		w22.BottomAttach = ((uint)(4));
+		w22.LeftAttach = ((uint)(1));
+		w22.RightAttach = ((uint)(2));
+		w22.XOptions = ((global::Gtk.AttachOptions)(4));
+		w22.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.label10 = new global::Gtk.Label ();
+		this.label10.Name = "label10";
+		this.label10.LabelProp = global::Mono.Unix.Catalog.GetString ("Read bytes :");
+		this.table3.Add (this.label10);
+		global::Gtk.Table.TableChild w23 = ((global::Gtk.Table.TableChild)(this.table3[this.label10]));
+		w23.TopAttach = ((uint)(2));
+		w23.BottomAttach = ((uint)(3));
+		w23.XOptions = ((global::Gtk.AttachOptions)(4));
+		w23.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.label11 = new global::Gtk.Label ();
+		this.label11.Name = "label11";
+		this.label11.LabelProp = global::Mono.Unix.Catalog.GetString ("Write requests :");
+		this.table3.Add (this.label11);
+		global::Gtk.Table.TableChild w24 = ((global::Gtk.Table.TableChild)(this.table3[this.label11]));
+		w24.TopAttach = ((uint)(3));
+		w24.BottomAttach = ((uint)(4));
+		w24.XOptions = ((global::Gtk.AttachOptions)(4));
+		w24.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.label12 = new global::Gtk.Label ();
+		this.label12.Name = "label12";
+		this.label12.LabelProp = global::Mono.Unix.Catalog.GetString ("Write bytes :");
+		this.table3.Add (this.label12);
+		global::Gtk.Table.TableChild w25 = ((global::Gtk.Table.TableChild)(this.table3[this.label12]));
+		w25.TopAttach = ((uint)(4));
+		w25.BottomAttach = ((uint)(5));
+		w25.XOptions = ((global::Gtk.AttachOptions)(4));
+		w25.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.label13 = new global::Gtk.Label ();
+		this.label13.Name = "label13";
+		this.label13.LabelProp = global::Mono.Unix.Catalog.GetString ("Errors :");
+		this.table3.Add (this.label13);
+		global::Gtk.Table.TableChild w26 = ((global::Gtk.Table.TableChild)(this.table3[this.label13]));
+		w26.TopAttach = ((uint)(5));
+		w26.BottomAttach = ((uint)(6));
+		w26.XOptions = ((global::Gtk.AttachOptions)(4));
+		w26.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.label8 = new global::Gtk.Label ();
+		this.label8.Name = "label8";
+		this.label8.LabelProp = global::Mono.Unix.Catalog.GetString ("Block device :");
+		this.table3.Add (this.label8);
+		global::Gtk.Table.TableChild w27 = ((global::Gtk.Table.TableChild)(this.table3[this.label8]));
+		w27.XOptions = ((global::Gtk.AttachOptions)(4));
+		w27.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table3.Gtk.Table+TableChild
+		this.label9 = new global::Gtk.Label ();
+		this.label9.Name = "label9";
+		this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("Read requests :");
+		this.table3.Add (this.label9);
+		global::Gtk.Table.TableChild w28 = ((global::Gtk.Table.TableChild)(this.table3[this.label9]));
+		w28.TopAttach = ((uint)(1));
+		w28.BottomAttach = ((uint)(2));
+		w28.XOptions = ((global::Gtk.AttachOptions)(4));
+		w28.YOptions = ((global::Gtk.AttachOptions)(4));
+		this.GtkAlignment1.Add (this.table3);
+		this.frame2.Add (this.GtkAlignment1);
+		this.GtkLabel2 = new global::Gtk.Label ();
+		this.GtkLabel2.Name = "GtkLabel2";
+		this.GtkLabel2.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Block statistics</b>");
+		this.GtkLabel2.UseMarkup = true;
+		this.frame2.LabelWidget = this.GtkLabel2;
+		this.table1.Add (this.frame2);
+		global::Gtk.Table.TableChild w31 = ((global::Gtk.Table.TableChild)(this.table1[this.frame2]));
+		w31.TopAttach = ((uint)(3));
+		w31.BottomAttach = ((uint)(4));
+		w31.LeftAttach = ((uint)(1));
+		w31.RightAttach = ((uint)(2));
+		w31.XOptions = ((global::Gtk.AttachOptions)(4));
+		w31.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table1.Gtk.Table+TableChild
+		this.frame4 = new global::Gtk.Frame ();
+		this.frame4.Name = "frame4";
+		this.frame4.ShadowType = ((global::Gtk.ShadowType)(1));
+		// Container child frame4.Gtk.Container+ContainerChild
+		this.GtkAlignment2 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+		this.GtkAlignment2.Name = "GtkAlignment2";
+		this.GtkAlignment2.LeftPadding = ((uint)(12));
+		// Container child GtkAlignment2.Gtk.Container+ContainerChild
+		this.table5 = new global::Gtk.Table (((uint)(9)), ((uint)(2)), false);
+		this.table5.Name = "table5";
+		this.table5.RowSpacing = ((uint)(6));
+		this.table5.ColumnSpacing = ((uint)(6));
+		// Container child table5.Gtk.Table+TableChild
+		this.cbInterface = global::Gtk.ComboBox.NewText ();
+		this.cbInterface.Name = "cbInterface";
+		this.table5.Add (this.cbInterface);
+		global::Gtk.Table.TableChild w32 = ((global::Gtk.Table.TableChild)(this.table5[this.cbInterface]));
+		w32.LeftAttach = ((uint)(1));
+		w32.RightAttach = ((uint)(2));
+		w32.XOptions = ((global::Gtk.AttachOptions)(4));
+		w32.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.eRxBytes = new global::Gtk.Entry ();
+		this.eRxBytes.CanFocus = true;
+		this.eRxBytes.Name = "eRxBytes";
+		this.eRxBytes.IsEditable = false;
+		this.table5.Add (this.eRxBytes);
+		global::Gtk.Table.TableChild w33 = ((global::Gtk.Table.TableChild)(this.table5[this.eRxBytes]));
+		w33.TopAttach = ((uint)(1));
+		w33.BottomAttach = ((uint)(2));
+		w33.LeftAttach = ((uint)(1));
+		w33.RightAttach = ((uint)(2));
+		w33.XOptions = ((global::Gtk.AttachOptions)(4));
+		w33.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.eRxDrops = new global::Gtk.Entry ();
+		this.eRxDrops.CanFocus = true;
+		this.eRxDrops.Name = "eRxDrops";
+		this.eRxDrops.IsEditable = false;
+		this.table5.Add (this.eRxDrops);
+		global::Gtk.Table.TableChild w34 = ((global::Gtk.Table.TableChild)(this.table5[this.eRxDrops]));
+		w34.TopAttach = ((uint)(4));
+		w34.BottomAttach = ((uint)(5));
+		w34.LeftAttach = ((uint)(1));
+		w34.RightAttach = ((uint)(2));
+		w34.XOptions = ((global::Gtk.AttachOptions)(4));
+		w34.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.eRxErrs = new global::Gtk.Entry ();
+		this.eRxErrs.CanFocus = true;
+		this.eRxErrs.Name = "eRxErrs";
+		this.eRxErrs.IsEditable = false;
+		this.table5.Add (this.eRxErrs);
+		global::Gtk.Table.TableChild w35 = ((global::Gtk.Table.TableChild)(this.table5[this.eRxErrs]));
+		w35.TopAttach = ((uint)(3));
+		w35.BottomAttach = ((uint)(4));
+		w35.LeftAttach = ((uint)(1));
+		w35.RightAttach = ((uint)(2));
+		w35.XOptions = ((global::Gtk.AttachOptions)(4));
+		w35.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.eRxPackets = new global::Gtk.Entry ();
+		this.eRxPackets.CanFocus = true;
+		this.eRxPackets.Name = "eRxPackets";
+		this.eRxPackets.IsEditable = false;
+		this.table5.Add (this.eRxPackets);
+		global::Gtk.Table.TableChild w36 = ((global::Gtk.Table.TableChild)(this.table5[this.eRxPackets]));
+		w36.TopAttach = ((uint)(2));
+		w36.BottomAttach = ((uint)(3));
+		w36.LeftAttach = ((uint)(1));
+		w36.RightAttach = ((uint)(2));
+		w36.XOptions = ((global::Gtk.AttachOptions)(4));
+		w36.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.eTxBytes = new global::Gtk.Entry ();
+		this.eTxBytes.CanFocus = true;
+		this.eTxBytes.Name = "eTxBytes";
+		this.eTxBytes.IsEditable = false;
+		this.table5.Add (this.eTxBytes);
+		global::Gtk.Table.TableChild w37 = ((global::Gtk.Table.TableChild)(this.table5[this.eTxBytes]));
+		w37.TopAttach = ((uint)(5));
+		w37.BottomAttach = ((uint)(6));
+		w37.LeftAttach = ((uint)(1));
+		w37.RightAttach = ((uint)(2));
+		w37.XOptions = ((global::Gtk.AttachOptions)(4));
+		w37.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.eTxDrops = new global::Gtk.Entry ();
+		this.eTxDrops.CanFocus = true;
+		this.eTxDrops.Name = "eTxDrops";
+		this.eTxDrops.IsEditable = false;
+		this.table5.Add (this.eTxDrops);
+		global::Gtk.Table.TableChild w38 = ((global::Gtk.Table.TableChild)(this.table5[this.eTxDrops]));
+		w38.TopAttach = ((uint)(8));
+		w38.BottomAttach = ((uint)(9));
+		w38.LeftAttach = ((uint)(1));
+		w38.RightAttach = ((uint)(2));
+		w38.XOptions = ((global::Gtk.AttachOptions)(4));
+		w38.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.eTxErrs = new global::Gtk.Entry ();
+		this.eTxErrs.CanFocus = true;
+		this.eTxErrs.Name = "eTxErrs";
+		this.eTxErrs.IsEditable = false;
+		this.table5.Add (this.eTxErrs);
+		global::Gtk.Table.TableChild w39 = ((global::Gtk.Table.TableChild)(this.table5[this.eTxErrs]));
+		w39.TopAttach = ((uint)(7));
+		w39.BottomAttach = ((uint)(8));
+		w39.LeftAttach = ((uint)(1));
+		w39.RightAttach = ((uint)(2));
+		w39.XOptions = ((global::Gtk.AttachOptions)(4));
+		w39.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.eTxPackets = new global::Gtk.Entry ();
+		this.eTxPackets.CanFocus = true;
+		this.eTxPackets.Name = "eTxPackets";
+		this.eTxPackets.IsEditable = false;
+		this.table5.Add (this.eTxPackets);
+		global::Gtk.Table.TableChild w40 = ((global::Gtk.Table.TableChild)(this.table5[this.eTxPackets]));
+		w40.TopAttach = ((uint)(6));
+		w40.BottomAttach = ((uint)(7));
+		w40.LeftAttach = ((uint)(1));
+		w40.RightAttach = ((uint)(2));
+		w40.XOptions = ((global::Gtk.AttachOptions)(4));
+		w40.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.label15 = new global::Gtk.Label ();
+		this.label15.Name = "label15";
+		this.label15.LabelProp = global::Mono.Unix.Catalog.GetString ("Interface :");
+		this.table5.Add (this.label15);
+		global::Gtk.Table.TableChild w41 = ((global::Gtk.Table.TableChild)(this.table5[this.label15]));
+		w41.XOptions = ((global::Gtk.AttachOptions)(4));
+		w41.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.label16 = new global::Gtk.Label ();
+		this.label16.Name = "label16";
+		this.label16.LabelProp = global::Mono.Unix.Catalog.GetString ("RxBytes :");
+		this.table5.Add (this.label16);
+		global::Gtk.Table.TableChild w42 = ((global::Gtk.Table.TableChild)(this.table5[this.label16]));
+		w42.TopAttach = ((uint)(1));
+		w42.BottomAttach = ((uint)(2));
+		w42.XOptions = ((global::Gtk.AttachOptions)(4));
+		w42.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.label17 = new global::Gtk.Label ();
+		this.label17.Name = "label17";
+		this.label17.LabelProp = global::Mono.Unix.Catalog.GetString ("RxPackets :");
+		this.table5.Add (this.label17);
+		global::Gtk.Table.TableChild w43 = ((global::Gtk.Table.TableChild)(this.table5[this.label17]));
+		w43.TopAttach = ((uint)(2));
+		w43.BottomAttach = ((uint)(3));
+		w43.XOptions = ((global::Gtk.AttachOptions)(4));
+		w43.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.label18 = new global::Gtk.Label ();
+		this.label18.Name = "label18";
+		this.label18.LabelProp = global::Mono.Unix.Catalog.GetString ("RxErrs :");
+		this.table5.Add (this.label18);
+		global::Gtk.Table.TableChild w44 = ((global::Gtk.Table.TableChild)(this.table5[this.label18]));
+		w44.TopAttach = ((uint)(3));
+		w44.BottomAttach = ((uint)(4));
+		w44.XOptions = ((global::Gtk.AttachOptions)(4));
+		w44.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.label19 = new global::Gtk.Label ();
+		this.label19.Name = "label19";
+		this.label19.LabelProp = global::Mono.Unix.Catalog.GetString ("RxDrops :");
+		this.table5.Add (this.label19);
+		global::Gtk.Table.TableChild w45 = ((global::Gtk.Table.TableChild)(this.table5[this.label19]));
+		w45.TopAttach = ((uint)(4));
+		w45.BottomAttach = ((uint)(5));
+		w45.XOptions = ((global::Gtk.AttachOptions)(4));
+		w45.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.label20 = new global::Gtk.Label ();
+		this.label20.Name = "label20";
+		this.label20.LabelProp = global::Mono.Unix.Catalog.GetString ("TxBytes :");
+		this.table5.Add (this.label20);
+		global::Gtk.Table.TableChild w46 = ((global::Gtk.Table.TableChild)(this.table5[this.label20]));
+		w46.TopAttach = ((uint)(5));
+		w46.BottomAttach = ((uint)(6));
+		w46.XOptions = ((global::Gtk.AttachOptions)(4));
+		w46.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.label21 = new global::Gtk.Label ();
+		this.label21.Name = "label21";
+		this.label21.LabelProp = global::Mono.Unix.Catalog.GetString ("TxPackets :");
+		this.table5.Add (this.label21);
+		global::Gtk.Table.TableChild w47 = ((global::Gtk.Table.TableChild)(this.table5[this.label21]));
+		w47.TopAttach = ((uint)(6));
+		w47.BottomAttach = ((uint)(7));
+		w47.XOptions = ((global::Gtk.AttachOptions)(4));
+		w47.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.label22 = new global::Gtk.Label ();
+		this.label22.Name = "label22";
+		this.label22.LabelProp = global::Mono.Unix.Catalog.GetString ("TxErrs :");
+		this.table5.Add (this.label22);
+		global::Gtk.Table.TableChild w48 = ((global::Gtk.Table.TableChild)(this.table5[this.label22]));
+		w48.TopAttach = ((uint)(7));
+		w48.BottomAttach = ((uint)(8));
+		w48.XOptions = ((global::Gtk.AttachOptions)(4));
+		w48.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table5.Gtk.Table+TableChild
+		this.label23 = new global::Gtk.Label ();
+		this.label23.Name = "label23";
+		this.label23.LabelProp = global::Mono.Unix.Catalog.GetString ("TxDrops :");
+		this.table5.Add (this.label23);
+		global::Gtk.Table.TableChild w49 = ((global::Gtk.Table.TableChild)(this.table5[this.label23]));
+		w49.TopAttach = ((uint)(8));
+		w49.BottomAttach = ((uint)(9));
+		w49.XOptions = ((global::Gtk.AttachOptions)(4));
+		w49.YOptions = ((global::Gtk.AttachOptions)(4));
+		this.GtkAlignment2.Add (this.table5);
+		this.frame4.Add (this.GtkAlignment2);
+		this.GtkLabel3 = new global::Gtk.Label ();
+		this.GtkLabel3.Name = "GtkLabel3";
+		this.GtkLabel3.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Interface statistics</b>");
+		this.GtkLabel3.UseMarkup = true;
+		this.frame4.LabelWidget = this.GtkLabel3;
+		this.table1.Add (this.frame4);
+		global::Gtk.Table.TableChild w52 = ((global::Gtk.Table.TableChild)(this.table1[this.frame4]));
+		w52.TopAttach = ((uint)(4));
+		w52.BottomAttach = ((uint)(5));
+		w52.XOptions = ((global::Gtk.AttachOptions)(4));
+		w52.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table1.Gtk.Table+TableChild
+		this.label1 = new global::Gtk.Label ();
+		this.label1.Name = "label1";
+		this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("URI :");
+		this.table1.Add (this.label1);
+		global::Gtk.Table.TableChild w53 = ((global::Gtk.Table.TableChild)(this.table1[this.label1]));
+		w53.XOptions = ((global::Gtk.AttachOptions)(4));
+		w53.YOptions = ((global::Gtk.AttachOptions)(4));
+		// Container child table1.Gtk.Table+TableChild
+		this.label14 = new global::Gtk.Label ();
+		this.label14.Name = "label14";
+		this.label14.LabelProp = global::Mono.Unix.Catalog.GetString ("Domain :");
+		this.table1.Add (this.label14);
+		global::Gtk.Table.TableChild w54 = ((global::Gtk.Table.TableChild)(this.table1[this.label14]));
+		w54.TopAttach = ((uint)(2));
+		w54.BottomAttach = ((uint)(3));
+		w54.XOptions = ((global::Gtk.AttachOptions)(4));
+		w54.YOptions = ((global::Gtk.AttachOptions)(4));
+		this.Add (this.table1);
+		if ((this.Child != null)) {
+			this.Child.ShowAll ();
+		}
+		this.DefaultWidth = 546;
+		this.DefaultHeight = 598;
+		this.Show ();
+		this.DeleteEvent += new global::Gtk.DeleteEventHandler (this.OnDeleteEvent);
+		this.cbInterface.Changed += new global::System.EventHandler (this.OnCbInterfaceChanged);
+		this.cbBlockDevice.Changed += new global::System.EventHandler (this.OnCbBlockDeviceChanged);
+		this.cbDomains.Changed += new global::System.EventHandler (this.OnCbDomainsChanged);
+		this.button1.Clicked += new global::System.EventHandler (this.OnButton1Clicked);
+	}
+}
diff --git a/examples/MonoDevelop/virDomainStats/gtk-gui/generated.cs b/examples/MonoDevelop/virDomainStats/gtk-gui/generated.cs
new file mode 100644
index 0000000..8463caa
--- /dev/null
+++ b/examples/MonoDevelop/virDomainStats/gtk-gui/generated.cs
@@ -0,0 +1,29 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace Stetic
+{
+	internal class Gui
+	{
+		private static bool initialized;
+
+		static internal void Initialize (Gtk.Widget iconRenderer)
+		{
+			if ((Stetic.Gui.initialized == false)) {
+				Stetic.Gui.initialized = true;
+			}
+		}
+	}
+
+	internal class ActionGroups
+	{
+		public static Gtk.ActionGroup GetActionGroup (System.Type type)
+		{
+			return Stetic.ActionGroups.GetActionGroup (type.FullName);
+		}
+
+		public static Gtk.ActionGroup GetActionGroup (string name)
+		{
+			return null;
+		}
+	}
+}
diff --git a/examples/MonoDevelop/virDomainStats/gtk-gui/gui.stetic b/examples/MonoDevelop/virDomainStats/gtk-gui/gui.stetic
new file mode 100644
index 0000000..f208b07
--- /dev/null
+++ b/examples/MonoDevelop/virDomainStats/gtk-gui/gui.stetic
@@ -0,0 +1,1082 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<stetic-interface>
+  <configuration>
+    <images-root-path>..</images-root-path>
+    <target-gtk-version>2.12</target-gtk-version>
+  </configuration>
+  <import>
+    <widget-library name="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <widget-library name="..\bin\Debug\virDomainStats.exe" internal="true" />
+  </import>
+  <widget class="Gtk.Window" id="MainWindow" design-size="546 598">
+    <property name="MemberName" />
+    <property name="Title" translatable="yes">MainWindow</property>
+    <property name="WindowPosition">CenterOnParent</property>
+    <signal name="DeleteEvent" handler="OnDeleteEvent" />
+    <child>
+      <widget class="Gtk.Table" id="table1">
+        <property name="MemberName" />
+        <property name="NRows">5</property>
+        <property name="NColumns">2</property>
+        <property name="RowSpacing">6</property>
+        <property name="ColumnSpacing">6</property>
+        <child>
+          <placeholder />
+        </child>
+        <child>
+          <placeholder />
+        </child>
+        <child>
+          <widget class="Gtk.Button" id="button1">
+            <property name="MemberName" />
+            <property name="CanFocus">True</property>
+            <property name="Type">TextOnly</property>
+            <property name="Label" translatable="yes">Connect</property>
+            <property name="UseUnderline">True</property>
+            <signal name="Clicked" handler="OnButton1Clicked" />
+          </widget>
+          <packing>
+            <property name="TopAttach">1</property>
+            <property name="BottomAttach">2</property>
+            <property name="LeftAttach">1</property>
+            <property name="RightAttach">2</property>
+            <property name="AutoSize">True</property>
+            <property name="XOptions">Fill</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">False</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.ComboBox" id="cbDomains">
+            <property name="MemberName" />
+            <property name="IsTextCombo">True</property>
+            <property name="Items" translatable="yes" />
+            <signal name="Changed" handler="OnCbDomainsChanged" />
+          </widget>
+          <packing>
+            <property name="TopAttach">2</property>
+            <property name="BottomAttach">3</property>
+            <property name="LeftAttach">1</property>
+            <property name="RightAttach">2</property>
+            <property name="AutoSize">True</property>
+            <property name="XOptions">Fill</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">False</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Entry" id="entry1">
+            <property name="MemberName" />
+            <property name="CanFocus">True</property>
+            <property name="Text" translatable="yes">qemu+tcp://192.168.220.198/session</property>
+            <property name="IsEditable">True</property>
+          </widget>
+          <packing>
+            <property name="LeftAttach">1</property>
+            <property name="RightAttach">2</property>
+            <property name="AutoSize">True</property>
+            <property name="XOptions">Fill</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">False</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Frame" id="frame1">
+            <property name="MemberName" />
+            <property name="ShadowType">In</property>
+            <child>
+              <widget class="Gtk.Alignment" id="GtkAlignment">
+                <property name="MemberName" />
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LeftPadding">12</property>
+                <child>
+                  <widget class="Gtk.Table" id="table2">
+                    <property name="MemberName" />
+                    <property name="NRows">5</property>
+                    <property name="NColumns">2</property>
+                    <property name="RowSpacing">6</property>
+                    <property name="ColumnSpacing">6</property>
+                    <child>
+                      <widget class="Gtk.Entry" id="eCPUTime">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">4</property>
+                        <property name="BottomAttach">5</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eMaxMem">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eMemory">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eNumVirtCPU">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">3</property>
+                        <property name="BottomAttach">4</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eState">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label3">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">State :</property>
+                      </widget>
+                      <packing>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label4">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Max. memory :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label5">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Memory :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label6">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Num. virt CPU :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">3</property>
+                        <property name="BottomAttach">4</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label7">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">CPU time :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">4</property>
+                        <property name="BottomAttach">5</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="GtkLabel1">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">&lt;b&gt;Domain infos&lt;/b&gt;</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="TopAttach">3</property>
+            <property name="BottomAttach">4</property>
+            <property name="AutoSize">True</property>
+            <property name="XOptions">Fill</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">False</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Frame" id="frame2">
+            <property name="MemberName" />
+            <property name="ShadowType">In</property>
+            <child>
+              <widget class="Gtk.Alignment" id="GtkAlignment1">
+                <property name="MemberName" />
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LeftPadding">12</property>
+                <child>
+                  <widget class="Gtk.Table" id="table3">
+                    <property name="MemberName" />
+                    <property name="NRows">6</property>
+                    <property name="NColumns">2</property>
+                    <property name="RowSpacing">6</property>
+                    <property name="ColumnSpacing">6</property>
+                    <child>
+                      <widget class="Gtk.ComboBox" id="cbBlockDevice">
+                        <property name="MemberName" />
+                        <property name="IsTextCombo">True</property>
+                        <property name="Items" translatable="yes" />
+                        <signal name="Changed" handler="OnCbBlockDeviceChanged" />
+                      </widget>
+                      <packing>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eErrors">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">5</property>
+                        <property name="BottomAttach">6</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eReadBytes">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eReadRequests">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eWriteBytes">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">4</property>
+                        <property name="BottomAttach">5</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eWriteRequests">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">3</property>
+                        <property name="BottomAttach">4</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label10">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Read bytes :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label11">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Write requests :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">3</property>
+                        <property name="BottomAttach">4</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label12">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Write bytes :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">4</property>
+                        <property name="BottomAttach">5</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label13">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Errors :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">5</property>
+                        <property name="BottomAttach">6</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label8">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Block device :</property>
+                      </widget>
+                      <packing>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label9">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Read requests :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="GtkLabel2">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">&lt;b&gt;Block statistics&lt;/b&gt;</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="TopAttach">3</property>
+            <property name="BottomAttach">4</property>
+            <property name="LeftAttach">1</property>
+            <property name="RightAttach">2</property>
+            <property name="AutoSize">True</property>
+            <property name="XOptions">Fill</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">False</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Frame" id="frame4">
+            <property name="MemberName" />
+            <property name="ShadowType">In</property>
+            <child>
+              <widget class="Gtk.Alignment" id="GtkAlignment2">
+                <property name="MemberName" />
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LeftPadding">12</property>
+                <child>
+                  <widget class="Gtk.Table" id="table5">
+                    <property name="MemberName" />
+                    <property name="NRows">9</property>
+                    <property name="NColumns">2</property>
+                    <property name="RowSpacing">6</property>
+                    <property name="ColumnSpacing">6</property>
+                    <child>
+                      <widget class="Gtk.ComboBox" id="cbInterface">
+                        <property name="MemberName" />
+                        <property name="IsTextCombo">True</property>
+                        <property name="Items" translatable="yes" />
+                        <signal name="Changed" handler="OnCbInterfaceChanged" />
+                      </widget>
+                      <packing>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eRxBytes">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eRxDrops">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">4</property>
+                        <property name="BottomAttach">5</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eRxErrs">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">3</property>
+                        <property name="BottomAttach">4</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eRxPackets">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eTxBytes">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">5</property>
+                        <property name="BottomAttach">6</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eTxDrops">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">8</property>
+                        <property name="BottomAttach">9</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eTxErrs">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">7</property>
+                        <property name="BottomAttach">8</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Entry" id="eTxPackets">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="IsEditable">False</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">6</property>
+                        <property name="BottomAttach">7</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label15">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">Interface :</property>
+                      </widget>
+                      <packing>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label16">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">RxBytes :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label17">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">RxPackets :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label18">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">RxErrs :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">3</property>
+                        <property name="BottomAttach">4</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label19">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">RxDrops :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">4</property>
+                        <property name="BottomAttach">5</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label20">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">TxBytes :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">5</property>
+                        <property name="BottomAttach">6</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label21">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">TxPackets :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">6</property>
+                        <property name="BottomAttach">7</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label22">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">TxErrs :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">7</property>
+                        <property name="BottomAttach">8</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label23">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">TxDrops :</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">8</property>
+                        <property name="BottomAttach">9</property>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="GtkLabel3">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">&lt;b&gt;Interface statistics&lt;/b&gt;</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="TopAttach">4</property>
+            <property name="BottomAttach">5</property>
+            <property name="AutoSize">True</property>
+            <property name="XOptions">Fill</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">False</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Label" id="label1">
+            <property name="MemberName" />
+            <property name="LabelProp" translatable="yes">URI :</property>
+          </widget>
+          <packing>
+            <property name="AutoSize">True</property>
+            <property name="XOptions">Fill</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">False</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Label" id="label14">
+            <property name="MemberName" />
+            <property name="LabelProp" translatable="yes">Domain :</property>
+          </widget>
+          <packing>
+            <property name="TopAttach">2</property>
+            <property name="BottomAttach">3</property>
+            <property name="AutoSize">True</property>
+            <property name="XOptions">Fill</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">False</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</stetic-interface>
\ No newline at end of file
diff --git a/examples/MonoDevelop/virDomainStats/virDomainStats.csproj b/examples/MonoDevelop/virDomainStats/virDomainStats.csproj
new file mode 100644
index 0000000..355d8ef
--- /dev/null
+++ b/examples/MonoDevelop/virDomainStats/virDomainStats.csproj
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>9.0.21022</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{767373FC-96BE-420A-8219-97146D33B2CB}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <RootNamespace>virDomainStats</RootNamespace>
    <AssemblyName>virDomainStats</AssemblyName>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug</OutputPath>
    <DefineConstants>DEBUG</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <ConsolePause>false</ConsolePause>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>none</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Release</OutputPath>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <ConsolePause>false</ConsolePause>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="Mono.Posix" />
    <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Core">
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Include="gtk-gui\gui.stetic">
      <LogicalName>gui.stetic</LogicalName>
    </EmbeddedResource>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="gtk-gui\generated.cs" />
    <Compile Include="MainWindow.cs" />
    <Compile Include="gtk-gui\MainWindow.cs" />
    <Compile Include="Main.cs" />
    <Compile Include="AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\..\projects\MonoDevelop\LibvirtBindings.csproj">
      <Project>{C51C70EB-9040-4F8E-9A18-DF2A77D04A37}</Project>
      <Name>LibvirtBindings</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
diff --git a/examples/VisualStudio/virDomainStats/Form1.Designer.cs b/examples/VisualStudio/virDomainStats/Form1.Designer.cs
new file mode 100644
index 0000000..d3fb48b
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/Form1.Designer.cs
@@ -0,0 +1,620 @@
+﻿namespace virDomainStats
+{
+    partial class Form1
+    {
+        /// <summary>
+        /// Variable nécessaire au concepteur.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Nettoyage des ressources utilisées.
+        /// </summary>
+        /// <param name="disposing">true si les ressources managées doivent être supprimées ; sinon, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Code généré par le Concepteur Windows Form
+
+        /// <summary>
+        /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
+        /// le contenu de cette méthode avec l'éditeur de code.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.label1 = new System.Windows.Forms.Label();
+            this.tbURI = new System.Windows.Forms.TextBox();
+            this.btnConnect = new System.Windows.Forms.Button();
+            this.cbDomains = new System.Windows.Forms.ComboBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.label8 = new System.Windows.Forms.Label();
+            this.tbErrors = new System.Windows.Forms.TextBox();
+            this.label7 = new System.Windows.Forms.Label();
+            this.label6 = new System.Windows.Forms.Label();
+            this.tbWriteBytes = new System.Windows.Forms.TextBox();
+            this.tbWriteRequests = new System.Windows.Forms.TextBox();
+            this.label5 = new System.Windows.Forms.Label();
+            this.tbReadBytes = new System.Windows.Forms.TextBox();
+            this.label4 = new System.Windows.Forms.Label();
+            this.tbReadRequest = new System.Windows.Forms.TextBox();
+            this.label3 = new System.Windows.Forms.Label();
+            this.cbBlockDev = new System.Windows.Forms.ComboBox();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.label13 = new System.Windows.Forms.Label();
+            this.label12 = new System.Windows.Forms.Label();
+            this.label11 = new System.Windows.Forms.Label();
+            this.label10 = new System.Windows.Forms.Label();
+            this.label9 = new System.Windows.Forms.Label();
+            this.tbCpuTime = new System.Windows.Forms.TextBox();
+            this.tbNrVirtCpu = new System.Windows.Forms.TextBox();
+            this.tbMemory = new System.Windows.Forms.TextBox();
+            this.tbMaxMem = new System.Windows.Forms.TextBox();
+            this.tbState = new System.Windows.Forms.TextBox();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.label19 = new System.Windows.Forms.Label();
+            this.tbTxDrop = new System.Windows.Forms.TextBox();
+            this.label20 = new System.Windows.Forms.Label();
+            this.tbTxErrs = new System.Windows.Forms.TextBox();
+            this.label21 = new System.Windows.Forms.Label();
+            this.tbTxPackets = new System.Windows.Forms.TextBox();
+            this.tbTxBytes = new System.Windows.Forms.TextBox();
+            this.label22 = new System.Windows.Forms.Label();
+            this.label18 = new System.Windows.Forms.Label();
+            this.tbRxDrop = new System.Windows.Forms.TextBox();
+            this.label17 = new System.Windows.Forms.Label();
+            this.tbRxErrs = new System.Windows.Forms.TextBox();
+            this.label16 = new System.Windows.Forms.Label();
+            this.tbRxPackets = new System.Windows.Forms.TextBox();
+            this.tbRxBytes = new System.Windows.Forms.TextBox();
+            this.label15 = new System.Windows.Forms.Label();
+            this.label14 = new System.Windows.Forms.Label();
+            this.cbInterfaces = new System.Windows.Forms.ComboBox();
+            this.groupBox1.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            this.groupBox3.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(12, 15);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(32, 13);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "URI :";
+            // 
+            // tbURI
+            // 
+            this.tbURI.Location = new System.Drawing.Point(50, 12);
+            this.tbURI.Name = "tbURI";
+            this.tbURI.Size = new System.Drawing.Size(280, 20);
+            this.tbURI.TabIndex = 1;
+            this.tbURI.Text = "qemu+tcp://192.168.220.198/session";
+            // 
+            // btnConnect
+            // 
+            this.btnConnect.Location = new System.Drawing.Point(255, 38);
+            this.btnConnect.Name = "btnConnect";
+            this.btnConnect.Size = new System.Drawing.Size(75, 23);
+            this.btnConnect.TabIndex = 2;
+            this.btnConnect.Text = "&Connect";
+            this.btnConnect.UseVisualStyleBackColor = true;
+            this.btnConnect.Click += new System.EventHandler(this.Connect_Click);
+            // 
+            // cbDomains
+            // 
+            this.cbDomains.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cbDomains.FormattingEnabled = true;
+            this.cbDomains.Location = new System.Drawing.Point(67, 67);
+            this.cbDomains.Name = "cbDomains";
+            this.cbDomains.Size = new System.Drawing.Size(263, 21);
+            this.cbDomains.TabIndex = 3;
+            this.cbDomains.SelectedIndexChanged += new System.EventHandler(this.cbDomains_SelectedIndexChanged);
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(12, 70);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(49, 13);
+            this.label2.TabIndex = 4;
+            this.label2.Text = "Domain :";
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.label8);
+            this.groupBox1.Controls.Add(this.tbErrors);
+            this.groupBox1.Controls.Add(this.label7);
+            this.groupBox1.Controls.Add(this.label6);
+            this.groupBox1.Controls.Add(this.tbWriteBytes);
+            this.groupBox1.Controls.Add(this.tbWriteRequests);
+            this.groupBox1.Controls.Add(this.label5);
+            this.groupBox1.Controls.Add(this.tbReadBytes);
+            this.groupBox1.Controls.Add(this.label4);
+            this.groupBox1.Controls.Add(this.tbReadRequest);
+            this.groupBox1.Controls.Add(this.label3);
+            this.groupBox1.Controls.Add(this.cbBlockDev);
+            this.groupBox1.Location = new System.Drawing.Point(221, 94);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(204, 182);
+            this.groupBox1.TabIndex = 5;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "Block statistics";
+            // 
+            // label8
+            // 
+            this.label8.AutoSize = true;
+            this.label8.Location = new System.Drawing.Point(6, 153);
+            this.label8.Name = "label8";
+            this.label8.Size = new System.Drawing.Size(40, 13);
+            this.label8.TabIndex = 6;
+            this.label8.Text = "Errors :";
+            // 
+            // tbErrors
+            // 
+            this.tbErrors.Location = new System.Drawing.Point(94, 150);
+            this.tbErrors.Name = "tbErrors";
+            this.tbErrors.ReadOnly = true;
+            this.tbErrors.Size = new System.Drawing.Size(100, 20);
+            this.tbErrors.TabIndex = 13;
+            // 
+            // label7
+            // 
+            this.label7.AutoSize = true;
+            this.label7.Location = new System.Drawing.Point(6, 127);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(66, 13);
+            this.label7.TabIndex = 12;
+            this.label7.Text = "Write bytes :";
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(6, 101);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(81, 13);
+            this.label6.TabIndex = 11;
+            this.label6.Text = "Write requests :";
+            // 
+            // tbWriteBytes
+            // 
+            this.tbWriteBytes.Location = new System.Drawing.Point(94, 124);
+            this.tbWriteBytes.Name = "tbWriteBytes";
+            this.tbWriteBytes.ReadOnly = true;
+            this.tbWriteBytes.Size = new System.Drawing.Size(100, 20);
+            this.tbWriteBytes.TabIndex = 10;
+            // 
+            // tbWriteRequests
+            // 
+            this.tbWriteRequests.Location = new System.Drawing.Point(94, 98);
+            this.tbWriteRequests.Name = "tbWriteRequests";
+            this.tbWriteRequests.ReadOnly = true;
+            this.tbWriteRequests.Size = new System.Drawing.Size(100, 20);
+            this.tbWriteRequests.TabIndex = 9;
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Location = new System.Drawing.Point(6, 75);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(67, 13);
+            this.label5.TabIndex = 6;
+            this.label5.Text = "Read bytes :";
+            // 
+            // tbReadBytes
+            // 
+            this.tbReadBytes.Location = new System.Drawing.Point(94, 72);
+            this.tbReadBytes.Name = "tbReadBytes";
+            this.tbReadBytes.ReadOnly = true;
+            this.tbReadBytes.Size = new System.Drawing.Size(100, 20);
+            this.tbReadBytes.TabIndex = 8;
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(6, 49);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(82, 13);
+            this.label4.TabIndex = 7;
+            this.label4.Text = "Read requests :";
+            // 
+            // tbReadRequest
+            // 
+            this.tbReadRequest.Location = new System.Drawing.Point(94, 46);
+            this.tbReadRequest.Name = "tbReadRequest";
+            this.tbReadRequest.ReadOnly = true;
+            this.tbReadRequest.Size = new System.Drawing.Size(100, 20);
+            this.tbReadRequest.TabIndex = 6;
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(6, 22);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(75, 13);
+            this.label3.TabIndex = 6;
+            this.label3.Text = "Block device ;";
+            // 
+            // cbBlockDev
+            // 
+            this.cbBlockDev.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cbBlockDev.FormattingEnabled = true;
+            this.cbBlockDev.Location = new System.Drawing.Point(87, 19);
+            this.cbBlockDev.Name = "cbBlockDev";
+            this.cbBlockDev.Size = new System.Drawing.Size(107, 21);
+            this.cbBlockDev.TabIndex = 6;
+            this.cbBlockDev.SelectedIndexChanged += new System.EventHandler(this.cbBlockDev_SelectedIndexChanged);
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.label13);
+            this.groupBox2.Controls.Add(this.label12);
+            this.groupBox2.Controls.Add(this.label11);
+            this.groupBox2.Controls.Add(this.label10);
+            this.groupBox2.Controls.Add(this.label9);
+            this.groupBox2.Controls.Add(this.tbCpuTime);
+            this.groupBox2.Controls.Add(this.tbNrVirtCpu);
+            this.groupBox2.Controls.Add(this.tbMemory);
+            this.groupBox2.Controls.Add(this.tbMaxMem);
+            this.groupBox2.Controls.Add(this.tbState);
+            this.groupBox2.Location = new System.Drawing.Point(15, 94);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(200, 182);
+            this.groupBox2.TabIndex = 6;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "Domain Infos";
+            // 
+            // label13
+            // 
+            this.label13.AutoSize = true;
+            this.label13.Location = new System.Drawing.Point(6, 127);
+            this.label13.Name = "label13";
+            this.label13.Size = new System.Drawing.Size(61, 13);
+            this.label13.TabIndex = 7;
+            this.label13.Text = "CPU Time :";
+            // 
+            // label12
+            // 
+            this.label12.AutoSize = true;
+            this.label12.Location = new System.Drawing.Point(6, 101);
+            this.label12.Name = "label12";
+            this.label12.Size = new System.Drawing.Size(91, 13);
+            this.label12.TabIndex = 7;
+            this.label12.Text = "Num. Virt. CPUS :";
+            // 
+            // label11
+            // 
+            this.label11.AutoSize = true;
+            this.label11.Location = new System.Drawing.Point(6, 75);
+            this.label11.Name = "label11";
+            this.label11.Size = new System.Drawing.Size(50, 13);
+            this.label11.TabIndex = 7;
+            this.label11.Text = "Memory :";
+            // 
+            // label10
+            // 
+            this.label10.AutoSize = true;
+            this.label10.Location = new System.Drawing.Point(6, 49);
+            this.label10.Name = "label10";
+            this.label10.Size = new System.Drawing.Size(76, 13);
+            this.label10.TabIndex = 7;
+            this.label10.Text = "Max. Memory :";
+            // 
+            // label9
+            // 
+            this.label9.AutoSize = true;
+            this.label9.Location = new System.Drawing.Point(6, 22);
+            this.label9.Name = "label9";
+            this.label9.Size = new System.Drawing.Size(38, 13);
+            this.label9.TabIndex = 7;
+            this.label9.Text = "State :";
+            // 
+            // tbCpuTime
+            // 
+            this.tbCpuTime.Location = new System.Drawing.Point(103, 124);
+            this.tbCpuTime.Name = "tbCpuTime";
+            this.tbCpuTime.ReadOnly = true;
+            this.tbCpuTime.Size = new System.Drawing.Size(91, 20);
+            this.tbCpuTime.TabIndex = 11;
+            // 
+            // tbNrVirtCpu
+            // 
+            this.tbNrVirtCpu.Location = new System.Drawing.Point(103, 98);
+            this.tbNrVirtCpu.Name = "tbNrVirtCpu";
+            this.tbNrVirtCpu.ReadOnly = true;
+            this.tbNrVirtCpu.Size = new System.Drawing.Size(91, 20);
+            this.tbNrVirtCpu.TabIndex = 10;
+            // 
+            // tbMemory
+            // 
+            this.tbMemory.Location = new System.Drawing.Point(103, 72);
+            this.tbMemory.Name = "tbMemory";
+            this.tbMemory.ReadOnly = true;
+            this.tbMemory.Size = new System.Drawing.Size(91, 20);
+            this.tbMemory.TabIndex = 9;
+            // 
+            // tbMaxMem
+            // 
+            this.tbMaxMem.Location = new System.Drawing.Point(103, 46);
+            this.tbMaxMem.Name = "tbMaxMem";
+            this.tbMaxMem.ReadOnly = true;
+            this.tbMaxMem.Size = new System.Drawing.Size(91, 20);
+            this.tbMaxMem.TabIndex = 8;
+            // 
+            // tbState
+            // 
+            this.tbState.Location = new System.Drawing.Point(103, 19);
+            this.tbState.Name = "tbState";
+            this.tbState.ReadOnly = true;
+            this.tbState.Size = new System.Drawing.Size(91, 20);
+            this.tbState.TabIndex = 7;
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Controls.Add(this.label19);
+            this.groupBox3.Controls.Add(this.tbTxDrop);
+            this.groupBox3.Controls.Add(this.label20);
+            this.groupBox3.Controls.Add(this.tbTxErrs);
+            this.groupBox3.Controls.Add(this.label21);
+            this.groupBox3.Controls.Add(this.tbTxPackets);
+            this.groupBox3.Controls.Add(this.tbTxBytes);
+            this.groupBox3.Controls.Add(this.label22);
+            this.groupBox3.Controls.Add(this.label18);
+            this.groupBox3.Controls.Add(this.tbRxDrop);
+            this.groupBox3.Controls.Add(this.label17);
+            this.groupBox3.Controls.Add(this.tbRxErrs);
+            this.groupBox3.Controls.Add(this.label16);
+            this.groupBox3.Controls.Add(this.tbRxPackets);
+            this.groupBox3.Controls.Add(this.tbRxBytes);
+            this.groupBox3.Controls.Add(this.label15);
+            this.groupBox3.Controls.Add(this.label14);
+            this.groupBox3.Controls.Add(this.cbInterfaces);
+            this.groupBox3.Location = new System.Drawing.Point(15, 282);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Size = new System.Drawing.Size(410, 155);
+            this.groupBox3.TabIndex = 7;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "Interface satistics";
+            // 
+            // label19
+            // 
+            this.label19.AutoSize = true;
+            this.label19.Location = new System.Drawing.Point(212, 124);
+            this.label19.Name = "label19";
+            this.label19.Size = new System.Drawing.Size(48, 13);
+            this.label19.TabIndex = 26;
+            this.label19.Text = "TxDrop :";
+            // 
+            // tbTxDrop
+            // 
+            this.tbTxDrop.Location = new System.Drawing.Point(279, 121);
+            this.tbTxDrop.Name = "tbTxDrop";
+            this.tbTxDrop.ReadOnly = true;
+            this.tbTxDrop.Size = new System.Drawing.Size(121, 20);
+            this.tbTxDrop.TabIndex = 25;
+            // 
+            // label20
+            // 
+            this.label20.AutoSize = true;
+            this.label20.Location = new System.Drawing.Point(212, 98);
+            this.label20.Name = "label20";
+            this.label20.Size = new System.Drawing.Size(43, 13);
+            this.label20.TabIndex = 24;
+            this.label20.Text = "TxErrs :";
+            // 
+            // tbTxErrs
+            // 
+            this.tbTxErrs.Location = new System.Drawing.Point(279, 95);
+            this.tbTxErrs.Name = "tbTxErrs";
+            this.tbTxErrs.ReadOnly = true;
+            this.tbTxErrs.Size = new System.Drawing.Size(121, 20);
+            this.tbTxErrs.TabIndex = 23;
+            // 
+            // label21
+            // 
+            this.label21.AutoSize = true;
+            this.label21.Location = new System.Drawing.Point(212, 72);
+            this.label21.Name = "label21";
+            this.label21.Size = new System.Drawing.Size(64, 13);
+            this.label21.TabIndex = 22;
+            this.label21.Text = "TxPackets :";
+            // 
+            // tbTxPackets
+            // 
+            this.tbTxPackets.Location = new System.Drawing.Point(279, 69);
+            this.tbTxPackets.Name = "tbTxPackets";
+            this.tbTxPackets.ReadOnly = true;
+            this.tbTxPackets.Size = new System.Drawing.Size(121, 20);
+            this.tbTxPackets.TabIndex = 21;
+            // 
+            // tbTxBytes
+            // 
+            this.tbTxBytes.Location = new System.Drawing.Point(279, 43);
+            this.tbTxBytes.Name = "tbTxBytes";
+            this.tbTxBytes.ReadOnly = true;
+            this.tbTxBytes.Size = new System.Drawing.Size(121, 20);
+            this.tbTxBytes.TabIndex = 20;
+            // 
+            // label22
+            // 
+            this.label22.AutoSize = true;
+            this.label22.Location = new System.Drawing.Point(212, 46);
+            this.label22.Name = "label22";
+            this.label22.Size = new System.Drawing.Size(51, 13);
+            this.label22.TabIndex = 19;
+            this.label22.Text = "TxBytes :";
+            // 
+            // label18
+            // 
+            this.label18.AutoSize = true;
+            this.label18.Location = new System.Drawing.Point(6, 124);
+            this.label18.Name = "label18";
+            this.label18.Size = new System.Drawing.Size(49, 13);
+            this.label18.TabIndex = 18;
+            this.label18.Text = "RxDrop :";
+            // 
+            // tbRxDrop
+            // 
+            this.tbRxDrop.Location = new System.Drawing.Point(73, 121);
+            this.tbRxDrop.Name = "tbRxDrop";
+            this.tbRxDrop.ReadOnly = true;
+            this.tbRxDrop.Size = new System.Drawing.Size(121, 20);
+            this.tbRxDrop.TabIndex = 17;
+            // 
+            // label17
+            // 
+            this.label17.AutoSize = true;
+            this.label17.Location = new System.Drawing.Point(6, 98);
+            this.label17.Name = "label17";
+            this.label17.Size = new System.Drawing.Size(44, 13);
+            this.label17.TabIndex = 16;
+            this.label17.Text = "RxErrs :";
+            // 
+            // tbRxErrs
+            // 
+            this.tbRxErrs.Location = new System.Drawing.Point(73, 95);
+            this.tbRxErrs.Name = "tbRxErrs";
+            this.tbRxErrs.ReadOnly = true;
+            this.tbRxErrs.Size = new System.Drawing.Size(121, 20);
+            this.tbRxErrs.TabIndex = 15;
+            // 
+            // label16
+            // 
+            this.label16.AutoSize = true;
+            this.label16.Location = new System.Drawing.Point(6, 72);
+            this.label16.Name = "label16";
+            this.label16.Size = new System.Drawing.Size(65, 13);
+            this.label16.TabIndex = 14;
+            this.label16.Text = "RxPackets :";
+            // 
+            // tbRxPackets
+            // 
+            this.tbRxPackets.Location = new System.Drawing.Point(73, 69);
+            this.tbRxPackets.Name = "tbRxPackets";
+            this.tbRxPackets.ReadOnly = true;
+            this.tbRxPackets.Size = new System.Drawing.Size(121, 20);
+            this.tbRxPackets.TabIndex = 13;
+            // 
+            // tbRxBytes
+            // 
+            this.tbRxBytes.Location = new System.Drawing.Point(73, 43);
+            this.tbRxBytes.Name = "tbRxBytes";
+            this.tbRxBytes.ReadOnly = true;
+            this.tbRxBytes.Size = new System.Drawing.Size(121, 20);
+            this.tbRxBytes.TabIndex = 12;
+            // 
+            // label15
+            // 
+            this.label15.AutoSize = true;
+            this.label15.Location = new System.Drawing.Point(6, 46);
+            this.label15.Name = "label15";
+            this.label15.Size = new System.Drawing.Size(52, 13);
+            this.label15.TabIndex = 8;
+            this.label15.Text = "RxBytes :";
+            // 
+            // label14
+            // 
+            this.label14.AutoSize = true;
+            this.label14.Location = new System.Drawing.Point(6, 22);
+            this.label14.Name = "label14";
+            this.label14.Size = new System.Drawing.Size(55, 13);
+            this.label14.TabIndex = 8;
+            this.label14.Text = "Interface :";
+            // 
+            // cbInterfaces
+            // 
+            this.cbInterfaces.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cbInterfaces.FormattingEnabled = true;
+            this.cbInterfaces.Location = new System.Drawing.Point(73, 19);
+            this.cbInterfaces.Name = "cbInterfaces";
+            this.cbInterfaces.Size = new System.Drawing.Size(121, 21);
+            this.cbInterfaces.TabIndex = 8;
+            this.cbInterfaces.SelectedIndexChanged += new System.EventHandler(this.cbInterfaces_SelectedIndexChanged);
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(431, 442);
+            this.Controls.Add(this.groupBox3);
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.groupBox1);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.cbDomains);
+            this.Controls.Add(this.btnConnect);
+            this.Controls.Add(this.tbURI);
+            this.Controls.Add(this.label1);
+            this.Name = "Form1";
+            this.Text = "Form1";
+            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            this.groupBox3.ResumeLayout(false);
+            this.groupBox3.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.TextBox tbURI;
+        private System.Windows.Forms.Button btnConnect;
+        private System.Windows.Forms.ComboBox cbDomains;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.ComboBox cbBlockDev;
+        private System.Windows.Forms.TextBox tbReadRequest;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.TextBox tbReadBytes;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.TextBox tbWriteBytes;
+        private System.Windows.Forms.TextBox tbWriteRequests;
+        private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.TextBox tbErrors;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.Label label13;
+        private System.Windows.Forms.Label label12;
+        private System.Windows.Forms.Label label11;
+        private System.Windows.Forms.Label label10;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.TextBox tbCpuTime;
+        private System.Windows.Forms.TextBox tbNrVirtCpu;
+        private System.Windows.Forms.TextBox tbMemory;
+        private System.Windows.Forms.TextBox tbMaxMem;
+        private System.Windows.Forms.TextBox tbState;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private System.Windows.Forms.Label label14;
+        private System.Windows.Forms.ComboBox cbInterfaces;
+        private System.Windows.Forms.Label label19;
+        private System.Windows.Forms.TextBox tbTxDrop;
+        private System.Windows.Forms.Label label20;
+        private System.Windows.Forms.TextBox tbTxErrs;
+        private System.Windows.Forms.Label label21;
+        private System.Windows.Forms.TextBox tbTxPackets;
+        private System.Windows.Forms.TextBox tbTxBytes;
+        private System.Windows.Forms.Label label22;
+        private System.Windows.Forms.Label label18;
+        private System.Windows.Forms.TextBox tbRxDrop;
+        private System.Windows.Forms.Label label17;
+        private System.Windows.Forms.TextBox tbRxErrs;
+        private System.Windows.Forms.Label label16;
+        private System.Windows.Forms.TextBox tbRxPackets;
+        private System.Windows.Forms.TextBox tbRxBytes;
+        private System.Windows.Forms.Label label15;
+    }
+}
+
diff --git a/examples/VisualStudio/virDomainStats/Form1.cs b/examples/VisualStudio/virDomainStats/Form1.cs
new file mode 100644
index 0000000..b4fdf48
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/Form1.cs
@@ -0,0 +1,131 @@
+﻿/*
 * Copyright (C)
 *   Arnaud Champion <arnaud.champion@devatom.fr>
 *   Jaromír Červenka <cervajz@cervajz.com>
 *
 * See COPYING.LIB for the License of this software
 * 
 * Sample code for :
 * Functions :
 *      Connect.Open
 *      Connect.NumOfDomains
 *      Connect.ListDomains
 *      Domain.BlockStats
 *      Domain.GetInfo
 *      Domain.GetName
 *      Domain.GetXMLDesc
 *      Domain.InterfaceStats
 *      Domain.ListDomains
 *      Domain.LookupByID
 *      Domain.LookupByName
 *      Errors.SetErrorFunc
 * 
 * Types :
 *      DomainBlockStatsStruct
 *      DomainInterfaceStatsStruct
 *      DomainInfo
 *      Error
 *      
 */
+
+using System;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Windows.Forms;
+using System.Xml;
+using Libvirt;
+
+namespace virDomainStats
+{
+    public partial class Form1 : Form
+    {
+        private IntPtr _conn;
+        private IntPtr _domainPtr;
+
+        public Form1()
+        {
+            InitializeComponent();
+        }
+
+        private void Connect_Click(object sender, EventArgs e)
+        {
+            _conn = Connect.Open(tbURI.Text);
+            Errors.SetErrorFunc(IntPtr.Zero, ErrorCallback);
+            int nbDomains = Connect.NumOfDomains(_conn);
+            int[] domainIDs = new int[nbDomains];
+            Connect.ListDomains(_conn, domainIDs, nbDomains);
+            foreach (IntPtr domainPtr in domainIDs.Select(domainID => Domain.LookupByID(_conn, domainID)))
+            {
+                cbDomains.Items.Add(Domain.GetName(domainPtr));
+                Domain.Free(domainPtr);
+            }
+            cbDomains.SelectedIndex = 0;
+        }
+
+        private void cbDomains_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            _domainPtr = Domain.LookupByName(_conn, cbDomains.Text);
+
+            UpdateDomainInfo();
+
+            cbBlockDev.Items.Clear();
+            foreach (string dev in  GetDomainBlockDevices(Domain.GetXMLDesc(_domainPtr, 0)))
+            {
+                cbBlockDev.Items.Add(dev);
+            }
+            cbBlockDev.SelectedIndex = 0;
+
+            cbInterfaces.Items.Clear();
+            foreach (string iface in GetDomainInterfaces(Domain.GetXMLDesc(_domainPtr, 0)))
+            {
+                cbInterfaces.Items.Add(iface);
+            }
+            cbInterfaces.SelectedIndex = 0;
+        }
+
+        private string[] GetDomainInterfaces(string xmlDomainDescription)
+        {
+            XmlDocument xmlDescription = new XmlDocument();
+            xmlDescription.LoadXml(xmlDomainDescription);
+            XmlNodeList iFaceNodeList = xmlDescription.SelectNodes("//domain/devices/interface");
+
+            return (from XmlNode xn in iFaceNodeList select xn.SelectSingleNode("target").Attributes["dev"].Value).ToArray();
+        }
+
+        private void UpdateDomainInfo()
+        {
+            DomainInfo domainInfo = new DomainInfo();
+            Domain.GetInfo(_domainPtr, domainInfo);
+
+            tbState.Text = domainInfo.State.ToString();
+            tbMaxMem.Text = domainInfo.maxMem.ToString();
+            tbMemory.Text = domainInfo.memory.ToString();
+            tbNrVirtCpu.Text = domainInfo.nrVirtCpu.ToString();
+            tbCpuTime.Text = domainInfo.cpuTime.ToString();
+        }
+
+        private string[] GetDomainBlockDevices(string xmlDomainDescription)
+        {
+            XmlDocument xmlDescription = new XmlDocument();
+            xmlDescription.LoadXml(xmlDomainDescription);
+            XmlNodeList devNodeList = xmlDescription.SelectNodes("//domain/devices/disk");
+
+            return (from XmlNode xn in devNodeList select xn.SelectSingleNode("target").Attributes["dev"].Value).ToArray();
+        }
+
+        private void cbBlockDev_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            DomainBlockStatsStruct blockStat;
+            Domain.BlockStats(_domainPtr, cbBlockDev.Text, out blockStat);//, Marshal.SizeOf(blockStat));
+
+            tbReadRequest.Text = blockStat.rd_req.ToString();
+            tbReadBytes.Text = blockStat.rd_bytes.ToString();
+            tbWriteRequests.Text = blockStat.wr_req.ToString();
+            tbWriteBytes.Text = blockStat.wr_bytes.ToString();
+            tbErrors.Text = blockStat.errs.ToString();
+        }
+
+        private void ErrorCallback(IntPtr userData, Error error)
+        {
+            ShowError(error);
+        }
+
+        private void ShowError(Error libvirtError)
+        {
+            string ErrorBoxMessage = string.Format("Error number : {0}. Error message : {1}", libvirtError.code, libvirtError.Message);
+            MessageBox.Show(ErrorBoxMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+
+        private void cbInterfaces_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            DomainInterfaceStatsStruct interfaceStat;
+            Domain.InterfaceStats(_domainPtr, cbInterfaces.Text, out interfaceStat);
+            tbRxBytes.Text = interfaceStat.rx_bytes.ToString();
+            tbRxDrop.Text = interfaceStat.rx_drop.ToString();
+            tbRxErrs.Text = interfaceStat.rx_errs.ToString();
+            tbRxPackets.Text = interfaceStat.rx_packets.ToString();
+            tbTxBytes.Text = interfaceStat.tx_bytes.ToString();
+            tbTxDrop.Text = interfaceStat.tx_drop.ToString();
+            tbTxErrs.Text = interfaceStat.tx_errs.ToString();
+            tbTxPackets.Text = interfaceStat.tx_packets.ToString();
+        }
+
+        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            Domain.Free(_domainPtr);
+            Connect.Close(_conn);
+        }
+    }
+}
diff --git a/examples/VisualStudio/virDomainStats/Form1.resx b/examples/VisualStudio/virDomainStats/Form1.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/Form1.resx
@@ -0,0 +1,120 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/examples/VisualStudio/virDomainStats/Program.cs b/examples/VisualStudio/virDomainStats/Program.cs
new file mode 100644
index 0000000..7bb1f22
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/Program.cs
@@ -0,0 +1,21 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace virDomainStats
+{
+    static class Program
+    {
+        /// <summary>
+        /// Point d'entrée principal de l'application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Form1());
+        }
+    }
+}
diff --git a/examples/VisualStudio/virDomainStats/Properties/AssemblyInfo.cs b/examples/VisualStudio/virDomainStats/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..942af3f
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Les informations générales relatives à un assembly dépendent de 
+// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
+// associées à un assembly.
+[assembly: AssemblyTitle("virDomainStats")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("virDomainStats")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly 
+// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de 
+// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
+[assembly: ComVisible(false)]
+
+// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
+[assembly: Guid("c3dea695-d7b1-4713-979b-2a0a975256a0")]
+
+// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
+//
+//      Version principale
+//      Version secondaire 
+//      Numéro de build
+//      Révision
+//
+// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut 
+// en utilisant '*', comme indiqué ci-dessous :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/examples/VisualStudio/virDomainStats/Properties/Resources.Designer.cs b/examples/VisualStudio/virDomainStats/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..06238c0
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     Ce code a été généré par un outil.
+//     Version du runtime :4.0.30319.1
+//
+//     Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
+//     le code est régénéré.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace virDomainStats.Properties
+{
+
+
+    /// <summary>
+    ///   Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
+    /// </summary>
+    // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
+    // à l'aide d'un outil, tel que ResGen ou Visual Studio.
+    // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
+    // avec l'option /str ou régénérez votre projet VS.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("virDomainStats.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   Remplace la propriété CurrentUICulture du thread actuel pour toutes
+        ///   les recherches de ressources à l'aide de cette classe de ressource fortement typée.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}
diff --git a/examples/VisualStudio/virDomainStats/Properties/Resources.resx b/examples/VisualStudio/virDomainStats/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/Properties/Resources.resx
@@ -0,0 +1,117 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/examples/VisualStudio/virDomainStats/Properties/Settings.Designer.cs b/examples/VisualStudio/virDomainStats/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..0d798b9
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace virDomainStats.Properties
+{
+
+
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}
diff --git a/examples/VisualStudio/virDomainStats/Properties/Settings.settings b/examples/VisualStudio/virDomainStats/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/Properties/Settings.settings
@@ -0,0 +1,7 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>
diff --git a/examples/VisualStudio/virDomainStats/virDomainStats.csproj b/examples/VisualStudio/virDomainStats/virDomainStats.csproj
new file mode 100644
index 0000000..dcd275c
--- /dev/null
+++ b/examples/VisualStudio/virDomainStats/virDomainStats.csproj
@@ -0,0 +1,93 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>virDomainStats</RootNamespace>
+    <AssemblyName>virDomainStats</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="Form1.resx">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\projects\VisualStudio\LibvirtBindings.csproj">
+      <Project>{592FE0DB-C205-4934-BD20-79BDAB1584C1}</Project>
+      <Name>LibvirtBindings</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/projects/MonoDevelop/LibvirtBindings.sln b/projects/MonoDevelop/LibvirtBindings.sln
index c2258ce..a737c5a 100644
--- a/projects/MonoDevelop/LibvirtBindings.sln
+++ b/projects/MonoDevelop/LibvirtBindings.sln
@@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "virEventRegisterImpl", "..\
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "virConnectSetErrorFunc", "..\..\examples\MonoDevelop\virConnectSetErrorFunc\virConnectSetErrorFunc.csproj", "{243DD685-9AB3-4CD0-93D5-92034C1D97D8}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "virDomainStats", "..\..\examples\MonoDevelop\virDomainStats\virDomainStats.csproj", "{767373FC-96BE-420A-8219-97146D33B2CB}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -31,6 +33,10 @@ Global
 		{4576BB61-F143-4BC8-BD1D-D50F710CEA10}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{4576BB61-F143-4BC8-BD1D-D50F710CEA10}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4576BB61-F143-4BC8-BD1D-D50F710CEA10}.Release|Any CPU.Build.0 = Release|Any CPU
+		{767373FC-96BE-420A-8219-97146D33B2CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{767373FC-96BE-420A-8219-97146D33B2CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{767373FC-96BE-420A-8219-97146D33B2CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{767373FC-96BE-420A-8219-97146D33B2CB}.Release|Any CPU.Build.0 = Release|Any CPU
 		{C51C70EB-9040-4F8E-9A18-DF2A77D04A37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C51C70EB-9040-4F8E-9A18-DF2A77D04A37}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{C51C70EB-9040-4F8E-9A18-DF2A77D04A37}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -45,8 +51,9 @@ Global
 		{FFCD939E-7F9A-44D5-AEBC-84F40942E8B5} = {504BA6A7-9D0E-44BA-827D-D797773347FD}
 		{4576BB61-F143-4BC8-BD1D-D50F710CEA10} = {504BA6A7-9D0E-44BA-827D-D797773347FD}
 		{243DD685-9AB3-4CD0-93D5-92034C1D97D8} = {504BA6A7-9D0E-44BA-827D-D797773347FD}
+		{767373FC-96BE-420A-8219-97146D33B2CB} = {504BA6A7-9D0E-44BA-827D-D797773347FD}
 	EndGlobalSection
 	GlobalSection(MonoDevelopProperties) = preSolution
-		StartupItem = ..\..\examples\MonoDevelop\virConnectSetErrorFunc\virConnectSetErrorFunc.csproj
+		StartupItem = ..\..\examples\MonoDevelop\virDomainStats\virDomainStats.csproj
 	EndGlobalSection
 EndGlobal
diff --git a/projects/VisualStudio/LibvirtBindings.sln b/projects/VisualStudio/LibvirtBindings.sln
index 106fe54..3606f4e 100644
--- a/projects/VisualStudio/LibvirtBindings.sln
+++ b/projects/VisualStudio/LibvirtBindings.sln
@@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "virEventRegisterImpl", "..\
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "virConnectSetErrorFunc", "..\..\examples\VisualStudio\virConnectSetErrorFunc\virConnectSetErrorFunc.csproj", "{C528AE73-95C1-4D92-961F-3B35A55E3E30}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "virDomainStats", "..\..\examples\VisualStudio\virDomainStats\virDomainStats.csproj", "{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -73,6 +75,16 @@ Global
 		{C528AE73-95C1-4D92-961F-3B35A55E3E30}.Release|Mixed Platforms.Build.0 = Release|x86
 		{C528AE73-95C1-4D92-961F-3B35A55E3E30}.Release|x86.ActiveCfg = Release|x86
 		{C528AE73-95C1-4D92-961F-3B35A55E3E30}.Release|x86.Build.0 = Release|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Debug|x86.ActiveCfg = Debug|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Debug|x86.Build.0 = Debug|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Release|Any CPU.ActiveCfg = Release|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Release|Mixed Platforms.Build.0 = Release|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Release|x86.ActiveCfg = Release|x86
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -82,5 +94,6 @@ Global
 		{54F79BD5-8E81-4100-BD13-C63072D00B0B} = {AB0DC218-8ABA-4351-AD87-361AF7AF71C9}
 		{E3319DF1-30AA-4B43-82A3-B66463F07305} = {AB0DC218-8ABA-4351-AD87-361AF7AF71C9}
 		{C528AE73-95C1-4D92-961F-3B35A55E3E30} = {AB0DC218-8ABA-4351-AD87-361AF7AF71C9}
+		{3BB761F4-FD1F-4089-9FBA-F84CA7452F6E} = {AB0DC218-8ABA-4351-AD87-361AF7AF71C9}
 	EndGlobalSection
 EndGlobal
-- 
1.7.2.3.msysgit.0

