Compare commits

...

11 Commits
6.8 ... 6.9

Author SHA1 Message Date
2dust
9dfd89c90d up 6.9 2023-02-06 19:28:43 +08:00
2dust
f6972125cd Update tun_singbox 2023-02-06 19:19:36 +08:00
2dust
6e366bf55a Improved enhanced tun mode 2023-02-06 15:29:10 +08:00
2dust
5e2e45c673 Merge branch 'master' of https://github.com/2dust/v2rayN 2023-02-05 20:17:07 +08:00
2dust
f879235564 fix get Win32FamilyNames 2023-02-05 20:17:03 +08:00
2dust
b00aee2ae7 Merge pull request #3187 from saphirique/patch-1
Add russian language
2023-02-05 19:57:08 +08:00
saphirique
28c2159ec3 add russian language 2023-02-05 17:55:24 +08:00
2dust
33dcef2285 Optimize Update Subscription 2023-02-04 18:52:17 +08:00
2dust
b9acd0ec28 Font size custom 2023-02-04 15:43:49 +08:00
2dust
7989d5180b adjust style 2023-02-04 14:25:21 +08:00
2dust
238086942e change fonts folder 2023-02-04 12:50:38 +08:00
29 changed files with 1645 additions and 165 deletions

View File

@@ -17,6 +17,9 @@
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
</ResourceDictionary.MergedDictionaries>
<system:Double x:Key="MenuItemHeight">26</system:Double>
<system:Double x:Key="StdFontSize">12</system:Double>
<system:Double x:Key="StdFontSize1">14</system:Double>
<system:Double x:Key="StdFontSize2">16</system:Double>
<Thickness
x:Key="ServerItemMargin"
Bottom="4"
@@ -33,19 +36,19 @@
x:Key="ModuleTitle"
BasedOn="{StaticResource MaterialDesignTextBlock}"
TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="16" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize2}" />
</Style>
<Style
x:Key="ToolbarTextBlock"
BasedOn="{StaticResource MaterialDesignTextBlock}"
TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="12" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
</Style>
<Style
x:Key="StatusbarItem"
BasedOn="{StaticResource MaterialDesignTextBlock}"
TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="12" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
<Setter Property="Padding" Value="0" />
</Style>
<Style TargetType="{x:Type TextElement}">
@@ -58,7 +61,7 @@
</Style>
<Style x:Key="lvItemSelected" TargetType="{x:Type ListViewItem}">
<Setter Property="Height" Value="20" />
<Setter Property="FontSize" Value="12" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="{DynamicResource PrimaryHueLightBrush}" />
@@ -76,22 +79,19 @@
x:Key="ListItemCheckBox"
BasedOn="{StaticResource MaterialDesignUserForegroundCheckBox}"
TargetType="{x:Type CheckBox}">
<Setter Property="FontSize" Value="12" />
</Style>
<Style x:Key="ListItemChip" TargetType="{x:Type materialDesign:Chip}">
<Setter Property="FontSize" Value="11" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
</Style>
<Style
x:Key="DefButton"
BasedOn="{StaticResource MaterialDesignRaisedButton}"
TargetType="{x:Type ButtonBase}">
<Setter Property="FontSize" Value="14" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize1}" />
</Style>
<Style
x:Key="DefContextMenu"
BasedOn="{StaticResource MaterialDesignContextMenu}"
TargetType="{x:Type ContextMenu}">
<Setter Property="FontSize" Value="13" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize1}" />
<Setter Property="FontFamily" Value="{x:Static conv:MaterialDesignFonts.MyFont}" />
</Style>
@@ -99,7 +99,7 @@
x:Key="ToolbarMenu"
BasedOn="{StaticResource MaterialDesignMenu}"
TargetType="{x:Type Menu}">
<Setter Property="FontSize" Value="13" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize1}" />
<Setter Property="FontFamily" Value="{x:Static conv:MaterialDesignFonts.MyFont}" />
</Style>
@@ -107,15 +107,35 @@
x:Key="DefComboBox"
BasedOn="{StaticResource MaterialDesignComboBox}"
TargetType="{x:Type ComboBox}">
<Setter Property="FontSize" Value="12" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
<Setter Property="HorizontalAlignment" Value="Left" />
</Style>
<Style
x:Key="DefDataGrid"
BasedOn="{StaticResource MaterialDesignDataGrid}"
TargetType="{x:Type DataGrid}">
<Setter Property="FontSize" Value="12" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
</Style>
<Style
x:Key="DefTextBox"
BasedOn="{StaticResource MaterialDesignTextBox}"
TargetType="{x:Type TextBox}">
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
</Style>
<Style
x:Key="MyOutlinedTextBox"
BasedOn="{StaticResource MaterialDesignOutlinedTextBox}"
TargetType="{x:Type TextBox}">
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
</Style>
<Style
x:Key="MyGroupBox"
BasedOn="{StaticResource MaterialDesignGroupBox}"
TargetType="{x:Type GroupBox}">
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
</Style>
</ResourceDictionary>
</Application.Resources>

View File

@@ -1,5 +1,4 @@
using System.IO;
using System.Windows.Media;
using System.Windows.Media;
using v2rayN.Handler;
namespace v2rayN.Converters
@@ -15,8 +14,8 @@ namespace v2rayN.Converters
var fontFamily = LazyConfig.Instance.GetConfig().uiItem.currentFontFamily;
if (!string.IsNullOrEmpty(fontFamily))
{
var fontPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Resources\Fonts\");
MyFont = new FontFamily(new Uri($"file:///{fontPath}"), $"./#{fontFamily}");
var fontPath = Utils.GetFontsPath();
MyFont = new FontFamily(new Uri(@$"file:///{fontPath}\"), $"./#{fontFamily}");
}
}
catch

View File

@@ -77,6 +77,7 @@
public const string CommandClearMsg = "CommandClearMsg";
public const string DelayUnit = "";
public const string SpeedUnit = "";
public const int MinFontSize = 10;
public static readonly List<string> IEProxyProtocols = new List<string> {
"{ip}:{http_port}",
@@ -107,7 +108,7 @@
};
public static readonly List<string> allowInsecures = new List<string> { "true", "false", "" };
public static readonly List<string> domainStrategy4Freedoms = new List<string> { "AsIs", "UseIP", "UseIPv4", "UseIPv6", "" };
public static readonly List<string> Languages = new List<string> { "zh-Hans", "en", "fa-Ir" };
public static readonly List<string> Languages = new List<string> { "zh-Hans", "en", "fa-Ir", "ru" };
public static readonly List<string> alpns = new List<string> { "h2", "http/1.1", "h2,http/1.1", "" };
public static readonly List<string> LogLevel = new List<string> { "debug", "info", "warning", "error", "none" };
public static readonly List<string> InboundTags = new List<string> { "socks", "http", "socks2", "http2" };

View File

@@ -88,9 +88,10 @@ namespace v2rayN.Handler
{
if (config.logEnabled)
{
var dtNow = DateTime.Now;
v2rayConfig.log.loglevel = config.loglevel;
v2rayConfig.log.access = Utils.GetLogPath(v2rayConfig.log.access);
v2rayConfig.log.error = Utils.GetLogPath(v2rayConfig.log.error);
v2rayConfig.log.access = Utils.GetLogPath($"Vaccess_{dtNow.ToString("yyyy-MM-dd")}.txt");
v2rayConfig.log.error = Utils.GetLogPath($"Verror_{dtNow.ToString("yyyy-MM-dd")}.txt");
}
else
{

View File

@@ -100,6 +100,17 @@ namespace v2rayN.Base
configStr = configStr.Replace("$strict_route$", $"{_config.tunModeItem.strictRoute.ToString().ToLower()}");
configStr = configStr.Replace("$stack$", $"{_config.tunModeItem.stack}");
//logs
if (_config.tunModeItem.showWindow)
{
configStr = configStr.Replace("$log_output$", $"");
}
else
{
var dtNow = DateTime.Now;
var log_output = $"\"output\": \"{Utils.GetLogPath($"singbox_{dtNow.ToString("yyyy-MM-dd")}.txt")}\", ";
configStr = configStr.Replace("$log_output$", $"{log_output.Replace(@"\", @"\\")}");
}
//port
configStr = configStr.Replace("$socksPort$", $"{_socksPort}");
@@ -118,13 +129,13 @@ namespace v2rayN.Base
{
if (!lstDnsExe.Contains(it2) && it.coreType != ECoreType.sing_box)
{
lstDnsExe.Add(it2);
//lstDnsExe.Add(it2);
lstDnsExe.Add($"{it2}.exe");
}
if (!lstDirectExe.Contains(it2))
{
lstDirectExe.Add(it2);
//lstDirectExe.Add(it2);
lstDirectExe.Add($"{it2}.exe");
}
}
@@ -135,27 +146,45 @@ namespace v2rayN.Base
string strDirect = string.Join("\",\"", lstDirectExe.ToArray());
configStr = configStr.Replace("$directProcessName$", $"\"{strDirect}\"");
//ips
if (_config.tunModeItem.bypassMode)
{
//direct ips
if (_config.tunModeItem.directIP != null && _config.tunModeItem.directIP.Count > 0)
{
var ips = new { outbound = "direct", ip_cidr = _config.tunModeItem.directIP };
configStr = configStr.Replace("$ruleDirectIPs$", "," + Utils.ToJson(ips));
}
else
{
configStr = configStr.Replace("$ruleDirectIPs$", "");
}
//process
//direct process
if (_config.tunModeItem.directProcess != null && _config.tunModeItem.directProcess.Count > 0)
{
var process = new { outbound = "direct", process_name = _config.tunModeItem.directProcess };
configStr = configStr.Replace("$ruleDirectProcess$", "," + Utils.ToJson(process));
}
}
else
{
configStr = configStr.Replace("$ruleDirectProcess$", "");
//proxy ips
if (_config.tunModeItem.proxyIP != null && _config.tunModeItem.proxyIP.Count > 0)
{
var ips = new { outbound = "proxy", ip_cidr = _config.tunModeItem.proxyIP };
configStr = configStr.Replace("$ruleProxyIPs$", "," + Utils.ToJson(ips));
}
//proxy process
if (_config.tunModeItem.proxyProcess != null && _config.tunModeItem.proxyProcess.Count > 0)
{
var process = new { outbound = "proxy", process_name = _config.tunModeItem.proxyProcess };
configStr = configStr.Replace("$ruleProxyProcess$", "," + Utils.ToJson(process));
}
var final = new { outbound = "direct", inbound = "tun-in" };
configStr = configStr.Replace("$ruleFinally$", "," + Utils.ToJson(final));
}
configStr = configStr.Replace("$ruleDirectIPs$", "");
configStr = configStr.Replace("$ruleDirectProcess$", "");
configStr = configStr.Replace("$ruleProxyIPs$", "");
configStr = configStr.Replace("$ruleProxyProcess$", "");
configStr = configStr.Replace("$ruleFinally$", "");
File.WriteAllText(Utils.GetConfigPath(_tunConfigName), configStr);
@@ -172,6 +201,7 @@ namespace v2rayN.Base
KillProcess(_process);
_process.Dispose();
_process = null;
_needRestart = true;
}
}
catch (Exception ex)

View File

@@ -63,6 +63,7 @@ namespace v2rayN.Mode
public string? colorPrimaryName { get; set; }
public string currentLanguage { get; set; }
public string currentFontFamily { get; set; }
public int currentFontSize { get; set; }
public bool enableDragDropSort { get; set; }
public bool doubleClick2Activate { get; set; }
public bool autoHideStartup { get; set; } = true;
@@ -109,8 +110,11 @@ namespace v2rayN.Mode
public string stack { get; set; }
public int mtu { get; set; }
public string customTemplate { get; set; }
public bool bypassMode { get; set; } = true;
public List<string> directIP { get; set; }
public List<string> directProcess { get; set; }
public List<string> proxyIP { get; set; }
public List<string> proxyProcess { get; set; }
}
}

View File

@@ -2402,7 +2402,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// 查找类似 Copy the font TTF file to the directory Resources\Fonts, restart the settings 的本地化字符串。
/// 查找类似 Copy the font TTF file to the directory guiFonts, restart the settings 的本地化字符串。
/// </summary>
public static string TbSettingsCurrentFontFamilyTip {
get {
@@ -2509,6 +2509,15 @@ namespace v2rayN.Resx {
}
}
/// <summary>
/// 查找类似 FontSize 的本地化字符串。
/// </summary>
public static string TbSettingsFontSize {
get {
return ResourceManager.GetString("TbSettingsFontSize", resourceCulture);
}
}
/// <summary>
/// 查找类似 Http Port 的本地化字符串。
/// </summary>
@@ -2546,7 +2555,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// 查找类似 Language 的本地化字符串。
/// 查找类似 Language(Restart) 的本地化字符串。
/// </summary>
public static string TbSettingsLanguage {
get {
@@ -2761,6 +2770,24 @@ namespace v2rayN.Resx {
}
}
/// <summary>
/// 查找类似 Bypass Mode 的本地化字符串。
/// </summary>
public static string TbSettingsTunModeBypassMode {
get {
return ResourceManager.GetString("TbSettingsTunModeBypassMode", resourceCulture);
}
}
/// <summary>
/// 查找类似 Enable: If no route matches, the final proxy 的本地化字符串。
/// </summary>
public static string TbSettingsTunModeBypassModeTip {
get {
return ResourceManager.GetString("TbSettingsTunModeBypassModeTip", resourceCulture);
}
}
/// <summary>
/// 查找类似 Custom Template 的本地化字符串。
/// </summary>
@@ -2788,6 +2815,24 @@ namespace v2rayN.Resx {
}
}
/// <summary>
/// 查找类似 Proxy IP CIDR, separated by commas (,) 的本地化字符串。
/// </summary>
public static string TbSettingsTunModeProxyIP {
get {
return ResourceManager.GetString("TbSettingsTunModeProxyIP", resourceCulture);
}
}
/// <summary>
/// 查找类似 Proxy Process name, separated by commas (,) 的本地化字符串。
/// </summary>
public static string TbSettingsTunModeProxyProcess {
get {
return ResourceManager.GetString("TbSettingsTunModeProxyProcess", resourceCulture);
}
}
/// <summary>
/// 查找类似 Show console 的本地化字符串。
/// </summary>

View File

@@ -548,7 +548,7 @@
<value>Dark Mode</value>
</data>
<data name="TbSettingsLanguage" xml:space="preserve">
<value>Language</value>
<value>Language(Restart)</value>
</data>
<data name="menuAddServerViaClipboard" xml:space="preserve">
<value>Import bulk URL from clipboard (Ctrl+V)</value>
@@ -1097,7 +1097,7 @@
<value>FontFamily(Require restart)</value>
</data>
<data name="TbSettingsCurrentFontFamilyTip" xml:space="preserve">
<value>Copy the font TTF file to the directory Resources\Fonts, restart the settings</value>
<value>Copy the font TTF file to the directory guiFonts, restart the settings</value>
</data>
<data name="TbSettingsSocksPortTip" xml:space="preserve">
<value>http port=socks port+1</value>
@@ -1105,4 +1105,19 @@
<data name="TbSettingsStartBootTip" xml:space="preserve">
<value>Set this with admin privileges, get admin privileges after startup</value>
</data>
<data name="TbSettingsFontSize" xml:space="preserve">
<value>FontSize</value>
</data>
<data name="TbSettingsTunModeProxyIP" xml:space="preserve">
<value>Proxy IP CIDR, separated by commas (,)</value>
</data>
<data name="TbSettingsTunModeProxyProcess" xml:space="preserve">
<value>Proxy Process name, separated by commas (,)</value>
</data>
<data name="TbSettingsTunModeBypassMode" xml:space="preserve">
<value>Bypass Mode</value>
</data>
<data name="TbSettingsTunModeBypassModeTip" xml:space="preserve">
<value>Enable: If no route matches, the final proxy</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -548,7 +548,7 @@
<value>暗黑模式</value>
</data>
<data name="TbSettingsLanguage" xml:space="preserve">
<value>语言</value>
<value>语言(重启)</value>
</data>
<data name="menuAddServerViaClipboard" xml:space="preserve">
<value>从剪贴板导入批量URL (Ctrl+V)</value>
@@ -1097,7 +1097,7 @@
<value>当前字体(需重启)</value>
</data>
<data name="TbSettingsCurrentFontFamilyTip" xml:space="preserve">
<value>拷贝字体TTF文件到目录Resources\Fonts重启设置</value>
<value>拷贝字体TTF文件到目录guiFonts重启设置</value>
</data>
<data name="TbSettingsSocksPortTip" xml:space="preserve">
<value>http端口=socks端口+1</value>
@@ -1105,4 +1105,19 @@
<data name="TbSettingsStartBootTip" xml:space="preserve">
<value>以管理员权限设置此项,在启动后获得管理员权限</value>
</data>
<data name="TbSettingsFontSize" xml:space="preserve">
<value>字体大小</value>
</data>
<data name="TbSettingsTunModeProxyIP" xml:space="preserve">
<value>代理的IP CIDR用逗号(,)分隔</value>
</data>
<data name="TbSettingsTunModeProxyProcess" xml:space="preserve">
<value>代理的进程名,用逗号(,)分隔</value>
</data>
<data name="TbSettingsTunModeBypassMode" xml:space="preserve">
<value>绕行模式</value>
</data>
<data name="TbSettingsTunModeBypassModeTip" xml:space="preserve">
<value>启用:路由无匹配则最终代理</value>
</data>
</root>

View File

@@ -1,4 +1,10 @@
{
"log": {
"disabled": false,
"level": "debug",
$log_output$
"timestamp": true
},
"dns": {
"servers": [
{
@@ -23,6 +29,7 @@
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"interface_name": "singbox_tun",
"inet4_address": "172.19.0.1/30",
@@ -102,6 +109,9 @@
}
$ruleDirectIPs$
$ruleDirectProcess$
$ruleProxyIPs$
$ruleProxyProcess$
$ruleFinally$
]
}
}

View File

@@ -1135,6 +1135,22 @@ namespace v2rayN
return Path.Combine(_tempPath, filename);
}
}
public static string GetFontsPath(string filename = "")
{
string _tempPath = Path.Combine(StartupPath(), "guiFonts");
if (!Directory.Exists(_tempPath))
{
Directory.CreateDirectory(_tempPath);
}
if (string.IsNullOrEmpty(filename))
{
return _tempPath;
}
else
{
return Path.Combine(_tempPath, filename);
}
}
#endregion

View File

@@ -189,6 +189,8 @@ namespace v2rayN.ViewModels
public IObservableCollection<Swatch> Swatches => _swatches;
[Reactive]
public Swatch SelectedSwatch { get; set; }
[Reactive]
public int CurrentFontSize { get; set; }
[Reactive]
public string CurrentLanguage { get; set; }
@@ -535,7 +537,12 @@ namespace v2rayN.ViewModels
_noticeHandler?.SendMessage(msg);
if (success)
{
RefreshServers();
Reload();
if (_config.uiItem.enableAutoAdjustMainLvColWidth)
{
_updateView("AdjustMainLvColWidth");
}
}
}
private void UpdateStatisticsHandler(ServerSpeedItem update)
@@ -1219,20 +1226,7 @@ namespace v2rayN.ViewModels
private void UpdateSubscriptionProcess(string subId, bool blProxy)
{
void _updateUI(bool success, string msg)
{
_noticeHandler?.SendMessage(msg);
if (success)
{
RefreshServers();
if (_config.uiItem.enableAutoAdjustMainLvColWidth)
{
_updateView("AdjustMainLvColWidth");
}
}
};
(new UpdateHandle()).UpdateSubscriptionProcess(_config, subId, blProxy, _updateUI);
(new UpdateHandle()).UpdateSubscriptionProcess(_config, subId, blProxy, UpdateTaskHandler);
}
#endregion
@@ -1576,6 +1570,7 @@ namespace v2rayN.ViewModels
{
SelectedSwatch = _swatches.FirstOrDefault(t => t.Name == _config.uiItem.colorPrimaryName);
}
CurrentFontSize = _config.uiItem.currentFontSize;
CurrentLanguage = _config.uiItem.currentLanguage;
this.WhenAnyValue(
@@ -1611,6 +1606,23 @@ namespace v2rayN.ViewModels
}
});
this.WhenAnyValue(
x => x.CurrentFontSize,
y => y > 0)
.Subscribe(c =>
{
if (CurrentFontSize >= Global.MinFontSize)
{
_config.uiItem.currentFontSize = CurrentFontSize;
double size = (long)CurrentFontSize;
Application.Current.Resources["StdFontSize"] = size;
Application.Current.Resources["StdFontSize1"] = size + 2;
Application.Current.Resources["StdFontSize2"] = size + 4;
ConfigHandler.SaveConfig(ref _config);
}
});
this.WhenAnyValue(
x => x.CurrentLanguage,
y => y != null && !y.IsNullOrEmpty())

View File

@@ -77,8 +77,12 @@ namespace v2rayN.ViewModels
[Reactive] public string TunStack { get; set; }
[Reactive] public int TunMtu { get; set; }
[Reactive] public string TunCustomTemplate { get; set; }
[Reactive] public bool TunBypassMode { get; set; }
[Reactive] public bool TunBypassMode2 { get; set; }
[Reactive] public string TunDirectIP { get; set; }
[Reactive] public string TunDirectProcess { get; set; }
[Reactive] public string TunProxyIP { get; set; }
[Reactive] public string TunProxyProcess { get; set; }
#endregion
#region CoreType
@@ -164,8 +168,14 @@ namespace v2rayN.ViewModels
TunStack = _config.tunModeItem.stack;
TunMtu = _config.tunModeItem.mtu;
TunCustomTemplate = _config.tunModeItem.customTemplate;
TunBypassMode = _config.tunModeItem.bypassMode;
TunDirectIP = Utils.List2String(_config.tunModeItem.directIP, true);
TunDirectProcess = Utils.List2String(_config.tunModeItem.directProcess, true);
TunProxyIP = Utils.List2String(_config.tunModeItem.proxyIP, true);
TunProxyProcess = Utils.List2String(_config.tunModeItem.proxyProcess, true);
this.WhenAnyValue(
x => x.TunBypassMode)
.Subscribe(c => TunBypassMode2 = !TunBypassMode);
#endregion
@@ -328,8 +338,11 @@ namespace v2rayN.ViewModels
_config.tunModeItem.stack = TunStack;
_config.tunModeItem.mtu = TunMtu;
_config.tunModeItem.customTemplate = TunCustomTemplate;
_config.tunModeItem.bypassMode = TunBypassMode;
_config.tunModeItem.directIP = Utils.String2List(TunDirectIP);
_config.tunModeItem.directProcess = Utils.String2List(TunDirectProcess);
_config.tunModeItem.proxyIP = Utils.String2List(TunProxyIP);
_config.tunModeItem.proxyProcess = Utils.String2List(TunProxyProcess);
//coreType
SaveCoreType();

View File

@@ -73,7 +73,7 @@
Margin="4"
VerticalAlignment="Top"
AcceptsReturn="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
<TextBlock
Grid.Row="2"
@@ -91,7 +91,7 @@
VerticalAlignment="Top"
AcceptsReturn="True"
IsReadOnly="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
<StackPanel
Grid.Row="2"
Grid.Column="2"
@@ -125,6 +125,7 @@
Width="200"
Margin="4"
HorizontalAlignment="Left"
FontSize="{DynamicResource StdFontSize}"
MaxDropDownHeight="1000"
Style="{StaticResource MaterialDesignOutlinedComboBox}" />
@@ -157,7 +158,7 @@
Margin="4"
HorizontalAlignment="Left"
AcceptsReturn="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
<StackPanel
Grid.Row="6"
Grid.Column="1"

View File

@@ -83,7 +83,8 @@
Grid.Row="1"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="2"
@@ -97,7 +98,8 @@
Grid.Row="2"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="3"
@@ -112,7 +114,8 @@
Grid.Column="1"
Width="100"
Margin="{StaticResource ServerItemMargin}"
HorizontalAlignment="Left" />
HorizontalAlignment="Left"
Style="{StaticResource DefTextBox}" />
</Grid>
<Separator
@@ -148,7 +151,8 @@
Grid.Row="1"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
<Button
x:Name="btnGUID"
Grid.Row="1"
@@ -171,7 +175,8 @@
Grid.Column="1"
Width="100"
Margin="{StaticResource ServerItemMargin}"
HorizontalAlignment="Left" />
HorizontalAlignment="Left"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="3"
@@ -216,7 +221,8 @@
Grid.Row="1"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="2"
@@ -261,7 +267,8 @@
Grid.Row="1"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="2"
@@ -275,7 +282,8 @@
Grid.Row="2"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
</Grid>
<Grid
@@ -306,7 +314,8 @@
Grid.Row="1"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
<Button
x:Name="btnGUID5"
Grid.Row="1"
@@ -344,7 +353,8 @@
Grid.Column="1"
Width="200"
Margin="{StaticResource ServerItemMargin}"
HorizontalAlignment="Left" />
HorizontalAlignment="Left"
Style="{StaticResource DefTextBox}" />
</Grid>
<Grid
x:Name="gridTrojan"
@@ -373,7 +383,8 @@
Grid.Row="1"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="2"
@@ -478,7 +489,8 @@
Grid.Row="3"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
x:Name="tipRequestHost"
Grid.Row="3"
@@ -500,7 +512,8 @@
Grid.Row="4"
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}" />
Margin="{StaticResource ServerItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
x:Name="tipPath"
Grid.Row="4"
@@ -572,7 +585,8 @@
Grid.Column="1"
Width="400"
Margin="{StaticResource ServerItemMargin}"
HorizontalAlignment="Left" />
HorizontalAlignment="Left"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="2"

View File

@@ -71,7 +71,7 @@
VerticalAlignment="Top"
AcceptsReturn="True"
IsReadOnly="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
<TextBlock
Grid.Row="2"
@@ -88,7 +88,7 @@
VerticalAlignment="Top"
AcceptsReturn="True"
IsReadOnly="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
<TextBlock
Grid.Row="3"
@@ -105,7 +105,7 @@
VerticalAlignment="Top"
AcceptsReturn="True"
IsReadOnly="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
<TextBlock
Grid.Row="4"
Grid.Column="0"
@@ -121,7 +121,7 @@
VerticalAlignment="Top"
AcceptsReturn="True"
IsReadOnly="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
<TextBlock
Grid.Row="5"
Grid.Column="0"
@@ -137,7 +137,7 @@
VerticalAlignment="Top"
AcceptsReturn="True"
IsReadOnly="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
</Grid>
<TextBlock

View File

@@ -261,37 +261,74 @@
HorizontalAlignment="Right"
Style="{StaticResource MaterialDesignToolForegroundPopupBox}">
<StackPanel Margin="8">
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Row="0"
Grid.Column="0"
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.TbSettingsColorMode}" />
<ToggleButton x:Name="togDarkMode" Margin="8" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<ToggleButton
x:Name="togDarkMode"
Grid.Row="0"
Grid.Column="1"
Margin="8" />
<TextBlock
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.TbSettingsColor}" />
<ComboBox
x:Name="cmbSwatches"
Grid.Row="1"
Grid.Column="1"
Width="100"
Margin="8"
DisplayMemberPath="Name"
Style="{StaticResource DefComboBox}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock
Grid.Row="2"
Grid.Column="0"
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.TbSettingsFontSize}" />
<ComboBox
x:Name="cmbCurrentFontSize"
Grid.Row="2"
Grid.Column="1"
Width="100"
Margin="8"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="3"
Grid.Column="0"
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.TbSettingsLanguage}" />
<ComboBox
x:Name="cmbCurrentLanguage"
Grid.Row="3"
Grid.Column="1"
Width="100"
Margin="8"
materialDesign:HintAssist.Hint="Language"
Style="{StaticResource DefComboBox}" />
</StackPanel>
</Grid>
</StackPanel>
</materialDesign:PopupBox>
</ToolBar>
@@ -323,7 +360,8 @@
Width="200"
Margin="8,0"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.MsgServerTitle}"
materialDesign:TextFieldAssist.HasClearButton="True" />
materialDesign:TextFieldAssist.HasClearButton="True"
Style="{StaticResource DefTextBox}" />
</ToolBar>
</ToolBarTray>
@@ -374,6 +412,7 @@
Width="120"
Margin="8,0"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.menuSystemproxy}"
FontSize="{DynamicResource StdFontSize}"
Style="{StaticResource MaterialDesignFloatingHintComboBox}">
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyClear}" />
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxySet}" />
@@ -387,6 +426,7 @@
Margin="8,0"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.menuRouting}"
DisplayMemberPath="remarks"
FontSize="{DynamicResource StdFontSize}"
Style="{StaticResource MaterialDesignFloatingHintComboBox}" />
</StackPanel>
@@ -495,6 +535,7 @@
Width="200"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.menuSubscription}"
DisplayMemberPath="remarks"
FontSize="{DynamicResource StdFontSize}"
Style="{StaticResource MaterialDesignFilledComboBox}" />
</DockPanel>
</MenuItem.Header>
@@ -703,6 +744,7 @@
MaxWidth="300"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.menuRouting}"
DisplayMemberPath="remarks"
FontSize="{DynamicResource StdFontSize}"
Style="{StaticResource MaterialDesignFilledComboBox}" />
</DockPanel>
</MenuItem.Header>
@@ -715,6 +757,7 @@
MaxWidth="300"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.menuServers}"
DisplayMemberPath="Text"
FontSize="{DynamicResource StdFontSize}"
Style="{StaticResource MaterialDesignFilledComboBox}" />
</DockPanel>
</MenuItem.Header>

View File

@@ -45,6 +45,11 @@ namespace v2rayN.Views
ViewModel = new MainWindowViewModel(MainSnackbar.MessageQueue!, UpdateViewHandler);
Locator.CurrentMutable.RegisterLazySingleton(() => ViewModel, typeof(MainWindowViewModel));
for (int i = Global.MinFontSize; i <= Global.MinFontSize + 8; i++)
{
cmbCurrentFontSize.Items.Add(i.ToString());
}
Global.Languages.ForEach(it =>
{
cmbCurrentLanguage.Items.Add(it);
@@ -173,6 +178,7 @@ namespace v2rayN.Views
this.Bind(ViewModel, vm => vm.ColorModeDark, v => v.togDarkMode.IsChecked).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.Swatches, v => v.cmbSwatches.ItemsSource).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSwatch, v => v.cmbSwatches.SelectedItem).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.CurrentFontSize, v => v.cmbCurrentFontSize.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.CurrentLanguage, v => v.cmbCurrentLanguage.Text).DisposeWith(disposables);
});

View File

@@ -20,6 +20,7 @@
Margin="8,0"
VerticalAlignment="Center"
Foreground="{DynamicResource PrimaryHueLightBrush}"
Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.MsgInformationTitle}" />
<ComboBox
x:Name="cmbMsgFilter"
@@ -27,10 +28,12 @@
Margin="8,0"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.MsgFilterTitle}"
materialDesign:TextFieldAssist.HasClearButton="True"
IsEditable="True" />
IsEditable="True"
Style="{StaticResource DefComboBox}" />
<TextBlock
Margin="8,0"
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.TbAutoRefresh}" />
<ToggleButton
x:Name="togAutoRefresh"
@@ -41,7 +44,7 @@
<TextBox
Name="txtMsg"
BorderThickness="0"
FontSize="11"
FontSize="{DynamicResource StdFontSize}"
HorizontalScrollBarVisibility="Auto"
IsReadOnly="True"
TextWrapping="Wrap"

View File

@@ -85,7 +85,8 @@
Grid.Row="0"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="0"
Grid.Column="2"
@@ -176,7 +177,8 @@
Grid.Row="6"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="7"
@@ -190,7 +192,8 @@
Grid.Row="7"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="8"
@@ -231,8 +234,10 @@
x:Name="cmbloglevel"
Grid.Row="10"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}"
materialDesign:HintAssist.Hint="Level" />
materialDesign:HintAssist.Hint="Level"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="11"
@@ -259,8 +264,10 @@
x:Name="cmbdefFingerprint"
Grid.Row="12"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}"
IsEditable="True" />
IsEditable="True"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="13"
@@ -273,8 +280,10 @@
x:Name="cmbdefUserAgent"
Grid.Row="13"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}"
IsEditable="True" />
IsEditable="True"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="13"
Grid.Column="3"
@@ -296,7 +305,8 @@
<ComboBox
x:Name="cmbdomainStrategy4Freedom"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefComboBox}" />
</StackPanel>
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
@@ -320,6 +330,7 @@
VerticalAlignment="Stretch"
AcceptsReturn="True"
BorderThickness="1"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</DockPanel>
@@ -353,7 +364,7 @@
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="mtu" />
<TextBox
<TextBox Style="{StaticResource DefTextBox}"
x:Name="txtKcpmtu"
Grid.Row="1"
Grid.Column="1"
@@ -367,7 +378,7 @@
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="tti" />
<TextBox
<TextBox Style="{StaticResource DefTextBox}"
x:Name="txtKcptti"
Grid.Row="2"
Grid.Column="1"
@@ -381,7 +392,7 @@
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="uplinkCapacity" />
<TextBox
<TextBox Style="{StaticResource DefTextBox}"
x:Name="txtKcpuplinkCapacity"
Grid.Row="3"
Grid.Column="1"
@@ -395,7 +406,7 @@
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="downlinkCapacity" />
<TextBox
<TextBox Style="{StaticResource DefTextBox}"
x:Name="txtKcpdownlinkCapacity"
Grid.Row="4"
Grid.Column="1"
@@ -409,7 +420,7 @@
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="readBufferSize" />
<TextBox
<TextBox Style="{StaticResource DefTextBox}"
x:Name="txtKcpreadBufferSize"
Grid.Row="5"
Grid.Column="1"
@@ -423,7 +434,7 @@
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="writeBufferSize" />
<TextBox
<TextBox Style="{StaticResource DefTextBox}"
x:Name="txtKcpwriteBufferSize"
Grid.Row="6"
Grid.Column="1"
@@ -521,7 +532,8 @@
Grid.Row="3"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="4"
@@ -647,7 +659,8 @@
Grid.Row="12"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="13"
@@ -661,7 +674,8 @@
Grid.Row="13"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="14"
@@ -675,7 +689,8 @@
Grid.Row="14"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="15"
@@ -688,8 +703,10 @@
x:Name="cmbcurrentFontFamily"
Grid.Row="15"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}"
MaxDropDownHeight="1000" />
MaxDropDownHeight="1000"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="15"
Grid.Column="2"
@@ -713,8 +730,10 @@
<ComboBox
x:Name="cmbsystemProxyAdvancedProtocol"
Grid.Row="4"
MinWidth="200"
Margin="{StaticResource SettingItemMargin}"
materialDesign:HintAssist.Hint="Protocol" />
materialDesign:HintAssist.Hint="Protocol"
Style="{StaticResource DefComboBox}" />
</StackPanel>
@@ -731,6 +750,7 @@
VerticalAlignment="Stretch"
AcceptsReturn="True"
BorderThickness="1"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</DockPanel>
@@ -751,6 +771,7 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@@ -799,7 +820,8 @@
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}"
HorizontalAlignment="Left" />
HorizontalAlignment="Left"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="4"
@@ -814,7 +836,8 @@
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}"
HorizontalAlignment="Left" />
HorizontalAlignment="Left"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="5"
@@ -827,10 +850,11 @@
x:Name="txtCustomTemplate"
Grid.Row="5"
Grid.Column="1"
Width="600"
Width="400"
Margin="{StaticResource SettingItemMargin}"
VerticalAlignment="Top"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap" />
<Button
x:Name="btnBrowse"
@@ -841,9 +865,35 @@
Click="btnBrowse_Click"
Content="{x:Static resx:ResUI.TbBrowse}"
Style="{StaticResource DefButton}" />
<TextBlock
Grid.Row="6"
Grid.Column="0"
Margin="{StaticResource SettingItemMargin}"
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.TbSettingsTunModeBypassMode}" />
<ToggleButton
x:Name="togBypassMode"
Grid.Row="6"
Grid.Column="1"
Margin="{StaticResource SettingItemMargin}"
HorizontalAlignment="Left" />
<TextBlock
Grid.Row="6"
Grid.Column="2"
Margin="{StaticResource ServerItemMargin}"
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.TbSettingsTunModeBypassModeTip}" />
</Grid>
<Grid Margin="{StaticResource SettingItemMargin}">
<Grid
x:Name="gridTunModeDirect"
Width="600"
Margin="{StaticResource SettingItemMargin}"
HorizontalAlignment="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="10" />
@@ -852,10 +902,11 @@
<GroupBox
Grid.Column="0"
Header="{x:Static resx:ResUI.TbSettingsTunModeDirectIP}"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtDirectIP"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
@@ -863,14 +914,51 @@
<GroupBox
Grid.Column="2"
Header="{x:Static resx:ResUI.TbSettingsTunModeDirectProcess}"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtDirectProcess"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
</Grid>
<Grid
x:Name="gridTunModeProxy"
Width="600"
Margin="{StaticResource SettingItemMargin}"
HorizontalAlignment="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<GroupBox
Grid.Column="0"
Header="{x:Static resx:ResUI.TbSettingsTunModeProxyIP}"
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtProxyIP"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
<GroupBox
Grid.Column="2"
Header="{x:Static resx:ResUI.TbSettingsTunModeProxyProcess}"
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtProxyProcess"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
</Grid>
</DockPanel>
</TabItem>
@@ -901,7 +989,8 @@
Grid.Row="1"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="2"
@@ -915,7 +1004,8 @@
Grid.Row="2"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="3"
@@ -929,7 +1019,8 @@
Grid.Row="3"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="4"
@@ -943,7 +1034,8 @@
Grid.Row="4"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="5"
@@ -957,7 +1049,8 @@
Grid.Row="5"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefComboBox}" />
<TextBlock
Grid.Row="6"
@@ -971,7 +1064,8 @@
Grid.Row="6"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}" />
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefComboBox}" />
</Grid>
</TabItem>
</TabControl>

View File

@@ -66,23 +66,37 @@ namespace v2rayN.Views
//fill fonts
try
{
var dir = new DirectoryInfo(Utils.GetPath(@"Resources\Fonts"));
var dir = new DirectoryInfo(Utils.GetFontsPath());
var files = dir.GetFiles("*.ttf");
var culture = _config.uiItem.currentLanguage.Equals(Global.Languages[0]) ? "zh-cn" : "en-us";
var culture2 = "en-us";
foreach (var it in files)
{
var glyphTypeface = new GlyphTypeface(new Uri(Utils.GetPath(@$"Resources\Fonts\{it.Name}")));
var fontFace = glyphTypeface.Win32FaceNames[new CultureInfo("en-us")];
var families = Fonts.GetFontFamilies(Utils.GetFontsPath(it.Name));
foreach (FontFamily family in families)
{
var typefaces = family.GetTypefaces();
foreach (Typeface typeface in typefaces)
{
typeface.TryGetGlyphTypeface(out GlyphTypeface glyph);
var fontFace = glyph.Win32FaceNames[new CultureInfo("en-us")];
if (!fontFace.Equals("Regular") && !fontFace.Equals("Normal"))
{
continue;
}
var fontFamily = glyphTypeface.Win32FamilyNames[new CultureInfo(culture)];
var fontFamily = glyph.Win32FamilyNames[new CultureInfo(culture)];
if (Utils.IsNullOrEmpty(fontFamily))
{
fontFamily = glyph.Win32FamilyNames[new CultureInfo(culture2)];
if (Utils.IsNullOrEmpty(fontFamily))
{
continue;
}
}
cmbcurrentFontFamily.Items.Add(fontFamily);
break;
}
}
}
}
catch (Exception ex)
@@ -150,8 +164,13 @@ namespace v2rayN.Views
this.Bind(ViewModel, vm => vm.TunStack, v => v.cmbStack.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.TunMtu, v => v.cmbMtu.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.TunCustomTemplate, v => v.txtCustomTemplate.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.TunBypassMode, v => v.togBypassMode.IsChecked).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.TunBypassMode, v => v.gridTunModeDirect.Visibility, vmToViewConverterOverride: new BooleanToVisibilityTypeConverter()).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.TunBypassMode2, v => v.gridTunModeProxy.Visibility, vmToViewConverterOverride: new BooleanToVisibilityTypeConverter()).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.TunDirectIP, v => v.txtDirectIP.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.TunDirectProcess, v => v.txtDirectProcess.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.TunProxyIP, v => v.txtProxyIP.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.TunProxyProcess, v => v.txtProxyProcess.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.CoreType1, v => v.cmbCoreType1.Text).DisposeWith(disposables);

View File

@@ -65,7 +65,8 @@
Grid.Column="1"
Width="200"
Margin="4"
HorizontalAlignment="Left" />
HorizontalAlignment="Left"
Style="{StaticResource DefTextBox}" />
<TextBlock
Grid.Row="2"
@@ -80,6 +81,7 @@
Grid.Column="1"
Margin="4"
HorizontalAlignment="Left"
FontSize="{DynamicResource StdFontSize}"
Style="{StaticResource MaterialDesignFilterChipPrimaryListBox}" />
<TextBlock
@@ -94,6 +96,7 @@
Grid.Row="3"
Grid.Column="1"
Margin="4"
FontSize="{DynamicResource StdFontSize}"
Style="{StaticResource MaterialDesignFilterChipPrimaryListBox}" />
<TextBlock
@@ -143,7 +146,7 @@
HorizontalAlignment="Left"
VerticalAlignment="Center">
<CheckBox x:Name="chkAutoSort">
<TextBlock Text="{x:Static resx:ResUI.TbAutoSort}" />
<TextBlock Style="{StaticResource ToolbarTextBlock}" Text="{x:Static resx:ResUI.TbAutoSort}" />
</CheckBox>
</StackPanel>
<Button
@@ -172,10 +175,11 @@
<GroupBox
Grid.Column="0"
Header="Domain"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtDomain"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
@@ -183,10 +187,11 @@
<GroupBox
Grid.Column="2"
Header="IP"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtIP"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>

View File

@@ -114,6 +114,7 @@
HorizontalAlignment="Left"
VerticalAlignment="Top"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap" />
<TextBlock
@@ -146,6 +147,7 @@
Margin="4"
VerticalAlignment="Top"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap" />
<TextBlock
@@ -163,6 +165,7 @@
Margin="4"
VerticalAlignment="Top"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap" />
<Button
x:Name="btnBrowse"

View File

@@ -224,10 +224,11 @@
<GroupBox
Grid.Column="0"
Header="Domain"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtProxyDomain"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
@@ -235,10 +236,11 @@
<GroupBox
Grid.Column="2"
Header="IP"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtProxyIP"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
@@ -255,10 +257,11 @@
<GroupBox
Grid.Column="0"
Header="Domain"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtDirectDomain"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
@@ -266,10 +269,11 @@
<GroupBox
Grid.Column="2"
Header="IP"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtDirectIP"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
@@ -286,10 +290,11 @@
<GroupBox
Grid.Column="0"
Header="Domain"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtBlockDomain"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
@@ -297,10 +302,11 @@
<GroupBox
Grid.Column="2"
Header="IP"
Style="{StaticResource MaterialDesignGroupBox}">
Style="{StaticResource MyGroupBox}">
<TextBox
Name="txtBlockIP"
AcceptsReturn="True"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>

View File

@@ -69,7 +69,7 @@
Margin="4"
VerticalAlignment="Top"
AcceptsReturn="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}"
Style="{StaticResource MyOutlinedTextBox}"
TextWrapping="Wrap" />
<TextBlock
@@ -88,7 +88,7 @@
VerticalAlignment="Top"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.SubUrlTips}"
AcceptsReturn="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}"
Style="{StaticResource MyOutlinedTextBox}"
TextWrapping="Wrap" />
<TextBlock
@@ -120,7 +120,7 @@
VerticalAlignment="Top"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.SubUrlTips}"
AcceptsReturn="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}"
Style="{StaticResource MyOutlinedTextBox}"
TextWrapping="Wrap" />
<TextBlock
@@ -139,7 +139,7 @@
VerticalAlignment="Top"
materialDesign:HintAssist.Hint="{x:Static resx:ResUI.SubUrlTips}"
AcceptsReturn="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
<TextBlock
Grid.Row="6"
@@ -156,7 +156,7 @@
Margin="4"
VerticalAlignment="Top"
AcceptsReturn="True"
Style="{StaticResource MaterialDesignOutlinedTextBox}" />
Style="{StaticResource MyOutlinedTextBox}" />
</Grid>
<Grid

View File

@@ -9,7 +9,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationIcon>v2rayN.ico</ApplicationIcon>
<Copyright>Copyright © 2017-2023 (GPLv3)</Copyright>
<FileVersion>6.8</FileVersion>
<FileVersion>6.9</FileVersion>
</PropertyGroup>
<ItemGroup>
@@ -99,15 +99,9 @@
<EmbeddedResource Update="Resx\ResUI.fa-Ir.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Update="Resources\Fonts\SourceHanSansCN-Regular.ttf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Resources\Fonts\微软雅黑.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<EmbeddedResource Update="Resx\ResUI.ru.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
</ItemGroup>
</Project>