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 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)); }