using System; using System.Reflection; using System.Collections; using Gtk; using Glade; public class ABMGenerico { Glade.XML xml; [Widget] Table tabla; Type current; public ABMGenerico (Type objectType) { PropertyInfo[] properties = objectType.GetProperties (); current = objectType; xml = new Glade.XML (null, "abm_generico.glade", "abm_one", null); xml.Autoconnect (this); uint i=0; foreach( PropertyInfo mf in properties ) { Widget l = GetWidget (mf); if (l != null) { tabla.Attach (l, 0, 1, i, i+1); Entry e = new Entry (); tabla.Attach (e, 1, 2, i, i+1); l.Show (); e.Show (); } i++; } } private Widget GetWidget (PropertyInfo mf) { Widget w = null; if (mf.PropertyType.Equals (typeof(string)) || mf.PropertyType.Equals (typeof(int)) || mf.PropertyType.Equals (typeof(float))) { Label l = new Label (GetLabel (mf.Name) + " : "); l.Justify = Justification.Left; l.Xpad = 0; l.Xalign = 0; w = l; } return w; } private string GetLabel (string name) { int i = 0; string s = (string)name.Clone (); while (i < s.Length) { if (Char.IsUpper(s[i]) && (i>0)) { s = s.Insert (i, " "); i++; } i++; } return s; } public void OnDialogResponse (object o, ResponseArgs args) { if (args.ResponseId == ResponseType.Cancel) return; } public void Run () { Dialog w = (Dialog)xml.GetWidget ("abm_one"); w.Run (); w.Destroy (); } }