Skip to content

Commit

Permalink
Update EditorConfig
Browse files Browse the repository at this point in the history
设置剪切板文字 与 浏览器中打开URL参数 允许null
字体添加过滤条件
默认字体使用 MSYH
关于软件页UI调整
版本号更变
  • Loading branch information
AigioL committed Apr 28, 2021
1 parent f44cdb5 commit 811def6
Show file tree
Hide file tree
Showing 11 changed files with 479 additions and 223 deletions.
210 changes: 205 additions & 5 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,215 @@ insert_final_newline = true
[*]
charset = utf-8

# 4 space indentation
[*.cs]
indent_style = space
indent_size = 4

# Tab indentation (no size specified)
[Makefile]
indent_style = tab

[*.{js,json,xaml,axaml}]
indent_style = space
indent_size = 2

# c# 文件
[*.cs]

#### Core EditorConfig 选项 ####

# 缩进和间距
indent_size = 4
indent_style = space
tab_width = 4

# 新行首选项
end_of_line = crlf
insert_final_newline = false

#### .NET 编码约定 ####

# 组织 Using
dotnet_separate_import_directive_groups = false
dotnet_sort_system_directives_first = false
file_header_template = unset

# this. 和 Me. 首选项
dotnet_style_qualification_for_event = false:suggestion
dotnet_style_qualification_for_field = false
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_property = false:suggestion

# 语言关键字与 bcl 类型首选项
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion

# 括号首选项
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity

# 修饰符首选项
dotnet_style_require_accessibility_modifiers = for_non_interface_members

# 表达式级首选项
dotnet_style_coalesce_expression = true
dotnet_style_collection_initializer = true
dotnet_style_explicit_tuple_names = true
dotnet_style_null_propagation = true
dotnet_style_object_initializer = true
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_prefer_auto_properties = true
dotnet_style_prefer_compound_assignment = true
dotnet_style_prefer_conditional_expression_over_assignment = true
dotnet_style_prefer_conditional_expression_over_return = true
dotnet_style_prefer_inferred_anonymous_type_member_names = true
dotnet_style_prefer_inferred_tuple_names = true
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
dotnet_style_prefer_simplified_boolean_expressions = true
dotnet_style_prefer_simplified_interpolation = true

# 字段首选项
dotnet_style_readonly_field = true

# 参数首选项
dotnet_code_quality_unused_parameters = all

# 禁止显示首选项
dotnet_remove_unnecessary_suppression_exclusions = none

#### c# 编码约定 ####

# var 首选项
csharp_style_var_elsewhere = true
csharp_style_var_for_built_in_types = true
csharp_style_var_when_type_is_apparent = true

# Expression-bodied 成员
csharp_style_expression_bodied_accessors = true
csharp_style_expression_bodied_constructors = false
csharp_style_expression_bodied_indexers = true
csharp_style_expression_bodied_lambdas = true
csharp_style_expression_bodied_local_functions = false
csharp_style_expression_bodied_methods = false
csharp_style_expression_bodied_operators = false
csharp_style_expression_bodied_properties = true

# 模式匹配首选项
csharp_style_pattern_matching_over_as_with_null_check = true
csharp_style_pattern_matching_over_is_with_cast_check = true
csharp_style_prefer_not_pattern = true
csharp_style_prefer_pattern_matching = true
csharp_style_prefer_switch_expression = true

# Null 检查首选项
csharp_style_conditional_delegate_call = true

# 修饰符首选项
csharp_prefer_static_local_function = true
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async

# 代码块首选项
csharp_prefer_braces = true
csharp_prefer_simple_using_statement = true

# 表达式级首选项
csharp_prefer_simple_default_expression = true
csharp_style_deconstructed_variable_declaration = true
csharp_style_implicit_object_creation_when_type_is_apparent = true
csharp_style_inlined_variable_declaration = true
csharp_style_pattern_local_over_anonymous_function = true
csharp_style_prefer_index_operator = true
csharp_style_prefer_range_operator = true
csharp_style_throw_expression = true
csharp_style_unused_value_assignment_preference = discard_variable
csharp_style_unused_value_expression_statement_preference = discard_variable

# "using" 指令首选项
csharp_using_directive_placement = outside_namespace

#### C# 格式规则 ####

# 新行首选项
csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true

# 缩进首选项
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true

# 空格键首选项
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false

# 包装首选项
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = true

#### 命名样式 ####

# 命名规则

dotnet_naming_rule.interface_should_be_以_i_开始.severity = suggestion
dotnet_naming_rule.interface_should_be_以_i_开始.symbols = interface
dotnet_naming_rule.interface_should_be_以_i_开始.style = 以_i_开始

dotnet_naming_rule.类型_should_be_帕斯卡拼写法.severity = suggestion
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.symbols = 类型
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.style = 帕斯卡拼写法

dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.severity = suggestion
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.symbols = 非字段成员
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.style = 帕斯卡拼写法

# 符号规范

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =

dotnet_naming_symbols.类型.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.类型.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.类型.required_modifiers =

dotnet_naming_symbols.非字段成员.applicable_kinds = property, event, method
dotnet_naming_symbols.非字段成员.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.非字段成员.required_modifiers =

# 命名样式

dotnet_naming_style.帕斯卡拼写法.required_prefix =
dotnet_naming_style.帕斯卡拼写法.required_suffix =
dotnet_naming_style.帕斯卡拼写法.word_separator =
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case

dotnet_naming_style.以_i_开始.required_prefix = I
dotnet_naming_style.以_i_开始.required_suffix =
dotnet_naming_style.以_i_开始.word_separator =
dotnet_naming_style.以_i_开始.capitalization = pascal_case
3 changes: 2 additions & 1 deletion src/Common.CoreLib/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using static System.Properties.ThisAssembly;

Expand All @@ -9,4 +9,5 @@
[assembly: AssemblyCopyright(AssemblyCopyright)]
[assembly: AssemblyCompany(AssemblyCompany)]
[assembly: AssemblyFileVersion(Version)]
[assembly: AssemblyInformationalVersion(InfoVersion)]
[assembly: AssemblyVersion(Version)]
16 changes: 13 additions & 3 deletions src/Common.CoreLib/Properties/ThisAssembly.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
namespace System.Properties
namespace System.Properties
{
public static class ThisAssembly
{
public const string Version = "2.0.0";
public const string Version = "2.0.0.1";

public static readonly Version ClientVersion = new(Version);
public const string InfoVersion = Version + "-beta";

static readonly Lazy<string> mVersionDisplay = new(() =>
{
Version version = new(Version);
return $"{version.ToString(3)}{(IsBetaRelease ? " β" : "")}{(version.Revision <= 0 ? "" : " rev." + version.Revision)}";
});
public static string VersionDisplay => mVersionDisplay.Value;

/// <summary>
/// 定义程序集清单的产品名自定义属性
Expand Down Expand Up @@ -49,5 +56,8 @@ public static class ThisAssembly
false
#endif
;

static readonly Lazy<bool> mIsBetaRelease = new(() => InfoVersion.Contains("beta", StringComparison.OrdinalIgnoreCase));
public static bool IsBetaRelease => mIsBetaRelease.Value;
}
}
2 changes: 1 addition & 1 deletion src/ST.Client.Desktop.Avalonia.App/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ void NotifyIcon_Click(object? sender, EventArgs e)
RestoreMainWindow();
}

public async void SetClipboardText(string s) => await AvaloniaApplication.Current.Clipboard.SetTextAsync(s);
public async void SetClipboardText(string? s) => await Current.Clipboard.SetTextAsync(s ?? string.Empty);

Window? mMainWindow;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,52 @@
using System.Globalization;
using System.Linq;
using Avalonia;
using Avalonia.Data.Converters;
using Avalonia.Media;
using System.Globalization;
using System.IO;
using System.Runtime.InteropServices;

namespace System.Application.Converters
{
public class NameToFontFamilyConverter : IValueConverter
{
static readonly Lazy<bool> lazy_has_msyh = new(() =>
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
var fontsPath = Environment.GetFolderPath(Environment.SpecialFolder.Fonts);
var msyhFilePath = Path.Combine(fontsPath, "msyh.ttc");
return File.Exists(msyhFilePath);
}
else
{
return false;
}
});
static readonly Lazy<FontFamily> mDefault = new(() => GetDefaultFontFamily());
static FontFamily GetDefaultFontFamily(bool isLight = false)
{
if (lazy_has_msyh.Value) // (版权、许可)不能在非WinOS上使用 微软雅黑字体,不可将字体嵌入程序
{
string name;
var major = Environment.OSVersion.Version.Major;
if (major > 6 || (major == 6 && Environment.OSVersion.Version.Minor >= 2))
{
name = $"Microsoft YaHei UI{(isLight ? " Light" : "")}";
}
else
{
name = $"Microsoft YaHei{(isLight ? " Light" : "")}";
}
return new FontFamily(name);
}
return FontFamily.Default;
}

public object? Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is string s)
{
if (string.IsNullOrEmpty(s) || s.Equals("Default", StringComparison.OrdinalIgnoreCase))
return FontFamily.Default;
return mDefault.Value;
return FontFamily.Parse(s);
}
return null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Styles xmlns="https://github.com/avaloniaui"
<Styles xmlns="https://github.com/avaloniaui"
xmlns:resx="clr-namespace:System.Application.UI.Resx;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Design.PreviewWith>
Expand All @@ -25,7 +25,7 @@
</Styles.Resources>

<Style Selector="TextBox">
<Setter Property="FontFamily" Value="Microsoft YaHei,Simsun,苹方-简,宋体-简"></Setter>
<Setter Property="FontFamily" Value="Microsoft YaHei UI,Microsoft YaHei,Simsun,苹方-简,宋体-简"></Setter>
<Setter Property="ContextMenu" Value="{StaticResource DefaultTextBoxContextMenu}" />
<Setter Property="Template">
<ControlTemplate>
Expand Down
Loading

0 comments on commit 811def6

Please sign in to comment.