From 7fceecec88ea80274b211068f5f0a2a614908991 Mon Sep 17 00:00:00 2001 From: "Frank A. Krueger" Date: Mon, 12 Jun 2017 12:09:09 -0700 Subject: [PATCH] Add Ids to Elements --- Ooui/.editorconfig | 163 +++++++++++++++++++++++++++++++++++++++++++++ Ooui/Button.cs | 21 +++--- Ooui/Element.cs | 33 ++++++++- Ooui/Node.cs | 6 -- Ooui/Ooui.csproj | 0 5 files changed, 207 insertions(+), 16 deletions(-) create mode 100644 Ooui/.editorconfig mode change 100755 => 100644 Ooui/Button.cs delete mode 100644 Ooui/Node.cs mode change 100755 => 100644 Ooui/Ooui.csproj diff --git a/Ooui/.editorconfig b/Ooui/.editorconfig new file mode 100644 index 0000000..f7b7156 --- /dev/null +++ b/Ooui/.editorconfig @@ -0,0 +1,163 @@ +# editorconfig.org + +# top-most EditorConfig file +root = true + +# Default settings: +# A newline ending every file +# Use 4 spaces as indentation +[*] +insert_final_newline = true +indent_style = space +indent_size = 4 +end_of_line = lf + +[project.json] +indent_size = 2 + +# C# files +[*.cs] +indent_style = space + +# New line preferences +csharp_new_line_before_open_brace = types:methods +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_within_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_switch_labels = true +csharp_indent_labels = flush_left + +# avoid this. unless absolutely necessary +dotnet_style_qualification_for_field = false:suggestion +dotnet_style_qualification_for_property = false:suggestion +dotnet_style_qualification_for_method = false:suggestion +dotnet_style_qualification_for_event = false:suggestion + +# only use var when it's obvious what the variable type is +csharp_style_var_for_built_in_types = false:none +csharp_style_var_when_type_is_apparent = false:none +csharp_style_var_elsewhere = false:suggestion + +# use language keywords instead of BCL types +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion +dotnet_style_predefined_type_for_member_access = true:suggestion + +# name all constant fields using PascalCase +dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields +dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style + +dotnet_naming_symbols.constant_fields.applicable_kinds = field +dotnet_naming_symbols.constant_fields.required_modifiers = const + +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +# static fields should have s_ prefix +dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion +dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields +dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style + +dotnet_naming_symbols.static_fields.applicable_kinds = field +dotnet_naming_symbols.static_fields.required_modifiers = static + +dotnet_naming_style.static_prefix_style.required_prefix = s_ +dotnet_naming_style.static_prefix_style.capitalization = camel_case + +# internal and private fields should be _camelCase +dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion +dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields +dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style + +dotnet_naming_symbols.private_internal_fields.applicable_kinds = field +dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal + +dotnet_naming_style.camel_case_underscore_style.required_prefix = _ +dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case + +# Code style defaults +dotnet_sort_system_directives_first = true +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = false + +# Expression-level preferences +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion + +# Expression-bodied members +csharp_style_expression_bodied_methods = false:none +csharp_style_expression_bodied_constructors = false:none +csharp_style_expression_bodied_operators = false:none +csharp_style_expression_bodied_properties = true:none +csharp_style_expression_bodied_indexers = true:none +csharp_style_expression_bodied_accessors = true:none + +# Pattern matching +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion + +# Null checking preferences +csharp_style_throw_expression = true:suggestion +csharp_style_conditional_delegate_call = true:suggestion + +# Space preferences +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 = do_not_ignore +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 = true +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 = true +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# C++ Files +[*.{cpp,h,in}] +curly_bracket_next_line = true +indent_brace_style = Allman + +# Xml project files +[*.{csproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}] +indent_size = 2 + +# Xml build files +[*.builds] +indent_size = 2 + +# Xml files +[*.{xml,stylecop,resx,ruleset}] +indent_size = 2 + +# Xml config files +[*.{props,targets,config,nuspec}] +indent_size = 2 + +# Shell scripts +[*.sh] +end_of_line = lf +[*.{cmd, bat}] +end_of_line = crlf diff --git a/Ooui/Button.cs b/Ooui/Button.cs old mode 100755 new mode 100644 index 61dd3d1..d4b3bec --- a/Ooui/Button.cs +++ b/Ooui/Button.cs @@ -1,8 +1,13 @@ -using System; - -namespace Ooui -{ - public class Button : Element - { - } -} +using System; + +namespace Ooui +{ + public class Button : Element + { + string name = ""; + public string Name { + get => name; + set => SetProperty (ref name, value); + } + } +} diff --git a/Ooui/Element.cs b/Ooui/Element.cs index 8cb554c..31da35a 100644 --- a/Ooui/Element.cs +++ b/Ooui/Element.cs @@ -1,6 +1,35 @@ +using System; + namespace Ooui { - public class Element : Node + public class Element { + public string Id { get; private set; } + + public Element () + { + Id = GenerateId (); + } + + protected bool SetProperty (ref T backingStore, T newValue) + { + if (!backingStore.Equals (newValue)) { + backingStore = newValue; + return true; + } + return false; + } + + const string IdChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + + static string GenerateId () + { + var rand = new Random(); + var chars = new char[8]; + for (var i = 0; i < chars.Length; i++) { + chars[i] = IdChars[rand.Next(0, IdChars.Length)]; + } + return new string(chars); + } } -} \ No newline at end of file +} diff --git a/Ooui/Node.cs b/Ooui/Node.cs deleted file mode 100644 index deec4b1..0000000 --- a/Ooui/Node.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Ooui -{ - public class Node - { - } -} \ No newline at end of file diff --git a/Ooui/Ooui.csproj b/Ooui/Ooui.csproj old mode 100755 new mode 100644