Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Karlaš <david.karlas@xamarin.com>2014-12-01 15:25:28 +0300
committerDavid Karlaš <david.karlas@xamarin.com>2014-12-01 15:25:28 +0300
commit54bdd290bd76b6c2aea84d2fd095aefd9901b9bc (patch)
tree0c4b004256c161418fd7d05e56fc1d2ce431c796 /main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer
parent76bb27c8e75a36675f250ced66d013f328ddff6b (diff)
[DebuggerVisualizers] Value Visualizer Dialog changed from ComboBox to Buttons for selecting between visualizers
Diffstat (limited to 'main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer')
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs51
1 files changed, 33 insertions, 18 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs
index c4b708a94b..c81a76e95f 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs
@@ -28,62 +28,77 @@ using System;
using System.Linq;
using System.Collections.Generic;
using Mono.Debugging.Client;
+using Gtk;
namespace MonoDevelop.Debugger.Viewers
{
public partial class ValueVisualizerDialog : Gtk.Dialog
{
List<ValueVisualizer> visualizers;
+ List<ToggleButton> buttons;
Gtk.Widget currentWidget;
ValueVisualizer currentVisualizer;
ObjectValue value;
-
+
public ValueVisualizerDialog ()
{
this.Build ();
this.Modal = true;
}
-
+
public void Show (ObjectValue val)
{
value = val;
visualizers = new List<ValueVisualizer> (DebuggingService.GetValueVisualizers (val));
visualizers.Sort ((v1, v2) => string.Compare (v1.Name, v2.Name, StringComparison.CurrentCultureIgnoreCase));
+ buttons = new List<ToggleButton> ();
- int defaultVis = 0;
- int n = 0;
+ Gtk.Button defaultVis = null;
- foreach (ValueVisualizer vis in visualizers) {
- comboVisualizers.AppendText (vis.Name);
- if (vis.IsDefaultVisualizer (val))
- defaultVis = n;
- n++;
+ for (int i = 0; i < visualizers.Count; i++) {
+ var button = new ToggleButton ();
+ button.Label = visualizers [i].Name;
+ button.Toggled += OnComboVisualizersChanged;
+ if (visualizers [i].IsDefaultVisualizer (val))
+ defaultVis = button;
+ hbox1.PackStart (button, false, false, 0);
+ buttons.Add (button);
+ button.CanFocus = false;
+ button.Show ();
}
- comboVisualizers.Active = defaultVis;
+ defaultVis.Click ();
if (val.IsReadOnly || !visualizers.Any (v => v.CanEdit (val))) {
buttonCancel.Label = Gtk.Stock.Close;
buttonSave.Hide ();
}
}
-
+
protected virtual void OnComboVisualizersChanged (object sender, EventArgs e)
{
+ var button = (ToggleButton)sender;
+ if (!button.Active) {//Prevent un-toggling
+ button.Toggled -= OnComboVisualizersChanged;
+ button.Active = true;
+ button.Toggled += OnComboVisualizersChanged;
+ return;
+ }
if (currentWidget != null)
mainBox.Remove (currentWidget);
-
- if (comboVisualizers.Active == -1) {
- buttonSave.Sensitive = false;
- return;
+ foreach (var b in buttons) {
+ if (b != button && b.Active) {
+ b.Toggled -= OnComboVisualizersChanged;
+ b.Active = false;
+ b.Toggled += OnComboVisualizersChanged;
+ }
}
-
- currentVisualizer = visualizers [comboVisualizers.Active];
+ currentVisualizer = visualizers [buttons.IndexOf (button)];
currentWidget = currentVisualizer.GetVisualizerWidget (value);
buttonSave.Sensitive = currentVisualizer.CanEdit (value);
mainBox.PackStart (currentWidget, true, true, 0);
currentWidget.Show ();
}
-
+
protected virtual void OnSaveClicked (object sender, EventArgs e)
{
if (currentVisualizer == null || currentVisualizer.StoreValue (value))