Esempio n. 1
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 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 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));
		}