Skip to content

Commit 45f3b4e

Browse files
committed
add context menu: remove project from recent projects list (fixes #64)
1 parent b21a699 commit 45f3b4e

File tree

3 files changed

+65
-2
lines changed

3 files changed

+65
-2
lines changed

UnityLauncherPro/GetProjects.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,57 @@ public static List<Project> Scan(bool getGitBranch = false, bool getArguments =
146146

147147
return projectsFound;
148148
} // Scan()
149+
150+
public static bool RemoveRecentProject(string projectPathToRemove)
151+
{
152+
var hklm = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
153+
154+
// check each version path
155+
for (int i = 0, len = registryPathsToCheck.Length; i < len; i++)
156+
{
157+
RegistryKey key = hklm.OpenSubKey(registryPathsToCheck[i], true);
158+
159+
if (key == null)
160+
{
161+
continue;
162+
}
163+
else
164+
{
165+
//Console.WriteLine("Null registry key at " + registryPathsToCheck[i]);
166+
}
167+
168+
// parse recent project paths
169+
foreach (var valueName in key.GetValueNames())
170+
{
171+
if (valueName.IndexOf("RecentlyUsedProjectPaths-") == 0)
172+
{
173+
string projectPath = "";
174+
// check if binary or not
175+
var valueKind = key.GetValueKind(valueName);
176+
if (valueKind == RegistryValueKind.Binary)
177+
{
178+
byte[] projectPathBytes = (byte[])key.GetValue(valueName);
179+
projectPath = Encoding.UTF8.GetString(projectPathBytes, 0, projectPathBytes.Length - 1);
180+
}
181+
else // should be string then
182+
{
183+
projectPath = (string)key.GetValue(valueName);
184+
}
185+
186+
// if our project folder, remove registry item
187+
if (projectPath == projectPathToRemove)
188+
{
189+
Console.WriteLine("Deleted registery item: " + valueName + " projectPath=" + projectPath);
190+
key.DeleteValue(valueName);
191+
return true;
192+
}
193+
194+
} // valid key
195+
} // each key
196+
} // for each registry root
197+
return false;
198+
} // RemoveRecentProject()
199+
149200
} // class
150201
} // namespace
151202

UnityLauncherPro/MainWindow.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,8 @@
506506
<MenuItem x:Name="menuItemKillProcess" Header="Kill Process" Click="MenuItemKillProcess_Click" />
507507
<Separator/>
508508
<MenuItem x:Name="menuStartWebGLServer" Header="Start WebGL server" Click="MenuStartWebGLServer_Click" />
509+
<Separator/>
510+
<MenuItem x:Name="menuRemoveProject" Header="Remove from recent list" Click="MenuRemoveProject_Click" />
509511
</ContextMenu>
510512
</DataGrid.ContextMenu>
511513

UnityLauncherPro/MainWindow.xaml.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@ void Start()
137137
}
138138

139139
// TEST
140-
themeEditorWindow = new ThemeEditor();
141-
themeEditorWindow.Show();
140+
//themeEditorWindow = new ThemeEditor();
141+
//themeEditorWindow.Show();
142142

143143
isInitializing = false;
144144
}
@@ -2362,6 +2362,16 @@ private void BtnThemeEditor_Click(object sender, RoutedEventArgs e)
23622362
themeEditorWindow = new ThemeEditor();
23632363
themeEditorWindow.Show();
23642364
}
2365+
2366+
private void MenuRemoveProject_Click(object sender, RoutedEventArgs e)
2367+
{
2368+
var proj = GetSelectedProject();
2369+
if (proj == null) return;
2370+
if (GetProjects.RemoveRecentProject(proj.Path))
2371+
{
2372+
RefreshRecentProjects();
2373+
}
2374+
}
23652375
} // class
23662376
} //namespace
23672377

0 commit comments

Comments
 (0)