Add launcher edit action

This commit is contained in:
Ray Berezowski
2026-08-26 19:49:49 -04:00
parent 362cd94138
commit 32f08bc0fd
6 changed files with 52 additions and 4 deletions

View File

@@ -19,14 +19,16 @@ public partial class LauncherPopup : Window
private readonly Action<LauncherItem> launchItem;
private readonly Action<LauncherItem> openAllItems;
private readonly Action showSettings;
private readonly Action<LauncherItem> editItem;
public LauncherPopup(LauncherConfig config, Action<LauncherItem> launchItem, Action<LauncherItem> openAllItems, Action showSettings)
public LauncherPopup(LauncherConfig config, Action<LauncherItem> launchItem, Action<LauncherItem> openAllItems, Action showSettings, Action<LauncherItem> editItem)
{
InitializeComponent();
this.config = config;
this.launchItem = launchItem;
this.openAllItems = openAllItems;
this.showSettings = showSettings;
this.editItem = editItem;
BuildItems();
SizeChanged += (_, _) => QueueReposition();
}
@@ -129,6 +131,7 @@ public partial class LauncherPopup : Window
};
button.Click += (_, _) => launchItem(item);
button.ContextMenu = CreateItemContextMenu(item);
button.KeyDown += (_, e) =>
{
if (e.Key == Key.Enter)
@@ -161,6 +164,8 @@ public partial class LauncherPopup : Window
System.Windows.Controls.ContextMenu contextMenu = new();
contextMenu.Items.Add(openAllMenuItem);
contextMenu.Items.Add(new Separator());
contextMenu.Items.Add(CreateEditMenuItem(item));
return new TextBlock
{
@@ -169,6 +174,29 @@ public partial class LauncherPopup : Window
};
}
private System.Windows.Controls.ContextMenu CreateItemContextMenu(LauncherItem item)
{
System.Windows.Controls.ContextMenu contextMenu = new();
contextMenu.Items.Add(CreateEditMenuItem(item));
return contextMenu;
}
private System.Windows.Controls.MenuItem CreateEditMenuItem(LauncherItem item)
{
System.Windows.Controls.MenuItem editMenuItem = new()
{
Header = "Edit in Settings"
};
editMenuItem.Click += (_, e) =>
{
editItem(item);
Close();
e.Handled = true;
};
return editMenuItem;
}
private static bool IsLaunchable(LauncherItem item)
{
return item.Type != LauncherItemType.Menu && !string.IsNullOrWhiteSpace(item.Target);