Fix Service Update de plat

Fix Service Update de plat

- Problème de parse avec null.

- note est un Double en BD, double? dans C#, on parse un string pour la
  requête. S'il n'y a pas de note c'est null, sauf string.format parse une
  chaîne vide si c'est un null. Rajout de condition if pour changer la
  requête et envoyé Null comme il faut.

--- Logic/Services/MySql/MySqlPlatService.cs
+++ Logic/Services/MySql/MySqlPlatService.cs
@@ -20,10 +20,10 @@
         /// <summary>
         /// Constructeur par défaut de la classe.
         /// </summary>
-        public MySqlPlatService ()
-	    {
+        public MySqlPlatService()
+        {
             alimentService = new MySqlAlimentService();
-	    }
+        }

         /// <summary>
         /// Méthode permettant d'obtenir l'ensemble des plats sauvegardé dans la base de données.
@@ -240,13 +240,20 @@
                 }

                 string note = unPlat.Note.ToString();
-
-                if (note.Contains(","))
-                {
-                    note = note.Replace(",", ".");
-                }
-
-                string requeteUpdate = string.Format("UPDATE Plats SET idTypePlat = {0}, nom = '{1}', imageUrl = '{2}', note = '{3}', nbVotes = {4}, description = '{5}' WHERE idPlat = {6}", idType, unPlat.Nom.Replace("'", "''"), unPlat.ImageUrl, note, unPlat.NbVotes, unPlat.Description, unPlat.IdPlat);
+                string requeteUpdate;
+                if (!String.IsNullOrWhiteSpace(note))
+                {
+                    if (note.Contains(","))
+                    {
+                        note = note.Replace(",", ".");
+                    }
+                    requeteUpdate = string.Format("UPDATE Plats SET idTypePlat = {0}, nom = '{1}', imageUrl = '{2}', note = '{3}', nbVotes = {4}, description = '{5}' WHERE idPlat = {6}", idType, unPlat.Nom.Replace("'", "''"), unPlat.ImageUrl, note, unPlat.NbVotes, unPlat.Description, unPlat.IdPlat);
+                }
+                else
+                    //string.Format remplace un NULL, par un espace vide, ce qui est invalide dans MySql et lance une exception puisqu'il essait de convertir un string vide à un Double (le type de donnée en bd pour note)
+                    //Dois vérifier manuellement et écrire NULL.
+                    requeteUpdate = string.Format("UPDATE Plats SET idTypePlat = {0}, nom = '{1}', imageUrl = '{2}', note = NULL, nbVotes = {3}, description = '{4}' WHERE idPlat = {5}", idType, unPlat.Nom.Replace("'", "''"), unPlat.ImageUrl, unPlat.NbVotes, unPlat.Description, unPlat.IdPlat);
+
                 connexion.Query(requeteUpdate);

                 int idPlat = (int)unPlat.IdPlat;
@@ -281,16 +288,16 @@
                 note = (double?)plat["note"];
             }

-			return new Plat()
-			{
-				IdPlat = (int)plat["idPlat"],
-				Createur = (string)plat["nomUtilisateur"],
-				Nom = (string)plat["nom"],
-				Description = (string)plat["description"],
-				TypePlat = (string)plat["typePlat"],
-				Note = note,
-				NbVotes = (int)plat["nbVotes"],
-				ImageUrl = (string)plat["imageUrl"],
+            return new Plat()
+            {
+                IdPlat = (int)plat["idPlat"],
+                Createur = (string)plat["nomUtilisateur"],
+                Nom = (string)plat["nom"],
+                Description = (string)plat["description"],
+                TypePlat = (string)plat["typePlat"],
+                Note = note,
+                NbVotes = (int)plat["nbVotes"],
+                ImageUrl = (string)plat["imageUrl"],
                 DerniereMaj = DateTime.Parse(plat["derniereMaj"].ToString())
             };
         }


Add traceback information to exception

Add traceback information to exception

--- src/runtime/exceptions.cs
+++ src/runtime/exceptions.cs
@@ -256,7 +256,7 @@
             var pe = e as PythonException;
             if (pe != null)
             {
-                Runtime.PyErr_SetObject(pe.PyType, pe.PyValue);
+                Runtime.PyErr_Restore(pe.PyType, pe.PyValue, pe.PyTB);
                 return;
             }


Updated Universe Paths

Updated Universe Paths

Modified: Renamed some methods for consistency
Modified: Expanded data objects to readability
Modified: Universe.GetItemCategoryInfo now overloads for Language argument
Modified: Universe.GetConstellationInfo now overloads for Language argument
Modified: Universe.GetItemGroupInfo now overloads for Language argument
Modified: Universe.GetRegionInfo now overloads for Language argument
Modified: Universe.GetSystemInfo now overloads for Language argument

--- ESISharp/Path/Universe.cs
+++ ESISharp/Path/Universe.cs
@@ -36,8 +36,21 @@
         /// <returns>EsiRequest</returns>
         public EsiRequest GetItemCategoryInfo(int CategoryID)
         {
+            return GetItemCategoryInfo(CategoryID, Language.English);
+        }
+
+        /// Get Item Category information
+        /// <param name="CategoryID">(Int32) Catergory ID</param>
+        /// <param name="Language">(Language) Language</param>
+        /// <returns>EsiRequest</returns>
+        public EsiRequest GetItemCategoryInfo(int CategoryID, Language Language)
+        {
             var Path = $"/universe/categories/{CategoryID.ToString()}/";
-            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get);
+            var Data = new
+            {
+                language = Language.Value
+            };
+            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get, Data);
         }

         /// Get Constellations
@@ -53,8 +66,21 @@
         /// <returns>EsiRequest</returns>
         public EsiRequest GetConstellationInfo(int ConstellationID)
         {
+            return GetConstellationInfo(ConstellationID, Language.English);
+        }
+
+        /// Get Constellation Information
+        /// <param name="ConstellationID">(Int32) Constellation ID</param>
+        /// <param name="Language">(Language) Language</param>
+        /// <returns>EsiRequest</returns>
+        public EsiRequest GetConstellationInfo(int ConstellationID, Language Language)
+        {
             var Path = $"/universe/constellations/{ConstellationID.ToString()}/";
-            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get);
+            var Data = new
+            {
+                language = Language.Value
+            };
+            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get, Data);
         }

         /// Get Factions
@@ -76,7 +102,7 @@
         /// Get Graphic information
         /// <param name="GraphicID">(Int32) Graphic ID</param>
         /// <returns>EsiRequest</returns>
-        public EsiRequest GetGraphicInformation(int GraphicID)
+        public EsiRequest GetGraphicInfo(int GraphicID)
         {
             var Path = $"/universe/graphics/{GraphicID.ToString()}/";
             return new EsiRequest(EasyObject, Path, EsiWebMethod.Get);
@@ -95,7 +121,10 @@
         public EsiRequest GetItemGroups(int Page)
         {
             var Path = "/universe/groups/";
-            var Data = new { page = Page.ToString() };
+            var Data = new
+            {
+                page = Page
+            };
             return new EsiRequest(EasyObject, Path, EsiWebMethod.Get, Data);
         }

@@ -104,14 +133,27 @@
         /// <returns>EsiRequest</returns>
         public EsiRequest GetItemGroupInfo(int GroupID)
         {
+            return GetItemGroupInfo(GroupID, Language.English);
+        }
+
+        /// Get Item Group Information
+        /// <param name="GroupID">(Int32) Item Group ID</param>
+        /// <param name="Language">(Language) Language</param>
+        /// <returns>EsiRequest</returns>
+        public EsiRequest GetItemGroupInfo(int GroupID, Language Language)
+        {
             var Path = $"/universe/groups/{GroupID.ToString()}/";
-            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get);
+            var Data = new
+            {
+                language = Language.Value
+            };
+            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get, Data);
         }

         /// Get Moon Information
         /// <param name="MoonID">(Int32) Moon ID</param>
         /// <returns>EsiRequest</returns>
-        public EsiRequest GetMoonInformation(int MoonID)
+        public EsiRequest GetMoonInfo(int MoonID)
         {
             var Path = $"/universe/moons/{MoonID.ToString()}/";
             return new EsiRequest(EasyObject, Path, EsiWebMethod.Get);
@@ -131,14 +173,14 @@
         public EsiRequest GetTypeNamesAndCategories(IEnumerable<int> TypeIDs)
         {
             var Path = "/universe/names/";
-            var Data = TypeIDs.ToArray();
+            var Data = TypeIDs;
             return new EsiRequest(EasyObject, Path, EsiWebMethod.Post, Data);
         }

         /// Get Planet Information
         /// <param name="PlanetID">(Int32) Planet ID</param>
         /// <returns>EsiRequest</returns>
-        public EsiRequest GetPlanetInformation(int PlanetID)
+        public EsiRequest GetPlanetInfo(int PlanetID)
         {
             var Path = $"/universe/planets/{PlanetID.ToString()}/";
             return new EsiRequest(EasyObject, Path, EsiWebMethod.Get);
@@ -163,16 +205,29 @@
         /// Get Region Information
         /// <param name="RegionID">(Int32) Region ID</param>
         /// <returns>EsiRequest</returns>
-        public EsiRequest GetRegionInformation(int RegionID)
+        public EsiRequest GetRegionInfo(int RegionID)
+        {
+            return GetRegionInfo(RegionID, Language.English);
+        }
+
+        /// Get Region Information
+        /// <param name="RegionID">(Int32) Region ID</param>
+        /// <param name="Language">(Language) Language</param>
+        /// <returns>EsiRequest</returns>
+        public EsiRequest GetRegionInfo(int RegionID, Language Language)
         {
             var Path = $"/universe/regions/{RegionID.ToString()}/";
-            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get);
+            var Data = new
+            {
+                language = Language.Value
+            };
+            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get, Data);
         }

         /// Get Stargate Information
         /// <param name="StargateID">(Int32) Stargate ID</param>
         /// <returns>EsiRequest</returns>
-        public EsiRequest GetStargateInformation(int StargateID)
+        public EsiRequest GetStargateInfo(int StargateID)
         {
             var Path = $"/universe/stargates/{StargateID.ToString()}/";
             return new EsiRequest(EasyObject, Path, EsiWebMethod.Get);
@@ -224,8 +279,21 @@
         /// <returns>EsiRequest</returns>
         public EsiRequest GetSystemInfo(int SystemID)
         {
+            return GetSystemInfo(SystemID, Language.English);
+        }
+
+        /// Get Solar System Information
+        /// <param name="SystemID">(Int32) System ID</param>
+        /// <param name="Language">(Language) Language</param>
+        /// <returns>EsiRequest</returns>
+        public EsiRequest GetSystemInfo(int SystemID, Language Language)
+        {
             var Path = $"/universe/systems/{SystemID.ToString()}/";
-            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get);
+            var Data = new
+            {
+                language = Language.Value
+            };
+            return new EsiRequest(EasyObject, Path, EsiWebMethod.Get, Data);
         }

         /// Get All Type IDs (First Page)
@@ -241,7 +309,10 @@
         public EsiRequest GetTypes(int Page)
         {
             var Path = "/universe/types/";
-            var Data = new { page = Page.ToString() };
+            var Data = new
+            {
+                page = Page.ToString()
+            };
             return new EsiRequest(EasyObject, Path, EsiWebMethod.Get, Data);
         }

@@ -250,7 +321,7 @@
         /// <returns>EsiRequest</returns>
         public EsiRequest GetTypeInfo(int TypeID)
         {
-            return GetTypeInfo(TypeID, Language.English.Value);
+            return GetTypeInfo(TypeID, Language.English);
         }

         /// Get Type Information
@@ -259,17 +330,11 @@
         /// <returns>EsiRequest</returns>
         public EsiRequest GetTypeInfo(int TypeID, Language Language)
         {
-            return GetTypeInfo(TypeID, Language.Value);
-        }
-
-        /// Get Type Information
-        /// <param name="TypeID">(Int32) Type ID</param>
-        /// <param name="Language">(String) Language</param>
-        /// <returns>EsiRequest</returns>
-        public EsiRequest GetTypeInfo(int TypeID, string Language)
-        {
             var Path = $"/universe/types/{TypeID.ToString()}/";
-            var Data = new { language = Language };
+            var Data = new
+            {
+                language = Language.Value
+            };
             return new EsiRequest(EasyObject, Path, EsiWebMethod.Get, Data);
         }
     }


Add quircks dump to troubleshoot tests

Add quircks dump to troubleshoot tests

--- Main/tests/Ranges/CompositeRangeTests.cs
+++ Main/tests/Ranges/CompositeRangeTests.cs
@@ -1,4 +1,6 @@
-using System;
+#if !SUPPORTS_NET40
+// NET 4.0 uses binary array sorting instead of introspection sort, most of tests belongs on order of elements to be preserved
+using System;
 using System.Diagnostics.CodeAnalysis;
 using System.Globalization;
 using System.Linq;
@@ -267,9 +269,41 @@
 			IsTrue(a.IsMerged);
 		}

+		public static void PrintQuircks()
+		{
+			var assembly = typeof(int).Assembly;
+
+			Console.WriteLine($"Running on {assembly}");
+			Console.WriteLine();
+			PrintProps("System.Runtime.Versioning.BinaryCompatibility");
+			Console.WriteLine();
+			PrintProps("System.Runtime.CompilerServices.CompatibilitySwitches");
+			Console.WriteLine();
+			PrintProps("System.Runtime.CompilerServices.AppContextSwitches");
+		}
+
+		private static void PrintProps(string typeName)
+		{
+			var type = typeof(int).Assembly.GetType(typeName);
+			if (type == null)
+			{
+				Console.WriteLine($"No type {typeName} found.");
+				return;
+			}
+
+			Console.WriteLine(type.Name);
+			var bf = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
+			foreach (var prop in type.GetProperties(bf))
+			{
+				Console.WriteLine($"\t * {prop.Name}: {prop.GetValue(null, null)}");
+			}
+		}
+
 		[Test]
 		public static void TestCompositeRangeWithKeyProperties()
 		{
+			PrintQuircks();
+
 			var range1A = Range.Create(1, 2, "A");
 			var range1B = Range.Create(1, 2, "B");
 			var range2C = Range.CreateExclusiveFrom(2, 3, "C");
@@ -1139,4 +1173,5 @@
 		}

 	}
-}+}
+#endif


Fix incorrect test

Fix incorrect test

--- test/ApplyReleasesTests.cs
+++ test/ApplyReleasesTests.cs
@@ -165,7 +165,7 @@

                 Assert.False(File.Exists(Path.Combine(tempDir, "theApp", "app-0.1.0", "args.txt")));
                 Assert.False(File.Exists(Path.Combine(tempDir, "theApp", "app-0.2.0", "args.txt")));
-                Assert.False(Directory.Exists(Path.Combine(tempDir, "theApp")));
+                Assert.True(File.Exists(Path.Combine(tempDir, "theApp", "app-0.2.0", ".dead")));
             }
         }


Revised UAC detection when the expected value is missing.

--- Microsoft.Web.Administration/PublicNativeMethods.cs
+++ Microsoft.Web.Administration/PublicNativeMethods.cs
@@ -69,8 +69,21 @@
             get
             {
                 RegistryKey uacKey = Registry.LocalMachine.OpenSubKey(uacRegistryKey, false);
-                bool result = uacKey != null && uacKey.GetValue(uacRegistryValue).Equals(1);
-                return result;
+                if (uacKey == null)
+                {
+                    // TODO: what should be returned?
+                    RollbarDotNet.Rollbar.Report("uacKey is null");
+                    return false;
+                }
+
+                var uacValue = uacKey.GetValue(uacRegistryValue);
+                if (uacValue == null)
+                {
+                    // IMPORTANT: default value is enabled. https://technet.microsoft.com/en-us/library/dd835564(v=ws.10).aspx
+                    return true;
+                }
+
+                return uacValue.Equals(1);
             }
         }


Add public constructor to RaygunErrorMessage

So I can construct without using the stack

--- Mindscape.Raygun4Net/Messages/RaygunErrorMessage.cs
+++ Mindscape.Raygun4Net/Messages/RaygunErrorMessage.cs
@@ -18,6 +18,10 @@
     public string Message { get; set; }

     public RaygunErrorStackTraceLineMessage[] StackTrace { get; set; }
+
+    public RaygunErrorMessage()
+    {
+    }

     public RaygunErrorMessage(Exception exception)
     {


Svn: implement Move task #10110     Implement Subversion tasks

--- Releases/4.0.5.0/Main/Framework/Subversion/Svn.cs
+++ Releases/4.0.5.0/Main/Framework/Subversion/Svn.cs
@@ -84,9 +84,11 @@
     ///         <!-- Add -->
     ///         <MSBuild.ExtensionPack.Subversion.Svn TaskAction="Add" Items="c:\path\newfile"/>
     ///         <!-- Copy -->
-    ///         <MSBuild.ExtensionPack.Subversion.Svn TaskAction="Copy" Items="c:\path\file1;c:\path\file2" Destionation="c:\path\directory"/>
+    ///         <MSBuild.ExtensionPack.Subversion.Svn TaskAction="Copy" Items="c:\path\file1;c:\path\file2" Destination="c:\path\directory"/>
     ///         <!-- Delete -->
     ///         <MSBuild.ExtensionPack.Subversion.Svn TaskAction="Delete" Items="c:\path\something"/>
+    ///         <!-- Move -->
+    ///         <MSBuild.ExtensionPack.Subversion.Svn TaskAction="Move" Items="c:\path\file1;c:\path\file2" Destination="c:\path\directory"/>
     ///     </Target>
     /// </Project>
     /// ]]></code>
@@ -221,6 +223,10 @@
                     this.ExecDelete();
                     break;

+                case MoveTaskAction:
+                    this.ExecMove();
+                    break;
+
                 default:
                     this.Log.LogError("Invalid TaskAction passed: {0}", this.TaskAction);
                     return;
@@ -709,6 +715,24 @@
             cmd.AppendFileNamesIfNotNull(this.Items, " ");
             Utilities.ExecuteWithLogging(Log, Path.Combine(SvnPath, SvnExecutableName), cmd.ToString(), true);
         }
+
+        private void ExecMove()
+        {
+            // required params
+            if (this.Items == null || this.Items.Length == 0 || this.Destination == null)
+            {
+                Log.LogError("The Items and Destination parameters are required");
+                return;
+            }
+
+            // execute the tool
+            var cmd = new Utilities.CommandLineBuilder2();
+            cmd.AppendSwitch("move");
+            cmd.AppendSwitch("--non-interactive");
+            cmd.AppendFileNamesIfNotNull(this.Items, " ");
+            cmd.AppendFileNameIfNotNull(this.Destination);
+            Utilities.ExecuteWithLogging(Log, Path.Combine(SvnPath, SvnExecutableName), cmd.ToString(), true);
+        }
         #endregion
     }
 }


Get NS[Mutable]ParagraphStyle API closer to MonoTouch and fix some missing setters (including fix for #7590)

--- src/appkit.cs
+++ src/appkit.cs
@@ -1376,7 +1376,7 @@
 		void SetColumnResizingType (NSBrowserColumnResizingType columnResizingType);

 		[Export ("columnResizingType")]
-		NSBrowserColumnResizingType ColumnResizingType { get; }
+		NSBrowserColumnResizingType ColumnResizingType { get; set; }

 		[Export ("prefersAllColumnUserResizing")]
 		bool PrefersAllColumnUserResizing { get; set; }
@@ -2104,7 +2104,7 @@
 		NSFocusRingType DefaultFocusRingType { get; }

 		[Export ("wantsNotificationForMarkedText")]
-		bool WantsNotificationForMarkedText { get; }
+		bool WantsNotificationForMarkedText { get; [NotImplemented] set; }

 		// NSCell(NSCellAttributedStringMethods)
 		[Export ("attributedStringValue")]
@@ -2118,7 +2118,7 @@

 		// NSCell(NSCellMixedState) {
 		[Export ("allowsMixedState")]
-		bool AllowsMixedState { get; }
+		bool AllowsMixedState { get; set; }

 		[Export ("nextState")]
 		int NextState { get; }
@@ -3389,7 +3389,7 @@
 		NSColor BackgroundColor { get; set; }

 		[Export ("cell")]
-		NSDatePickerCell Cell { get; }
+		NSDatePickerCell Cell { get; set; }

 		[Export ("textColor")]
 		NSColor TextColor { get; set; }
@@ -3696,7 +3696,7 @@
 		void ShouldCloseWindowController (NSWindowController windowController, NSObject delegateObject, Selector shouldCloseSelector, IntPtr contextInfo);

 		[Export ("displayName")]
-		string DisplayName { get; }
+		string DisplayName { get; [Lion][NullAllowed] set; }

 		[Export ("windowForSheet")]
 		NSWindow WindowForSheet { get; }
@@ -7520,95 +7520,72 @@
 	public interface NSParagraphStyle {
 		[Static]
 		[Export ("defaultParagraphStyle")]
-		NSParagraphStyle DefaultParagraphStyle { get; }
+		NSParagraphStyle DefaultParagraphStyle { get; [NotImplemented] set; }

 		[Static]
 		[Export ("defaultWritingDirectionForLanguage:")]
 		NSWritingDirection DefaultWritingDirection (string languageName);

 		[Export ("lineSpacing")]
-		float LineSpacing { get; }
+		float LineSpacing { get; [NotImplemented] set; }

 		[Export ("paragraphSpacing")]
-		float ParagraphSpacing { get; }
+		float ParagraphSpacing { get; [NotImplemented] set; }

 		[Export ("alignment")]
-		NSTextAlignment Alignment ();
+		NSTextAlignment Alignment { get; [NotImplemented] set; }

 		[Export ("headIndent")]
-		float HeadIndent { get; }
+		float HeadIndent { get; [NotImplemented] set; }

 		[Export ("tailIndent")]
-		float TailIndent { get; }
+		float TailIndent { get; [NotImplemented] set; }

 		[Export ("firstLineHeadIndent")]
-		float FirstLineHeadIndent { get; }
+		float FirstLineHeadIndent { get; [NotImplemented] set; }

 		[Export ("tabStops")]
-		NSTextTab [] TabStops ();
+		NSTextTab [] TabStops { get; [NotImplemented] set; }

 		[Export ("minimumLineHeight")]
-		float MinimumLineHeight { get; }
+		float MinimumLineHeight { get; [NotImplemented] set; }

 		[Export ("maximumLineHeight")]
-		float MaximumLineHeight { get; }
+		float MaximumLineHeight { get; [NotImplemented] set; }

 		[Export ("lineBreakMode")]
-		NSLineBreakMode LineBreakMode { get; }
+		NSLineBreakMode LineBreakMode { get; [NotImplemented] set; }

 		[Export ("baseWritingDirection")]
-		NSWritingDirection BaseWritingDirection { get; }
+		NSWritingDirection BaseWritingDirection { get; [NotImplemented] set; }

 		[Export ("lineHeightMultiple")]
-		float LineHeightMultiple { get; }
+		float LineHeightMultiple { get; [NotImplemented] set; }

 		[Export ("paragraphSpacingBefore")]
-		float ParagraphSpacingBefore { get; }
+		float ParagraphSpacingBefore { get; [NotImplemented] set; }

 		[Export ("defaultTabInterval")]
-		float DefaultTabInterval { get; }
+		float DefaultTabInterval { get; [NotImplemented] set; }

 		[Export ("textBlocks")]
-		NSTextTableBlock [] TextBlocks { get; }
+		NSTextTableBlock [] TextBlocks { get; [NotImplemented] set; }

 		[Export ("textLists")]
-		NSTextList[] TextLists { get; }
+		NSTextList[] TextLists { get; [NotImplemented] set; }

 		[Export ("hyphenationFactor")]
-		float HyphenationFactor { get; }
+		float HyphenationFactor { get; [NotImplemented] set; }

 		[Export ("tighteningFactorForTruncation")]
-		float TighteningFactorForTruncation { get; }
+		float TighteningFactorForTruncation { get; [NotImplemented] set; }

 		[Export ("headerLevel")]
-		int HeaderLevel { get; }
+		int HeaderLevel { get; [NotImplemented] set; }
 	}

 	[BaseType (typeof (NSParagraphStyle))]
 	public interface NSMutableParagraphStyle {
-		[Export ("setParagraphSpacing:")]
-		void SetParagraphSpacing (float aFloat);
-
-		[Export ("setAlignment:")]
-		void SetAlignment (NSTextAlignment alignment);
-
-		[Export ("setFirstLineHeadIndent:")]
-		void SetFirstLineHeadIndent (float aFloat);
-
-		[Export ("setHeadIndent:")]
-		void SetHeadIndent (float aFloat);
-
-		[Export ("setTailIndent:")]
-		void SetTailIndent (float aFloat);
-
-		[Export ("setLineBreakMode:")]
-		void SetLineBreakMode (NSLineBreakMode mode);
-
-		[Export ("setMinimumLineHeight:")]
-		void SetMinimumLineHeight (float aFloat);
-
-		[Export ("setMaximumLineHeight:")]
-		void SetMaximumLineHeight (float aFloat);

 		[Export ("addTabStop:")]
 		void AddTabStop (NSTextTab anObject);
@@ -7616,23 +7593,16 @@
 		[Export ("removeTabStop:")]
 		void RemoveTabStop (NSTextTab anObject);

-		[Export ("setTabStops:")]
-		void SetTabStops (NSTextTab [] array);
+		[Export ("tabStops")]
+		[Override]
+		NSTextTab [] TabStops { get; set; }

 		[Export ("setParagraphStyle:")]
 		void SetParagraphStyle (NSParagraphStyle obj);

-		[Export ("setBaseWritingDirection:")]
-		void SetBaseWritingDirection (NSWritingDirection writingDirection);
-
-		[Export ("setLineHeightMultiple:")]
-		void SetLineHeightMultiple (float aFloat);
-
-		[Export ("setParagraphSpacingBefore:")]
-		void SetParagraphSpacingBefore (float aFloat);
-
-		[Export ("setDefaultTabInterval:")]
-		void SetDefaultTabInterval (float aFloat);
+		[Export ("defaultTabInterval")]
+		[Override]
+		float DefaultTabInterval { get; set; }

 		[Export ("setTextBlocks:")]
 		void SetTextBlocks (NSTextBlock [] array);
@@ -7640,15 +7610,65 @@
 		[Export ("setTextLists:")]
 		void SetTextLists (NSTextList [] array);

-		[Export ("setHyphenationFactor:")]
-		void SetHyphenationFactor (float aFactor);
-
-		[Export ("setTighteningFactorForTruncation:")]
-		void SetTighteningFactorForTruncation (float aFactor);
-
-		[Export ("setHeaderLevel:")]
-		void SetHeaderLevel (int level);
-
+		[Export ("tighteningFactorForTruncation")]
+		[Override]
+		float TighteningFactorForTruncation { get; set; }
+
+		[Export ("headerLevel")]
+		[Override]
+		int HeaderLevel { get; set; }
+
+		[Export ("lineSpacing")]
+		[Override]
+		float LineSpacing { get; set; }
+
+		[Export ("alignment")]
+		[Override]
+		NSTextAlignment Alignment { get; set; }
+
+		[Export ("headIndent")]
+		[Override]
+		float HeadIndent { get; set; }
+
+		[Export ("tailIndent")]
+		[Override]
+		float TailIndent { get; set; }
+
+		[Export ("firstLineHeadIndent")]
+		[Override]
+		float FirstLineHeadIndent { get; set; }
+
+		[Export ("minimumLineHeight")]
+		[Override]
+		float MinimumLineHeight { get; set; }
+
+		[Export ("maximumLineHeight")]
+		[Override]
+		float MaximumLineHeight { get; set; }
+
+		[Export ("lineBreakMode")]
+		[Override]
+		NSLineBreakMode LineBreakMode { get; set; }
+
+		[Export ("baseWritingDirection")]
+		[Override]
+		NSWritingDirection BaseWritingDirection { get; set; }
+
+		[Export ("lineHeightMultiple")]
+		[Override]
+		float LineHeightMultiple { get; set; }
+
+		[Export ("paragraphSpacing")]
+		[Override]
+		float ParagraphSpacing { get; set; }
+
+		[Export ("paragraphSpacingBefore")]
+		[Override]
+		float ParagraphSpacingBefore { get; set; }
+
+		[Export ("hyphenationFactor")]
+		[Override]
+		float HyphenationFactor { get; set; }
 	}

 	[BaseType (typeof (NSObject))]
@@ -10154,7 +10174,7 @@
 	//
 	public interface NSUserInterfaceItemIdentification {
 		[Lion, Export ("identifier")]
-		string Identifier { get; }
+		string Identifier { get; set; }
 	}

 	[Lion]
@@ -12369,9 +12389,6 @@
 		[Export ("setUpFieldEditorAttributes:")]
 		NSText SetUpFieldEditorAttributes (NSText textObj);

-		[Export ("setWantsNotificationForMarkedText:")]
-		void SetWantsNotificationForMarkedText (bool flag);
-
 		//Detected properties
 		[Export ("backgroundColor")]
 		NSColor BackgroundColor { get; set; }
@@ -12393,6 +12410,10 @@

 		[Export ("allowedInputSourceLocales")]
 		string [] AllowedInputSourceLocales { get; set; }
+
+		[Export ("wantsNotificationForMarkedText")]
+		[Override]
+		bool WantsNotificationForMarkedText { get; set; }
 	}

 	[BaseType (typeof (NSTextFieldCell))]
@@ -13161,17 +13182,11 @@
 		[Export ("initWithFrame:")]
 		IntPtr Constructor (RectangleF frameRect);

-		[Export ("setTokenStyle:")]
-		void SetTokenStylestyle (NSTokenStyle style);
-
 		[Export ("tokenStyle")]
-		NSTokenStyle TokenStyle { get; }
-
-		[Export ("setCompletionDelay:")]
-		void SetCompletionDelaydelay (double delay);
+		NSTokenStyle TokenStyle { get; set; }

 		[Export ("completionDelay")]
-		double CompletionDelay { get; }
+		double CompletionDelay { get; set; }

 		[Static]
 		[Export ("defaultCompletionDelay")]
@@ -13559,6 +13574,7 @@
 		[Export ("selectedObjects")]
 		NSObject [] SelectedObjects { get; }

+		// note: signature differs as it returns a bool
 		[Export ("setSelectionIndexPaths:")]
 		bool SetSelectionIndexPaths (NSArray indexPaths);

@@ -13776,13 +13792,13 @@
 		void Deminiaturize (NSObject sender);

 		[Export ("isZoomed")]
-		bool IsZoomed { get; }
+		bool IsZoomed { get; set; }

 		[Export ("zoom:")]
 		void Zoom (NSObject sender);

 		[Export ("isMiniaturized")]
-		bool IsMiniaturized { get; }
+		bool IsMiniaturized { get; set; }

 		[Export ("tryToPerform:with:")]
 		bool TryToPerform (Selector anAction, NSObject anObject);
@@ -14126,7 +14142,7 @@
 		int WindowNumberAtPoint (PointF point, int windowNumber);

 		[Export ("initialFirstResponder")]
-		NSView InitialFirstResponder { get; }
+		NSView InitialFirstResponder { get; set; }

 		[Export ("selectNextKeyView:")]
 		void SelectNextKeyView (NSObject sender);


Add wait for test to finish (#198)

Add wait for test to finish (#198)

Fixes #193

--- Minio.Functional.Tests/FunctionalTest.cs
+++ Minio.Functional.Tests/FunctionalTest.cs
@@ -1323,8 +1323,7 @@
                 string bucketName = GetRandomName(15);
                 await Setup_Test(minio, bucketName);

-                await ListObjects_Test(minio, bucketName, null, 0);
-
+                ListObjects_Test(minio, bucketName, null, 0).Wait(5000);
                 await TearDown(minio, bucketName);
                 new MintLogger("ListObjects_Test2","Tests whether ListObjects passes when bucket is empty",TestStatus.PASS,(DateTime.Now - startTime)).Log();
             }


Use cancellation token source to create token.

--- Retryable.Net/Retryable.Net/RetryableApiClient.cs
+++ Retryable.Net/Retryable.Net/RetryableApiClient.cs
@@ -44,7 +44,8 @@

         protected async Task<HttpResponseMessage> GetAsync(string requestUri)
         {
-            return await Try(() => _client.GetAsync(requestUri), new CancellationToken());
+            var tokenSource = new CancellationTokenSource();
+            return await Try(() => _client.GetAsync(requestUri, tokenSource.Token), tokenSource.Token);
         }

         protected async Task<HttpResponseMessage> GetAsync(string requestUri, CancellationToken cancellationToken)
@@ -54,13 +55,15 @@

         protected async Task<HttpResponseMessage> PostAsync<T>(string requestUri, T content)
         {
+            var tokenSource = new CancellationTokenSource();
+
             return await Try(() =>
             {
                 using (var serializedContent = new StringContent(JsonConvert.SerializeObject(content)))
                 {
-                    return _client.PostAsync(requestUri, serializedContent);
+                    return _client.PostAsync(requestUri, serializedContent, tokenSource.Token);
                 }
-            }, new CancellationToken());
+            }, tokenSource.Token);
         }

         protected async Task<HttpResponseMessage> PostAsync<T>(string requestUri, T content, CancellationToken cancellationToken)


#Rakavy - js call from DependencyService when search icon is clicked works!

--- Moma/Moma.Droid/HybridWebViewRenderer.cs
+++ Moma/Moma.Droid/HybridWebViewRenderer.cs
@@ -16,11 +16,16 @@
         public void CallJs(string jsFunction)
         {
             //No exception, but not performing the task..
-            webView?.EvaluateJavascript(jsFunction, null);
+            webView.Settings.JavaScriptEnabled = true;
+            webView.SetWebChromeClient(new WebChromeClient());
+            webView.LoadUrl(string.Format("javascript: {0}", jsFunction));
+
+            // webView.LoadUrl("http://www.google.com");
+            //webView.EvaluateJavascript(jsFunction, null);
             //Control?.LoadUrl(string.Format("javascript: {0}", jsFunction));
         }

-	    protected override void OnElementChanged (ElementChangedEventArgs<HybridWebView> e)
+        protected override void OnElementChanged (ElementChangedEventArgs<HybridWebView> e)
 		{
 			base.OnElementChanged (e);


Actually shutdown the queue in dispose.

Actually shutdown the queue in dispose.

--- SQLitePCL.pretty.Async/AsyncDatabaseConnection.cs
+++ SQLitePCL.pretty.Async/AsyncDatabaseConnection.cs
@@ -302,13 +302,9 @@
                 return;
             }

-            // FIXME: Can this deadlock?
             this.disposed = true;
-            queue.EnqueueOperation(() =>
-            {
-                this.conn.Dispose();
-                return Enumerable.Repeat(Unit.Default, 1);
-            }, Scheduler.CurrentThread).Wait();
+            this.queue.Shutdown().Wait();
+            this.conn.Dispose();
         }

         public IObservable<T> Use<T>(Func<IDatabaseConnection, IEnumerable<T>> f)


TSI-2708 : Added back model caching

TSI-2708 : Added back model caching

--- Sdl.Web.Tridion/Mapping/DefaultContentProvider.cs
+++ Sdl.Web.Tridion/Mapping/DefaultContentProvider.cs
@@ -35,14 +35,41 @@
         {
             using (new Tracer(urlPath, localization, addIncludes))
             {
-                PageModel pageModel = LoadPageModel(ref urlPath, addIncludes, localization);
+                PageModel result = null;
+                if (CacheRegions.IsViewModelCachingEnabled)
+                {
+                    PageModel cachedPageModel = SiteConfiguration.CacheProvider.GetOrAdd(
+                        $"{urlPath}:{addIncludes}", // Cache Page Models with and without includes separately
+                        CacheRegions.PageModel,
+                        () =>
+                        {
+                            PageModel pageModel = LoadPageModel(ref urlPath, addIncludes, localization);
+                            if (pageModel.NoCache)
+                            {
+                                result = pageModel;
+                                return null;
+                            }
+                            return pageModel;
+                        }
+                        );
+
+                    if (cachedPageModel != null)
+                    {
+                        // Don't return the cached Page Model itself, because we don't want dynamic logic to modify the cached state.
+                        result = (PageModel)cachedPageModel.DeepCopy();
+                    }
+                }
+                else
+                {
+                    result = LoadPageModel(ref urlPath, addIncludes, localization);
+                }

                 if (SiteConfiguration.ConditionalEntityEvaluator != null)
                 {
-                    pageModel.FilterConditionalEntities(localization);
-                }
-
-                return pageModel;
+                    result.FilterConditionalEntities(localization);
+                }
+
+                return result;
             }
         }

@@ -57,7 +84,24 @@
         {
             using (new Tracer(id, localization))
             {
-                return LoadEntityModel(id, localization);
+                EntityModel result;
+                if (CacheRegions.IsViewModelCachingEnabled)
+                {
+                    EntityModel cachedEntityModel = SiteConfiguration.CacheProvider.GetOrAdd(
+                        $"{id}-{localization.Id}", // key
+                        CacheRegions.EntityModel,
+                        () => LoadEntityModel(id, localization)
+                        );
+
+                    // Don't return the cached Entity Model itself, because we don't want dynamic logic to modify the cached state.
+                    result = (EntityModel)cachedEntityModel.DeepCopy();
+                }
+                else
+                {
+                    result = LoadEntityModel(id, localization);
+                }
+
+                return result;
             }
         }


- v4.0.0

- v4.0.0

--- Shuttle.Core.Data.Http/Properties/AssemblyInfo.cs
+++ Shuttle.Core.Data.Http/Properties/AssemblyInfo.cs
@@ -13,10 +13,10 @@
 [assembly: AssemblyTitle("Shuttle.Core.Data.Http for .NET Framework 4.5.1")]
 #endif

-[assembly: AssemblyVersion("3.2.2.0")]
+[assembly: AssemblyVersion("4.0.0.0")]
 [assembly: AssemblyCopyright("Copyright © Eben Roux 2010-2015")]
 [assembly: AssemblyProduct("Shuttle.Core")]
 [assembly: AssemblyCompany("Shuttle")]
 [assembly: AssemblyConfiguration("Release")]
-[assembly: AssemblyInformationalVersion("3.2.2")]
+[assembly: AssemblyInformationalVersion("4.0.0")]
 [assembly: ComVisible(false)]


(TFS CS 7041)

(TFS CS 7041)

--- Signum.Web/PortableAreas/FileRepositoryManager.cs
+++ Signum.Web/PortableAreas/FileRepositoryManager.cs
@@ -52,90 +52,4 @@
             return FileRepositoryManager.FileExists("~/" + file.ToString());
         }
     }
-
-    public class FileRepositoryIIS6CompatibilityVirtualPathProvider : VirtualPathProvider
-    {
-        public string Complete(string virtualPath)
-        {
-            if (virtualPath.StartsWith("/"))
-                return "~" + virtualPath.Substring(1);
-
-            return virtualPath;
-        }
-
-        public override bool FileExists(string virtualPath)
-        {
-            retry:
-            try
-            {
-                File.AppendAllText(HttpContext.Current.Server.MapPath("~/virtualFiles.txt"), "FileExist "+ virtualPath + "\r\n");
-            }
-            catch
-            {
-                goto retry;
-            }
-
-            if (base.FileExists(virtualPath))
-                return true;
-
-            if (FileRepositoryManager.FileExists(Complete(virtualPath)))
-                return true;
-
-            return false;
-        }
-
-        public override VirtualFile GetFile(string virtualPath)
-        {
-              retry:
-            try
-            {
-                File.AppendAllText(HttpContext.Current.Server.MapPath("~/virtualFiles.txt"), "GetFile " + virtualPath + "\r\n");
-            }
-            catch
-            {
-                goto retry;
-            }
-
-            if (base.FileExists(virtualPath))
-                return base.GetFile(virtualPath);
-
-            ActionResult result = FileRepositoryManager.GetFile(Complete(virtualPath));
-
-            if (!(result is StaticContentResult))
-                throw new InvalidOperationException("StaticContentResult expected for {0}".Formato(virtualPath));
-
-            return new StaticContentIIS6CompatibilityVirtualFile((StaticContentResult)result, virtualPath);
-        }
-
-        public override System.Web.Caching.CacheDependency GetCacheDependency(string virtualPath, System.Collections.IEnumerable virtualPathDependencies, DateTime utcStart)
-        {
-            if (FileRepositoryManager.GetFile(virtualPath) != null)
-            {
-                return null;
-            }
-
-            return base.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
-        }
-
-        public override string GetCacheKey(string virtualPath)
-        {
-            return null;
-        }
-
-        public class StaticContentIIS6CompatibilityVirtualFile : VirtualFile
-        {
-            public StaticContentResult staticResult;
-
-            public StaticContentIIS6CompatibilityVirtualFile(StaticContentResult staticResult, string virtualPath)
-                : base(virtualPath)
-            {
-                this.staticResult = staticResult;
-            }
-
-            public override Stream Open()
-            {
-                return new MemoryStream(staticResult.Uncompressed);
-            }
-        }
-    }
 }


#2444 Fix undo issue with lazy loaded properties

--- Source/Csla/Core/FieldManager/FieldDataManager.cs
+++ Source/Csla/Core/FieldManager/FieldDataManager.cs
@@ -11,7 +11,6 @@
 using System.Collections.Generic;
 using Csla.Properties;
 using Csla.Serialization.Mobile;
-using Csla.Reflection;
 using System.Reflection;
 using Csla.Serialization;

@@ -508,11 +507,16 @@
           var item = _fieldData[index];
           if (item != null)
           {
-            var undoable = item.Value as IUndoableObject;
-            if (undoable != null)
+            if (item.Value is IUndoableObject undoable)
             {
               // current value is undoable
-              if (oldItem != null)
+              var doUndo = (oldItem != null);
+              if (!doUndo)
+              {
+                var propInfo = _propertyList.Where(r => r.Index == index).First();
+                doUndo = propInfo.RelationshipType.HasFlag(RelationshipTypes.LazyLoad);
+              }
+              if (doUndo)
                 undoable.UndoChanges(parentEditLevel, parentBindingEdit);
               else
                 _fieldData[index] = null;


Corrected a spelling mistake

Corrected a spelling mistake

--- Moritz.Composer/AssistantComposerForm.cs
+++ Moritz.Composer/AssistantComposerForm.cs
@@ -1480,7 +1480,7 @@
                 "input staves.\n\n" +

                 "If there are any visible input staves, then all the output voices that are not entered in this input " +
-                "field will automtically be included on invisible staves in the score's file. These invisible output " +
+                "field will automatically be included on invisible staves in the score's file. These invisible output " +
                 "staves contain midi information, referenced by notes in the input voices, but no graphics. They are " +
                 "currently written in a single block above the topmost visible staff in the file.\n\n" +


Update interface.

Update interface.

--- MoviePicker.Cognitive/IComputerVision.cs
+++ MoviePicker.Cognitive/IComputerVision.cs
@@ -14,6 +14,6 @@
 					, int maxCandidates = 1
 					, Language language = Language.undefined);

-		object GetThumbnail(int width, int height, bool smartCropping);
+		object GetThumbnail(string posterUrl, int width, int height, bool smartCropping);
 	}
 }


Add failing test case

Add failing test case

--- osu.Framework.Tests/Visual/Drawables/TestSceneFocus.cs
+++ osu.Framework.Tests/Visual/Drawables/TestSceneFocus.cs
@@ -130,6 +130,46 @@
             });

             checkFocused(() => focusBottomRight);
+        }
+
+        /// <summary>
+        /// Ensures that performing <see cref="InputManager.ChangeFocus"/> to a non-present drawable returns <see langword="false"/>.
+        /// </summary>
+        [Test]
+        public void NotPresentDrawableCannotReceiveFocus()
+        {
+            checkFocused(() => requestingFocus);
+
+            AddStep("hide top left", () => focusTopLeft.Alpha = 0);
+            AddAssert("cannot switch focus to top left", () => !InputManager.ChangeFocus(focusTopLeft));
+
+            checkFocused(() => requestingFocus);
+        }
+
+        /// <summary>
+        /// Ensures that performing <see cref="InputManager.ChangeFocus"/> to a drawable of a non-present parent returns <see langword="false"/>.
+        /// </summary>
+        [Test]
+        public void DrawableOfNotPresentParentCannotReceiveFocus()
+        {
+            checkFocused(() => requestingFocus);
+
+            AddStep("wrap top left in hidden container", () =>
+            {
+                Container container;
+
+                Add(container = new Container
+                {
+                    Alpha = 0,
+                    RelativeSizeAxes = Axes.Both,
+                });
+
+                Remove(focusTopLeft);
+                container.Add(focusTopLeft);
+            });
+            AddAssert("cannot switch focus to top left", () => !InputManager.ChangeFocus(focusTopLeft));
+
+            checkFocused(() => requestingFocus);
         }

         [Test]


重构编译器

重构编译器

--- ObjectServer/ObjectServer/Runtime/CsharpCompiler.cs
+++ ObjectServer/ObjectServer/Runtime/CsharpCompiler.cs
@@ -16,28 +16,9 @@

         public Assembly CompileFromFile(IEnumerable<string> sourceFiles)
         {
-            var selfAssembly = Assembly.GetExecutingAssembly();
-            //声明C#或VB的CodeDOM
-            var additionalOptions = new Dictionary<string, string>()
+            using (var provider = CreateCodeProvider())
             {
-                { "CompilerVersion", "v3.5" }
-            };
-
-            using (var provider = new CSharpCodeProvider(additionalOptions))
-            {
-
-                //设置编译参数，加入所需的组件
-                var options = new CompilerParameters();
-                options.ReferencedAssemblies.Add("System.dll");
-                options.ReferencedAssemblies.Add("System.Core.dll");
-                options.ReferencedAssemblies.Add("System.Data.dll");
-                options.ReferencedAssemblies.Add("System.Transactions.dll");
-                options.ReferencedAssemblies.Add(selfAssembly.Location);
-                options.GenerateInMemory = true;
-                options.GenerateExecutable = false;
-                //options.OutputAssembly = "MyDemo";
-
-                //开始编译
+                var options = CreateCompilerParameters();
                 var result = provider.CompileAssemblyFromFile(options, sourceFiles.ToArray());

                 if (result.Errors.Count != 0)
@@ -51,6 +32,33 @@
             }
         }

+        private static CSharpCodeProvider CreateCodeProvider()
+        {
+            var additionalOptions = new Dictionary<string, string>()
+            {
+                { "CompilerVersion", "v3.5" }
+            };
+            return new CSharpCodeProvider(additionalOptions);
+        }
+
+        private static CompilerParameters CreateCompilerParameters()
+        {
+            var selfAssembly = Assembly.GetExecutingAssembly();
+
+            //设置编译参数，加入所需的组件
+            var options = new CompilerParameters();
+            options.ReferencedAssemblies.Add("System.dll");
+            options.ReferencedAssemblies.Add("System.Core.dll");
+            options.ReferencedAssemblies.Add("System.Data.dll");
+            options.ReferencedAssemblies.Add("System.Transactions.dll");
+            options.ReferencedAssemblies.Add(selfAssembly.Location);
+            options.GenerateInMemory = true;
+            options.GenerateExecutable = false;
+            options.IncludeDebugInformation = ObjectServerStarter.Configuration.Debug;
+
+            return options;
+        }
+
         #endregion

         private static void LogErrors(CompilerErrorCollection errors)


More extensive bindingcontainer tests

More extensive bindingcontainer tests

--- osu.Framework.Tests/Visual/TestCaseBindingContainer.cs
+++ osu.Framework.Tests/Visual/TestCaseBindingContainer.cs
@@ -11,34 +11,65 @@
 {
     public class TestCaseBindingContainer : TestCase
     {
+        private BindingContainer<TestModel> container;
+        private TestResolver resolver;
+
+        [SetUp]
+        public void Setup() => Schedule(() => Child = container = new BindingContainer<TestModel> { Child = resolver = new TestResolver() });
+
         [Test]
-        public void TestCacheModel()
+        public void TestNoModel()
         {
-            var model = new TestModel();
-            BindingContainer<TestModel> container = null;
+            AddAssert("has default value", () => resolver.Cached.Value == 0);
+        }

-            TestResolver resolver = null;
+        [Test]
+        public void TestSingleModel()
+        {
+            var model = new TestModel { Cached = { Value = 1 } };

-            AddStep("initialise", () =>
-            {
-                Child = container = new BindingContainer<TestModel>
-                {
-                    Model = model,
-                    Child = resolver = new TestResolver()
-                };
-            });
-
+            AddStep("add model", () => container.Model = model);
             AddAssert("bindable resolved", () => resolver.Cached.Value == model.Cached.Value);

-            AddStep("change model", () => container.Model = model = new TestModel { Cached = { Value = 2 } });
+            AddStep("change model value", () => model.Cached.Value = 2);
+            AddAssert("bindable changed", () => resolver.Cached.Value == model.Cached.Value);
+        }

+        [Test]
+        public void TestChangeModel()
+        {
+            TestModel model1 = new TestModel { Cached = { Value = 1 } };
+            TestModel model2 = new TestModel { Cached = { Value = 2 } };
+
+            AddStep("add model", () => container.Model = model1);
+            AddAssert("bindable resolved", () => resolver.Cached.Value == model1.Cached.Value);
+
+            AddStep("change model", () => container.Model = model2);
+            AddAssert("bindable changed", () => resolver.Cached.Value == model2.Cached.Value);
+
+            AddStep("change first model", () => model1.Cached.Value = 3);
+            AddAssert("bindable didn't change", () => resolver.Cached.Value != model1.Cached.Value);
+        }
+
+        [Test]
+        public void TestNullModel()
+        {
+            TestModel model = new TestModel { Cached = { Value = 1 } };
+
+            AddStep("add model", () => container.Model = model);
             AddAssert("bindable resolved", () => resolver.Cached.Value == model.Cached.Value);
+
+            AddStep("set null model", () => container.Model = null);
+            AddAssert("bindable didn't change", () => resolver.Cached.Value == model.Cached.Value);
+
+            AddStep("change model value", () => model.Cached.Value = 2);
+            AddAssert("bindable didn't change", () => resolver.Cached.Value == 1);
         }

         private class TestModel
         {
             [Cached]
-            public readonly Bindable<int> Cached = new Bindable<int>(1);
+            public readonly Bindable<int> Cached = new Bindable<int>();
         }

         private class TestResolver : CompositeDrawable


Cleanup child presence invalidations

Cleanup child presence invalidations

--- osu.Framework/Graphics/Containers/CompositeDrawable.cs
+++ osu.Framework/Graphics/Containers/CompositeDrawable.cs
@@ -758,7 +758,10 @@
                     childInvalidation |= Invalidation.DrawInfo;

                 // Other geometry things like rotation, shearing, etc don't affect child properties.
-                childInvalidation &= ~(Invalidation.MiscGeometry | Invalidation.Presence);
+                childInvalidation &= ~Invalidation.MiscGeometry;
+
+                // Presence also doesn't affect child properties
+                childInvalidation &= ~Invalidation.Presence;

                 // Relative positioning can however affect child geometry
                 // ReSharper disable once PossibleNullReferenceException


Removing the Sleep(0) call from the OutgoingPacketHandler

--- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -790,12 +790,9 @@
                     // client. m_packetSent will be set to true if a packet is sent
                     m_scene.ClientManager.ForEachSync(ClientOutgoingPacketHandler);

-                    // If a packet was sent, only do a minimum length context switch to allow
-                    // other parts of the code to do work. If nothing was sent, sleep for the
-                    // minimum amount of time before a token bucket could get more tokens
-                    if (m_packetSent)
-                        Thread.Sleep(0);
-                    else
+                    // If nothing was sent, sleep for the minimum amount of time before a
+                    // token bucket could get more tokens
+                    if (!m_packetSent)
                         Thread.Sleep((int)TickCountResolution);
                 }
                 catch (Exception ex)


add test for hide catchercombo

add test for hide catchercombo

--- osu.Game.Rulesets.Catch.Tests/TestSceneComboCounter.cs
+++ osu.Game.Rulesets.Catch.Tests/TestSceneComboCounter.cs
@@ -1,12 +1,12 @@
 // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.

-#nullable disable
-
 using System.Linq;
 using NUnit.Framework;
+using osu.Framework.Allocation;
 using osu.Framework.Graphics;
 using osu.Framework.Utils;
+using osu.Game.Configuration;
 using osu.Game.Rulesets.Catch.Objects;
 using osu.Game.Rulesets.Catch.Objects.Drawables;
 using osu.Game.Rulesets.Catch.UI;
@@ -19,14 +19,24 @@
 {
     public class TestSceneComboCounter : CatchSkinnableTestScene
     {
-        private ScoreProcessor scoreProcessor;
+        private OsuConfigManager localConfig = null!;
+
+        private ScoreProcessor scoreProcessor = null!;

         private Color4 judgedObjectColour = Color4.White;
+
+        [BackgroundDependencyLoader]
+        private void load()
+        {
+            Dependencies.Cache(localConfig = new OsuConfigManager(LocalStorage));
+        }

         [SetUp]
         public void SetUp() => Schedule(() =>
         {
             scoreProcessor = new ScoreProcessor(new CatchRuleset());
+
+            localConfig.SetValue(OsuSetting.HUDVisibilityMode, HUDVisibilityMode.Always);

             SetContents(_ => new CatchComboDisplay
             {
@@ -51,9 +61,15 @@
                     1f
                 );
             });
+
+            AddStep("set hud to never show", () => localConfig.SetValue(OsuSetting.HUDVisibilityMode, HUDVisibilityMode.Never));
+            AddRepeatStep("perform hit", () => performJudgement(HitResult.Great), 5);
+
+            AddStep("set hud to show", () => localConfig.SetValue(OsuSetting.HUDVisibilityMode, HUDVisibilityMode.Always));
+            AddRepeatStep("perform hit", () => performJudgement(HitResult.Great), 5);
         }

-        private void performJudgement(HitResult type, Judgement judgement = null)
+        private void performJudgement(HitResult type, Judgement? judgement = null)
         {
             var judgedObject = new DrawableFruit(new Fruit()) { AccentColour = { Value = judgedObjectColour } };


BulletSim: experimentally remove unit displacement from prim border crossing test. This seems to cause border crossing to be sensed either a little early or a little late depending on which directin the object is moving. If border crossings become totally borked or someone remembers why this was displacement was done, revert this change.

--- OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -430,8 +430,19 @@

                 if (Scene != null)
                 {
-                    if ((Scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || Scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W)
-                        || Scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || Scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S))
+                    if (
+                        // (Scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E)
+                        //     || Scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W)
+                        //     || Scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N)
+                        //     || Scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S))
+                        // Experimental change for better border crossings.
+                        //    The commented out original lines above would, it seems, trigger
+                        //    a border crossing a little early or late depending on which
+                        //    direction the object was moving.
+                        (Scene.TestBorderCross(val, Cardinals.E)
+                            || Scene.TestBorderCross(val, Cardinals.W)
+                            || Scene.TestBorderCross(val, Cardinals.N)
+                            || Scene.TestBorderCross(val, Cardinals.S))
                         && !IsAttachmentCheckFull() && (!Scene.LoadingPrims))
                     {
                         m_scene.CrossPrimGroupIntoNewRegion(val, this, true);


Always show an image even if there are errors

--- NGraphics.Editor/MainWindowController.cs
+++ NGraphics.Editor/MainWindowController.cs
@@ -99,9 +99,12 @@
 						this.result = result;

 						Errors.Value = result.Errors ?? "";
+						Errors.TextColor = NSColor.Red;

-						Prev.Drawables = result.Drawables;
-						Prev.SetNeedsDisplayInRect (Prev.Bounds);
+						if (string.IsNullOrEmpty (result.Errors)) {
+							Prev.Drawables = result.Drawables;
+							Prev.SetNeedsDisplayInRect (Prev.Bounds);
+						}
 					}
 				} catch (Exception ex) {
 					Console.WriteLine (ex);


Show times on schedule

Show times on schedule

--- osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs
+++ osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs
@@ -9,6 +9,7 @@
 using osu.Framework.Graphics.Shapes;
 using osu.Framework.Graphics.Video;
 using osu.Framework.Platform;
+using osu.Game.Graphics;
 using osu.Game.Graphics.Sprites;
 using osu.Game.Tournament.Screens.Ladder.Components;
 using OpenTK;
@@ -107,7 +108,7 @@
                                 Colour = Color4.Black,
                                 TextSize = 20
                             },
-                            new SchedulePairing(currentMatch),
+                            new SchedulePairing(currentMatch, false),
                             new OsuSpriteText
                             {
                                 Text = "Start Time " + pairing.Date.Value.ToUniversalTime().ToString("HH:mm UTC"),
@@ -122,10 +123,29 @@

         public class SchedulePairing : DrawableMatchPairing
         {
-            public SchedulePairing(MatchPairing pairing)
+            public SchedulePairing(MatchPairing pairing, bool showTimestamp = true)
                 : base(pairing)
             {
                 Flow.Direction = FillDirection.Horizontal;
+
+                if (showTimestamp)
+                {
+                    AddInternal(new DrawableDate(Pairing.Date.Value)
+                    {
+                        Anchor = Anchor.TopRight,
+                        Origin = Anchor.TopLeft,
+                        Colour = Color4.Black,
+                        Margin = new MarginPadding { Horizontal = 10, Vertical = 5 },
+                    });
+                    AddInternal(new OsuSpriteText
+                    {
+                        Anchor = Anchor.BottomRight,
+                        Origin = Anchor.BottomLeft,
+                        Colour = Color4.Black,
+                        Margin = new MarginPadding { Horizontal = 10, Vertical = 5 },
+                        Text = pairing.Date.Value.ToUniversalTime().ToString("HH:mm UTC")
+                    });
+                }
             }
         }


minor: Remove a few indenting problems introduced to recent 265fe349 and convert the m_log.DebugFormat() call back to the original DetailLog call

--- OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -461,10 +461,10 @@
             PhysScene.TaintedObject(LocalID, "BSCharacter.setVelocity", delegate()
             {
                 if (m_moveActor != null)
-                        m_moveActor.SetVelocityAndTarget(vel, vel, true /* inTaintTime */);
-
-                    m_log.DebugFormat("{0},BSCharacter.setVelocity,taint,vel={1}", LocalID, vel);
-                    ForceVelocity = vel;
+                    m_moveActor.SetVelocityAndTarget(vel, vel, true /* inTaintTime */);
+
+                DetailLog("{0},BSCharacter.setVelocity,taint,vel={1}", LocalID, vel);
+                ForceVelocity = vel;
             });
         }
     }


added missing application/x-gzip within PUT Agent Handler.

This was in my original fix solution. However, it managed to evade when merging all code together for placing it into git.

--- OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
+++ OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
@@ -538,7 +538,9 @@
             keysvals.Add("querystringkeys", querystringkeys);

             Stream inputStream = request;
-            if ((httpRequest.Headers["Content-Encoding"] == "gzip") || (httpRequest.Headers["X-Content-Encoding"] == "gzip"))
+            if ((httpRequest.Headers["Content-Encoding"] == "gzip") ||
+                (httpRequest.Headers["X-Content-Encoding"] == "gzip") ||
+                (httpRequest.ContentType == "application/x-gzip"))
                 inputStream = new GZipStream(inputStream, CompressionMode.Decompress);

             Encoding encoding = Encoding.UTF8;


Changed CprBroker.Data.DataProviders in order to store and expose operation values.

--- PART/Source/Core/Data/DataProviders/DataProvider.cs
+++ PART/Source/Core/Data/DataProviders/DataProvider.cs
@@ -62,6 +62,7 @@
         public static RijndaelManaged EncryptionAlgorithm;

         private readonly List<AttributeType> Properties = new List<AttributeType>();
+        private readonly List<AttributeType> Operations = new List<AttributeType>();

         partial void OnLoaded()
         {
@@ -76,7 +77,14 @@
                 {
                     attributes = Encryption.DecryptObject<AttributeType[]>(Data.ToArray(), EncryptionAlgorithm);
                 }
-                Properties.AddRange(attributes);
+
+                for (int i = 0; i < attributes.Length; i++)
+                {
+                    if (!attributes[i].Name.Contains("Online "))
+                        Properties.Add(attributes[i]);
+                    else
+                        Operations.Add(attributes[i]);
+                }
             }
         }

@@ -88,6 +96,11 @@
         public AttributeType[] GetProperties()
         {
             return Properties.Select(p => new AttributeType() { Name = p.Name, Value = p.Value }).ToArray();
+        }
+
+        public AttributeType[] GetOperations()
+        {
+            return Operations.Select(p => new AttributeType() { Name = p.Name, Value = p.Value }).ToArray();
         }

         public string this[string key]


Add test case for #54

Add test case for #54

Closes #54

--- PreMailer.Net/PreMailer.Net.Tests/PreMailerTests.cs
+++ PreMailer.Net/PreMailer.Net.Tests/PreMailerTests.cs
@@ -445,5 +445,15 @@

 			Assert.IsTrue(premailedOutput.Html.StartsWith("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"));
 		}
+
+		[TestMethod]
+		public void MoveCSSInline_PreservesXMLNamespace()
+		{
+			string input = "";
+
+			var premailedOutput = PreMailer.MoveCssInline(input, false);
+
+			Assert.IsTrue(premailedOutput.Html.StartsWith(""));
+		}
 	}
 }


Rozmowa kwalifikacyjna DAC

Rozmowa kwalifikacyjna DAC

--- ProgramingStudy/Study/LanguageStudy/DacInterview.cs
+++ ProgramingStudy/Study/LanguageStudy/DacInterview.cs
@@ -9,7 +9,7 @@

     class InMutable
     {
-        public IEnumerable<int> List { get; private set; }
+        public readonly IEnumerable<int> List;

         public InMutable()
         {


WIP continue porting of VocabularyDeclaration validator rule

--- RDFSharp.Semantics/Validator/OWLValidatorRuleset.cs
+++ RDFSharp.Semantics/Validator/OWLValidatorRuleset.cs
@@ -210,7 +210,98 @@
                         nameof(VocabularyDeclaration),
                         $"Declaration of class '{complementOfTriple.Object}' is not found in the model: it is required by owl:complementOf relation of '{(RDFResource)complementOfTriple.Subject}' complement class",
                         $"Declare '{complementOfTriple.Object}' class or restriction to the class model"));
-
+            }
+            //owl:hasKey [OWL2]
+            foreach (RDFTriple hasKeyTriple in ontology.Model.ClassModel.TBoxGraph[null, RDFVocabulary.OWL.HAS_KEY, null, null])
+            {
+                if (!ontology.Model.ClassModel.CheckHasClass((RDFResource)hasKeyTriple.Subject))
+                    validatorRuleReport.AddEvidence(new OWLValidatorEvidence(
+                        OWLSemanticsEnums.OWLValidatorEvidenceCategory.Warning,
+                        nameof(VocabularyDeclaration),
+                        $"Declaration of class '{hasKeyTriple.Subject}' is not found in the model: it is required as subject of an owl:hasKey relation",
+                        $"Declare '{hasKeyTriple.Subject}' class to the class model"));
+                else
+                {
+                    RDFCollection hasKeyMembersCollection = RDFModelUtilities.DeserializeCollectionFromGraph(ontology.Model.ClassModel.TBoxGraph, (RDFResource)hasKeyTriple.Object, RDFModelEnums.RDFTripleFlavors.SPO);
+                    foreach (RDFPatternMember hasKeyMember in hasKeyMembersCollection)
+                    {
+                        if (!ontology.Model.PropertyModel.CheckHasProperty((RDFResource)hasKeyMember))
+                            validatorRuleReport.AddEvidence(new OWLValidatorEvidence(
+                                OWLSemanticsEnums.OWLValidatorEvidenceCategory.Warning,
+                                nameof(VocabularyDeclaration),
+                                $"Declaration of property '{hasKeyMember}' is not found in the model: it is required by owl:hasKey relation of '{(RDFResource)hasKeyTriple.Subject}' class",
+                                $"Declare '{hasKeyMember}' property to the property model"));
+                    }
+                }
+            }
+            //owl:disjointUnionOf [OWL2]
+            foreach (RDFTriple disjointUnionOfTriple in ontology.Model.ClassModel.TBoxGraph[null, RDFVocabulary.OWL.DISJOINT_UNION_OF, null, null])
+            {
+                if (!ontology.Model.ClassModel.CheckHasClass((RDFResource)disjointUnionOfTriple.Subject))
+                    validatorRuleReport.AddEvidence(new OWLValidatorEvidence(
+                        OWLSemanticsEnums.OWLValidatorEvidenceCategory.Warning,
+                        nameof(VocabularyDeclaration),
+                        $"Declaration of disjoint union class '{disjointUnionOfTriple.Subject}' is not found in the model: it is required as subject of an owl:disjointUnionOf relation",
+                        $"Declare '{disjointUnionOfTriple.Subject}' disjoint union class to the class model"));
+                else
+                {
+                    RDFCollection disjointUnionMembersCollection = RDFModelUtilities.DeserializeCollectionFromGraph(ontology.Model.ClassModel.TBoxGraph, (RDFResource)disjointUnionOfTriple.Object, RDFModelEnums.RDFTripleFlavors.SPO);
+                    foreach (RDFPatternMember disjointUnionMember in disjointUnionMembersCollection)
+                    {
+                        if (!ontology.Model.ClassModel.CheckHasClass((RDFResource)disjointUnionMember))
+                            validatorRuleReport.AddEvidence(new OWLValidatorEvidence(
+                                OWLSemanticsEnums.OWLValidatorEvidenceCategory.Warning,
+                                nameof(VocabularyDeclaration),
+                                $"Declaration of class '{disjointUnionMember}' is not found in the model: it is required by owl:disjointUnionOf relation of '{(RDFResource)disjointUnionOfTriple.Subject}' disjoint union class",
+                                $"Declare '{disjointUnionMember}' class or restriction to the class model"));
+                    }
+                }
+            }
+            //owl:AllDisjointClasses [OWL2]
+            foreach (RDFTriple allDisjointClassesTriple in ontology.Model.ClassModel.TBoxGraph[null, RDFVocabulary.RDF.TYPE, RDFVocabulary.OWL.ALL_DISJOINT_CLASSES, null])
+            {
+                if (!ontology.Model.ClassModel.CheckHasClass((RDFResource)allDisjointClassesTriple.Subject))
+                    validatorRuleReport.AddEvidence(new OWLValidatorEvidence(
+                        OWLSemanticsEnums.OWLValidatorEvidenceCategory.Warning,
+                        nameof(VocabularyDeclaration),
+                        $"Declaration of AllDisjointClass class '{allDisjointClassesTriple.Subject}' is not found in the model: it is required as subject of an owl:members relation",
+                        $"Declare '{allDisjointClassesTriple.Subject}' AllDisjointClass class to the class model"));
+                else
+                {
+                    foreach (RDFTriple allDisjointClassesMembersTriple in ontology.Model.ClassModel.TBoxGraph[(RDFResource)allDisjointClassesTriple.Subject, RDFVocabulary.OWL.MEMBERS, null, null])
+                    {
+                        RDFCollection allDisjointClassesMembersCollection = RDFModelUtilities.DeserializeCollectionFromGraph(ontology.Model.ClassModel.TBoxGraph, (RDFResource)allDisjointClassesMembersTriple.Object, RDFModelEnums.RDFTripleFlavors.SPO);
+                        foreach (RDFPatternMember allDisjointClassesMember in allDisjointClassesMembersCollection)
+                        {
+                            if (!ontology.Model.ClassModel.CheckHasClass((RDFResource)allDisjointClassesMember))
+                                validatorRuleReport.AddEvidence(new OWLValidatorEvidence(
+                                    OWLSemanticsEnums.OWLValidatorEvidenceCategory.Warning,
+                                    nameof(VocabularyDeclaration),
+                                    $"Declaration of class '{allDisjointClassesMember}' is not found in the model: it is required by owl:members relation of '{(RDFResource)allDisjointClassesTriple.Subject}' AllDisjointClasses class",
+                                    $"Declare '{allDisjointClassesMember}' class or restriction to the class model"));
+                        }
+                    }
+                }
+            }
+            //rdfs:domain
+            foreach (RDFTriple domainTriple in ontology.Model.PropertyModel.TBoxGraph[null, RDFVocabulary.RDFS.DOMAIN, null, null])
+            {
+                if (!ontology.Model.ClassModel.CheckHasClass((RDFResource)domainTriple.Object))
+                    validatorRuleReport.AddEvidence(new OWLValidatorEvidence(
+                        OWLSemanticsEnums.OWLValidatorEvidenceCategory.Warning,
+                        nameof(VocabularyDeclaration),
+                        $"Declaration of class '{domainTriple.Object}' is not found in the model: it is required by rdfs:domain relation of '{(RDFResource)domainTriple.Subject}' property",
+                        $"Declare '{domainTriple.Object}' class or restriction to the class model"));
+            }
+            //rdfs:range
+            foreach (RDFTriple rangeTriple in ontology.Model.PropertyModel.TBoxGraph[null, RDFVocabulary.RDFS.RANGE, null, null])
+            {
+                if (!ontology.Model.ClassModel.CheckHasClass((RDFResource)rangeTriple.Object))
+                    validatorRuleReport.AddEvidence(new OWLValidatorEvidence(
+                        OWLSemanticsEnums.OWLValidatorEvidenceCategory.Warning,
+                        nameof(VocabularyDeclaration),
+                        $"Declaration of class '{rangeTriple.Object}' is not found in the model: it is required by rdfs:range relation of '{(RDFResource)rangeTriple.Subject}' property",
+                        $"Declare '{rangeTriple.Object}' class or restriction to the class model"));
             }
             #endregion


CreateRiskHotspotsCloud() takes 'branchCoverageAvailable' into account

--- ReportGenerator.Reporting/Rendering/HtmlRenderer.cs
+++ ReportGenerator.Reporting/Rendering/HtmlRenderer.cs
@@ -288,7 +288,7 @@
             this.reportTextWriter.WriteLine("
");
         }

-        string CreateRiskHotspotsCloud(IEnumerable<RiskHotspot> hotspots)
+        string CreateRiskHotspotsCloud(IEnumerable<RiskHotspot> hotspots, bool branchCoverageAvailable)
         {
             var jsHotspotsBuilder = new StringBuilder();
             foreach (var hotspot in hotspots)
@@ -303,7 +303,7 @@
                     $"html: {{title: 'Riskiest method: {hotspot.ClassNameShort}.{hotspot.MethodNameShort}\\n" +
                     $"Complexity: {hotspot.Complexity}\\n" +
                     $"Coverage: {hotspot.Coverage}%\\n" +
-                    $"Branch coverage: {hotspot.BranchCoverage}%\\n" +
+                    (branchCoverageAvailable ? $"Branch coverage: {hotspot.BranchCoverage}%\\n" : "") +
                     $"Crap score: {hotspot.CrapScore}'}}";
                 jsHotspotsBuilder.AppendLine($"{{ {name}, {weight}, {link}, {html} }},");
             }
@@ -384,10 +384,10 @@
             this.javaScriptContent.AppendLine("var branchCoverageAvailable = " + branchCoverageAvailable.ToString().ToLowerInvariant() + ";");

             // Risk Hotspots analysis results
-            Header("Risk Hotspots");
+            Header(ReportResources.RiskHotspots);
             this.reportTextWriter.Write("

");
             var hotspots = RiskHotspotsAnalysis.DetectHotspots(assemblies);
-            var hotspotsJqCloud = CreateRiskHotspotsCloud(hotspots);
+            var hotspotsJqCloud = CreateRiskHotspotsCloud(hotspots, branchCoverageAvailable);
             this.javaScriptContent.AppendLine(hotspotsJqCloud);
         }


Added SentryUser constructor test for null username

--- src/tests/SharpRaven.UnitTests/Data/SentryUserTests.cs
+++ src/tests/SharpRaven.UnitTests/Data/SentryUserTests.cs
@@ -56,7 +56,15 @@
         [Test]
         public void Constructor_NullPrincipal_DoesNotThrow()
         {
-            var user = new SentryUser(null);
+            var user = new SentryUser((IPrincipal)null);
+            Assert.That(user.Username, Is.Null);
+        }
+
+
+        [Test]
+        public void Constructor_NullUsername_DoesNotThrow()
+        {
+            var user = new SentryUser((string)null);
             Assert.That(user.Username, Is.Null);
         }
     }


fixed output

fixed output

--- EncodeBlob_FFMPEG/run.csx
+++ EncodeBlob_FFMPEG/run.csx
@@ -52,7 +52,7 @@
         process.StartInfo.UseShellExecute = false;
         process.StartInfo.FileName = "D:\\home\\site\\wwwroot\\EncodeBlob_FFMPEG\\bin\\ffmpeg\\ffmpeg.exe";
         process.StartInfo.CreateNoWindow = true;
-        process.StartInfo.Arguments = "-v";
+        process.StartInfo.Arguments = "-version";
         process.StartInfo.RedirectStandardOutput = true;
         process.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
         {
@@ -70,9 +70,9 @@
         // This raises OutputDataReceived events for each line of output.
         process.BeginOutputReadLine();
         process.WaitForExit();
-        log.Info(output.ToString());
+        log.Info("FFMPEG OUTPUT : \n" + output.ToString());

-
+
         log.Info("Done!");

     }


Break more things

Break more things

--- SK_Strategygame/SK_Strategygame/UI/bListboxEntry.cs
+++ SK_Strategygame/SK_Strategygame/UI/bListboxEntry.cs
@@ -24,7 +24,7 @@
             py = parent.y;
             pw = (int)parent.w;
             ph = (int)parent.h;
-            this.text = new Text(text);
+            this.text = new Text(text, new System.Drawing.Font("Tahoma", 16), new DrawColor(0,0,0), new DrawColor(255,255,255));
             border = new Rectangle(new Quad(0, 0, 1, 1), new DrawColor(128, 128, 128));
         }


Add method to get extent width in TokenOperations

--- Engine/TokenOperations.cs
+++ Engine/TokenOperations.cs
@@ -272,6 +272,11 @@
             return GetTokenAndPrecedingWhitespace(TokenKind.LParen);
         }

+        public static int GetExtentWidth(IScriptExtent extent)
+        {
+            return extent.EndOffset - extent.StartOffset;
+        }
+
         private bool OnSameLine(Token token1, Token token2)
         {
             return token1.Extent.StartLineNumber == token2.Extent.EndLineNumber;


JimEvans: Quieting the .NET FirefoxDriver from writing extraneous information to the console

git-svn-id: aa1aa1384423cb28c2b1e29129bb3a91de1d9196@10704 07704840-8298-11de-bf8c-fd130f914ac9

--- firefox/src/csharp/webdriver-firefox/FirefoxProfile.cs
+++ firefox/src/csharp/webdriver-firefox/FirefoxProfile.cs
@@ -376,11 +376,11 @@
                 {
                     numberOfRetries++;
                 }
-
-                if (Directory.Exists(directoryToDelete))
-                {
-                    Console.WriteLine("Unable to delete profile directory '{0}'", directoryToDelete);
-                }
+            }
+
+            if (Directory.Exists(directoryToDelete))
+            {
+                Console.WriteLine("Unable to delete profile directory '{0}'", directoryToDelete);
             }
         }


First pass on update docs for v2

First pass on update docs for v2

Reviewed and edited existing Markdown files and added more to sketchy
describe v2

--- Facade/WorkItemWrapper.cs
+++ Facade/WorkItemWrapper.cs
@@ -143,6 +143,12 @@
         public void TransitionToState(string state, string comment)
         {
             //TODO
+            /*
+> **Note on States**: TFS has controls setup on State Transitions.
+> Most templates do not allow you to go directly from a New state to a Done state.
+> TFS Aggregator will cycle the target work item through what ever states it needs to to find the **shortest route** to the target state.
+> (For most templates that is also the route that makes the most sense from a business perspective too.)
+             */
             throw new NotImplementedException();
         }
     }


Add test coverage

Add test coverage

--- osu.Framework.Tests/Containers/TestSceneLoadComponentAsync.cs
+++ osu.Framework.Tests/Containers/TestSceneLoadComponentAsync.cs
@@ -2,6 +2,8 @@
 // See the LICENCE file in the repository root for full licence text.

 using System;
+using System.Collections.Generic;
+using System.Linq;
 using System.Threading;
 using NUnit.Framework;
 using osu.Framework.Allocation;
@@ -15,17 +17,13 @@
     [HeadlessTest]
     public class TestSceneLoadComponentAsync : FrameworkTestScene
     {
-        private AsyncChildLoadingComposite composite;
-
-        [SetUpSteps]
-        public void SetUpSteps()
-        {
-            AddStep("Add new composite", () => { Child = composite = new AsyncChildLoadingComposite(); });
-        }
-
         [Test]
         public void TestUnpublishedChildDisposal()
         {
+            AsyncChildLoadingComposite composite = null;
+
+            AddStep("Add new composite", () => { Child = composite = new AsyncChildLoadingComposite(); });
+
             AddStep("Allow load", () => composite.AllowChildLoad());

             AddUntilStep("Wait for child load", () => composite.AsyncChild.LoadState == LoadState.Ready);
@@ -38,6 +36,10 @@
         [Test]
         public void TestUnpublishedChildLoadBlockDisposal()
         {
+            AsyncChildLoadingComposite composite = null;
+
+            AddStep("Add new composite", () => { Child = composite = new AsyncChildLoadingComposite(); });
+
             AddUntilStep("Wait for child load began", () => composite.AsyncChildLoadBegan);

             AddStep("Dispose composite", Clear);
@@ -55,6 +57,52 @@
             AddUntilStep("Composite was disposed", () => composite.IsDisposed);

             AddUntilStep("Child was disposed", () => composite.AsyncChildDisposed);
+        }
+
+        [Test]
+        public void TestDisposalDuringAsyncLoad()
+        {
+            AsyncChildrenLoadingComposite composite = null;
+
+            AddStep("Add new composite", () => { Child = composite = new AsyncChildrenLoadingComposite(); });
+
+            AddStep("Dispose child 2", () => composite.AsyncChild2.Dispose());
+
+            AddStep("Allow child 1 load", () => composite.AllowChild1Load());
+
+            AddUntilStep("Wait for child load", () => composite.AsyncChild1.LoadState == LoadState.Ready);
+
+            AddUntilStep("Wait for loaded callback", () => composite.LoadedChildren != null);
+
+            AddAssert("Only child1 loaded", () => composite.LoadedChildren.Count() == 1
+                                                  && composite.LoadedChildren.First() == composite.AsyncChild1);
+        }
+
+        private class AsyncChildrenLoadingComposite : CompositeDrawable
+        {
+            public IEnumerable<TestLoadBlockingDrawable> LoadedChildren;
+
+            public TestLoadBlockingDrawable AsyncChild1 { get; } = new TestLoadBlockingDrawable();
+
+            public TestLoadBlockingDrawable AsyncChild2 { get; } = new TestLoadBlockingDrawable();
+
+            public bool AsyncChild1LoadBegan => AsyncChild1.LoadState > LoadState.NotLoaded;
+
+            public void AllowChild1Load() => AsyncChild1.AllowLoad.Set();
+
+            public void AllowChild2Load() => AsyncChild2.AllowLoad.Set();
+
+            public new bool IsDisposed => base.IsDisposed;
+
+            protected override void LoadComplete()
+            {
+                // load but never add to hierarchy
+                LoadComponentsAsync(new[] { AsyncChild1, AsyncChild2 }, loadComplete);
+
+                base.LoadComplete();
+            }
+
+            private void loadComplete(IEnumerable<TestLoadBlockingDrawable> loadedChildren) => LoadedChildren = loadedChildren;
         }

         private class AsyncChildLoadingComposite : CompositeDrawable


Ensure any non-`MemoryStream` streams are closed as part of `ImportTask`

--- osu.Game/Database/ImportTask.cs
+++ osu.Game/Database/ImportTask.cs
@@ -62,6 +62,7 @@
             {
                 // This isn't used in any current path. May need to reconsider for performance reasons (ie. if we don't expect the incoming stream to be copied out).
                 memoryStream = new MemoryStream(stream.ReadAllBytesToArray());
+                stream.Dispose();
             }

             if (ZipUtils.IsZipArchive(memoryStream))


Fix `Timeline` attempting to setup zoom with unloaded track

--- osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs
+++ osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs
@@ -146,13 +146,7 @@
                 waveform.Waveform = b.NewValue.Waveform;
                 track = b.NewValue.Track;

-                // todo: i don't think this is safe, the track may not be loaded yet.
-                if (track.Length > 0)
-                {
-                    MaxZoom = getZoomLevelForVisibleMilliseconds(500);
-                    MinZoom = getZoomLevelForVisibleMilliseconds(10000);
-                    defaultTimelineZoom = getZoomLevelForVisibleMilliseconds(6000);
-                }
+                setupTimelineZoom();
             }, true);

             Zoom = (float)(defaultTimelineZoom * editorBeatmap.BeatmapInfo.TimelineZoom);
@@ -203,6 +197,20 @@
             // This needs to happen after transforms are updated, but before the scroll position is updated in base.UpdateAfterChildren
             if (editorClock.IsRunning)
                 scrollToTrackTime();
+        }
+
+        private void setupTimelineZoom()
+        {
+            if (!track.IsLoaded)
+            {
+                Scheduler.AddOnce(setupTimelineZoom);
+                return;
+            }
+
+            defaultTimelineZoom = getZoomLevelForVisibleMilliseconds(6000);
+
+            float initialZoom = (float)(defaultTimelineZoom * editorBeatmap.BeatmapInfo.TimelineZoom);
+            SetupZoom(initialZoom, getZoomLevelForVisibleMilliseconds(10000), getZoomLevelForVisibleMilliseconds(500));
         }

         protected override bool OnScroll(ScrollEvent e)


Move storyboard logic region down

Move storyboard logic region down

--- osu.Game/Screens/Play/Player.cs
+++ osu.Game/Screens/Play/Player.cs
@@ -67,41 +67,6 @@

         protected HUDOverlay HUDOverlay { get; private set; }

-        #region Storyboard
-
-        private DrawableStoryboard storyboard;
-        protected UserDimContainer StoryboardContainer { get; private set; }
-
-        private void initializeStoryboard(bool asyncLoad)
-        {
-            if (StoryboardContainer == null || storyboard != null)
-                return;
-
-            if (!showStoryboard.Value)
-                return;
-
-            var beatmap = Beatmap.Value;
-
-            storyboard = beatmap.Storyboard.CreateDrawable();
-            storyboard.Masking = true;
-
-            if (asyncLoad)
-                LoadComponentAsync(storyboard, StoryboardContainer.Add);
-            else
-                StoryboardContainer.Add(storyboard);
-        }
-
-        #endregion
-
-        private Bindable<bool> showStoryboard;
-
-        protected virtual UserDimContainer CreateStoryboardContainer() => new UserDimContainer(true)
-        {
-            RelativeSizeAxes = Axes.Both,
-            Alpha = 1,
-            EnableUserDim = { Value = true }
-        };
-
         public bool LoadedBeatmapSuccessfully => DrawableRuleset?.Objects.Any() == true;

         protected GameplayClockContainer GameplayClockContainer { get; private set; }
@@ -306,6 +271,41 @@
         protected override bool OnScroll(ScrollEvent e) => mouseWheelDisabled.Value && !GameplayClockContainer.IsPaused.Value;

         protected virtual Results CreateResults(ScoreInfo score) => new SoloResults(score);
+
+        #region Storyboard
+
+        private DrawableStoryboard storyboard;
+        protected UserDimContainer StoryboardContainer { get; private set; }
+
+        protected virtual UserDimContainer CreateStoryboardContainer() => new UserDimContainer(true)
+        {
+            RelativeSizeAxes = Axes.Both,
+            Alpha = 1,
+            EnableUserDim = { Value = true }
+        };
+
+        private Bindable<bool> showStoryboard;
+
+        private void initializeStoryboard(bool asyncLoad)
+        {
+            if (StoryboardContainer == null || storyboard != null)
+                return;
+
+            if (!showStoryboard.Value)
+                return;
+
+            var beatmap = Beatmap.Value;
+
+            storyboard = beatmap.Storyboard.CreateDrawable();
+            storyboard.Masking = true;
+
+            if (asyncLoad)
+                LoadComponentAsync(storyboard, StoryboardContainer.Add);
+            else
+                StoryboardContainer.Add(storyboard);
+        }
+
+        #endregion

         #region Fail Logic


Don't automatically pause when window is inactive if in break time

--- osu.Game/Screens/Play/Player.cs
+++ osu.Game/Screens/Play/Player.cs
@@ -135,7 +135,7 @@
             addGameplayComponents(GameplayClockContainer, working);
             addOverlayComponents(GameplayClockContainer, working);

-            DrawableRuleset.HasReplayLoaded.BindValueChanged(e => HUDOverlay.HoldToQuit.PauseOnFocusLost = !e.NewValue && PauseOnFocusLost, true);
+            DrawableRuleset.HasReplayLoaded.BindValueChanged(_ => updatePauseOnFocusLostState(), true);

             // bind clock into components that require it
             DrawableRuleset.IsPaused.BindTo(GameplayClockContainer.IsPaused);
@@ -146,6 +146,7 @@

             foreach (var mod in Mods.Value.OfType<IApplicableToScoreProcessor>())
                 mod.ApplyToScoreProcessor(ScoreProcessor);
+            breakOverlay.IsBreakTime.ValueChanged += _ => updatePauseOnFocusLostState();
         }

         private void addUnderlayComponents(Container target)
@@ -241,6 +242,11 @@
             });
         }

+        private void updatePauseOnFocusLostState() =>
+            HUDOverlay.HoldToQuit.PauseOnFocusLost = PauseOnFocusLost
+                                                     && !DrawableRuleset.HasReplayLoaded.Value
+                                                     && !breakOverlay.IsBreakTime.Value;
+
         private WorkingBeatmap loadBeatmap()
         {
             WorkingBeatmap working = Beatmap.Value;


LIBOMV-477 Fixes cast issue in AgentGroupDataUpdateMessage due to Capability message format differences (this class needs to inherit from a base class to handle the different formats)

git-svn-id: e915c4f8b2ea2a6e63cbe989b51c0994a698cc26@2632 52acb1d6-8a22-11de-b505-999d5b087335

--- OpenMetaverse/Messages/LindenMessages.cs
+++ OpenMetaverse/Messages/LindenMessages.cs
@@ -814,27 +814,27 @@

             OSDArray groupDataArray = new OSDArray(GroupDataBlock.Length);

-            OSDArray newGroupDataArray = new OSDArray(GroupDataBlock.Length);
+            //OSDArray newGroupDataArray = new OSDArray(GroupDataBlock.Length);

             for (int i = 0; i < GroupDataBlock.Length; i++)
             {
-                OSDMap group = new OSDMap(6);
+                OSDMap group = new OSDMap(7);
                 group["AcceptNotices"] = OSD.FromBoolean(GroupDataBlock[i].AcceptNotices);
                 group["Contribution"] = OSD.FromInteger(GroupDataBlock[i].Contribution);
                 group["GroupID"] = OSD.FromUUID(GroupDataBlock[i].GroupID);
                 group["GroupInsigniaID"] = OSD.FromUUID(GroupDataBlock[i].GroupInsigniaID);
                 group["GroupName"] = OSD.FromString(GroupDataBlock[i].GroupName);
                 group["GroupPowers"] = OSD.FromBinary((ulong)GroupDataBlock[i].GroupPowers);
-
+                group["ListInProfile"] = OSD.FromBoolean(GroupDataBlock[i].ListInProfile);
                 groupDataArray.Add(group);

-                OSDMap newDataMap = new OSDMap(1);
-                newDataMap["ListInProfile"] = OSD.FromBoolean(GroupDataBlock[i].ListInProfile);
-                newGroupDataArray.Add(newDataMap);
+                //OSDMap newDataMap = new OSDMap(1);
+                //newDataMap["ListInProfile"] = OSD.FromBoolean(GroupDataBlock[i].ListInProfile);
+                //newGroupDataArray.Add(newDataMap);
             }

             map["GroupData"] = groupDataArray;
-            map["NewGroupData"] = newGroupDataArray;
+            //map["NewGroupData"] = newGroupDataArray;
             return map;
         }

@@ -846,7 +846,7 @@

             OSDArray groupArray = (OSDArray)map["GroupData"];

-            OSDArray newGroupDataArray = (OSDArray)map["NewGroupData"];
+            //OSDArray newGroupDataArray = (OSDArray)map["NewGroupData"];

             GroupDataBlock = new GroupData[groupArray.Count];

@@ -862,12 +862,12 @@
                 groupData.GroupInsigniaID = groupMap["GroupInsigniaID"].AsUUID();
                 groupData.GroupName = groupMap["GroupName"].AsString();
                 groupData.GroupPowers = (GroupPowers)groupMap["GroupPowers"].AsLong();
-
+                groupData.ListInProfile = groupMap["ListInProfile"].AsBoolean();
                 groupData.AcceptNotices = groupMap["AcceptNotices"].AsBoolean();

-                OSDMap newGroupDataMap = (OSDMap)newGroupDataArray[i];
-
-                groupData.ListInProfile = newGroupDataMap["ListInProfile"].AsBoolean();
+                //OSDMap newGroupDataMap = (OSDMap)newGroupDataArray[i];
+
+                //groupData.ListInProfile = newGroupDataMap["ListInProfile"].AsBoolean();

                 /*
                  * 'NewGroupData':


You are obsolete. You will be EXTER-MIN-ATE-D. EXTER-MIN-ATE!

--- OpenSim.Framework.Console/ConsoleBase.cs
+++ OpenSim.Framework.Console/ConsoleBase.cs
@@ -5,6 +5,17 @@
 {
     public class ConsoleBase
     {
+        public enum LogPriority : int
+        {
+            CRITICAL,
+            HIGH,
+            MEDIUM,
+            NORMAL,
+            LOW,
+            VERBOSE,
+            EXTRAVERBOSE
+        }
+
         StreamWriter Log;
         public conscmd_callback cmdparser;
         public string componentname;
@@ -42,15 +53,11 @@

         public void Write(string format, params object[] args)
         {
-            Log.Write(format, args);
-	    Log.Flush();
-            if(!disableOutput)
-            {
-            System.Console.Write(format, args);
-            }
+            WriteLine(LogPriority.NORMAL,format,args);
             return;
         }

+        [Obsolete("WriteLine(msg,args) has been depreciated, use WriteLine(priority,msg,args) instead.")]
         public void WriteLine(string format, params object[] args)
         {
             Log.WriteLine(format, args);
@@ -58,6 +65,17 @@
 	    if(!disableOutput)
             {
             System.Console.WriteLine(format, args);
+            }
+            return;
+        }
+
+        public void WriteLine(LogPriority importance, string format, params object[] args)
+        {
+            Log.WriteLine(format, args);
+            Log.Flush();
+            if (!disableOutput)
+            {
+                System.Console.WriteLine(format, args);
             }
             return;
         }


Cleanup

Cleanup

--- SettingsAPISample/Controllers/SettingsController.cs
+++ SettingsAPISample/Controllers/SettingsController.cs
@@ -42,6 +42,8 @@
         // PUT settings/foo
         public ARMEntry<SettingEntry> Put(string name, [FromBody]ARMEntry<SettingEntry> armEntry)
         {
+            if (armEntry == null) throw new ArgumentException();
+
             var settings = SettingsStore.Instance.Load();
             SettingEntry existingEntry = settings.FirstOrDefault(e => e.Name == name);
             if (existingEntry != null)
@@ -49,14 +51,16 @@
                 settings.Remove(existingEntry);
             }

-            armEntry.Properties.Name = name;
-            settings.Add(armEntry.Properties);
+            SettingEntry entry = armEntry.Properties;
+
+            entry.Name = name;
+            settings.Add(entry);
             settings.Sort((s1, s2) => s1.Name.CompareTo(s2.Name));

             SettingsStore.Instance.Save(settings);

             // Return the newly created entry
-            return ARMEntry<SettingEntry>.Create(armEntry.Properties, Request);
+            return ARMEntry<SettingEntry>.Create(entry, Request);
         }

         // DELETE settings/foo


(TFS CS 6796)

(TFS CS 6796)

--- Signum.Engine.Extensions/Authorization/AuthCache.cs
+++ Signum.Engine.Extensions/Authorization/AuthCache.cs
@@ -402,7 +402,7 @@
                 {
                     var def = list.SingleOrDefault(a => a.Resource == null);
                     var max = x.Attribute("Default") == null || x.Attribute("Default").Value != "Min";
-                    SetDefault(def, max);
+                    SetDefault(def, max, role);

                     return Synchronizer.SynchronizeScript(
                         list.Where(a => a.Resource != null).ToDictionary(a => a.Resource),
@@ -413,7 +413,7 @@
                 }).Values.Combine(Spacing.Double);
         }

-        private void SetDefault(RT def, bool max)
+        private void SetDefault(RT def, bool max, Lite<RoleDN> role)
         {
             if (max)
             {
@@ -422,7 +422,16 @@
             }
             else
             {
-                if (!def.Allowed.Equals(Min.BaseAllowed))
+                if (def == null)
+                {
+                    new RT()
+                    {
+                        Role = role,
+                        Resource = null,
+                        Allowed = Min.BaseAllowed
+                    }.Save();
+                }
+                else if (!def.Allowed.Equals(Min.BaseAllowed))
                 {
                     def.Allowed = Min.BaseAllowed;
                     def.Save();


EntityCodeGenerator TicksAttribute, ToString and fixes

--- Signum.Engine/CodeGeneration/EntityCodeGenerator.cs
+++ Signum.Engine/CodeGeneration/EntityCodeGenerator.cs
@@ -319,17 +319,20 @@
                 if (primaryKeyAttribute != null)
                     atts.Add(primaryKeyAttribute);

-                if (HasTicksField(table))
-                    atts.Add("TicksField(false)");
+
+                string ticksColumnAttribute = GetTicksColumnAttribute(table);
+                if (ticksColumnAttribute != null)
+                    atts.Add(ticksColumnAttribute);
             }

             return atts;
         }

-        protected virtual bool HasTicksField(DiffTable table)
-        {
-            return false;
-        }
+        protected virtual string GetTicksColumnAttribute(DiffTable table)
+        {
+            return null;
+        }
+

         protected virtual string GetPrimaryKeyAttribute(DiffTable table)
         {
@@ -491,7 +494,7 @@
             if (col.Name != DefaultColumnName(table, col))
                 attributes.Add("ColumnName(\"" + col.Name + "\")");

-            if (table.Indices.Values.Any(a =>  a.FilterDefinition == null && a.Columns.Only() == col.Name && a.IsUnique && a.Type == DiffIndexType.Clustered  ))
+            if (table.Indices.Values.Any(a =>  a.FilterDefinition == null && a.Columns.Only() == col.Name && a.IsUnique && a.Type == DiffIndexType.NonClustered  ))
                 attributes.Add("UniqueIndex");

             return attributes;
@@ -678,7 +681,9 @@
                 return null;

             StringBuilder sb = new StringBuilder();
-            sb.AppendLine("static Expression<Func<{0}, string>> ToStringExpression = e => e.Name;".Formato(GetEntityName(table.Name)));
+            sb.AppendLine("static Expression<Func<{0}, string>> ToStringExpression = e => e.{1}{2};".Formato(GetEntityName(table.Name),
+                toStringColumn.PrimaryKey ? "Id" : GetFieldName(table, toStringColumn).FirstUpper(),
+                GetFieldType(table, toStringColumn, null) == "string" ? "" : ".TryToString()"));
             sb.AppendLine("public override string ToString()");
             sb.AppendLine("{");
             sb.AppendLine("    return ToStringExpression.Evaluate(this);");
@@ -688,7 +693,7 @@

         protected virtual DiffColumn GetToStringColumn(DiffTable table)
         {
-            return table.Columns.TryGetC("Name");
+            return table.Columns.TryGetC("Name") ?? table.Columns.Values.FirstOrDefault(a => a.PrimaryKey);
         }
     }


Olmo - Adapt to QuerySettings formatters changes

--- Signum.Windows.Extensions/Chart/ChartWindow.xaml.cs
+++ Signum.Windows.Extensions/Chart/ChartWindow.xaml.cs
@@ -39,6 +39,7 @@

         public ResultTable resultTable;
         public QueryDescription Description;
+        public QuerySettings Settings { get; private set; }
         public Type EntityType;

         ChartRendererBase chartRenderer;
@@ -88,6 +89,7 @@

             Description = Navigator.Manager.GetQueryDescription(Request.QueryName);
+            Settings = Navigator.GetQuerySettings(Request.QueryName);
             var entityColumn = Description.Columns.SingleOrDefault(a => a.IsEntity);
             EntityType = Reflector.ExtractLite(entityColumn.Type);

@@ -154,8 +156,6 @@
         {
             UpdateFilters();
             var request = Request;
-
-

             if (HasErrors())
                 return;
@@ -363,7 +363,7 @@
         DataTemplate CreateDataTemplate(ResultColumn c)
         {
             Binding b = new Binding("[{0}]".Formato(c.Index)) { Mode = BindingMode.OneTime };
-            DataTemplate dt = QuerySettings.GetFormatter(c.Column)(b);
+            DataTemplate dt = Settings.GetFormatter(c.Column)(b);
             return dt;
         }