Example #1
0
            public PadWidget()
            {
                jitter = new DocumentJitter();

                var box = new Xwt.VBox();

                combo = new Xwt.ComboBox();
                combo.Items.Add(Jitter.Mono, "Mono JIT");
                combo.Items.Add(Jitter.MonoAOT, "Mono AOT");
                combo.SelectedIndex = 0;
                box.PackStart(combo);

                btn          = new Xwt.Button("JIT");
                btn.Clicked += ButtonClicked;
                box.PackStart(btn);

                textView = new Xwt.RichTextView
                {
                    MinHeight = 400,
                    MinWidth  = 400
                };
                box.PackStart(textView, true, true);

                Content = box;
            }
        public override Gtk.Widget CreatePanelWidget()
        {
            bool byDefault, require;

            MSBuildProjectService.CheckHandlerUsesMSBuildEngine(ConfiguredProject, out byDefault, out require);
            if (require)
            {
                return(null);
            }

            var box = new Xwt.VBox {
                Spacing = 6,
                Margin  = 12
            };

            box.PackStart(new Xwt.Label {
                Markup = "<b>Build Engine</b>"
            });

            checkMSBuild = new Xwt.CheckBox(byDefault ?
                                            GettextCatalog.GetString("Use MSBuild build engine (recommended for this project type)") :
                                            GettextCatalog.GetString("Use MSBuild build engine (unsupported for this project type)"))
            {
                Active = ConfiguredProject.UseMSBuildEngine ?? byDefault
            };
            var hbox = new Xwt.HBox {
                MarginLeft = 18,
                Spacing    = 6
            };

            hbox.PackStart(checkMSBuild);
            box.PackStart(hbox);
            box.Show();
            return(box.ToGtkWidget());
        }
Example #3
0
        public ConvertToEnumDialog(string proposedEnumName, List <VariableInitializer> variables, List <VariableInitializer> defaultActiveVariables, Dictionary <string, string> newNames)
        {
            this.variables = variables;

            Title = GettextCatalog.GetString("Convert fields to enumeration");

            Xwt.VBox vbox = new Xwt.VBox();

            vbox.PackStart(new Xwt.Label(GettextCatalog.GetString("Name of enum")));

            enumNameEntry      = new Xwt.TextEntry();
            enumNameEntry.Text = proposedEnumName;
            vbox.PackStart(enumNameEntry);

            vbox.PackStart(new Xwt.Label(GettextCatalog.GetString("Variables to include")));

            variableList = new Xwt.ListView();
            enabledField = new Xwt.DataField <bool> ();
            oldNameField = new Xwt.DataField <string> ();
            newNameField = new Xwt.DataField <string> ();

            variableStore           = new Xwt.ListStore(enabledField, oldNameField, newNameField);
            variableList.DataSource = variableStore;

            enabledColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Included"), new Xwt.CheckBoxCellView(enabledField)
            {
                Editable = true
            });
            variableList.Columns.Add(enabledColumn);
            oldNameColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Field name"), new Xwt.TextCellView(oldNameField)
            {
                Editable = false
            });
            variableList.Columns.Add(oldNameColumn);
            newNameColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Enum name"), new Xwt.TextCellView(newNameField)
            {
                Editable = true,
            });
            variableList.Columns.Add(newNameColumn);

            for (int i = 0; i < variables.Count; ++i)
            {
                var variable = variables[i];

                variableStore.AddRow();
                variableStore.SetValue(i, enabledField, defaultActiveVariables.Contains(variable));
                variableStore.SetValue(i, oldNameField, variable.Name);

                variableStore.SetValue(i, newNameField, newNames [variable.Name]);
            }

            vbox.PackStart(variableList, true, true);

            vbox.PackStart(new Xwt.Label(GettextCatalog.GetString("Warning: This may take a while...")));

            Content = vbox;

            Buttons.Add(new Xwt.DialogButton(Xwt.Command.Ok));
            Buttons.Add(new Xwt.DialogButton(Xwt.Command.Cancel));
        }
        public GeneralOptionsPanel()
        {
            this.Build();

            this.comboboxLineEndings.AppendText(GettextCatalog.GetString("Always ask for conversion"));
            this.comboboxLineEndings.AppendText(GettextCatalog.GetString("Leave line endings as is"));
            this.comboboxLineEndings.AppendText(GettextCatalog.GetString("Always convert line endings"));
            this.comboboxLineEndings.Active = (int)DefaultSourceEditorOptions.Instance.LineEndingConversion;

            var newEditorOptionsBox = new Xwt.VBox();

            wordWrapCheckBox          = new Xwt.CheckBox(GettextCatalog.GetString("_Word wrap"));
            wordWrapCheckBox.Active   = DefaultSourceEditorOptions.Instance.WordWrapStyle.HasFlag(WordWrapStyles.WordWrap);
            wordWrapCheckBox.Toggled += HandleNewEditorOptionToggled;
            newEditorOptionsBox.PackStart(wordWrapCheckBox);

            wordWrapVisualGlyphsCheckBox            = new Xwt.CheckBox(GettextCatalog.GetString("Show visible glyphs for word wrap"));
            wordWrapVisualGlyphsCheckBox.MarginLeft = 18;
            wordWrapVisualGlyphsCheckBox.Active     = DefaultSourceEditorOptions.Instance.WordWrapStyle.HasFlag(WordWrapStyles.VisibleGlyphs);
            wordWrapVisualGlyphsCheckBox.Toggled   += HandleNewEditorOptionToggled;
            newEditorOptionsBox.PackStart(wordWrapVisualGlyphsCheckBox);

            if (Xwt.Toolkit.CurrentEngine.Type == Xwt.ToolkitType.Gtk)
            {
                vbox4.PackStart((Gtk.Widget)Xwt.Toolkit.CurrentEngine.GetNativeWidget(newEditorOptionsBox), false, false, 0);
            }
            else
            {
                LoggingService.LogError("GeneralOptionsPanel: Xwt.Toolkit.CurrentEngine.Type != Xwt.ToolkitType.Gtk - currently unsupported");
            }

            HandleNewEditorOptionToggled(this, EventArgs.Empty);

            SetupAccessibility();
        }
        public override Gtk.Widget CreatePanelWidget()
        {
            var box = new Xwt.VBox ();
            box.Spacing = 6;
            box.Margin = 12;

            bool byDefault, require;
            MSBuildProjectService.CheckHandlerUsesMSBuildEngine (ConfiguredProject, out byDefault, out require);
            if (require) {
                box.Visible = false;
                return box.ToGtkWidget ();
            }

            box.PackStart (new Xwt.Label {
                Markup = "<b>Build Engine</b>"
            });

            checkMSBuild = new Xwt.CheckBox (byDefault ?
                GettextCatalog.GetString ("Use MSBuild build engine (recommended for this project type)") :
                GettextCatalog.GetString ("Use MSBuild build engine (unsupported for this project type)")) {
                Active = ConfiguredProject.UseMSBuildEngine ?? byDefault
            };
            var hbox = new Xwt.HBox {
                MarginLeft = 18,
                Spacing = 6
            };
            hbox.PackStart (checkMSBuild);
            box.PackStart (hbox);
            box.Show ();
            return box.ToGtkWidget ();
        }
Example #6
0
        Xwt.Widget CreateItem(string title, Xwt.Drawing.Image image)
        {
            if (image.Size.Width > 150 || image.Size.Height > 150)
            {
                image = image.WithBoxSize(150);
            }

            var vbox = new Xwt.VBox();

            RegisterFocusHandlers(vbox);

            vbox.PackStart(new Xwt.Label(title)
            {
                HorizontalPlacement = Xwt.WidgetPlacement.Center,
                TextAlignment       = Xwt.Alignment.Center,
                CanGetFocus         = false,
            });

            vbox.PackStart(new Xwt.ImageView(image)
            {
                HorizontalPlacement = Xwt.WidgetPlacement.Center,
                CanGetFocus         = false,
            });

            return(vbox);
        }
		public AboutMonoDevelopTabPage ()
		{
			BorderWidth = 0;

			var aboutFile = BrandingService.GetFile ("AboutImage.png");
			if (aboutFile != null)
				imageSep = Xwt.Drawing.Image.FromFile (aboutFile);
			else
				imageSep = Xwt.Drawing.Image.FromResource ("AboutImage.png");

			PackStart (new ImageView (imageSep), false, false, 0);

			Xwt.VBox infoBox = new Xwt.VBox ();
			Xwt.FrameBox mbox = new Xwt.FrameBox (infoBox);

			infoBox.Spacing = 6;
			infoBox.Margin = 12;
			PackStart (mbox.ToGtkWidget (), false, false, 0);

			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("Version"),
				Font = infoBox.Font.WithWeight (Xwt.Drawing.FontWeight.Bold)
			});
			infoBox.PackStart (new Xwt.Label () {
				Text = IdeVersionInfo.MonoDevelopVersion,
				MarginLeft = 12
			});

			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("License"),
				Font = infoBox.Font.WithWeight (Xwt.Drawing.FontWeight.Bold)
			});
			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("Released under the GNU Lesser General Public License."),
				MarginLeft = 12
			});

			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("Copyright"),
				Font = infoBox.Font.WithWeight (Xwt.Drawing.FontWeight.Bold)
			});
			var cbox = new Xwt.HBox () {
				Spacing = 0,
				MarginLeft = 12
			};
			cbox.PackStart (new Xwt.Label ("© 2011-" + DateTime.Now.Year + " "));
			cbox.PackStart (new Xwt.LinkLabel () {
				Text = string.Format ("Xamarin Inc."),
				Uri = new Uri ("http://www.xamarin.com")
			});
			infoBox.PackStart (cbox);
			infoBox.PackStart (new Xwt.Label () {
				Text = "© 2004-" + DateTime.Now.Year + " MonoDevelop contributors",
				MarginLeft = 12
			});

			this.ShowAll ();
		}
		public override Gtk.Widget CreatePanelWidget ()
		{
			Xwt.VBox box = new Xwt.VBox ();
			box.Spacing = 6;
			box.Margin = 12;

			disableVersionControl = new Xwt.CheckBox (GettextCatalog.GetString ("Disable Version Control for this solution")) {
				Active = VersionControlService.IsSolutionDisabled ((Solution)DataObject),
			};
			box.PackStart (disableVersionControl);
			box.Show ();
			return box.ToGtkWidget ();
		}
		public override Gtk.Widget CreatePanelWidget ()
		{
			Xwt.VBox box = new Xwt.VBox ();
			box.Spacing = 6;
			box.Margin = 12;

			disableVersionControl = new Xwt.CheckBox (GettextCatalog.GetString ("Disable Version Control globally")) {
				Active = VersionControlService.ConfigurationGlobalDisabled,
			};
			box.PackStart (disableVersionControl);
			box.Show ();
			return box.ToGtkWidget ();
		}
        public GeneralOptionsPanel()
        {
            this.Build();

            this.comboboxLineEndings.AppendText(GettextCatalog.GetString("Always ask for conversion"));
            this.comboboxLineEndings.AppendText(GettextCatalog.GetString("Leave line endings as is"));
            this.comboboxLineEndings.AppendText(GettextCatalog.GetString("Always convert line endings"));
            this.comboboxLineEndings.Active = (int)DefaultSourceEditorOptions.Instance.LineEndingConversion;

            var newEditorOptionsBox = new Xwt.VBox();

            var newEditorLearnMoreLink = new Xwt.LinkLabel {
                MarginBottom = 6,
                MarginTop    = 6,
                Text         = GettextCatalog.GetString("Learn more about the New Editor"),
                Uri          = new Uri("https://aka.ms/vs/mac/editor/learn-more")
            };

            newEditorOptionsBox.PackStart(newEditorLearnMoreLink);

            newEditorCheckBox          = new Xwt.CheckBox(GettextCatalog.GetString("Open C# files in the New Editor"));
            newEditorCheckBox.Active   = DefaultSourceEditorOptions.Instance.EnableNewEditor;
            newEditorCheckBox.Toggled += HandleNewEditorOptionToggled;
            newEditorOptionsBox.PackStart(newEditorCheckBox);

            wordWrapCheckBox            = new Xwt.CheckBox(GettextCatalog.GetString("_Word wrap"));
            wordWrapCheckBox.MarginLeft = 18;
            wordWrapCheckBox.Active     = DefaultSourceEditorOptions.Instance.WordWrapStyle.HasFlag(WordWrapStyles.WordWrap);
            wordWrapCheckBox.Toggled   += HandleNewEditorOptionToggled;
            newEditorOptionsBox.PackStart(wordWrapCheckBox);

            wordWrapVisualGlyphsCheckBox            = new Xwt.CheckBox(GettextCatalog.GetString("Show visible glyphs for word wrap"));
            wordWrapVisualGlyphsCheckBox.MarginLeft = 36;
            wordWrapVisualGlyphsCheckBox.Active     = DefaultSourceEditorOptions.Instance.WordWrapStyle.HasFlag(WordWrapStyles.VisibleGlyphs);
            wordWrapVisualGlyphsCheckBox.Toggled   += HandleNewEditorOptionToggled;
            newEditorOptionsBox.PackStart(wordWrapVisualGlyphsCheckBox);

            if (Xwt.Toolkit.CurrentEngine.Type == Xwt.ToolkitType.Gtk)
            {
                experimentalSection.PackStart((Gtk.Widget)Xwt.Toolkit.CurrentEngine.GetNativeWidget(newEditorOptionsBox), false, false, 0);
            }
            else
            {
                LoggingService.LogError("GeneralOptionsPanel: Xwt.Toolkit.CurrentEngine.Type != Xwt.ToolkitType.Gtk - currently unsupported");
            }

            HandleNewEditorOptionToggled(this, EventArgs.Empty);

            SetupAccessibility();
        }
Example #11
0
        public override Gtk.Widget CreatePanelWidget()
        {
            Xwt.VBox box = new Xwt.VBox();
            box.Spacing = 6;
            box.Margin  = 12;

            disableVersionControl = new Xwt.CheckBox(GettextCatalog.GetString("Disable Version Control globally"))
            {
                Active = VersionControlService.IsGloballyDisabled,
            };
            box.PackStart(disableVersionControl);
            box.Show();
            return(box.ToGtkWidget());
        }
Example #12
0
        public override Control CreatePanelWidget()
        {
            Xwt.VBox box = new Xwt.VBox();
            box.Spacing = 6;
            box.Margin  = 12;

            disableVersionControl = new Xwt.CheckBox(GettextCatalog.GetString("Disable Version Control for this solution"))
            {
                Active = VersionControlService.IsSolutionDisabled((Solution)DataObject),
            };
            box.PackStart(disableVersionControl);
            box.Show();
            return(box.ToGtkWidget());
        }
		public ConvertToEnumDialog(string proposedEnumName, List<VariableInitializer> variables, List<VariableInitializer> defaultActiveVariables, Dictionary<string, string> newNames) {
			this.variables = variables;

			Title = GettextCatalog.GetString("Convert fields to enumeration");

			Xwt.VBox vbox = new Xwt.VBox ();

			vbox.PackStart(new Xwt.Label(GettextCatalog.GetString("Name of enum")));

			enumNameEntry = new Xwt.TextEntry ();
			enumNameEntry.Text = proposedEnumName;
			vbox.PackStart (enumNameEntry);

			vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Variables to include")));

			variableList = new Xwt.ListView ();
			enabledField = new Xwt.DataField<bool> ();
			oldNameField = new Xwt.DataField<string> ();
			newNameField = new Xwt.DataField<string> ();

			variableStore = new Xwt.ListStore (enabledField, oldNameField, newNameField);
			variableList.DataSource = variableStore;

			enabledColumn = new Xwt.ListViewColumn (GettextCatalog.GetString ("Included"), new Xwt.CheckBoxCellView(enabledField) { Editable = true });
			variableList.Columns.Add (enabledColumn);
			oldNameColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Field name"), new Xwt.TextCellView(oldNameField) { Editable = false });
			variableList.Columns.Add (oldNameColumn);
			newNameColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Enum name"), new Xwt.TextCellView(newNameField) { Editable = true, });
			variableList.Columns.Add (newNameColumn);

			for (int i = 0; i < variables.Count; ++i) {
				var variable = variables[i];

				variableStore.AddRow ();
				variableStore.SetValue (i, enabledField, defaultActiveVariables.Contains(variable));
				variableStore.SetValue (i, oldNameField, variable.Name);

				variableStore.SetValue (i, newNameField, newNames [variable.Name]);
			}

			vbox.PackStart (variableList, true, true);

			vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Warning: This may take a while...")));

			Content = vbox;

			Buttons.Add (new Xwt.DialogButton(Xwt.Command.Ok));
			Buttons.Add (new Xwt.DialogButton(Xwt.Command.Cancel));
		}
Example #14
0
        public override Xwt.Widget Makeup(IXwtWrapper Parent)
        {
            Xwt.Box Target;

            if (Orientation == Xwt.Backends.Orientation.Horizontal)
                Target = new Xwt.HBox() {
                    Spacing = this.Spacing
                };
            else Target = new Xwt.VBox() {
                Spacing = this.Spacing
            };

            InitWidget(Target, Parent);

            foreach (XwtWidgetNode Node in this.Items)
            {
                Target.PackStart(Node.Makeup(Parent), Node.Expand, Node.Fill);
            }

            return Target;
        }
Example #15
0
        public AboutMonoDevelopTabPage()
        {
            BorderWidth = 0;

            var aboutFile = BrandingService.GetFile(AboutDialogImage.Name);

            if (aboutFile != null)
            {
                imageSep = Xwt.Drawing.Image.FromFile(aboutFile);
            }
            else
            {
                imageSep = Xwt.Drawing.Image.FromResource(AboutDialogImage.Name);
            }

            PackStart(new ImageView(imageSep), false, false, 0);

            Xwt.VBox     infoBox = new Xwt.VBox();
            Xwt.FrameBox mbox    = new Xwt.FrameBox(infoBox);

            infoBox.Spacing = 6;
            infoBox.Margin  = 12;
            PackStart(mbox.ToGtkWidget(), false, false, 0);

            infoBox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("Version"),
                Font = infoBox.Font.WithWeight(Xwt.Drawing.FontWeight.Bold)
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = IdeVersionInfo.MonoDevelopVersion,
                MarginLeft = 12
            });

            infoBox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("License"),
                Font = infoBox.Font.WithWeight(Xwt.Drawing.FontWeight.Bold)
            });
            var cbox = new Xwt.HBox()
            {
                Spacing    = 0,
                MarginLeft = 12
            };

            cbox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("License is available at ")
            });
            cbox.PackStart(new Xwt.LinkLabel()
            {
                Text = string.Format("http://xamarin.com/xamarin-studio-license"),
                Uri  = new Uri("http://xamarin.com/xamarin-studio-license")
            });
            infoBox.PackStart(cbox);

            infoBox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("Copyright"),
                Font = infoBox.Font.WithWeight(Xwt.Drawing.FontWeight.Bold)
            });
            cbox = new Xwt.HBox()
            {
                Spacing    = 0,
                MarginLeft = 12
            };
            cbox.PackStart(new Xwt.Label("© 2011-" + DateTime.Now.Year + " "));
            cbox.PackStart(new Xwt.LinkLabel()
            {
                Text = string.Format("Xamarin Inc."),
                Uri  = new Uri("http://www.xamarin.com")
            });
            infoBox.PackStart(cbox);
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = "© 2004-" + DateTime.Now.Year + " MonoDevelop contributors",
                MarginLeft = 12
            });

            this.ShowAll();
        }
        public AboutMonoDevelopTabPage()
        {
            BorderWidth = 0;

            var aboutFile = BrandingService.GetFile("AboutImage.png");

            if (aboutFile != null)
            {
                imageSep = Xwt.Drawing.Image.FromFile(aboutFile);
            }
            else
            {
                imageSep = Xwt.Drawing.Image.FromResource("AboutImage.png");
            }

            PackStart(new ImageView(imageSep), false, false, 0);

            Xwt.VBox     infoBox = new Xwt.VBox();
            Xwt.FrameBox mbox    = new Xwt.FrameBox(infoBox);

            infoBox.Spacing = 6;
            infoBox.Margin  = 12;
            PackStart(mbox.ToGtkWidget(), false, false, 0);

            infoBox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("Version"),
                Font = infoBox.Font.WithWeight(Xwt.Drawing.FontWeight.Bold)
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = IdeVersionInfo.MonoDevelopVersion,
                MarginLeft = 12
            });

            infoBox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("License"),
                Font = infoBox.Font.WithWeight(Xwt.Drawing.FontWeight.Bold)
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = GettextCatalog.GetString("Released under the GNU Lesser General Public License."),
                MarginLeft = 12
            });

            infoBox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("Copyright"),
                Font = infoBox.Font.WithWeight(Xwt.Drawing.FontWeight.Bold)
            });
            var cbox = new Xwt.HBox()
            {
                Spacing    = 0,
                MarginLeft = 12
            };

            cbox.PackStart(new Xwt.Label("© 2011-" + DateTime.Now.Year + " "));
            cbox.PackStart(new Xwt.LinkLabel()
            {
                Text = string.Format("Xamarin Inc."),
                Uri  = new Uri("http://www.xamarin.com")
            });
            infoBox.PackStart(cbox);
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = "© 2004-" + DateTime.Now.Year + " MonoDevelop contributors",
                MarginLeft = 12
            });

            cbox = new Xwt.HBox()
            {
                Spacing    = 0,
                MarginLeft = 12
            };
            cbox.PackStart(new Xwt.Label("Some icons by "));
            cbox.PackStart(new Xwt.LinkLabel()
            {
                Text = string.Format("Yusuke Kamiyamane"),
                Uri  = new Uri("http://p.yusukekamiyamane.com")
            });

            infoBox.PackStart(cbox);

            cbox = new Xwt.HBox()
            {
                Spacing    = 0,
                MarginLeft = 12
            };
            cbox.PackStart(new Xwt.Label("Some icons from the "));
            cbox.PackStart(new Xwt.LinkLabel()
            {
                Text = string.Format("Silk icon set"),
                Uri  = new Uri("http://www.famfamfam.com/")
            });
            infoBox.PackStart(cbox);

            this.ShowAll();
        }
Example #17
0
        public GitSelectRevisionDialog(GitRepository repo)
        {
            Title = GettextCatalog.GetString("Select a revision");

            var vbox = new Xwt.VBox();

            vbox.MinHeight = 400;
            vbox.MinWidth  = 600;

            vbox.PackStart(new Xwt.Label(GettextCatalog.GetString("Tag Name")));

            tagNameEntry          = new Xwt.TextEntry();
            tagNameEntry.Changed += delegate {
                CheckSensitive();
            };
            vbox.PackStart(tagNameEntry);

            vbox.PackStart(new Xwt.Label(GettextCatalog.GetString("Tag Message")));

            tagMessageEntry = new Xwt.TextEntry();
            vbox.PackStart(tagMessageEntry);

            revisionList  = new Xwt.ListView();
            messageField  = new Xwt.DataField <string> ();
            dateField     = new Xwt.DataField <string> ();
            authorField   = new Xwt.DataField <string> ();
            shaField      = new Xwt.DataField <string> ();
            revisionField = new Xwt.DataField <Revision> ();

            revisionStore           = new Xwt.ListStore(messageField, dateField, authorField, shaField, revisionField);
            revisionList.DataSource = revisionStore;

            messageColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Message"), new Xwt.TextCellView(messageField)
            {
                Ellipsize = Xwt.EllipsizeMode.End
            });
            revisionList.Columns.Add(messageColumn);
            dateColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Date"), new Xwt.TextCellView(dateField));
            revisionList.Columns.Add(dateColumn);
            authorColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Author"), new Xwt.TextCellView(authorField));
            revisionList.Columns.Add(authorColumn);
            shaColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Revision"), new Xwt.TextCellView(shaField));
            revisionList.Columns.Add(shaColumn);

            var history = repo.GetHistory(repo.RootPath, null);
            var min     = Math.Min(history.Length, 150);

            for (int i = 0; i < min; ++i)
            {
                var rev = history [i];

                // Convert to foreach and use i = AddRow ();
                revisionStore.AddRow();
                revisionStore.SetValue(i, messageField, rev.ShortMessage);
                revisionStore.SetValue(i, dateField, ParseDate(rev.Time));
                revisionStore.SetValue(i, authorField, rev.Author);
                revisionStore.SetValue(i, shaField, ((GitRevision)rev).ShortName);
                revisionStore.SetValue(i, revisionField, rev);
            }

            revisionList.SelectionChanged += delegate {
                CheckSensitive();
            };

            vbox.PackStart(revisionList, true, true);

            Content = vbox;

            buttonOk = new Xwt.DialogButton(Xwt.Command.Ok)
            {
                Sensitive = false
            };
            Buttons.Add(buttonOk);
            Buttons.Add(new Xwt.DialogButton(Xwt.Command.Cancel));
        }
        public AboutMonoDevelopTabPage()
        {
            BorderWidth = 0;

            using (var stream = BrandingService.GetStream("AboutImage.png", true))
                imageSep = new Pixbuf(stream);
            PackStart(new Gtk.Image(imageSep), false, false, 0);

            Xwt.VBox infoBox = new Xwt.VBox();
            infoBox.Spacing = 6;
            infoBox.Margin  = 12;
            PackStart(infoBox.ToGtkWidget(), false, false, 0);

            infoBox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("Version"),
                Font = infoBox.Font.WithWeight(Xwt.Drawing.FontWeight.Bold)
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = IdeVersionInfo.MonoDevelopVersion,
                MarginLeft = 12
            });

            infoBox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("License"),
                Font = infoBox.Font.WithWeight(Xwt.Drawing.FontWeight.Bold)
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = GettextCatalog.GetString("Released under the GNU Lesser General Public License."),
                MarginLeft = 12
            });

            infoBox.PackStart(new Xwt.Label()
            {
                Text = GettextCatalog.GetString("Copyright"),
                Font = infoBox.Font.WithWeight(Xwt.Drawing.FontWeight.Bold)
            });
            var cbox = new Xwt.HBox()
            {
                Spacing    = 0,
                MarginLeft = 12
            };

            cbox.PackStart(new Xwt.Label("© 2011-2012 "));
            cbox.PackStart(new Xwt.LinkLabel()
            {
                Text = string.Format("Xamarin Inc."),
                Uri  = new Uri("http://www.xamarin.com")
            });
            infoBox.PackStart(cbox);
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = "© 2004-2012 MonoDevelop contributors",
                MarginLeft = 12
            });

            cbox = new Xwt.HBox()
            {
                Spacing    = 0,
                MarginLeft = 12
            };
            cbox.PackStart(new Xwt.Label("Some icons by "));
            cbox.PackStart(new Xwt.LinkLabel()
            {
                Text = string.Format("Yusuke Kamiyamane"),
                Uri  = new Uri("http://p.yusukekamiyamane.com")
            });
            infoBox.PackStart(cbox);

            cbox = new Xwt.HBox()
            {
                Spacing    = 0,
                MarginLeft = 12
            };
            cbox.PackStart(new Xwt.Label("Some icons from the "));
            cbox.PackStart(new Xwt.LinkLabel()
            {
                Text = string.Format("Silk icon set"),
                Uri  = new Uri("http://www.famfamfam.com/")
            });
            infoBox.PackStart(cbox);

            this.ShowAll();
        }
		public AboutMonoDevelopTabPage ()
		{
			BorderWidth = 0;

			using (var stream = BrandingService.GetStream ("AboutImage.png", true))
				imageSep = new Pixbuf (stream);
			PackStart (new Gtk.Image (imageSep), false, false, 0);

			Xwt.VBox infoBox = new Xwt.VBox ();
			Xwt.FrameBox mbox = new Xwt.FrameBox (infoBox);

			infoBox.Spacing = 6;
			infoBox.Margin = 12;
			PackStart (mbox.ToGtkWidget (), false, false, 0);

			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("Version"),
				Font = infoBox.Font.WithWeight (Xwt.Drawing.FontWeight.Bold)
			});
			infoBox.PackStart (new Xwt.Label () {
				Text = IdeVersionInfo.MonoDevelopVersion,
				MarginLeft = 12
			});

			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("License"),
				Font = infoBox.Font.WithWeight (Xwt.Drawing.FontWeight.Bold)
			});
			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("Released under the GNU Lesser General Public License."),
				MarginLeft = 12
			});

			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("Copyright"),
				Font = infoBox.Font.WithWeight (Xwt.Drawing.FontWeight.Bold)
			});
			var cbox = new Xwt.HBox () {
				Spacing = 0,
				MarginLeft = 12
			};
			cbox.PackStart (new Xwt.Label ("© 2011-2013 "));
			cbox.PackStart (new Xwt.LinkLabel () {
				Text = string.Format ("Xamarin Inc."),
				Uri = new Uri ("http://www.xamarin.com")
			});
			infoBox.PackStart (cbox);
			infoBox.PackStart (new Xwt.Label () {
				Text = "© 2004-2013 MonoDevelop contributors",
				MarginLeft = 12
			});

			cbox = new Xwt.HBox () {
				Spacing = 0,
				MarginLeft = 12
			};
			cbox.PackStart (new Xwt.Label ("Some icons by "));
			cbox.PackStart (new Xwt.LinkLabel () {
				Text = string.Format ("Yusuke Kamiyamane"),
				Uri = new Uri ("http://p.yusukekamiyamane.com")
			});

			infoBox.PackStart (cbox);

			cbox = new Xwt.HBox () {
				Spacing = 0,
				MarginLeft = 12
			};
			cbox.PackStart (new Xwt.Label ("Some icons from the "));
			cbox.PackStart (new Xwt.LinkLabel () {
				Text = string.Format ("Silk icon set"),
				Uri = new Uri ("http://www.famfamfam.com/")
			});
			infoBox.PackStart (cbox);

			this.ShowAll ();
		}
		public GitSelectRevisionDialog (GitRepository repo)
		{
			Title = GettextCatalog.GetString ("Select a revision");

			var vbox = new Xwt.VBox ();
			vbox.MinHeight = 400;
			vbox.MinWidth = 800;

			vbox.PackStart(new Xwt.Label (GettextCatalog.GetString ("Tag Name")));

			tagNameEntry = new Xwt.TextEntry { Name = "tagNameEntry" };
			tagNameEntry.Changed += delegate {
				CheckSensitive ();
			};
			vbox.PackStart (tagNameEntry);

			vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Tag Message")));

			tagMessageEntry = new Xwt.TextEntry { Name = "tagMessageEntry" };
			vbox.PackStart (tagMessageEntry);

			revisionList = new Xwt.ListView ();
			messageField = new Xwt.DataField<string> ();
			dateField = new Xwt.DataField<string> ();
			authorField = new Xwt.DataField<string> ();
			shaField = new Xwt.DataField<string> ();
			revisionField = new Xwt.DataField<Revision> ();

			revisionStore = new Xwt.ListStore (messageField, dateField, authorField, shaField, revisionField);
			revisionList.DataSource = revisionStore;

			messageColumn = new Xwt.ListViewColumn (GettextCatalog.GetString ("Message"), new Xwt.TextCellView (messageField)) {
				CanResize = true,
				Alignment = Xwt.Alignment.Center,
			};

			revisionList.Columns.Add (messageColumn);
			dateColumn = new Xwt.ListViewColumn (GettextCatalog.GetString ("Date"), new Xwt.TextCellView (dateField)) {
				CanResize = true,
				Alignment = Xwt.Alignment.Center,
			};
			revisionList.Columns.Add (dateColumn);
			authorColumn = new Xwt.ListViewColumn (GettextCatalog.GetString ("Author"), new Xwt.TextCellView (authorField)) {
				CanResize = true,
				Alignment = Xwt.Alignment.Center,
			};
			revisionList.Columns.Add (authorColumn);
			shaColumn = new Xwt.ListViewColumn (GettextCatalog.GetString ("Revision"), new Xwt.TextCellView (shaField)) {
				CanResize = true,
				Alignment = Xwt.Alignment.Center,
			};
			revisionList.Columns.Add (shaColumn);

			Task.Factory.StartNew (async () => {
				const int sliceSize = 150;

				var history = repo.GetHistory (repo.RootPath, null);

				int slices = history.Length / sliceSize;
				for (int i = 0; i < slices; ++i) {
					await Runtime.RunInMainThread (() => {
						for (int n = 0; n < sliceSize; ++n) {
							if (cts.IsCancellationRequested)
								return;

							int row = revisionStore.AddRow ();
							var rev = history [row];

							revisionStore.SetValue (row, messageField, rev.ShortMessage);
							revisionStore.SetValue (row, dateField, ParseDate (rev.Time));
							revisionStore.SetValue (row, authorField, rev.Author);
							revisionStore.SetValue (row, shaField, ((GitRevision)rev).ShortName);
							revisionStore.SetValue (row, revisionField, rev);
						}
					});
				}
			}, cts.Token);

			revisionList.SelectionChanged += delegate {
				CheckSensitive ();
			};

			vbox.PackStart (revisionList, true, true);

			Content = vbox;

			buttonOk = new Xwt.DialogButton (Xwt.Command.Ok) {
				Sensitive = false
			};
			Buttons.Add (buttonOk);
			Buttons.Add (new Xwt.DialogButton (Xwt.Command.Cancel));
		}
		public GitSelectRevisionDialog (GitRepository repo)
		{
			Title = GettextCatalog.GetString ("Select a revision");

			var vbox = new Xwt.VBox ();
			vbox.MinHeight = 400;
			vbox.MinWidth = 600;

			vbox.PackStart(new Xwt.Label (GettextCatalog.GetString ("Tag Name")));

			tagNameEntry = new Xwt.TextEntry ();
			tagNameEntry.Changed += delegate {
				CheckSensitive ();
			};
			vbox.PackStart (tagNameEntry);

			vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Tag Message")));

			tagMessageEntry = new Xwt.TextEntry ();
			vbox.PackStart (tagMessageEntry);

			revisionList = new Xwt.ListView ();
			messageField = new Xwt.DataField<string> ();
			dateField = new Xwt.DataField<string> ();
			authorField = new Xwt.DataField<string> ();
			shaField = new Xwt.DataField<string> ();
			revisionField = new Xwt.DataField<Revision> ();

			revisionStore = new Xwt.ListStore (messageField, dateField, authorField, shaField, revisionField);
			revisionList.DataSource = revisionStore;

			messageColumn = new Xwt.ListViewColumn (GettextCatalog.GetString ("Message"), new Xwt.TextCellView (messageField) { Ellipsize = Xwt.EllipsizeMode.End });
			revisionList.Columns.Add (messageColumn);
			dateColumn = new Xwt.ListViewColumn (GettextCatalog.GetString ("Date"), new Xwt.TextCellView (dateField));
			revisionList.Columns.Add (dateColumn);
			authorColumn = new Xwt.ListViewColumn (GettextCatalog.GetString ("Author"), new Xwt.TextCellView (authorField));
			revisionList.Columns.Add (authorColumn);
			shaColumn = new Xwt.ListViewColumn (GettextCatalog.GetString ("Revision"), new Xwt.TextCellView (shaField));
			revisionList.Columns.Add (shaColumn);

			var history = repo.GetHistory (repo.RootPath, null);
			var min = Math.Min (history.Length, 150);
			for (int i = 0; i < min; ++i) {
				var rev = history [i];

				// Convert to foreach and use i = AddRow ();
				revisionStore.AddRow ();
				revisionStore.SetValue (i, messageField, rev.ShortMessage);
				revisionStore.SetValue (i, dateField, ParseDate (rev.Time));
				revisionStore.SetValue (i, authorField, rev.Author);
				revisionStore.SetValue (i, shaField, ((GitRevision)rev).ShortName);
				revisionStore.SetValue (i, revisionField, rev);
			}

			revisionList.SelectionChanged += delegate {
				CheckSensitive ();
			};

			vbox.PackStart (revisionList, true, true);

			Content = vbox;

			buttonOk = new Xwt.DialogButton (Xwt.Command.Ok) {
				Sensitive = false
			};
			Buttons.Add (buttonOk);
			Buttons.Add (new Xwt.DialogButton (Xwt.Command.Cancel));
		}
		public AboutMonoDevelopTabPage ()
		{
			BorderWidth = 0;

			var aboutFile = BrandingService.GetFile ("AboutImage.png");
			if (aboutFile != null)
				imageSep = Xwt.Drawing.Image.FromFile (aboutFile);
			else
				imageSep = Xwt.Drawing.Image.FromResource ("AboutImage.png");

			PackStart (new ImageView (imageSep), false, false, 0);

			Xwt.VBox infoBox = new Xwt.VBox ();
			Xwt.FrameBox mbox = new Xwt.FrameBox (infoBox);

			infoBox.Spacing = 6;
			infoBox.Margin = 12;
			PackStart (mbox.ToGtkWidget (), false, false, 0);

			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("Version"),
				Font = infoBox.Font.WithWeight (Xwt.Drawing.FontWeight.Bold)
			});
			infoBox.PackStart (new Xwt.Label () {
				Text = IdeVersionInfo.MonoDevelopVersion,
				MarginLeft = 12
			});

			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("License"),
				Font = infoBox.Font.WithWeight (Xwt.Drawing.FontWeight.Bold)
			});
			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("Released under the GNU Lesser General Public License."),
				MarginLeft = 12
			});

			infoBox.PackStart (new Xwt.Label () {
				Text = GettextCatalog.GetString ("Copyright"),
				Font = infoBox.Font.WithWeight (Xwt.Drawing.FontWeight.Bold)
			});
			var cbox = new Xwt.HBox () {
				Spacing = 0,
				MarginLeft = 12
			};
			cbox.PackStart (new Xwt.Label ("© 2014 "));
			cbox.PackStart (new Xwt.LinkLabel () {
				Text = string.Format ("Joshua Granick"),
				Uri = new Uri ("http://www.joshuagranick.com")
			});
			infoBox.PackStart (cbox);
			infoBox.PackStart (new Xwt.Label () {
				Text = "© 2004-2013 MonoDevelop contributors",
				MarginLeft = 12
			});

			cbox = new Xwt.HBox () {
				Spacing = 0,
				MarginLeft = 12
			};
			cbox.PackStart (new Xwt.Label ("Some icons by "));
			cbox.PackStart (new Xwt.LinkLabel () {
				Text = string.Format ("Yusuke Kamiyamane"),
				Uri = new Uri ("http://p.yusukekamiyamane.com")
			});

			infoBox.PackStart (cbox);

			cbox = new Xwt.HBox () {
				Spacing = 0,
				MarginLeft = 12
			};
			cbox.PackStart (new Xwt.Label ("Some icons from the "));
			cbox.PackStart (new Xwt.LinkLabel () {
				Text = string.Format ("Silk icon set"),
				Uri = new Uri ("http://www.famfamfam.com/")
			});
			infoBox.PackStart (cbox);

			this.ShowAll ();
		}
        public AboutMonoDevelopTabPage()
        {
            BorderWidth = 0;

            var aboutFile = BrandingService.GetFile(AboutDialogImage.Name);

            if (aboutFile != null)
            {
                imageSep = Xwt.Drawing.Image.FromFile(aboutFile);
            }
            else
            {
                imageSep = Xwt.Drawing.Image.FromResource(AboutDialogImage.Name);
            }

            var iv = new ImageView(imageSep);

            iv.SetCommonAccessibilityAttributes("AboutImage", BrandingService.ApplicationLongName, "");
            PackStart(iv, false, false, 0);

            Xwt.VBox     infoBox = new Xwt.VBox();
            Xwt.FrameBox mbox    = new Xwt.FrameBox(infoBox);

            infoBox.Spacing = 6;
            infoBox.Margin  = 12;
            PackStart(mbox.ToGtkWidget(), false, false, 0);

            infoBox.PackStart(new Xwt.Label()
            {
                Markup    = string.Format("<b>{0}</b>", GettextCatalog.GetString("Version")),
                MarginTop = 6,
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = IdeVersionInfo.MonoDevelopVersion,
                MarginLeft = 12
            });

            if (BrandingService.LicenseTermsUrl != null)
            {
                infoBox.PackStart(new Xwt.Label()
                {
                    Markup    = string.Format("<b>{0}</b>", GettextCatalog.GetString("License")),
                    MarginTop = 6,
                });

                var linkLabel = new Xwt.Label {
                    Markup     = "<span underline='true'>License Terms</span>",
                    Cursor     = Xwt.CursorType.Hand,
                    MarginLeft = 12
                };
                if (IdeTheme.UserInterfaceTheme == Theme.Light)
                {
                    linkLabel.Markup = string.Format("<span color='#5C2D91'>{0}</span>", linkLabel.Markup);
                }

                linkLabel.ButtonReleased += (sender, e) => DesktopService.ShowUrl(BrandingService.LicenseTermsUrl);
                infoBox.PackStart(linkLabel);

                if (BrandingService.PrivacyStatementUrl != null)
                {
                    linkLabel = new Xwt.Label {
                        Markup     = string.Format("<span underline='true'>{0}</span>", GettextCatalog.GetString("Privacy Statement")),
                        Cursor     = Xwt.CursorType.Hand,
                        MarginLeft = 12
                    };

                    if (IdeTheme.UserInterfaceTheme == Theme.Light)
                    {
                        linkLabel.Markup = string.Format("<span color='#5C2D91'>{0}</span>", linkLabel.Markup);
                    }

                    linkLabel.ButtonReleased += (sender, e) => DesktopService.ShowUrl(BrandingService.PrivacyStatementUrl);
                    infoBox.PackStart(linkLabel);
                }
            }

            infoBox.PackStart(new Xwt.Label()
            {
                Markup    = string.Format("<b>{0}</b>", GettextCatalog.GetString("Copyright")),
                MarginTop = 6,
            });

            infoBox.PackStart(new Xwt.Label()
            {
                Text       = (DateTime.Now.Year == 2016 ? "© 2016" : "© 2016–" + DateTime.Now.Year) + " Microsoft Corp.",
                MarginLeft = 12
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = "© 2004–" + DateTime.Now.Year + " Xamarin Inc.",
                MarginLeft = 12
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = "© 2004–" + DateTime.Now.Year + " MonoDevelop contributors",
                MarginLeft = 12
            });

            this.ShowAll();
        }
Example #24
0
        public AboutMonoDevelopTabPage()
        {
            BorderWidth = 0;

            var aboutFile = BrandingService.GetFile(AboutDialogImage.Name);

            if (aboutFile != null)
            {
                imageSep = Xwt.Drawing.Image.FromFile(aboutFile);
            }
            else
            {
                imageSep = Xwt.Drawing.Image.FromResource(AboutDialogImage.Name);
            }

            PackStart(new ImageView(imageSep), false, false, 0);

            Xwt.VBox     infoBox = new Xwt.VBox();
            Xwt.FrameBox mbox    = new Xwt.FrameBox(infoBox);

            infoBox.Spacing = 6;
            infoBox.Margin  = 12;
            PackStart(mbox.ToGtkWidget(), false, false, 0);

            infoBox.PackStart(new Xwt.Label()
            {
                Markup    = string.Format("<b>{0}</b>", GettextCatalog.GetString("Version")),
                MarginTop = 6,
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = IdeVersionInfo.MonoDevelopVersion,
                MarginLeft = 12
            });

            infoBox.PackStart(new Xwt.Label()
            {
                Markup    = string.Format("<b>{0}</b>", GettextCatalog.GetString("License")),
                MarginTop = 6,
            });
            var cbox = new Xwt.HBox()
            {
                Spacing    = 0,
                MarginLeft = 12
            };
            var linkLabel = new Xwt.Label {
                Markup = "<span underline='true'>License Terms</span>",
                Cursor = Xwt.CursorType.Hand,
            };

            if (IdeTheme.UserInterfaceTheme == Theme.Light)
            {
                linkLabel.Markup = string.Format("<span color='#5C2D91'>{0}</span>", linkLabel.Markup);
            }

            linkLabel.ButtonReleased += (sender, e) => {
                var    binDir      = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
                string licensePath = System.IO.Path.Combine(binDir, "branding", "License.txt");
                if (Platform.IsMac)
                {
                    var appDir = System.IO.Path.GetFullPath(System.IO.Path.Combine(binDir, "..", "..", "..", "..", ".."));
                    if (appDir.EndsWith(".app", StringComparison.Ordinal))
                    {
                        licensePath = System.IO.Path.Combine(appDir, "Contents", "License.txt");
                    }
                }
                if (!File.Exists(licensePath))
                {
                    MessageService.ShowError("License file is missing");
                }
                else
                {
                    DesktopService.OpenFile(licensePath);
                }
            };
            cbox.PackStart(linkLabel);
            infoBox.PackStart(cbox);

            linkLabel = new Xwt.Label {
                Markup     = string.Format("<span underline='true'>{0}</span>", GettextCatalog.GetString("Privacy Statement")),
                Cursor     = Xwt.CursorType.Hand,
                MarginLeft = 12
            };

            //TODO: factor out
            const string PRIVACY_URL = "https://go.microsoft.com/fwlink/?LinkID=824704";

            if (IdeTheme.UserInterfaceTheme == Theme.Light)
            {
                linkLabel.Markup = string.Format("<span color='#5C2D91'>{0}</span>", linkLabel.Markup);
            }
            linkLabel.ButtonReleased += (sender, e) => DesktopService.ShowUrl(PRIVACY_URL);
            infoBox.PackStart(linkLabel);

            infoBox.PackStart(new Xwt.Label()
            {
                Markup    = string.Format("<b>{0}</b>", GettextCatalog.GetString("Copyright")),
                MarginTop = 6,
            });

            infoBox.PackStart(new Xwt.Label()
            {
                Text       = (DateTime.Now.Year == 2016 ? "© 2016" : "© 2016–" + DateTime.Now.Year) + " Microsoft Corp.",
                MarginLeft = 12
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = "© 2004–" + DateTime.Now.Year + " Xamarin Inc.",
                MarginLeft = 12
            });
            infoBox.PackStart(new Xwt.Label()
            {
                Text       = "© 2004–" + DateTime.Now.Year + " MonoDevelop contributors",
                MarginLeft = 12
            });

            this.ShowAll();
        }
        public GitSelectRevisionDialog(GitRepository repo)
        {
            Title = GettextCatalog.GetString("Select a revision");

            var vbox = new Xwt.VBox();

            vbox.MinHeight = 400;
            vbox.MinWidth  = 800;

            vbox.PackStart(new Xwt.Label(GettextCatalog.GetString("Tag Name")));

            tagNameEntry = new Xwt.TextEntry {
                Name = "tagNameEntry"
            };
            tagNameEntry.Changed += delegate {
                CheckSensitive();
            };
            vbox.PackStart(tagNameEntry);

            vbox.PackStart(new Xwt.Label(GettextCatalog.GetString("Tag Message")));

            tagMessageEntry = new Xwt.TextEntry {
                Name = "tagMessageEntry"
            };
            vbox.PackStart(tagMessageEntry);

            revisionList  = new Xwt.ListView();
            messageField  = new Xwt.DataField <string> ();
            dateField     = new Xwt.DataField <string> ();
            authorField   = new Xwt.DataField <string> ();
            shaField      = new Xwt.DataField <string> ();
            revisionField = new Xwt.DataField <Revision> ();

            revisionStore           = new Xwt.ListStore(messageField, dateField, authorField, shaField, revisionField);
            revisionList.DataSource = revisionStore;

            messageColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Message"), new Xwt.TextCellView(messageField))
            {
                CanResize = true,
                Alignment = Xwt.Alignment.Center,
            };

            revisionList.Columns.Add(messageColumn);
            dateColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Date"), new Xwt.TextCellView(dateField))
            {
                CanResize = true,
                Alignment = Xwt.Alignment.Center,
            };
            revisionList.Columns.Add(dateColumn);
            authorColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Author"), new Xwt.TextCellView(authorField))
            {
                CanResize = true,
                Alignment = Xwt.Alignment.Center,
            };
            revisionList.Columns.Add(authorColumn);
            shaColumn = new Xwt.ListViewColumn(GettextCatalog.GetString("Revision"), new Xwt.TextCellView(shaField))
            {
                CanResize = true,
                Alignment = Xwt.Alignment.Center,
            };
            revisionList.Columns.Add(shaColumn);

            Task.Factory.StartNew(async() => {
                const int sliceSize = 150;

                var history = repo.GetHistory(repo.RootPath, null);

                int slices = history.Length / sliceSize;
                for (int i = 0; i < slices; ++i)
                {
                    await Runtime.RunInMainThread(() => {
                        for (int n = 0; n < sliceSize; ++n)
                        {
                            if (cts.IsCancellationRequested)
                            {
                                return;
                            }

                            int row = revisionStore.AddRow();
                            var rev = history [row];

                            revisionStore.SetValue(row, messageField, rev.ShortMessage);
                            revisionStore.SetValue(row, dateField, ParseDate(rev.Time));
                            revisionStore.SetValue(row, authorField, rev.Author);
                            revisionStore.SetValue(row, shaField, ((GitRevision)rev).ShortName);
                            revisionStore.SetValue(row, revisionField, rev);
                        }
                    });
                }
            }, cts.Token);

            revisionList.SelectionChanged += delegate {
                CheckSensitive();
            };

            vbox.PackStart(revisionList, true, true);

            Content = vbox;

            buttonOk = new Xwt.DialogButton(Xwt.Command.Ok)
            {
                Sensitive = false
            };
            Buttons.Add(buttonOk);
            Buttons.Add(new Xwt.DialogButton(Xwt.Command.Cancel));
        }