2 using System
.Collections
;
8 class PluginToolbox
: TreeView
10 private Statusbar status
;
11 private Schematic schematic
;
13 private void Populate(TreeStore store
, TreeIter parent
, ArrayList plugins
)
15 foreach(IFactory p
in plugins
)
16 store
.AppendValues(parent
, p
.Info
.Name
, p
);
19 private bool HasParent(TreeModel model
, TreeIter iter
)
23 return model
.IterParent(out ti
, iter
);
26 private bool HasParent(TreePath path
)
28 return path
.Depth
> 1;
31 private void RenderCell(TreeViewColumn column
, CellRenderer cell
, TreeModel model
, TreeIter iter
)
33 if(HasParent(model
, iter
))
34 (cell
as CellRendererText
).Font
= "Normal";
36 (cell
as CellRendererText
).Font
= "Bold";
38 (cell
as CellRendererText
).Markup
= (string)model
.GetValue(iter
, 0);
41 protected override void OnRowActivated(TreePath path
, TreeViewColumn column
)
46 Selection
.GetSelected(out iter
);
47 IFactory f
= Model
.GetValue(iter
, 1) as IFactory
;
48 IPlugin p
= f
.Create();
49 p
.Source
= PluginDB
.Origin
[f
];
54 protected override bool OnButtonPressEvent(Gdk
.EventButton ev
)
56 base.OnButtonPressEvent(ev
);
61 Selection
.GetSelected(out iter
);
62 if(HasParent(Model
, iter
))
64 IFactory f
= Model
.GetValue(iter
, 1) as IFactory
;
66 status
.Push(1, String
.Format(Catalog
.GetString("{0} plugin selected"), f
.Info
.Name
));
71 ImageMenuItem m1
= new ImageMenuItem(Catalog
.GetString("A_dd"));
72 m1
.Image
= new Image(null, "list-add.png");
73 m1
.Activated
+= delegate(object sender
, EventArgs e
)
75 IPlugin p
= f
.Create();
76 p
.Source
= PluginDB
.Origin
[f
];
81 SeparatorMenuItem s
= new SeparatorMenuItem();
84 ImageMenuItem m2
= new ImageMenuItem(Catalog
.GetString("_About"));
85 m2
.Image
= new Image(null, "help-browser.png");
86 m2
.Activated
+= delegate(object sender
, EventArgs e
) { new PluginAbout(f); }
;
97 public PluginToolbox(Statusbar status
, Schematic schematic
) : base()
100 this.schematic
= schematic
;
102 TreeStore store
= new TreeStore(typeof(string), typeof(IFactory
));
104 TreeIter iter
= store
.AppendValues(Catalog
.GetString("Input"));
105 Populate(store
, iter
, PluginDB
.In
);
107 iter
= store
.AppendValues(Catalog
.GetString("Image processing"));
108 Populate(store
, iter
, PluginDB
.ImgProc
);
110 iter
= store
.AppendValues(Catalog
.GetString("Comparator"));
111 Populate(store
, iter
, PluginDB
.Comparator
);
113 iter
= store
.AppendValues(Catalog
.GetString("Result processing"));
114 Populate(store
, iter
, PluginDB
.ResProc
);
116 iter
= store
.AppendValues(Catalog
.GetString("Output"));
117 Populate(store
, iter
, PluginDB
.Out
);
119 iter
= store
.AppendValues(Catalog
.GetString("Other"));
120 Populate(store
, iter
, PluginDB
.Other
);
123 HeadersVisible
= false;
125 CellRendererText cr
= new CellRendererText();
126 AppendColumn("Name", cr
, "text", 0);
127 Columns
[0].SetCellDataFunc(cr
, RenderCell
);