Skip to content

Commit f4a9208

Browse files
committed
enable 8.0 language features,
projects: add context menu for Open Editor.log (Ctrl+L) #230 open local editor log for 6.5 projects and later
1 parent f09c733 commit f4a9208

4 files changed

Lines changed: 119 additions & 6 deletions

File tree

UnityLauncherPro/MainWindow.xaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
xmlns:converters="clr-namespace:UnityLauncherPro.Converters" x:Class="UnityLauncherPro.MainWindow"
1010
mc:Ignorable="d"
1111
Title="UnityLauncherPro" Height="670" Width="880" WindowStartupLocation="CenterScreen" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="780" MinHeight="650" AllowsTransparency="True" WindowStyle="None" Margin="0" KeyDown="OnWindowKeyDown" Closing="Window_Closing" SizeChanged="Window_SizeChanged" Icon="Images/icon.ico" SourceInitialized="Window_SourceInitialized" MouseDown="Window_MouseDown">
12+
<Window.CommandBindings>
13+
<CommandBinding Command="{x:Static local:MainWindow.OpenEditorLogsCommand}" Executed="MenuOpenEditorLogs_Click" />
14+
</Window.CommandBindings>
1215
<Window.Resources>
1316
<converters:LastModifiedConverter x:Key="lastModifiedConverter"/>
1417
<converters:LastModifiedConverterTooltip x:Key="LastModifiedConverterTooltip"/>
@@ -61,6 +64,7 @@
6164
<DataGrid.CommandBindings>
6265
<CommandBinding Command="ApplicationCommands.Copy" Executed="CopyRowFolderToClipBoard" CanExecute="CanExecute_Copy"/>
6366
<CommandBinding Command="{x:Static local:MainWindow.KillProcessCommand}" Executed="KillSelectedProcess"/>
67+
<CommandBinding Command="{x:Static local:MainWindow.OpenEditorLogsCommand}" Executed="MenuOpenEditorLogs_Click"/>
6468
</DataGrid.CommandBindings>
6569

6670
<DataGrid.Columns>
@@ -175,6 +179,7 @@
175179
<MenuItem x:Name="menuItemShowProjectInExplorer" Header="Show in Explorer" Click="MenuItemShowProjectInExplorer_Click" />
176180
<MenuItem x:Name="menuItemBrowsePersistentDataPath" Header="Open PersistentDataPath" Click="MenuItemBrowsePersistentDataPath_Click" />
177181
<MenuItem x:Name="menuCreateDesktopShortCut" Header="Create Shortcut on Desktop" Click="MenuCreateDesktopShortCut_Click" />
182+
<MenuItem x:Name="menuOpenEditorLogs" Header="Open Editor.Log" InputGestureText="Ctrl+L" Command="{x:Static local:MainWindow.OpenEditorLogsCommand}" Click="MenuOpenEditorLogs_Click" />
178183
<Separator/>
179184
<MenuItem x:Name="menuItemKillProcess" Header="Kill Process" Click="MenuItemKillProcess_Click" />
180185
<Separator/>
@@ -432,6 +437,11 @@
432437
</Style>
433438
</DataGridTextColumn.CellStyle>
434439
</DataGridTextColumn>
440+
<DataGridTextColumn Header="Release" Binding="{Binding ReleaseType}" IsReadOnly="True" CanUserResize="False" MinWidth="50" />
441+
<DataGridTextColumn Binding="{Binding PlatformsCombined}" ClipboardContentBinding="{x:Null}" Header="Platforms" IsReadOnly="True"/>
442+
<DataGridTextColumn Binding="{Binding Installed, StringFormat=\{0:dd/MM/yyyy HH:mm:ss\}}" ClipboardContentBinding="{x:Null}" Header="Installed" IsReadOnly="True"/>
443+
<DataGridTextColumn Binding="{Binding ProjectCount}" ClipboardContentBinding="{x:Null}" Header="Projects" IsReadOnly="True"/>
444+
<DataGridTextColumn Binding="{Binding Path}" ClipboardContentBinding="{x:Null}" Header="Path" IsReadOnly="True"/>
435445
</DataGrid.Columns>
436446

437447
<!-- right click context menu -->
@@ -496,7 +506,7 @@
496506
<!-- folders -->
497507
<StackPanel Orientation="Horizontal" Margin="0,4,10,4" VerticalAlignment="Top">
498508
<Label Content="Folders" Foreground="{DynamicResource ThemeButtonForeground}" />
499-
<Button Style="{StaticResource CustomButton}" x:Name="btnOpenEditorLogsFolder" Margin="0" HorizontalAlignment="Left" VerticalAlignment="Top" Click="BtnOpenEditorLogsFolder_Click" ToolTip="Browse Editor logs folder or Right click to open editor.log" PreviewMouseDown="btnOpenEditorLogsFolder_PreviewMouseDown">
509+
<Button Style="{StaticResource CustomButton}" x:Name="btnOpenEditorLogsFolder" Margin="0" HorizontalAlignment="Left" VerticalAlignment="Top" Click="BtnOpenEditorLogsFolder_Click" ToolTip="Browse Editor logs folder or Middle click to open editor.log" PreviewMouseDown="btnOpenEditorLogsFolder_PreviewMouseDown">
500510
<Label Content="_Editor Logs" Foreground="{Binding Path=Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Control}}}" />
501511
</Button>
502512
<Button Style="{StaticResource CustomButton}" x:Name="btnOpenPlayerLogs" Margin="10,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Click="BtnOpenPlayerLogs_Click" ToolTip="Browse Player logs folder">

UnityLauncherPro/MainWindow.xaml.cs

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1587,7 +1587,7 @@ private void DataGridUpdates_PreviewKeyDown(object sender, KeyEventArgs e)
15871587

15881588
private void BtnOpenEditorLogsFolder_Click(object sender, RoutedEventArgs e)
15891589
{
1590-
var logfolder = Tools.GetEditorLogsFolder();
1590+
var logfolder = Tools.GetGlobalEditorLogsFolder();
15911591
if (Directory.Exists(logfolder) == true)
15921592
{
15931593
if (Tools.LaunchExplorer(logfolder) == false)
@@ -2361,6 +2361,12 @@ private void GridRecent_ContextMenuOpening(object sender, ContextMenuEventArgs e
23612361
new KeyGesture(Key.Q, ModifierKeys.Alt)
23622362
}));
23632363

2364+
public static readonly RoutedCommand OpenEditorLogsCommand = new RoutedUICommand("None", "OpenEditorLogsCommand", typeof(MainWindow), new InputGestureCollection(new InputGesture[]
2365+
{
2366+
new KeyGesture(Key.L, ModifierKeys.Control)
2367+
}));
2368+
2369+
23642370
private void BtnRefreshBuildReport_Click(object sender, RoutedEventArgs e)
23652371
{
23662372
RefreshBuildReports();
@@ -2376,7 +2382,7 @@ void RefreshBuildReports()
23762382
btnPrevBuildReport.IsEnabled = false;
23772383
btnNextBuildReport.IsEnabled = false;
23782384

2379-
var logFile = Path.Combine(Tools.GetEditorLogsFolder(), "Editor.log");
2385+
var logFile = Path.Combine(Tools.GetGlobalEditorLogsFolder(), "Editor.log");
23802386
if (File.Exists(logFile) == false) return;
23812387

23822388
BuildReport singleReport = null;// new BuildReport();
@@ -3874,7 +3880,7 @@ private void btnOpenEditorLogsFolder_PreviewMouseDown(object sender, MouseButton
38743880
{
38753881
if (e.ChangedButton == MouseButton.Middle)
38763882
{
3877-
var logfolder = Tools.GetEditorLogsFolder();
3883+
var logfolder = Tools.GetGlobalEditorLogsFolder();
38783884
var logFile = Path.Combine(logfolder, "Editor.log");
38793885
if (File.Exists(logFile) == true) Tools.LaunchExe(logFile);
38803886
}
@@ -4361,6 +4367,40 @@ private void gridRecent_PreviewMouseRightButtonDown(object sender, MouseButtonEv
43614367
row.Focus();
43624368
}
43634369

4370+
private void MenuOpenEditorLogs_Click(object sender, RoutedEventArgs e)
4371+
{
4372+
var proj = GetSelectedProject();
4373+
if (proj == null) return;
4374+
4375+
// if version is 6000.5 or higher, then log file is in Proj/Logs, otherwise in Appdata/LocalLow
4376+
if (proj.Version != null && Tools.IsVersionAtLeast(proj.Version, "6000.5") == true)
4377+
{
4378+
var logFolder = Path.Combine(proj.Path, "Logs");
4379+
var logFile = Path.Combine(logFolder, "Editor.log");
4380+
if (File.Exists(logFile) == true)
4381+
{
4382+
Tools.LaunchExe(logFile);
4383+
}
4384+
else
4385+
{
4386+
SetStatus("Log file not found: " + logFile, MessageType.Warning);
4387+
}
4388+
}
4389+
else
4390+
{
4391+
var logFolder = Tools.GetGlobalEditorLogsFolder();
4392+
var logFile = Path.Combine(logFolder, "Editor.log");
4393+
if (File.Exists(logFile) == true)
4394+
{
4395+
Tools.LaunchExe(logFile);
4396+
}
4397+
else
4398+
{
4399+
SetStatus("Log file not found: " + logFile, MessageType.Warning);
4400+
}
4401+
}
4402+
}
4403+
43644404
//private void menuProjectProperties_Click(object sender, RoutedEventArgs e)
43654405
//{
43664406
// var proj = GetSelectedProject();

UnityLauncherPro/Tools.cs

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1494,6 +1494,7 @@ public static void RemoveContextMenuRegistryAPKInstall(string contextRegRoot)
14941494
/// reads .git/HEAD file from the project to get current branch name
14951495
/// </summary>
14961496
/// <param name="projectPath"></param>
1497+
/// <param name="searchParentFolders"></param>
14971498
/// <returns></returns>
14981499
public static string ReadGitBranchInfo(string projectPath, bool searchParentFolders)
14991500
{
@@ -1919,8 +1920,9 @@ static void CreateEmptyProjectFolder(string path, string version)
19191920
File.WriteAllText(settingsFile, "m_EditorVersion: " + version);
19201921
}
19211922

1922-
public static string GetEditorLogsFolder()
1923+
public static string GetGlobalEditorLogsFolder()
19231924
{
1925+
// NOTE this is pre 6.5 unity (in 6.5 and later its inside project: MyProj/Logs/Editor.log)
19241926
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Unity", "Editor");
19251927
}
19261928

@@ -2312,7 +2314,7 @@ public static void LaunchWebGL(Project proj, string relativeFolder)
23122314
if (objEndPoints[i].Port == port)
23132315
{
23142316
port++;
2315-
if (port > 65534)
2317+
if (port > 65535)
23162318
{
23172319
Console.WriteLine("Failed to find open port..");
23182320
isAvailable = false;
@@ -2953,6 +2955,11 @@ internal static bool RunExclusionElevated(IEnumerable<string> paths, bool silent
29532955
}
29542956
return false;
29552957
}
2958+
catch (Exception ex)
2959+
{
2960+
MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
2961+
return false;
2962+
}
29562963

29572964
return true;
29582965
}
@@ -3218,6 +3225,61 @@ private static void LaunchBrowser(string url)
32183225
MessageBox.Show("Failed to open URL: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
32193226
}
32203227
}
3228+
3229+
internal static bool IsVersionAtLeast(string version, string v)
3230+
{
3231+
if (string.IsNullOrEmpty(version) || string.IsNullOrEmpty(v)) return false;
3232+
3233+
try
3234+
{
3235+
var versionParts = version.Split('.');
3236+
var vParts = v.Split('.');
3237+
3238+
int versionMajor = 0;
3239+
int vMajor = 0;
3240+
int versionMinor = 0;
3241+
int vMinor = 0;
3242+
3243+
if (versionParts.Length > 0)
3244+
{
3245+
int i = 0;
3246+
while (i < versionParts[0].Length && char.IsDigit(versionParts[0][i])) i++;
3247+
int.TryParse(versionParts[0].Substring(0, i), out versionMajor);
3248+
}
3249+
3250+
if (vParts.Length > 0)
3251+
{
3252+
int i = 0;
3253+
while (i < vParts[0].Length && char.IsDigit(vParts[0][i])) i++;
3254+
int.TryParse(vParts[0].Substring(0, i), out vMajor);
3255+
}
3256+
3257+
if (versionMajor != vMajor)
3258+
{
3259+
return versionMajor > vMajor;
3260+
}
3261+
3262+
if (versionParts.Length > 1)
3263+
{
3264+
int i = 0;
3265+
while (i < versionParts[1].Length && char.IsDigit(versionParts[1][i])) i++;
3266+
int.TryParse(versionParts[1].Substring(0, i), out versionMinor);
3267+
}
3268+
3269+
if (vParts.Length > 1)
3270+
{
3271+
int i = 0;
3272+
while (i < vParts[1].Length && char.IsDigit(vParts[1][i])) i++;
3273+
int.TryParse(vParts[1].Substring(0, i), out vMinor);
3274+
}
3275+
3276+
return versionMinor >= vMinor;
3277+
}
3278+
catch
3279+
{
3280+
return false;
3281+
}
3282+
}
32213283
} // class
32223284

32233285
} // namespace

UnityLauncherPro/UnityLauncherPro.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<RootNamespace>UnityLauncherPro</RootNamespace>
1010
<AssemblyName>UnityLauncherPro</AssemblyName>
1111
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
12+
<LangVersion>8.0</LangVersion>
1213
<FileAlignment>512</FileAlignment>
1314
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
1415
<WarningLevel>4</WarningLevel>

0 commit comments

Comments
 (0)