ListBox.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // System.Windows.Forms.ListBox
  3. //
  4. // Author:
  5. // Joel Basson ([email protected])
  6. //
  7. //
  8. using System;
  9. using System.Drawing;
  10. using Gtk;
  11. using GtkSharp;
  12. using GLib;
  13. namespace System.Windows.Forms {
  14. /// <summary>
  15. /// Represents a Windows ListBox control.
  16. ///
  17. /// </summary>
  18. public class ListBox: ListControl{
  19. ListStore store = null;
  20. TreeIter iter = new TreeIter ();
  21. public ItemCollection Items;
  22. //ListStore store = new ListStore ((int)TypeFundamentals.TypeString);
  23. public class ItemCollection {
  24. ListBox owner;
  25. TreeIter iter = new TreeIter ();
  26. public ItemCollection (ListBox owner){
  27. this.owner = owner;
  28. owner.store = new ListStore ((int)TypeFundamentals.TypeString);
  29. }
  30. public void Add(String items){
  31. Value value = new Value(items);
  32. owner.store.Append (out iter);
  33. owner.store.SetValue (iter, 0, value);
  34. owner.UpdateStore();
  35. }
  36. }
  37. public ListBox () : base (){
  38. this.Items = new ItemCollection(this);
  39. }
  40. internal override Gtk.Widget CreateWidget () {
  41. ListStore store = new ListStore ((int)TypeFundamentals.TypeString);
  42. TreeView tv = new TreeView ();
  43. tv.HeadersVisible = true;
  44. tv.HeadersClickable = false;
  45. tv.EnableSearch = false;
  46. TreeViewColumn NameCol = new TreeViewColumn ();
  47. CellRenderer NameRenderer = new CellRendererText ();
  48. NameCol.Title = "Name";
  49. NameCol.PackStart (NameRenderer, true);
  50. NameCol.AddAttribute (NameRenderer, "text", 0);
  51. tv.AppendColumn (NameCol);
  52. tv.Model = store;
  53. return tv;
  54. }
  55. public void UpdateStore () {
  56. ((Gtk.TreeView)Widget).Model = store;
  57. }
  58. protected override void RefreshItem(int index) {
  59. //FIXME:
  60. }
  61. public override int SelectedIndex {
  62. get{
  63. throw new NotImplementedException ();
  64. }
  65. set{
  66. //FIXME:
  67. }
  68. }
  69. }
  70. }