static Gtk.Widget CreateWidget(CommandEntry entry) { if (entry.CommandId == Command.Separator) { return(new Gtk.SeparatorToolItem()); } Command cmd = entry.GetCommand(IdeApp.CommandService); if (cmd == null) { return(new Gtk.Label()); } if (cmd is CustomCommand) { Gtk.Widget ti = (Gtk.Widget)Activator.CreateInstance(((CustomCommand)cmd).WidgetType); if (cmd.Text != null && cmd.Text.Length > 0) { //strip "_" accelerators from tooltips string text = cmd.Text; while (true) { int underscoreIndex = text.IndexOf('_'); if (underscoreIndex > -1) { text = text.Remove(underscoreIndex, 1); } else { break; } } ti.TooltipText = text; } return(ti); } ActionCommand acmd = cmd as ActionCommand; if (acmd == null) { throw new InvalidOperationException("Unknown cmd type."); } if (acmd.CommandArray) { throw new InvalidOperationException("Command arrays not supported."); } else if (acmd.ActionType == ActionType.Normal) { return(new Button()); } else { return(new ToggleButton()); } }