Skip to content

Commit 6ac7ff2

Browse files
committed
feature: add context menu item to checkout file with revision
1 parent b6b52c1 commit 6ac7ff2

File tree

1 file changed

+50
-34
lines changed

1 file changed

+50
-34
lines changed

src/ViewModels/CommitDetail.cs

Lines changed: 50 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,8 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
262262
menu.Items.Add(diffWithMerger);
263263
menu.Items.Add(new MenuItem { Header = "-" });
264264

265-
if (File.Exists(Path.Combine(_repo.FullPath, change.Path)))
265+
var fullPath = Path.Combine(_repo.FullPath, change.Path);
266+
if (File.Exists(fullPath))
266267
{
267268
var resetToThisRevision = new MenuItem();
268269
resetToThisRevision.Header = App.Text("ChangeCM.CheckoutThisRevision");
@@ -283,9 +284,20 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
283284
ev.Handled = true;
284285
};
285286

287+
var explore = new MenuItem();
288+
explore.Header = App.Text("RevealFile");
289+
explore.Icon = App.CreateMenuIcon("Icons.Explore");
290+
explore.Click += (_, ev) =>
291+
{
292+
Native.OS.OpenInFileManager(fullPath, true);
293+
ev.Handled = true;
294+
};
295+
286296
menu.Items.Add(resetToThisRevision);
287297
menu.Items.Add(resetToFirstParent);
288298
menu.Items.Add(new MenuItem { Header = "-" });
299+
menu.Items.Add(explore);
300+
menu.Items.Add(new MenuItem { Header = "-" });
289301
}
290302

291303
if (change.Index != Models.ChangeState.Deleted)
@@ -308,22 +320,10 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
308320
var window = new Views.Blame() { DataContext = new Blame(_repo.FullPath, change.Path, _commit.SHA) };
309321
window.Show();
310322
ev.Handled = true;
311-
};
312-
313-
var full = Path.GetFullPath(Path.Combine(_repo.FullPath, change.Path));
314-
var explore = new MenuItem();
315-
explore.Header = App.Text("RevealFile");
316-
explore.Icon = App.CreateMenuIcon("Icons.Explore");
317-
explore.IsEnabled = File.Exists(full);
318-
explore.Click += (_, ev) =>
319-
{
320-
Native.OS.OpenInFileManager(full, true);
321-
ev.Handled = true;
322-
};
323+
};
323324

324325
menu.Items.Add(history);
325326
menu.Items.Add(blame);
326-
menu.Items.Add(explore);
327327
menu.Items.Add(new MenuItem { Header = "-" });
328328
}
329329

@@ -352,34 +352,25 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
352352

353353
public ContextMenu CreateRevisionFileContextMenu(Models.Object file)
354354
{
355-
var history = new MenuItem();
356-
history.Header = App.Text("FileHistory");
357-
history.Icon = App.CreateMenuIcon("Icons.Histories");
358-
history.Click += (_, ev) =>
359-
{
360-
var window = new Views.FileHistories() { DataContext = new FileHistories(_repo, file.Path) };
361-
window.Show();
362-
ev.Handled = true;
363-
};
355+
var fullPath = Path.Combine(_repo.FullPath, file.Path);
364356

365-
var blame = new MenuItem();
366-
blame.Header = App.Text("Blame");
367-
blame.Icon = App.CreateMenuIcon("Icons.Blame");
368-
blame.IsEnabled = file.Type == Models.ObjectType.Blob;
369-
blame.Click += (_, ev) =>
357+
var resetToThisRevision = new MenuItem();
358+
resetToThisRevision.Header = App.Text("ChangeCM.CheckoutThisRevision");
359+
resetToThisRevision.Icon = App.CreateMenuIcon("Icons.File.Checkout");
360+
resetToThisRevision.IsEnabled = File.Exists(fullPath);
361+
resetToThisRevision.Click += (_, ev) =>
370362
{
371-
var window = new Views.Blame() { DataContext = new Blame(_repo.FullPath, file.Path, _commit.SHA) };
372-
window.Show();
363+
new Commands.Checkout(_repo.FullPath).FileWithRevision(file.Path, $"{_commit.SHA}");
373364
ev.Handled = true;
374365
};
375366

376-
var full = Path.GetFullPath(Path.Combine(_repo.FullPath, file.Path));
377367
var explore = new MenuItem();
378368
explore.Header = App.Text("RevealFile");
379369
explore.Icon = App.CreateMenuIcon("Icons.Explore");
370+
explore.IsEnabled = File.Exists(fullPath);
380371
explore.Click += (_, ev) =>
381372
{
382-
Native.OS.OpenInFileManager(full, file.Type == Models.ObjectType.Blob);
373+
Native.OS.OpenInFileManager(fullPath, file.Type == Models.ObjectType.Blob);
383374
ev.Handled = true;
384375
};
385376

@@ -404,6 +395,27 @@ public ContextMenu CreateRevisionFileContextMenu(Models.Object file)
404395
ev.Handled = true;
405396
};
406397

398+
var history = new MenuItem();
399+
history.Header = App.Text("FileHistory");
400+
history.Icon = App.CreateMenuIcon("Icons.Histories");
401+
history.Click += (_, ev) =>
402+
{
403+
var window = new Views.FileHistories() { DataContext = new FileHistories(_repo, file.Path) };
404+
window.Show();
405+
ev.Handled = true;
406+
};
407+
408+
var blame = new MenuItem();
409+
blame.Header = App.Text("Blame");
410+
blame.Icon = App.CreateMenuIcon("Icons.Blame");
411+
blame.IsEnabled = file.Type == Models.ObjectType.Blob;
412+
blame.Click += (_, ev) =>
413+
{
414+
var window = new Views.Blame() { DataContext = new Blame(_repo.FullPath, file.Path, _commit.SHA) };
415+
window.Show();
416+
ev.Handled = true;
417+
};
418+
407419
var copyPath = new MenuItem();
408420
copyPath.Header = App.Text("CopyPath");
409421
copyPath.Icon = App.CreateMenuIcon("Icons.Copy");
@@ -423,10 +435,14 @@ public ContextMenu CreateRevisionFileContextMenu(Models.Object file)
423435
};
424436

425437
var menu = new ContextMenu();
426-
menu.Items.Add(history);
427-
menu.Items.Add(blame);
438+
menu.Items.Add(resetToThisRevision);
439+
menu.Items.Add(new MenuItem() { Header = "-" });
428440
menu.Items.Add(explore);
429441
menu.Items.Add(saveAs);
442+
menu.Items.Add(new MenuItem() { Header = "-" });
443+
menu.Items.Add(history);
444+
menu.Items.Add(blame);
445+
menu.Items.Add(new MenuItem() { Header = "-" });
430446
menu.Items.Add(copyPath);
431447
menu.Items.Add(copyFileName);
432448
return menu;

0 commit comments

Comments
 (0)