mirror of
https://github.com/Orbmu2k/nvidiaProfileInspector.git
synced 2025-12-29 09:58:09 -05:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c38992cd7c | ||
|
|
53ead6e9ef | ||
|
|
f35c4cda03 | ||
|
|
a0207baafb | ||
|
|
689ad42bce | ||
|
|
0a7003519a | ||
|
|
fa01928689 | ||
|
|
9de53ac04d | ||
|
|
7b917d9b11 | ||
|
|
8ac48c2928 | ||
|
|
84e138c1ae | ||
|
|
e3ff6d42ac |
@@ -13,8 +13,10 @@ namespace nspector.Common.CustomSettings
|
||||
public string HexSettingId { get; set; }
|
||||
public string Description { get; set; }
|
||||
public string GroupName { get; set; }
|
||||
public string AlternateNames { get; set; }
|
||||
public string OverrideDefault { get; set; }
|
||||
public float MinRequiredDriverVersion { get; set; }
|
||||
public float MaxRequiredDriverVersion { get; set; }
|
||||
public bool Hidden { get; set; }
|
||||
public bool HasConstraints { get; set; }
|
||||
public string DataType { get; set; }
|
||||
|
||||
@@ -106,6 +106,17 @@ namespace nspector.Common
|
||||
return null;
|
||||
}
|
||||
|
||||
private string GetAlternateNames(uint settingId)
|
||||
{
|
||||
foreach (var service in MetaServices.OrderBy(x => x.Service.Source))
|
||||
{
|
||||
var altNames = service.Service.GetAlternateNames(settingId);
|
||||
if (altNames != null)
|
||||
return altNames;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private uint GetDwordDefaultValue(uint settingId)
|
||||
{
|
||||
foreach (var service in MetaServices.OrderBy(x => x.Service.Source))
|
||||
@@ -301,13 +312,12 @@ namespace nspector.Common
|
||||
if (groupName == null)
|
||||
groupName = GetLegacyGroupName(settingId, settingName);
|
||||
|
||||
|
||||
|
||||
var result = new SettingMeta()
|
||||
{
|
||||
SettingType = settingType,
|
||||
SettingName = settingName,
|
||||
GroupName = groupName,
|
||||
AlternateNames = GetAlternateNames(settingId),
|
||||
|
||||
IsApiExposed = GetIsApiExposed(settingId),
|
||||
IsSettingHidden = GetIsSettingHidden(settingId),
|
||||
@@ -351,6 +361,7 @@ namespace nspector.Common
|
||||
SettingName = settingMeta.SettingName,
|
||||
SettingType = settingMeta.SettingType,
|
||||
GroupName = settingMeta.GroupName,
|
||||
AlternateNames = settingMeta.AlternateNames,
|
||||
IsApiExposed = settingMeta.IsApiExposed,
|
||||
IsSettingHidden = settingMeta.IsSettingHidden,
|
||||
Description = settingMeta.Description,
|
||||
@@ -421,7 +432,10 @@ namespace nspector.Common
|
||||
private bool GetIsSettingHidden(uint settingId)
|
||||
{
|
||||
var csnMeta = MetaServices.FirstOrDefault(m => m.Service.Source == SettingMetaSource.CustomSettings);
|
||||
return (csnMeta != null && ((CustomSettingMetaService)csnMeta.Service).IsSettingHidden(settingId));
|
||||
var refMeta = MetaServices.FirstOrDefault(m => m.Service.Source == SettingMetaSource.ReferenceSettings);
|
||||
|
||||
return (csnMeta != null && ((CustomSettingMetaService)csnMeta.Service).IsSettingHidden(settingId)) ||
|
||||
refMeta != null && ((CustomSettingMetaService)refMeta.Service).IsSettingHidden(settingId);
|
||||
}
|
||||
|
||||
private string GetDescription(uint settingId)
|
||||
|
||||
@@ -141,6 +141,27 @@ namespace nspector.Common
|
||||
|
||||
}
|
||||
|
||||
public string GetProfileNameByExeName(string appName)
|
||||
{
|
||||
string profileName = string.Empty;
|
||||
|
||||
DrsSession((hSession) =>
|
||||
{
|
||||
var hProfile = FindApplicationByName(hSession, appName);
|
||||
if (hProfile != IntPtr.Zero)
|
||||
{
|
||||
var profile = GetProfileInfo(hSession, hProfile);
|
||||
|
||||
if (profile.isPredefined == 0 || profile.numOfApps > 0)
|
||||
{
|
||||
profileName = profile.profileName;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return profileName;
|
||||
}
|
||||
|
||||
public List<string> GetProfileNames(ref string baseProfileName)
|
||||
{
|
||||
var lstResult = new List<string>();
|
||||
@@ -471,6 +492,7 @@ namespace nspector.Common
|
||||
SettingId = setting.settingId,
|
||||
SettingText = settingMeta.SettingName,
|
||||
GroupName = settingMeta.GroupName,
|
||||
AlternateNames = settingMeta.AlternateNames,
|
||||
ValueRaw = valueRaw,
|
||||
ValueText = valueText,
|
||||
State = settingState,
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace nspector.Common
|
||||
{
|
||||
internal abstract class DrsSettingsServiceBase
|
||||
{
|
||||
public static readonly float DriverVersion = GetDriverVersionInternal();
|
||||
|
||||
protected DrsSettingsMetaService meta;
|
||||
protected DrsDecrypterService decrypter;
|
||||
@@ -22,11 +23,9 @@ namespace nspector.Common
|
||||
{
|
||||
meta = metaService;
|
||||
decrypter = decrpterService;
|
||||
DriverVersion = GetDriverVersionInternal();
|
||||
}
|
||||
|
||||
public readonly float DriverVersion;
|
||||
private float GetDriverVersionInternal()
|
||||
private static float GetDriverVersionInternal()
|
||||
{
|
||||
float result = 0f;
|
||||
uint sysDrvVersion = 0;
|
||||
@@ -302,6 +301,20 @@ namespace nspector.Common
|
||||
return apps.ToList();
|
||||
}
|
||||
|
||||
protected IntPtr FindApplicationByName(IntPtr hSession, string appName)
|
||||
{
|
||||
IntPtr hProfile = IntPtr.Zero;
|
||||
NVDRS_APPLICATION_V4 app = new NVDRS_APPLICATION_V4();
|
||||
app.version = NvapiDrsWrapper.NVDRS_APPLICATION_VER_V4;
|
||||
|
||||
var res = NvapiDrsWrapper.DRS_FindApplicationByName(hSession, new StringBuilder(appName), ref hProfile, ref app);
|
||||
|
||||
if (res != NvAPI_Status.NVAPI_OK)
|
||||
throw new NvapiException("DRS_FindApplicationByName", res);
|
||||
|
||||
return hProfile;
|
||||
}
|
||||
|
||||
protected void SaveSettings(IntPtr hSession)
|
||||
{
|
||||
var nvRes = nvw.DRS_SaveSettings(hSession);
|
||||
|
||||
125
nspector/Common/Helper/DlssHelper.cs
Normal file
125
nspector/Common/Helper/DlssHelper.cs
Normal file
@@ -0,0 +1,125 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.IO;
|
||||
|
||||
namespace nspector.Common.Helper
|
||||
{
|
||||
public class IniParser
|
||||
{
|
||||
public Dictionary<string, Dictionary<string, string>> Data { get; } = new();
|
||||
|
||||
public void Load(string filePath)
|
||||
{
|
||||
using var reader = new StreamReader(filePath);
|
||||
string? line;
|
||||
string? currentSection = null;
|
||||
|
||||
while ((line = reader.ReadLine()) != null)
|
||||
{
|
||||
line = line.Trim();
|
||||
|
||||
// Skip empty lines and comments
|
||||
if (string.IsNullOrEmpty(line) || line.StartsWith(";") || line.StartsWith("#"))
|
||||
continue;
|
||||
|
||||
// Section
|
||||
if (line.StartsWith("[") && line.EndsWith("]"))
|
||||
{
|
||||
currentSection = line.Substring(1, line.Length - 2).Trim();
|
||||
if (!Data.ContainsKey(currentSection))
|
||||
Data[currentSection] = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
// Key=Value
|
||||
else if (currentSection != null && line.Contains('='))
|
||||
{
|
||||
int idx = line.IndexOf('=');
|
||||
var key = line.Substring(0, idx).Trim();
|
||||
var value = line.Substring(idx + 1).Trim();
|
||||
Data[currentSection][key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string? GetValue(string section, string key)
|
||||
{
|
||||
if (Data.TryGetValue(section, out var sectionDict) &&
|
||||
sectionDict.TryGetValue(key, out var value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<string> GetSections()
|
||||
{
|
||||
return Data.Keys.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DlssHelper
|
||||
{
|
||||
private static Dictionary<string, Version> _ngxVersions = FetchVersions();
|
||||
|
||||
// Fetches latest versions installed in C:\ProgramData\NVIDIA\NGX\models\ folder
|
||||
private static Dictionary<string, Version> FetchVersions()
|
||||
{
|
||||
Dictionary<string, Version> versions = new Dictionary<string, Version>();
|
||||
|
||||
try
|
||||
{
|
||||
string ngxDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), @"NVIDIA\NGX\models\");
|
||||
string ngxConfigPath = Path.Combine(ngxDataPath, "nvngx_config.txt");
|
||||
if (!File.Exists(ngxConfigPath))
|
||||
return versions;
|
||||
|
||||
var ini = new IniParser();
|
||||
ini.Load(ngxConfigPath);
|
||||
|
||||
foreach (string section in ini.GetSections())
|
||||
{
|
||||
string versionStr = ini.GetValue(section, "app_E658700");
|
||||
if (string.IsNullOrEmpty(versionStr))
|
||||
continue;
|
||||
|
||||
Version ver = new Version(versionStr.Trim());
|
||||
|
||||
versions[section] = ver;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
versions.Clear();
|
||||
}
|
||||
|
||||
return versions;
|
||||
}
|
||||
|
||||
public static string GetSnippetLatestVersion(string snippet)
|
||||
{
|
||||
if (!_ngxVersions.ContainsKey(snippet))
|
||||
return "unknown";
|
||||
return "v" + _ngxVersions[snippet].ToString();
|
||||
}
|
||||
|
||||
public static string ReplaceDlssVersions(string str)
|
||||
{
|
||||
if (string.IsNullOrEmpty(str))
|
||||
return str;
|
||||
|
||||
if (str.Contains("${DlssVersion}"))
|
||||
str = str.Replace("${DlssVersion}", DlssHelper.GetSnippetLatestVersion("dlss").ToString());
|
||||
|
||||
if (str.Contains("${DlssgVersion}"))
|
||||
str = str.Replace("${DlssgVersion}", DlssHelper.GetSnippetLatestVersion("dlssg").ToString());
|
||||
|
||||
if (str.Contains("${DlssdVersion}"))
|
||||
str = str.Replace("${DlssdVersion}", DlssHelper.GetSnippetLatestVersion("dlssd").ToString());
|
||||
|
||||
return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
70
nspector/Common/Helper/GithubVersionHelper.cs
Normal file
70
nspector/Common/Helper/GithubVersionHelper.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Reflection;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nspector.Common.Helper
|
||||
{
|
||||
public static class GithubVersionHelper
|
||||
{
|
||||
// Check latest release info (ignores pre-release versions)
|
||||
private const string _repoUrl = "https://api.github.com/repos/Orbmu2k/nvidiaProfileInspector/releases/latest";
|
||||
|
||||
public static async Task<bool> IsUpdateAvailableAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
var currentVersion = Assembly.GetExecutingAssembly().GetName().Version;
|
||||
|
||||
using var httpClient = new HttpClient();
|
||||
httpClient.Timeout = TimeSpan.FromSeconds(10);
|
||||
httpClient.DefaultRequestHeaders.Add("User-Agent", "nvidiaProfileInspector/" + currentVersion.ToString());
|
||||
|
||||
var response = await httpClient.GetAsync(_repoUrl);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
return false;
|
||||
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
|
||||
var tagName = ExtractJsonString(content, "tag_name");
|
||||
|
||||
if (string.IsNullOrEmpty(tagName))
|
||||
return false;
|
||||
|
||||
var versionString = tagName.TrimStart('v').Trim();
|
||||
|
||||
if (Version.TryParse(versionString, out Version latestVersion))
|
||||
{
|
||||
return latestVersion > currentVersion;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static string ExtractJsonString(string json, string fieldName)
|
||||
{
|
||||
var pattern = $"\"{fieldName}\"\\s*:\\s*\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"";
|
||||
var match = Regex.Match(json, pattern);
|
||||
|
||||
if (match.Success)
|
||||
{
|
||||
var value = match.Groups[1].Value;
|
||||
value = value.Replace("\\\"", "\"");
|
||||
value = value.Replace("\\\\", "\\");
|
||||
value = value.Replace("\\n", "\n");
|
||||
value = value.Replace("\\r", "\r");
|
||||
value = value.Replace("\\t", "\t");
|
||||
return value;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
@@ -21,6 +22,10 @@ namespace nspector.Common.Helper
|
||||
|
||||
public bool ShowScannedUnknownSettings { get; set; } = false;
|
||||
|
||||
public List<string> HiddenSettingGroups { get; set; } = new List<string>();
|
||||
|
||||
public bool DisableUpdateCheck { get; set; } = false;
|
||||
|
||||
private static string GetSettingsFilename()
|
||||
{
|
||||
var fiPortalbleSettings = new FileInfo("settings.xml");
|
||||
|
||||
@@ -157,6 +157,11 @@ namespace nspector.Common.Meta
|
||||
return null;
|
||||
}
|
||||
|
||||
public string GetAlternateNames(uint settingId)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public byte[] GetBinaryDefaultValue(uint settingId)
|
||||
{
|
||||
return null;
|
||||
|
||||
@@ -3,6 +3,7 @@ using nspector.Native.NVAPI2;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using nspector.Common.Helper;
|
||||
|
||||
namespace nspector.Common.Meta
|
||||
{
|
||||
@@ -42,13 +43,19 @@ namespace nspector.Common.Meta
|
||||
}
|
||||
}
|
||||
|
||||
private string ProcessNameReplacements(string friendlyName)
|
||||
{
|
||||
// Apply string version replacements here before settings are fully loaded, so that string-to-value mappings can be preserved
|
||||
return DlssHelper.ReplaceDlssVersions(friendlyName);
|
||||
}
|
||||
|
||||
public string GetSettingName(uint settingId)
|
||||
{
|
||||
var setting = customSettings.Settings
|
||||
.FirstOrDefault(x => x.SettingId.Equals(settingId));
|
||||
|
||||
if (setting != null)
|
||||
return setting.UserfriendlyName;
|
||||
return ProcessNameReplacements(setting.UserfriendlyName);
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -86,7 +93,7 @@ namespace nspector.Common.Meta
|
||||
{
|
||||
ValuePos = i++,
|
||||
Value = x.SettingValue,
|
||||
ValueName = _source == SettingMetaSource.CustomSettings ? x.UserfriendlyName : DrsUtil.GetDwordString(x.SettingValue) + " " + x.UserfriendlyName,
|
||||
ValueName = _source == SettingMetaSource.CustomSettings ? ProcessNameReplacements(x.UserfriendlyName) : DrsUtil.GetDwordString(x.SettingValue) + " " + ProcessNameReplacements(x.UserfriendlyName),
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
@@ -111,6 +118,14 @@ namespace nspector.Common.Meta
|
||||
return null;
|
||||
}
|
||||
|
||||
public string GetAlternateNames(uint settingId)
|
||||
{
|
||||
var setting = customSettings.Settings
|
||||
.FirstOrDefault(x => x.SettingId.Equals(settingId));
|
||||
|
||||
return setting?.AlternateNames;
|
||||
}
|
||||
|
||||
public byte[] GetBinaryDefaultValue(uint settingId)
|
||||
{
|
||||
return null;
|
||||
@@ -126,6 +141,21 @@ namespace nspector.Common.Meta
|
||||
var setting = customSettings.Settings
|
||||
.FirstOrDefault(x => x.SettingId.Equals(settingId));
|
||||
|
||||
if (DrsSettingsServiceBase.DriverVersion > 0)
|
||||
{
|
||||
if (DrsSettingsServiceBase.DriverVersion > 425.31 && (settingId & 0xFF000000) == 0x70000000)
|
||||
return true; // 3D vision settings removed after 425.31
|
||||
|
||||
if (setting == null)
|
||||
return false;
|
||||
|
||||
if (setting.MinRequiredDriverVersion > 0 && setting.MinRequiredDriverVersion > DrsSettingsServiceBase.DriverVersion)
|
||||
return true;
|
||||
|
||||
if (setting.MaxRequiredDriverVersion > 0 && setting.MaxRequiredDriverVersion < DrsSettingsServiceBase.DriverVersion)
|
||||
return true;
|
||||
}
|
||||
|
||||
return setting?.Hidden ?? false;
|
||||
}
|
||||
|
||||
|
||||
@@ -201,6 +201,11 @@ namespace nspector.Common.Meta
|
||||
return null;
|
||||
}
|
||||
|
||||
public string GetAlternateNames(uint settingId)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public byte[] GetBinaryDefaultValue(uint settingId)
|
||||
{
|
||||
var settingMeta = GetSettingsMeta(settingId);
|
||||
|
||||
@@ -16,6 +16,8 @@ namespace nspector.Common.Meta
|
||||
|
||||
string GetGroupName(uint settingId);
|
||||
|
||||
string GetAlternateNames(uint settingId);
|
||||
|
||||
uint? GetDwordDefaultValue(uint settingId);
|
||||
|
||||
string GetStringDefaultValue(uint settingId);
|
||||
|
||||
@@ -43,6 +43,11 @@ namespace nspector.Common.Meta
|
||||
return null;
|
||||
}
|
||||
|
||||
public string GetAlternateNames(uint settingId)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public uint? GetDwordDefaultValue(uint settingId)
|
||||
{
|
||||
return null;
|
||||
|
||||
@@ -9,6 +9,8 @@ namespace nspector.Common.Meta
|
||||
|
||||
public string GroupName { get; set; }
|
||||
|
||||
public string AlternateNames { get; set; }
|
||||
|
||||
public string SettingName { get; set; }
|
||||
|
||||
public string DefaultStringValue { get; set; }
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
public string GroupName { get; set; }
|
||||
|
||||
public string AlternateNames { get; set; }
|
||||
|
||||
public SettingState State { get; set; }
|
||||
|
||||
public bool IsStringValue { get; set; }
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
<HexSettingID>0x10E41E01</HexSettingID>
|
||||
<GroupName>5 - Common</GroupName>
|
||||
<MinRequiredDriverVersion>0</MinRequiredDriverVersion>
|
||||
<Description>If enabled, overrides DLSS with the latest global version installed (${DlssVersion}).\r\nNVIDIA periodically push OTA updates for the global version, though it often lags behind the actual latest available online.\r\nOnly DLSS2+ games support the global override, certain games may also disallow using it.</Description>
|
||||
<SettingValues>
|
||||
<CustomSettingValue>
|
||||
<UserfriendlyName>Off</UserfriendlyName>
|
||||
<HexValue>0x00000000</HexValue>
|
||||
</CustomSettingValue>
|
||||
<CustomSettingValue>
|
||||
<UserfriendlyName>On - DLSS overridden by latest available</UserfriendlyName>
|
||||
<UserfriendlyName>On - DLSS overridden by latest installed (${DlssVersion})</UserfriendlyName>
|
||||
<HexValue>0x00000001</HexValue>
|
||||
</CustomSettingValue>
|
||||
</SettingValues>
|
||||
@@ -23,13 +24,14 @@
|
||||
<HexSettingID>0x10E41E02</HexSettingID>
|
||||
<GroupName>5 - Common</GroupName>
|
||||
<MinRequiredDriverVersion>0</MinRequiredDriverVersion>
|
||||
<Description>If enabled, overrides DLSS-RR with the latest global version installed (${DlssdVersion}).\r\nNVIDIA periodically push OTA updates for the global version, though it often lags behind the actual latest available online.\r\nOnly DLSS2+ games support the global override, certain games may also disallow using it.</Description>
|
||||
<SettingValues>
|
||||
<CustomSettingValue>
|
||||
<UserfriendlyName>Off</UserfriendlyName>
|
||||
<HexValue>0x00000000</HexValue>
|
||||
</CustomSettingValue>
|
||||
<CustomSettingValue>
|
||||
<UserfriendlyName>On - DLSS-RR overridden by latest available</UserfriendlyName>
|
||||
<UserfriendlyName>On - DLSS-RR overridden by latest installed (${DlssdVersion})</UserfriendlyName>
|
||||
<HexValue>0x00000001</HexValue>
|
||||
</CustomSettingValue>
|
||||
</SettingValues>
|
||||
@@ -40,13 +42,14 @@
|
||||
<HexSettingID>0x10E41E03</HexSettingID>
|
||||
<GroupName>5 - Common</GroupName>
|
||||
<MinRequiredDriverVersion>0</MinRequiredDriverVersion>
|
||||
<Description>If enabled, overrides DLSS-FG with the latest global version installed (${DlssgVersion}).\r\nNVIDIA periodically push OTA updates for the global version, though it often lags behind the actual latest available online.\r\nOnly DLSS2+ games support the global override, certain games may also disallow using it.</Description>
|
||||
<SettingValues>
|
||||
<CustomSettingValue>
|
||||
<UserfriendlyName>Off</UserfriendlyName>
|
||||
<HexValue>0x00000000</HexValue>
|
||||
</CustomSettingValue>
|
||||
<CustomSettingValue>
|
||||
<UserfriendlyName>On - DLSS-FG overridden by latest available</UserfriendlyName>
|
||||
<UserfriendlyName>On - DLSS-FG overridden by latest installed (${DlssgVersion})</UserfriendlyName>
|
||||
<HexValue>0x00000001</HexValue>
|
||||
</CustomSettingValue>
|
||||
</SettingValues>
|
||||
@@ -156,7 +159,7 @@
|
||||
<HexValue>0x00000004</HexValue>
|
||||
</CustomSettingValue>
|
||||
<CustomSettingValue>
|
||||
<UserfriendlyName>Preset E (unused)</UserfriendlyName>
|
||||
<UserfriendlyName>Preset E</UserfriendlyName>
|
||||
<HexValue>0x00000005</HexValue>
|
||||
</CustomSettingValue>
|
||||
<CustomSettingValue>
|
||||
@@ -1508,6 +1511,7 @@
|
||||
<UserfriendlyName>rBAR - Enable</UserfriendlyName>
|
||||
<HexSettingID>0x000F00BA</HexSettingID>
|
||||
<GroupName>5 - Common</GroupName>
|
||||
<AlternateNames>ReBAR - Enable, Resizable Bar - Enable</AlternateNames>
|
||||
<SettingValues>
|
||||
<CustomSettingValue>
|
||||
<UserfriendlyName>Disabled</UserfriendlyName>
|
||||
@@ -1523,30 +1527,35 @@
|
||||
<UserfriendlyName>rBAR - Options</UserfriendlyName>
|
||||
<HexSettingID>0x000F00BB</HexSettingID>
|
||||
<GroupName>5 - Common</GroupName>
|
||||
<AlternateNames>ReBAR - Options, Resizable Bar - Options</AlternateNames>
|
||||
<DataType>DWORD</DataType>
|
||||
</CustomSetting>
|
||||
<CustomSetting>
|
||||
<UserfriendlyName>rBAR - Intel CPU Exclusion</UserfriendlyName>
|
||||
<HexSettingID>0x00E942FC</HexSettingID>
|
||||
<GroupName>5 - Common</GroupName>
|
||||
<AlternateNames>ReBAR - Intel CPU Exclusion, Resizable Bar - Intel CPU Exclusion</AlternateNames>
|
||||
<DataType>DWORD</DataType>
|
||||
</CustomSetting>
|
||||
<CustomSetting>
|
||||
<UserfriendlyName>rBAR - Size Limit</UserfriendlyName>
|
||||
<HexSettingID>0x000F00FF</HexSettingID>
|
||||
<GroupName>5 - Common</GroupName>
|
||||
<AlternateNames>ReBAR - Size Limit, Resizable Bar - Size Limit</AlternateNames>
|
||||
<DataType>BINARY</DataType>
|
||||
</CustomSetting>
|
||||
<CustomSetting>
|
||||
<UserfriendlyName>rBAR - Flags (0x000F00BE)</UserfriendlyName>
|
||||
<HexSettingID>0x000F00BE</HexSettingID>
|
||||
<GroupName>8 - Extra</GroupName>
|
||||
<AlternateNames>ReBAR - Flags (0x000F00BE), Resizable Bar - Flags (0x000F00BE)</AlternateNames>
|
||||
<DataType>DWORD</DataType>
|
||||
</CustomSetting>
|
||||
<CustomSetting>
|
||||
<UserfriendlyName>rBAR - Flags (0x000F00BF)</UserfriendlyName>
|
||||
<HexSettingID>0x000F00BF</HexSettingID>
|
||||
<GroupName>8 - Extra</GroupName>
|
||||
<AlternateNames>ReBAR - Flags (0x000F00BF), Resizable Bar - Flags (0x000F00BF)</AlternateNames>
|
||||
<DataType>DWORD</DataType>
|
||||
</CustomSetting>
|
||||
|
||||
@@ -1612,6 +1621,7 @@
|
||||
<UserfriendlyName>SLI - CFR Mode</UserfriendlyName>
|
||||
<HexSettingID>0x20343843</HexSettingID>
|
||||
<GroupName>6 - SLI</GroupName>
|
||||
<MaxRequiredDriverVersion>575.00</MaxRequiredDriverVersion> <!-- Removed between 511.79 and R575 -->
|
||||
</CustomSetting>
|
||||
<CustomSetting>
|
||||
<UserfriendlyName>Ansel - Enabled</UserfriendlyName>
|
||||
@@ -7439,6 +7449,7 @@
|
||||
<UserfriendlyName>SLI - Compatibility Bits (OGL)</UserfriendlyName>
|
||||
<HexSettingID>0x209746C1</HexSettingID>
|
||||
<GroupName>1 - Compatibility</GroupName>
|
||||
<MaxRequiredDriverVersion>511.78</MaxRequiredDriverVersion> <!-- Removed before 511.79 -->
|
||||
<SettingValues/>
|
||||
</CustomSetting>
|
||||
<CustomSetting>
|
||||
@@ -8196,6 +8207,7 @@
|
||||
<UserfriendlyName>Multi-Display / Mixed-GPU Acceleration</UserfriendlyName>
|
||||
<HexSettingID>0x200AEBFC</HexSettingID>
|
||||
<GroupName>5 - Common</GroupName>
|
||||
<MaxRequiredDriverVersion>511.78</MaxRequiredDriverVersion> <!-- Removed before 511.79 -->
|
||||
<SettingValues>
|
||||
<CustomSettingValue>
|
||||
<UserfriendlyName>Single display performance mode</UserfriendlyName>
|
||||
@@ -8303,6 +8315,7 @@
|
||||
<UserfriendlyName>Vulkan/OpenGL Present Method - Flags</UserfriendlyName>
|
||||
<HexSettingID>0x20324987</HexSettingID>
|
||||
<GroupName>2 - Sync and Refresh</GroupName>
|
||||
<AlternateNames>OGL_DX_PRESENT_DEBUG</AlternateNames>
|
||||
<MinRequiredDriverVersion>0</MinRequiredDriverVersion>
|
||||
<SettingValues>
|
||||
<CustomSettingValue>
|
||||
|
||||
12556
nspector/Reference.xml
12556
nspector/Reference.xml
File diff suppressed because it is too large
Load Diff
4
nspector/frmDrvSettings.Designer.cs
generated
4
nspector/frmDrvSettings.Designer.cs
generated
@@ -515,6 +515,7 @@
|
||||
this.lvSettings.TabIndex = 2;
|
||||
this.lvSettings.UseCompatibleStateImageBehavior = false;
|
||||
this.lvSettings.View = System.Windows.Forms.View.Details;
|
||||
this.lvSettings.GroupStateChanged += new System.EventHandler<nspector.GroupStateChangedEventArgs>(this.lvSettings_GroupStateChanged);
|
||||
this.lvSettings.ColumnWidthChanging += new System.Windows.Forms.ColumnWidthChangingEventHandler(this.lvSettings_ColumnWidthChanging);
|
||||
this.lvSettings.SelectedIndexChanged += new System.EventHandler(this.lvSettings_SelectedIndexChanged);
|
||||
this.lvSettings.DoubleClick += new System.EventHandler(this.lvSettings_DoubleClick);
|
||||
@@ -569,10 +570,13 @@
|
||||
this.txtFilter.Location = new System.Drawing.Point(0, 0);
|
||||
this.txtFilter.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
|
||||
this.txtFilter.Name = "txtFilter";
|
||||
this.txtFilter.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None;
|
||||
this.txtFilter.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None;
|
||||
this.txtFilter.Size = new System.Drawing.Size(2118, 35);
|
||||
this.txtFilter.TabIndex = 82;
|
||||
this.txtFilter.WatermarkText = "Search for setting...";
|
||||
this.txtFilter.TextChanged += new System.EventHandler(this.txtFilter_TextChanged);
|
||||
this.txtFilter.KeyUp += new System.Windows.Forms.KeyEventHandler(this.txtFilter_KeyUp);
|
||||
//
|
||||
// frmDrvSettings
|
||||
//
|
||||
|
||||
@@ -14,7 +14,6 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static nspector.ListViewEx;
|
||||
|
||||
namespace nspector
|
||||
{
|
||||
@@ -40,9 +39,9 @@ namespace nspector
|
||||
|
||||
public string _CurrentProfile = "";
|
||||
|
||||
private bool isDevMode = false;
|
||||
private bool _isDevMode = false;
|
||||
|
||||
private Dictionary<string, bool> _groupCollapsedStates = new();
|
||||
private UserSettings _settings = null;
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
@@ -81,7 +80,9 @@ namespace nspector
|
||||
{
|
||||
var group = FindOrCreateGroup(setting.GroupName);
|
||||
|
||||
var settingName = isDevMode ? $"0x{setting.SettingId:X8} {setting.SettingText}" : setting.SettingText;
|
||||
var settingName = _isDevMode ? $"0x{setting.SettingId:X8} {setting.SettingText}" : setting.SettingText;
|
||||
if (setting.IsSettingHidden)
|
||||
settingName = "[H] " + settingName;
|
||||
|
||||
var item = new ListViewItem(settingName);
|
||||
item.Tag = setting.SettingId;
|
||||
@@ -156,14 +157,28 @@ namespace nspector
|
||||
_currentProfileSettingItems = _drs.GetSettingsForProfile(_CurrentProfile, GetSettingViewMode(), ref applications);
|
||||
RefreshApplicationsCombosAndText(applications);
|
||||
|
||||
var searchFilter = txtFilter.Text.Trim();
|
||||
|
||||
foreach (var settingItem in _currentProfileSettingItems)
|
||||
{
|
||||
if (settingItem.IsSettingHidden) continue;
|
||||
if (settingItem.IsSettingHidden && !_isDevMode) continue;
|
||||
|
||||
var item = CreateListViewItem(settingItem);
|
||||
|
||||
// Apply search filter if set
|
||||
if (!string.IsNullOrEmpty(searchFilter) &&
|
||||
item.Text.IndexOf(searchFilter, StringComparison.OrdinalIgnoreCase) < 0 &&
|
||||
(settingItem.AlternateNames == null ||
|
||||
settingItem.AlternateNames.IndexOf(searchFilter, StringComparison.OrdinalIgnoreCase) < 0))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
lvSettings.Items.Add(item);
|
||||
|
||||
var itm = lvSettings.Items.Add(CreateListViewItem(settingItem));
|
||||
if (Debugger.IsAttached && !settingItem.IsApiExposed)
|
||||
{
|
||||
itm.ForeColor = Color.LightCoral;
|
||||
item.ForeColor = Color.LightCoral;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,18 +197,16 @@ namespace nspector
|
||||
|
||||
foreach (ListViewGroup group in lvSettings.Groups)
|
||||
{
|
||||
if (_groupCollapsedStates.TryGetValue(group.Header, out bool isCollapsed))
|
||||
if (_settings.HiddenSettingGroups.Contains(group.Header))
|
||||
{
|
||||
lvSettings.SetGroupState(group, isCollapsed ? ListViewGroupState.Collapsed | ListViewGroupState.Collapsible : ListViewGroupState.Normal | ListViewGroupState.Collapsible);
|
||||
lvSettings.SetGroupState(group, ListViewGroupState.Collapsed | ListViewGroupState.Collapsible);
|
||||
}
|
||||
else
|
||||
{
|
||||
lvSettings.SetGroupState(group, ListViewGroupState.Collapsible);
|
||||
lvSettings.SetGroupState(group, ListViewGroupState.Normal | ListViewGroupState.Collapsible);
|
||||
}
|
||||
}
|
||||
|
||||
ApplySearchFilter();
|
||||
|
||||
lvSettings.EndUpdate();
|
||||
|
||||
GC.Collect();
|
||||
@@ -288,7 +301,11 @@ namespace nspector
|
||||
|
||||
var referenceSettings = DrsServiceLocator.ReferenceSettings?.Settings.FirstOrDefault(s => s.SettingId == settingid);
|
||||
|
||||
if (string.IsNullOrEmpty(settingMeta.Description) && !(referenceSettings?.HasConstraints ?? false))
|
||||
var description = DlssHelper.ReplaceDlssVersions(settingMeta.Description);
|
||||
if (!string.IsNullOrEmpty(settingMeta.AlternateNames))
|
||||
description = $"Alternate names: {settingMeta.AlternateNames}\r\n{description}";
|
||||
|
||||
if (string.IsNullOrEmpty(description) && !(referenceSettings?.HasConstraints ?? false))
|
||||
{
|
||||
tbSettingDescription.Text = "";
|
||||
tbSettingDescription.Visible = false;
|
||||
@@ -296,7 +313,7 @@ namespace nspector
|
||||
}
|
||||
else
|
||||
{
|
||||
tbSettingDescription.Text = settingMeta.Description;
|
||||
tbSettingDescription.Text = description.Replace("\\r\\n", "\r\n");
|
||||
tbSettingDescription.Visible = true;
|
||||
tbSettingDescription.BackColor = (referenceSettings?.HasConstraints ?? false) ? Color.LightCoral : SystemColors.Control;
|
||||
}
|
||||
@@ -510,13 +527,13 @@ namespace nspector
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTitleVersion()
|
||||
private void SetTitleVersion(bool isUpdateAvailable = false)
|
||||
{
|
||||
var numberFormat = new NumberFormatInfo() { NumberDecimalSeparator = "." };
|
||||
var version = Assembly.GetExecutingAssembly().GetName().Version;
|
||||
var version = Assembly.GetExecutingAssembly().GetName().Version.ToString() + (isUpdateAvailable ? " (update available on GitHub)" : "");
|
||||
var fileVersionInfo = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
|
||||
var externalCsn = DrsServiceLocator.IsExternalCustomSettings ? " - CSN OVERRIDE!" : "";
|
||||
Text = $"{Application.ProductName} {version} - Geforce {_drs.DriverVersion.ToString("#.00", numberFormat)} - Profile Settings - {fileVersionInfo.LegalCopyright}{externalCsn}";
|
||||
Text = $"{Application.ProductName} {version} - Geforce {DrsSettingsServiceBase.DriverVersion.ToString("#.00", numberFormat)} - Profile Settings - {fileVersionInfo.LegalCopyright}{externalCsn}";
|
||||
}
|
||||
|
||||
private static void InitMessageFilter(IntPtr handle)
|
||||
@@ -540,6 +557,8 @@ namespace nspector
|
||||
{
|
||||
_skipScan = skipScan;
|
||||
InitializeComponent();
|
||||
lblApplications.Text = "";
|
||||
|
||||
InitTaskbarList();
|
||||
SetupDropFilesNative();
|
||||
SetupToolbar();
|
||||
@@ -548,66 +567,8 @@ namespace nspector
|
||||
tscbShowCustomSettingNamesOnly.Checked = showCsnOnly;
|
||||
Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
|
||||
|
||||
lvSettings.GroupStateChanged += lvSettings_GroupStateChanged;
|
||||
|
||||
LoadGroupStates(Path.Combine(AppContext.BaseDirectory, "HiddenGroups.ini"));
|
||||
}
|
||||
|
||||
private void lvSettings_GroupStateChanged(object sender, GroupStateChangedEventArgs e)
|
||||
{
|
||||
_groupCollapsedStates[e.Group.Header] = e.IsCollapsed;
|
||||
|
||||
SaveGroupStates(Path.Combine(AppContext.BaseDirectory, "HiddenGroups.ini"));
|
||||
}
|
||||
|
||||
private bool SaveGroupStates(string filePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var writer = new StreamWriter(filePath))
|
||||
{
|
||||
foreach (var kvp in _groupCollapsedStates)
|
||||
{
|
||||
writer.WriteLine($"{kvp.Key}={kvp.Value}");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private bool LoadGroupStates(string filePath)
|
||||
{
|
||||
if (!File.Exists(filePath))
|
||||
return false;
|
||||
|
||||
_groupCollapsedStates.Clear();
|
||||
|
||||
try
|
||||
{
|
||||
foreach (var line in File.ReadAllLines(filePath))
|
||||
{
|
||||
int lastEqualIndex = line.LastIndexOf('=');
|
||||
if (lastEqualIndex != -1)
|
||||
{
|
||||
var key = line.Substring(0, lastEqualIndex).Trim();
|
||||
var valueStr = line.Substring(lastEqualIndex + 1).Trim();
|
||||
|
||||
if (bool.TryParse(valueStr, out bool value))
|
||||
{
|
||||
_groupCollapsedStates[key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// KeyUp has to be set on the inner control for us to receive Enter key...
|
||||
cbProfiles.Control.KeyUp += cbProfiles_KeyUp;
|
||||
}
|
||||
|
||||
public static double ScaleFactor = 1;
|
||||
@@ -664,7 +625,7 @@ namespace nspector
|
||||
tsbModifiedProfiles.Enabled = true;
|
||||
}
|
||||
|
||||
private void frmDrvSettings_Load(object sender, EventArgs e)
|
||||
private async void frmDrvSettings_Load(object sender, EventArgs e)
|
||||
{
|
||||
SetupLayout();
|
||||
SetTitleVersion();
|
||||
@@ -679,6 +640,39 @@ namespace nspector
|
||||
tssbRemoveApplication.Enabled = false;
|
||||
|
||||
InitResetValueTooltip();
|
||||
|
||||
await CheckForUpdatesAsync();
|
||||
}
|
||||
|
||||
private async Task CheckForUpdatesAsync()
|
||||
{
|
||||
// Allow disabling update check in case user doesn't want us to access internet, or just wants to stick to a certain version
|
||||
if (_settings.DisableUpdateCheck || File.Exists(Path.Combine(AppContext.BaseDirectory, "DisableUpdateCheck.txt")))
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
bool updateAvailable = await GithubVersionHelper.IsUpdateAvailableAsync();
|
||||
|
||||
if (updateAvailable)
|
||||
{
|
||||
SetTitleVersion(updateAvailable);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Ignore update check failures
|
||||
}
|
||||
}
|
||||
|
||||
private void lvSettings_GroupStateChanged(object sender, GroupStateChangedEventArgs e)
|
||||
{
|
||||
if (e.IsCollapsed && !_settings.HiddenSettingGroups.Contains(e.Group.Header))
|
||||
_settings.HiddenSettingGroups.Add(e.Group.Header);
|
||||
else if (!e.IsCollapsed && _settings.HiddenSettingGroups.Contains(e.Group.Header))
|
||||
_settings.HiddenSettingGroups.Remove(e.Group.Header);
|
||||
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
private void InitResetValueTooltip()
|
||||
@@ -714,8 +708,6 @@ namespace nspector
|
||||
|
||||
private void ChangeCurrentProfile(string profileName)
|
||||
{
|
||||
txtFilter.Text = "";
|
||||
|
||||
if (profileName == GetBaseProfileName() || profileName == _baseProfileName)
|
||||
{
|
||||
_CurrentProfile = _baseProfileName;
|
||||
@@ -727,13 +719,15 @@ namespace nspector
|
||||
}
|
||||
else
|
||||
{
|
||||
_CurrentProfile = cbProfiles.Text;
|
||||
_CurrentProfile = profileName;
|
||||
tsbDeleteProfile.Enabled = true;
|
||||
tsbAddApplication.Enabled = true;
|
||||
tssbRemoveApplication.Enabled = true;
|
||||
appPathsTooltip.SetToolTip(lblApplications, "Double-click to add application");
|
||||
}
|
||||
|
||||
txtFilter.Text = "";
|
||||
|
||||
RefreshCurrentProfile();
|
||||
}
|
||||
|
||||
@@ -743,6 +737,26 @@ namespace nspector
|
||||
{
|
||||
ChangeCurrentProfile(cbProfiles.Text);
|
||||
}
|
||||
lvSettings.Focus(); // Unfocus cbProfiles to fix toolstrip hover highlight
|
||||
}
|
||||
|
||||
private void cbProfiles_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
if(e.KeyCode == Keys.Enter)
|
||||
{
|
||||
// KeyUp event is only fired when combobox item doesn't exist with the entered text
|
||||
// Try searching for text as an exe/application name
|
||||
try
|
||||
{
|
||||
var profile = _drs.GetProfileNameByExeName(cbProfiles.Text);
|
||||
if (!string.IsNullOrEmpty(profile))
|
||||
{
|
||||
cbProfiles.Text = profile;
|
||||
ChangeCurrentProfile(profile);
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTaskbarProgress(int progress)
|
||||
@@ -998,7 +1012,7 @@ namespace nspector
|
||||
}
|
||||
else if (MessageBox.Show(this, "Really delete this profile?\r\n\r\nNote: NVIDIA predefined profiles can not be restored until next driver installation!", "Delete Profile", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
|
||||
{
|
||||
if (_drs.DriverVersion > 280 && _drs.DriverVersion < 310)
|
||||
if (DrsSettingsServiceBase.DriverVersion > 280 && DrsSettingsServiceBase.DriverVersion < 310)
|
||||
// hack for driverbug
|
||||
_drs.DeleteProfileHard(_CurrentProfile);
|
||||
else
|
||||
@@ -1273,7 +1287,6 @@ namespace nspector
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var profileName = "";
|
||||
var exeFile = ShortcutResolver.ResolveExecuteable(files[0], out profileName);
|
||||
if (exeFile != "")
|
||||
@@ -1303,7 +1316,7 @@ namespace nspector
|
||||
|
||||
private void lvSettings_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
if (isDevMode && lvSettings.SelectedItems != null && lvSettings.SelectedItems.Count == 1)
|
||||
if (_isDevMode && lvSettings.SelectedItems != null && lvSettings.SelectedItems.Count == 1)
|
||||
{
|
||||
var settingId = ((uint)lvSettings.SelectedItems[0].Tag);
|
||||
var settingName = lvSettings.SelectedItems[0].Text;
|
||||
@@ -1331,36 +1344,36 @@ namespace nspector
|
||||
|
||||
private void SaveSettings()
|
||||
{
|
||||
var settings = UserSettings.LoadSettings();
|
||||
|
||||
if(_settings == null)
|
||||
_settings = UserSettings.LoadSettings();
|
||||
if (WindowState == FormWindowState.Normal)
|
||||
{
|
||||
settings.WindowTop = Top;
|
||||
settings.WindowLeft = Left;
|
||||
settings.WindowHeight = Height;
|
||||
settings.WindowWidth = Width;
|
||||
_settings.WindowTop = Top;
|
||||
_settings.WindowLeft = Left;
|
||||
_settings.WindowHeight = Height;
|
||||
_settings.WindowWidth = Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
settings.WindowTop = RestoreBounds.Top;
|
||||
settings.WindowLeft = RestoreBounds.Left;
|
||||
settings.WindowHeight = RestoreBounds.Height;
|
||||
settings.WindowWidth = RestoreBounds.Width;
|
||||
_settings.WindowTop = RestoreBounds.Top;
|
||||
_settings.WindowLeft = RestoreBounds.Left;
|
||||
_settings.WindowHeight = RestoreBounds.Height;
|
||||
_settings.WindowWidth = RestoreBounds.Width;
|
||||
}
|
||||
settings.WindowState = WindowState;
|
||||
settings.ShowCustomizedSettingNamesOnly = tscbShowCustomSettingNamesOnly.Checked;
|
||||
settings.ShowScannedUnknownSettings = tscbShowScannedUnknownSettings.Checked;
|
||||
settings.SaveSettings();
|
||||
_settings.WindowState = WindowState;
|
||||
_settings.ShowCustomizedSettingNamesOnly = tscbShowCustomSettingNamesOnly.Checked;
|
||||
_settings.ShowScannedUnknownSettings = tscbShowScannedUnknownSettings.Checked;
|
||||
_settings.SaveSettings();
|
||||
}
|
||||
|
||||
private void LoadSettings()
|
||||
{
|
||||
var settings = UserSettings.LoadSettings();
|
||||
SetBounds(settings.WindowLeft, settings.WindowTop, settings.WindowWidth, settings.WindowHeight);
|
||||
WindowState = settings.WindowState != FormWindowState.Minimized ? settings.WindowState : FormWindowState.Normal;
|
||||
_settings = UserSettings.LoadSettings();
|
||||
SetBounds(_settings.WindowLeft, _settings.WindowTop, _settings.WindowWidth, _settings.WindowHeight);
|
||||
WindowState = _settings.WindowState != FormWindowState.Minimized ? _settings.WindowState : FormWindowState.Normal;
|
||||
HandleScreenConstraints();
|
||||
tscbShowCustomSettingNamesOnly.Checked = settings.ShowCustomizedSettingNamesOnly;
|
||||
tscbShowScannedUnknownSettings.Checked = !_skipScan && settings.ShowScannedUnknownSettings;
|
||||
tscbShowCustomSettingNamesOnly.Checked = _settings.ShowCustomizedSettingNamesOnly;
|
||||
tscbShowScannedUnknownSettings.Checked = !_skipScan && _settings.ShowScannedUnknownSettings;
|
||||
}
|
||||
|
||||
private void frmDrvSettings_FormClosed(object sender, FormClosedEventArgs e)
|
||||
@@ -1378,7 +1391,7 @@ namespace nspector
|
||||
|
||||
else if (e.Control && e.Alt && e.KeyCode == Keys.D)
|
||||
{
|
||||
EnableDevmode();
|
||||
ToggleDevMode();
|
||||
}
|
||||
|
||||
else if (Debugger.IsAttached && e.Control && e.KeyCode == Keys.T)
|
||||
@@ -1393,6 +1406,7 @@ namespace nspector
|
||||
|
||||
else if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
txtFilter.Text = "";
|
||||
RefreshCurrentProfile();
|
||||
}
|
||||
|
||||
@@ -1420,39 +1434,29 @@ namespace nspector
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplySearchFilter()
|
||||
{
|
||||
var lowerInput = txtFilter.Text.Trim().ToLowerInvariant();
|
||||
|
||||
if (string.IsNullOrEmpty(lowerInput))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
lvSettings.BeginUpdate();
|
||||
foreach (ListViewItem itm in lvSettings.Items)
|
||||
{
|
||||
if (!itm.Text.ToLowerInvariant().Contains(lowerInput))
|
||||
{
|
||||
itm.Remove();
|
||||
}
|
||||
}
|
||||
lvSettings.EndUpdate();
|
||||
}
|
||||
|
||||
private async void txtFilter_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
RefreshCurrentProfile();
|
||||
|
||||
txtFilter.Focus(); // Setting listbox sometimes steals focus away
|
||||
if(!string.IsNullOrEmpty(txtFilter.Text))
|
||||
txtFilter.Focus(); // Setting listbox sometimes steals focus away
|
||||
}
|
||||
|
||||
private void EnableDevmode()
|
||||
private void ToggleDevMode()
|
||||
{
|
||||
isDevMode = true;
|
||||
lvSettings.Font = new Font("Consolas", 9);
|
||||
cbValues.Font = new Font("Consolas", 9);
|
||||
lvSettings.HeaderStyle = ColumnHeaderStyle.Nonclickable;
|
||||
_isDevMode = !_isDevMode;
|
||||
if (_isDevMode)
|
||||
{
|
||||
lvSettings.Font = new Font("Consolas", 9);
|
||||
cbValues.Font = new Font("Consolas", 9);
|
||||
lvSettings.HeaderStyle = ColumnHeaderStyle.Nonclickable;
|
||||
}
|
||||
else
|
||||
{
|
||||
lvSettings.Font = null;
|
||||
cbValues.Font = null;
|
||||
lvSettings.HeaderStyle = ColumnHeaderStyle.None;
|
||||
}
|
||||
RefreshCurrentProfile();
|
||||
}
|
||||
|
||||
@@ -1537,6 +1541,18 @@ namespace nspector
|
||||
|
||||
Clipboard.SetText(sbSettings.ToString());
|
||||
}
|
||||
|
||||
private void txtFilter_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
txtFilter.Text = "";
|
||||
}
|
||||
else if (e.Control && e.Alt && e.KeyCode == Keys.D)
|
||||
{
|
||||
ToggleDevMode();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
@@ -135,7 +136,9 @@
|
||||
<Compile Include="Common\DrsSessionScope.cs" />
|
||||
<Compile Include="Common\DrsSettingsMetaService.cs" />
|
||||
<Compile Include="Common\DrsUtil.cs" />
|
||||
<Compile Include="Common\Helper\DlssHelper.cs" />
|
||||
<Compile Include="Common\Helper\DropDownMenuScrollWheelHandler.cs" />
|
||||
<Compile Include="Common\Helper\GithubVersionHelper.cs" />
|
||||
<Compile Include="Common\Helper\ListViewGroupSorter.cs" />
|
||||
<Compile Include="Common\Helper\ShortcutResolver.cs" />
|
||||
<Compile Include="Common\Helper\SteamAppResolver.cs" />
|
||||
|
||||
Reference in New Issue
Block a user