Make it easier to freeze TweetDeck resources in the future

--- Core/Handling/RequestHandlerBrowser.cs
+++ Core/Handling/RequestHandlerBrowser.cs
@@ -1,11 +1,17 @@
-using System.Text.RegularExpressions;
+// Uncomment to force TweetDeck to load a predefined version of the vendor/bundle scripts
+#define FREEZE_TWEETDECK_SCRIPTS // TODO delaying the apocalypse
+
+using System.Text.RegularExpressions;
 using CefSharp;
 using TweetDuck.Core.Utils;

+#if FREEZE_TWEETDECK_SCRIPTS
+using System.Collections.Generic;
+using System.Diagnostics;
+#endif
+
 namespace TweetDuck.Core.Handling{
     sealed class RequestHandlerBrowser : RequestHandlerBase{
-        private static readonly Regex TmpResourceRedirect = new Regex(@"dist\/(.*?)\.(.*?)\.js$", RegexOptions.Compiled);
-
         public string BlockNextUserNavUrl { get; set; }

         public RequestHandlerBrowser() : base(true){}
@@ -29,35 +35,36 @@
             return base.OnBeforeBrowse(browserControl, browser, frame, request, userGesture, isRedirect);
         }

+        #if FREEZE_TWEETDECK_SCRIPTS
+        private static readonly Regex TweetDeckScriptUrl = new Regex(@"dist\/(.*?)\.(.*?)\.js$", RegexOptions.Compiled);
+
+        private static readonly SortedList<string, string> TweetDeckHashes = new SortedList<string, string>(2){
+            { "vendor", "942c0a20e8" },
+            { "bundle", "1bd75b5854" }
+        };
+        #endif
+
         public override bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response){
             if (request.ResourceType == ResourceType.Image && request.Url.Contains("backgrounds/spinner_blue")){
                 request.Url = TwitterUtils.LoadingSpinner.Url;
                 return true;
             }
-            else if (request.ResourceType == ResourceType.Script){ // TODO delaying the apocalypse
-                Match match = TmpResourceRedirect.Match(request.Url);
+            #if FREEZE_TWEETDECK_SCRIPTS
+            else if (request.ResourceType == ResourceType.Script){
+                Match match = TweetDeckScriptUrl.Match(request.Url);

-                if (match.Success){
-                    string scriptType = match.Groups[1].Value;
-                    string scriptHash = match.Groups[2].Value;
-
-                    const string HashBundle = "1bd75b5854";
-                    const string HashVendor = "942c0a20e8";
-
-                    if (scriptType == "bundle" && scriptHash != HashBundle){
-                        request.Url = TmpResourceRedirect.Replace(request.Url, "dist/$1."+HashBundle+".js");
-                        System.Diagnostics.Debug.WriteLine("rewriting "+scriptType+" to "+request.Url);
+                if (match.Success && TweetDeckHashes.TryGetValue(match.Groups[1].Value, out string hash)){
+                    if (match.Groups[2].Value == hash){
+                        Debug.WriteLine($"accepting {request.Url}");
+                    }
+                    else{
+                        Debug.WriteLine($"rewriting {request.Url} to {hash}");
+                        request.Url = TweetDeckScriptUrl.Replace(request.Url, "dist/$1."+hash+".js");
                         return true;
                     }
-                    else if (scriptType == "vendor" && scriptHash != HashVendor){
-                        request.Url = TmpResourceRedirect.Replace(request.Url, "dist/$1."+HashVendor+".js");
-                        System.Diagnostics.Debug.WriteLine("rewriting "+scriptType+" to "+request.Url);
-                        return true;
-                    }
-
-                    System.Diagnostics.Debug.WriteLine("accepting "+scriptType+" as "+request.Url);
                 }
             }
+            #endif

             return base.OnResourceResponse(browserControl, browser, frame, request, response);
         }


Set false to LauncherForm.ShowInTasbar property. Fixes #11

--- CreviceApp/UI.LauncherForm.Designer.cs
+++ CreviceApp/UI.LauncherForm.Designer.cs
@@ -47,7 +47,6 @@
             // contextMenu1
             //
             this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenu1_Opening);
-            //this.contextMenuStrip1.AutoClose = true;
             //
             // LauncherForm
             //
@@ -57,6 +56,8 @@
             this.Text = "Crevice 4";
             this.Icon = Properties.Resources.CreviceIcon;
             this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
+            this.ShowInTaskbar = false;
+            this.Opacity = 0;
             this.ResumeLayout(false);
         }
         #endregion


[Fix] Correct default struct initialization ({0} instead of struct Structname())

--- Cudafy.Translator/CUDAOutputVisitor.cs
+++ Cudafy.Translator/CUDAOutputVisitor.cs
@@ -868,15 +868,13 @@
 		public object VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, object data)
 		{
 			StartNode(defaultValueExpression);
-
-			//WriteKeyword("default");
-			//LPar();
-			//Space(policy.SpacesWithinTypeOfParentheses);
-			defaultValueExpression.Type.AcceptVisitor(this, data);
-			//Space(policy.SpacesWithinTypeOfParentheses);
-			//RPar();
-            LPar();
-            RPar();
+
+            WriteToken("{", AstNode.Roles.LBrace);
+
+            formatter.WriteToken("0");
+
+            WriteToken("}", AstNode.Roles.RBrace);
+
 			return EndNode(defaultValueExpression);
 		}


Make some non-public API protected

Make some non-public API protected

--- Connection.cs
+++ Connection.cs
@@ -98,7 +98,7 @@

 		//Interlocked.Increment() handles the overflow condition for uint correctly, so it's ok to store the value as an int but cast it to uint
 		protected int serial = 0;
-		public uint GenerateSerial ()
+		protected uint GenerateSerial ()
 		{
 			//return ++serial;
 			return (uint)System.Threading.Interlocked.Increment (ref serial);
@@ -346,11 +346,11 @@
 			}
 		}

-		public Dictionary<uint,Message> PendingCalls = new Dictionary<uint,Message> ();
+		protected Dictionary<uint,Message> PendingCalls = new Dictionary<uint,Message> ();

 		//this might need reworking with MulticastDelegate
-		public void HandleSignal (Message msg)
+		protected void HandleSignal (Message msg)
 		{
 			Signal signal = new Signal (msg);

@@ -427,7 +427,7 @@
 		}

 		//not particularly efficient and needs to be generalized
-		public void HandleMethodCall (MethodCall method_call)
+		protected void HandleMethodCall (MethodCall method_call)
 		{
 			//Console.Error.WriteLine ("method_call destination: " + method_call.Destination);
 			//Console.Error.WriteLine ("method_call path: " + method_call.Path);
@@ -541,7 +541,7 @@

 		//GetDynamicValues() should probably use yield eventually

-		public object[] GetDynamicValues (Message msg, ParameterInfo[] parms)
+		protected object[] GetDynamicValues (Message msg, ParameterInfo[] parms)
 		{
 			//TODO: consider out parameters

@@ -623,7 +623,7 @@
 		}

 		//public static Delegate GetHookupDelegate (EventInfo ei, string bus_name, ObjectPath path)
-		public Delegate GetHookupDelegate (EventInfo ei, string bus_name, ObjectPath path)
+		protected Delegate GetHookupDelegate (EventInfo ei, string bus_name, ObjectPath path)
 		{
 			//this is just the start of il generation work


fixated missing bits for history table. should now be fully covered.

--- DataBoss.Specs/DataBossScripterSpec.cs
+++ DataBoss.Specs/DataBossScripterSpec.cs
@@ -1,22 +1,32 @@
 using Cone;
 using DataBoss.Schema;
 using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
 using System.Reflection;

 namespace DataBoss.Specs
 {
 	class StubAttributeProvider : ICustomAttributeProvider
 	{
+		readonly List<object> attributes = new List<object>();
+
 		public object[] GetCustomAttributes(bool inherit) {
-			throw new NotImplementedException();
+			return attributes.ToArray();
 		}

 		public object[] GetCustomAttributes(Type attributeType, bool inherit) {
-			return new object[0];;
+			return attributes.Where(attributeType.IsInstanceOfType).ToArray();
 		}

 		public bool IsDefined(Type attributeType, bool inherit) {
 			throw new NotImplementedException();
+		}
+
+		public StubAttributeProvider Add(Attribute item) {
+			attributes.Add(item);
+			return this;
 		}
 	}

@@ -30,6 +40,14 @@
 		,Row(typeof(string), "varchar(max)")]
 		public void to_db_type(Type type, string dbType) {
 			Check.That(() => DataBossScripter.ToDbType(type, new StubAttributeProvider()) == dbType);
+		}
+
+		public void Required_string_is_not_null() {
+			Check.That(() => DataBossScripter.ToDbType(typeof(string), new StubAttributeProvider().Add(new RequiredAttribute())) == "varchar(max) not null");
+		}
+
+		public void MaxLength_controls_string_column_widht() {
+			Check.That(() => DataBossScripter.ToDbType(typeof(string), new StubAttributeProvider().Add(new MaxLengthAttribute(31))) == "varchar(31)");
 		}

 		public void can_script_history_table() {


Fix widget disable memory leak

Fix widget disable memory leak

--- DesktopWidgets/View/WidgetView.xaml.cs
+++ DesktopWidgets/View/WidgetView.xaml.cs
@@ -19,7 +19,6 @@
         private readonly MouseChecker _mouseChecker;
         public readonly WidgetSettingsBase Settings;
         public readonly UserControl UserControl;
-        public readonly WidgetViewModelBase ViewModel;
         private DispatcherTimer _introTimer;
         private DispatcherTimer _onTopForceTimer;
         public bool IsRefreshRequired;
@@ -67,6 +66,8 @@

             _mouseChecker.Start();
         }
+
+        public WidgetViewModelBase ViewModel { get; set; }

         public bool IsContextMenuOpen => ViewModel.IsContextMenuOpen;

@@ -213,6 +214,7 @@
         private void WidgetView_OnClosing(object sender, CancelEventArgs e)
         {
             _mouseChecker.Stop();
+            ViewModel = null;
             Settings.ScrollHorizontalOffset = MainContentContainer.ContentHorizontalOffset;
             Settings.ScrollVerticalOffset = MainContentContainer.ContentVerticalOffset;
         }


Update scene save name after loading from scene (#130)

Update the scene save name field after loading from the scene in order to allow immediate re-saving of the canvas.

--- Editor/Node_Editor/NodeEditorWindow.cs
+++ Editor/Node_Editor/NodeEditorWindow.cs
@@ -438,8 +438,10 @@
 		public void LoadSceneCanvasCallback (object canvas)
 		{
 			canvasCache.LoadSceneNodeCanvas ((string)canvas);
+			//Atheos auto save the sceneCanvasName to (sava to scence) after (Load from scene)
+            		sceneCanvasName = canvasCache.nodeCanvas.name;
 		}

 		#endregion
 	}
-}+}


ReserveRoom implemented

ReserveRoom implemented

--- ExchangeConnector/ExchangeConnector.cs
+++ ExchangeConnector/ExchangeConnector.cs
@@ -1,15 +1,17 @@
 using System;
 using System.Collections.Generic;
-using System.Collections.Specialized;
 using System.Diagnostics;
 using System.Linq;
+using System.Threading.Tasks;
 using FindFreeRoom.ExchangeConnector.Base;
 using Microsoft.Exchange.WebServices.Data;
+using Task = System.Threading.Tasks.Task;

 namespace FindFreeRoom.ExchangeConnector
 {
 	public class ExchangeConnector
 	{
+		private static readonly TimeSpan CreationTimeout = TimeSpan.FromSeconds(60);
 		private readonly ExchangeService _service;
 		private readonly string _serverUrl;
 		private readonly string _serviceEmail;
@@ -72,7 +74,7 @@
 					yield return new RoomInfo
 					{
 						LocationId = list.Address,
-                        RoomId = room.Address,
+						RoomId = room.Address,
 						Name = room.Name
 					};
 				}
@@ -102,11 +104,11 @@
 			var roomsArray = rooms.ToArray();
 			var attendees =
 				roomsArray.Select(
-					r => new AttendeeInfo {AttendeeType = MeetingAttendeeType.Room, ExcludeConflicts = false, SmtpAddress = r.RoomId}).ToList();
+					r => new AttendeeInfo { AttendeeType = MeetingAttendeeType.Room, ExcludeConflicts = false, SmtpAddress = r.RoomId }).ToList();
 			var timeWindow = new TimeWindow(DateTime.Now, DateTime.Now.AddDays(1));

 			AvailabilityOptions options = new AvailabilityOptions
-			{
+			{
 				MeetingDuration = 30,
 				RequestedFreeBusyView = FreeBusyViewType.FreeBusy
 			};
@@ -119,5 +121,61 @@
 				return new RoomAvailabilityInfo(info, room);
 			});
 		}
+
+		public Task<bool> ReserveRoom(RoomInfo room, TimeSpan duration)
+		{
+			Appointment appointment = new Appointment(_service);
+
+			// Set the properties on the appointment object to create the appointment.
+			appointment.Subject = "Room reservation";
+			appointment.Body = $"Automatically created by FindMeRoomOSS on {DateTime.Now}";
+			appointment.Start = DateTime.Now;
+			appointment.End = appointment.Start + duration;
+			appointment.Location = room.RoomId;
+			appointment.RequiredAttendees.Add(room.RoomId);
+
+			// Save the appointment to your calendar.
+			appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);
+
+			PropertySet psPropSet = new PropertySet(BasePropertySet.FirstClassProperties);
+
+			// Verify that the appointment was created by using the appointment's item ID.
+			appointment = Item.Bind(_service, appointment.Id, psPropSet) as Appointment;
+			if (appointment == null)
+			{
+				return Task.FromResult(false);
+			}
+			return Task.Run(async () =>
+				{
+					var finishTime = DateTime.Now + CreationTimeout;
+					Attendee roomAttendee;
+					// wait till the room accepts
+					do
+					{
+						Debug.WriteLine("Waiting for response...");
+						await Task.Delay(1000);
+
+						// refresh appointment data
+						appointment = Item.Bind(_service, appointment.Id, psPropSet) as Appointment;
+						if (appointment == null)
+						{
+							Debug.WriteLine("Appointment has been deleted");
+							return false;
+						}
+						roomAttendee = appointment.RequiredAttendees.FirstOrDefault(att => att.Address == room.RoomId);
+						if (roomAttendee == null)
+						{
+							Debug.WriteLine("Someone is messing with our appointment");
+							return false;
+						}
+					} while (DateTime.Now < finishTime && (
+							!roomAttendee.ResponseType.HasValue ||
+							roomAttendee.ResponseType == MeetingResponseType.Unknown ||
+							roomAttendee.ResponseType == MeetingResponseType.NoResponseReceived
+						));
+					Debug.WriteLine($"Response is {roomAttendee.ResponseType}...");
+					return roomAttendee.ResponseType.HasValue && roomAttendee.ResponseType.Value == MeetingResponseType.Accept;
+				});
+		}
 	}
 }


adds some documentation

adds some documentation

--- ExperimentTracker/ExperimentTracker.cs
+++ ExperimentTracker/ExperimentTracker.cs
@@ -44,6 +44,7 @@
             }
         }

+        /** Clamps GUI to window size */
         private void clampToScreen()
         {
             windowRect.x = windowRect.x < 0 ? 0 : windowRect.x;
@@ -81,6 +82,7 @@
             }
         }

+        /** Finds the current biome string */
         string currentBiome()
         {
             if (curVessel != null)
@@ -92,6 +94,7 @@
             return string.Empty;
         }

+        /** Returns the ScienceSubject to a given ScienceExperiment */
         private ScienceSubject getExperimentSubject(ScienceExperiment exp)
         {
             string biome = string.Empty;
@@ -100,6 +103,7 @@
             return ResearchAndDevelopment.GetExperimentSubject(exp, expSituation, lastBody, biome);
         }

+        /** Determines whether the status of the vessel has changed */
         private bool statusHasChanged()
         {
             return curVessel != FlightGlobals.ActiveVessel || curBiome != currentBiome() ||
@@ -107,6 +111,7 @@
                 experiments != getExperiments();
         }

+        /** Called every frame */
         public void FixedUpdate()
         {
             if (statusHasChanged())
@@ -131,6 +136,7 @@
             hasExperiments = possExperiments.Count > 0;
         }

+        /** Returns a ScienceData object build using the given ModuleScienceExperiment */
         private ScienceData newScienceData(ModuleScienceExperiment exp)
         {
             return new ScienceData(exp.experiment.baseValue * getExperimentSubject(exp.experiment).dataScale, exp.xmitDataScalar, 0f,
@@ -139,6 +145,7 @@
                 );
         }

+        /** Checks whether a ModuleScienceExperiment is suitable for the current situation */
         private bool checkExperiment(ModuleScienceExperiment exp)
         {
             return (!possExperiments.Contains(exp))


Converted PushProcess.cs line endings to CRLF.

--- GitSharp.Core/Transport/PushProcess.cs
+++ GitSharp.Core/Transport/PushProcess.cs
@@ -1,270 +1,270 @@
-/*
- * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- *   copyright notice, this list of conditions and the following
- *   disclaimer in the documentation and/or other materials provided
- *   with the distribution.
- *
- * - Neither the name of the Git Development Community nor the
- *   names of its contributors may be used to endorse or promote
- *   products derived from this software without specific prior
- *   written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-using System;
-using System.Collections.Generic;
-using GitSharp.Core.Exceptions;
-using GitSharp.Core.RevWalk;
-
-namespace GitSharp.Core.Transport
-{
-    /// <summary>
-    /// Class performing push operation on remote repository.
-    /// </summary>
-	/// <seealso cref="Transport.push(ProgressMonitor, ICollection{RemoteRefUpdate})"/>
-    public class PushProcess : IDisposable
-    {
-        /// <summary> Task name for <seealso cref="ProgressMonitor"/> used during opening connection.  </summary>
-        internal const string PROGRESS_OPENING_CONNECTION = "Opening connection";
-
-        /// <summary> Transport used to perform this operation.  </summary>
-        private readonly Transport _transport;
-
-        /// <summary> Push operation connection created to perform this operation  </summary>
-        private IPushConnection _connection;
-
-        /// <summary> Refs to update on remote side.  </summary>
-        private readonly IDictionary<string, RemoteRefUpdate> _toPush;
-
-        /// <summary> Revision walker for checking some updates properties.  </summary>
-        private readonly RevWalk.RevWalk _walker;
-
-        ///	 <summary> * Create process for specified transport and refs updates specification.
-        ///	 * </summary>
-        ///	 * <param name="transport">
-        ///	 *            transport between remote and local repository, used to Create
-        ///	 *            connection. </param>
-        ///	 * <param name="toPush">
-        ///	 *            specification of refs updates (and local tracking branches). </param>
-        ///	 * <exception cref="TransportException"> </exception>
-        public PushProcess(Transport transport, IEnumerable<RemoteRefUpdate> toPush)
-        {
-			if (transport == null)
-				throw new ArgumentNullException ("transport");
-        	if (toPush == null)
-				throw new ArgumentNullException ("toPush");
-
-            _walker = new RevWalk.RevWalk(transport.Local);
-            _transport = transport;
-            _toPush = new Dictionary<string, RemoteRefUpdate>();
-            foreach (RemoteRefUpdate rru in toPush)
-            {
-                if (_toPush.ContainsKey(rru.RemoteName))
-                {
-                    throw new TransportException("Duplicate remote ref update is illegal. Affected remote name: " + rru.RemoteName);
-                }
-
-                _toPush.Add(rru.RemoteName, rru);
-            }
-        }
-
-        ///	<summary>
-        /// Perform push operation between local and remote repository - set remote
-        /// refs appropriately, send needed objects and update local tracking refs.
-        /// <para />
-        /// When <seealso cref="Transport.DryRun"/> is true, result of this operation is
-        /// just estimation of real operation result, no real action is performed.
-        /// </summary>
-        /// <param name="monitor">
-        /// Progress monitor used for feedback about operation.
-        /// </param>
-        /// <returns> result of push operation with complete status description. </returns>
-        /// <exception cref="NotSupportedException">
-        /// When push operation is not supported by provided transport.
-        /// </exception>
-        /// <exception cref="TransportException">
-        /// When some error occurred during operation, like I/O, protocol
-        /// error, or local database consistency error.
-        /// </exception>
-        public PushResult execute(ProgressMonitor monitor)
-        {
-			if (monitor == null)
-				throw new ArgumentNullException ("monitor");
-
-            monitor.BeginTask(PROGRESS_OPENING_CONNECTION, ProgressMonitor.UNKNOWN);
-            _connection = _transport.openPush();
-
-            try
-            {
-                monitor.EndTask();
-
-                IDictionary<string, RemoteRefUpdate> preprocessed = PrepareRemoteUpdates();
-                if (_transport.DryRun)
-                {
-                    ModifyUpdatesForDryRun();
-                }
-                else if (preprocessed.Count != 0)
-                {
-                    _connection.Push(monitor, preprocessed);
-                }
-            }
-            finally
-            {
-                _connection.Close();
-            }
-
-            if (!_transport.DryRun)
-            {
-                UpdateTrackingRefs();
-            }
-
-            return PrepareOperationResult();
-        }
-
-        private IDictionary<string, RemoteRefUpdate> PrepareRemoteUpdates()
-        {
-            IDictionary<string, RemoteRefUpdate> result = new Dictionary<string, RemoteRefUpdate>();
-            foreach (RemoteRefUpdate rru in _toPush.Values)
-            {
-                Ref advertisedRef = _connection.GetRef(rru.RemoteName);
-                ObjectId advertisedOld = (advertisedRef == null ? ObjectId.ZeroId : advertisedRef.ObjectId);
-
-                if (rru.NewObjectId.Equals(advertisedOld))
-                {
-                    rru.Status = rru.IsDelete ? RemoteRefUpdate.UpdateStatus.NON_EXISTING : RemoteRefUpdate.UpdateStatus.UP_TO_DATE;
-                    continue;
-                }
-
-                // caller has explicitly specified expected old object id, while it
-                // has been changed in the mean time - reject
-                if (rru.IsExpectingOldObjectId && !rru.ExpectedOldObjectId.Equals(advertisedOld))
-                {
-                    rru.Status = RemoteRefUpdate.UpdateStatus.REJECTED_REMOTE_CHANGED;
-                    continue;
-                }
-
-                // Create ref (hasn't existed on remote side) and delete ref
-                // are always fast-forward commands, feasible at this level
-                if (advertisedOld.Equals(ObjectId.ZeroId) || rru.IsDelete)
-                {
-                    rru.FastForward = true;
-                    result.Add(rru.RemoteName, rru);
-                    continue;
-                }
-
-                // check for fast-forward:
-                // - both old and new ref must point to commits, AND
-                // - both of them must be known for us, exist in repository, AND
-                // - old commit must be ancestor of new commit
-                bool fastForward = true;
-                try
-                {
-                    RevCommit oldRev = (_walker.parseAny(advertisedOld) as RevCommit);
-                    RevCommit newRev = (_walker.parseAny(rru.NewObjectId) as RevCommit);
-                    if (oldRev == null || newRev == null || !_walker.isMergedInto(oldRev, newRev))
-                        fastForward = false;
-                }
-                catch (MissingObjectException)
-                {
-                    fastForward = false;
-                }
-                catch (Exception x)
-                {
-                    throw new TransportException(_transport.Uri, "reading objects from local repository failed: " + x.Message, x);
-                }
-                rru.FastForward = fastForward;
-                if (!fastForward && !rru.ForceUpdate)
-                {
-                    rru.Status = RemoteRefUpdate.UpdateStatus.REJECTED_NONFASTFORWARD;
-                }
-                else
-                {
-                    result.Add(rru.RemoteName, rru);
-                }
-            }
-            return result;
-        }
-
-        private void ModifyUpdatesForDryRun()
-        {
-            foreach (RemoteRefUpdate rru in _toPush.Values)
-            {
-                if (rru.Status == RemoteRefUpdate.UpdateStatus.NOT_ATTEMPTED)
-                {
-                    rru.Status = RemoteRefUpdate.UpdateStatus.OK;
-                }
-            }
-        }
-
-        private void UpdateTrackingRefs()
-        {
-            foreach (RemoteRefUpdate rru in _toPush.Values)
-            {
-                RemoteRefUpdate.UpdateStatus status = rru.Status;
-                if (rru.HasTrackingRefUpdate && (status == RemoteRefUpdate.UpdateStatus.UP_TO_DATE || status == RemoteRefUpdate.UpdateStatus.OK))
-                {
-                    // update local tracking branch only when there is a chance that
-                    // it has changed; this is possible for:
-                    // -updated (OK) status,
-                    // -up to date (UP_TO_DATE) status
-                    try
-                    {
-                        rru.updateTrackingRef(_walker);
-                    }
-                    catch (System.IO.IOException)
-                    {
-                        // ignore as RefUpdate has stored I/O error status
-                    }
-                }
-            }
-        }
-
-        private PushResult PrepareOperationResult()
-        {
-            var result = new PushResult();
-            result.SetAdvertisedRefs(_transport.Uri, _connection.RefsMap);
-            result.SetRemoteUpdates(_toPush);
-
-            foreach (RemoteRefUpdate rru in _toPush.Values)
-            {
-                TrackingRefUpdate tru = rru.TrackingRefUpdate;
-                if (tru != null)
-                {
-                    result.Add(tru);
-                }
-            }
-            return result;
-        }
-
-		public void Dispose ()
-		{
-			_walker.Dispose();
-			_transport.Dispose();
-		}
-
-    }
+/*
+ * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ *
+ * - Neither the name of the Git Development Community nor the
+ *   names of its contributors may be used to endorse or promote
+ *   products derived from this software without specific prior
+ *   written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+using System;
+using System.Collections.Generic;
+using GitSharp.Core.Exceptions;
+using GitSharp.Core.RevWalk;
+
+namespace GitSharp.Core.Transport
+{
+    /// <summary>
+    /// Class performing push operation on remote repository.
+    /// </summary>
+    /// <seealso cref="Transport.push(ProgressMonitor, ICollection{RemoteRefUpdate})"/>
+    public class PushProcess : IDisposable
+    {
+        /// <summary> Task name for <seealso cref="ProgressMonitor"/> used during opening connection.  </summary>
+        internal const string PROGRESS_OPENING_CONNECTION = "Opening connection";
+
+        /// <summary> Transport used to perform this operation.  </summary>
+        private readonly Transport _transport;
+
+        /// <summary> Push operation connection created to perform this operation  </summary>
+        private IPushConnection _connection;
+
+        /// <summary> Refs to update on remote side.  </summary>
+        private readonly IDictionary<string, RemoteRefUpdate> _toPush;
+
+        /// <summary> Revision walker for checking some updates properties.  </summary>
+        private readonly RevWalk.RevWalk _walker;
+
+        ///	 <summary> * Create process for specified transport and refs updates specification.
+        ///	 * </summary>
+        ///	 * <param name="transport">
+        ///	 *            transport between remote and local repository, used to Create
+        ///	 *            connection. </param>
+        ///	 * <param name="toPush">
+        ///	 *            specification of refs updates (and local tracking branches). </param>
+        ///	 * <exception cref="TransportException"> </exception>
+        public PushProcess(Transport transport, IEnumerable<RemoteRefUpdate> toPush)
+        {
+            if (transport == null)
+                throw new ArgumentNullException("transport");
+            if (toPush == null)
+                throw new ArgumentNullException("toPush");
+
+            _walker = new RevWalk.RevWalk(transport.Local);
+            _transport = transport;
+            _toPush = new Dictionary<string, RemoteRefUpdate>();
+            foreach (RemoteRefUpdate rru in toPush)
+            {
+                if (_toPush.ContainsKey(rru.RemoteName))
+                {
+                    throw new TransportException("Duplicate remote ref update is illegal. Affected remote name: " + rru.RemoteName);
+                }
+
+                _toPush.Add(rru.RemoteName, rru);
+            }
+        }
+
+        ///	<summary>
+        /// Perform push operation between local and remote repository - set remote
+        /// refs appropriately, send needed objects and update local tracking refs.
+        /// <para />
+        /// When <seealso cref="Transport.DryRun"/> is true, result of this operation is
+        /// just estimation of real operation result, no real action is performed.
+        /// </summary>
+        /// <param name="monitor">
+        /// Progress monitor used for feedback about operation.
+        /// </param>
+        /// <returns> result of push operation with complete status description. </returns>
+        /// <exception cref="NotSupportedException">
+        /// When push operation is not supported by provided transport.
+        /// </exception>
+        /// <exception cref="TransportException">
+        /// When some error occurred during operation, like I/O, protocol
+        /// error, or local database consistency error.
+        /// </exception>
+        public PushResult execute(ProgressMonitor monitor)
+        {
+            if (monitor == null)
+                throw new ArgumentNullException("monitor");
+
+            monitor.BeginTask(PROGRESS_OPENING_CONNECTION, ProgressMonitor.UNKNOWN);
+            _connection = _transport.openPush();
+
+            try
+            {
+                monitor.EndTask();
+
+                IDictionary<string, RemoteRefUpdate> preprocessed = PrepareRemoteUpdates();
+                if (_transport.DryRun)
+                {
+                    ModifyUpdatesForDryRun();
+                }
+                else if (preprocessed.Count != 0)
+                {
+                    _connection.Push(monitor, preprocessed);
+                }
+            }
+            finally
+            {
+                _connection.Close();
+            }
+
+            if (!_transport.DryRun)
+            {
+                UpdateTrackingRefs();
+            }
+
+            return PrepareOperationResult();
+        }
+
+        private IDictionary<string, RemoteRefUpdate> PrepareRemoteUpdates()
+        {
+            IDictionary<string, RemoteRefUpdate> result = new Dictionary<string, RemoteRefUpdate>();
+            foreach (RemoteRefUpdate rru in _toPush.Values)
+            {
+                Ref advertisedRef = _connection.GetRef(rru.RemoteName);
+                ObjectId advertisedOld = (advertisedRef == null ? ObjectId.ZeroId : advertisedRef.ObjectId);
+
+                if (rru.NewObjectId.Equals(advertisedOld))
+                {
+                    rru.Status = rru.IsDelete ? RemoteRefUpdate.UpdateStatus.NON_EXISTING : RemoteRefUpdate.UpdateStatus.UP_TO_DATE;
+                    continue;
+                }
+
+                // caller has explicitly specified expected old object id, while it
+                // has been changed in the mean time - reject
+                if (rru.IsExpectingOldObjectId && !rru.ExpectedOldObjectId.Equals(advertisedOld))
+                {
+                    rru.Status = RemoteRefUpdate.UpdateStatus.REJECTED_REMOTE_CHANGED;
+                    continue;
+                }
+
+                // Create ref (hasn't existed on remote side) and delete ref
+                // are always fast-forward commands, feasible at this level
+                if (advertisedOld.Equals(ObjectId.ZeroId) || rru.IsDelete)
+                {
+                    rru.FastForward = true;
+                    result.Add(rru.RemoteName, rru);
+                    continue;
+                }
+
+                // check for fast-forward:
+                // - both old and new ref must point to commits, AND
+                // - both of them must be known for us, exist in repository, AND
+                // - old commit must be ancestor of new commit
+                bool fastForward = true;
+                try
+                {
+                    RevCommit oldRev = (_walker.parseAny(advertisedOld) as RevCommit);
+                    RevCommit newRev = (_walker.parseAny(rru.NewObjectId) as RevCommit);
+                    if (oldRev == null || newRev == null || !_walker.isMergedInto(oldRev, newRev))
+                        fastForward = false;
+                }
+                catch (MissingObjectException)
+                {
+                    fastForward = false;
+                }
+                catch (Exception x)
+                {
+                    throw new TransportException(_transport.Uri, "reading objects from local repository failed: " + x.Message, x);
+                }
+                rru.FastForward = fastForward;
+                if (!fastForward && !rru.ForceUpdate)
+                {
+                    rru.Status = RemoteRefUpdate.UpdateStatus.REJECTED_NONFASTFORWARD;
+                }
+                else
+                {
+                    result.Add(rru.RemoteName, rru);
+                }
+            }
+            return result;
+        }
+
+        private void ModifyUpdatesForDryRun()
+        {
+            foreach (RemoteRefUpdate rru in _toPush.Values)
+            {
+                if (rru.Status == RemoteRefUpdate.UpdateStatus.NOT_ATTEMPTED)
+                {
+                    rru.Status = RemoteRefUpdate.UpdateStatus.OK;
+                }
+            }
+        }
+
+        private void UpdateTrackingRefs()
+        {
+            foreach (RemoteRefUpdate rru in _toPush.Values)
+            {
+                RemoteRefUpdate.UpdateStatus status = rru.Status;
+                if (rru.HasTrackingRefUpdate && (status == RemoteRefUpdate.UpdateStatus.UP_TO_DATE || status == RemoteRefUpdate.UpdateStatus.OK))
+                {
+                    // update local tracking branch only when there is a chance that
+                    // it has changed; this is possible for:
+                    // -updated (OK) status,
+                    // -up to date (UP_TO_DATE) status
+                    try
+                    {
+                        rru.updateTrackingRef(_walker);
+                    }
+                    catch (System.IO.IOException)
+                    {
+                        // ignore as RefUpdate has stored I/O error status
+                    }
+                }
+            }
+        }
+
+        private PushResult PrepareOperationResult()
+        {
+            var result = new PushResult();
+            result.SetAdvertisedRefs(_transport.Uri, _connection.RefsMap);
+            result.SetRemoteUpdates(_toPush);
+
+            foreach (RemoteRefUpdate rru in _toPush.Values)
+            {
+                TrackingRefUpdate tru = rru.TrackingRefUpdate;
+                if (tru != null)
+                {
+                    result.Add(tru);
+                }
+            }
+            return result;
+        }
+
+        public void Dispose()
+        {
+            _walker.Dispose();
+            _transport.Dispose();
+        }
+
+    }
 }


wrong position of code block

wrong position of code block

--- GongSolutions.Wpf.DragDrop/DropInfo.cs
+++ GongSolutions.Wpf.DragDrop/DropInfo.cs
@@ -155,9 +155,7 @@
               this.InsertPosition |= RelativeInsertPosition.TargetItemCenter;
             }
             //System.Diagnostics.Debug.WriteLine("==> DropInfo: InsPos={0}, InsIndex={1}, X={2}, Item={3}", this.InsertPosition, this.InsertIndex, currentXPos, item);
-          } else {
-            this.VisualTargetItem = this.VisualTarget;
-          }
+          }
         }
         else
         {
@@ -165,6 +163,8 @@
           this.InsertIndex = itemsControl.Items.Count;
           //System.Diagnostics.Debug.WriteLine("==> DropInfo: {0}, item=NULL, {1}", this.InsertPosition, this.InsertIndex);
         }
+      } else {
+            this.VisualTargetItem = this.VisualTarget;
       }
     }


citest

citest

--- PowerArgs/Properties/AssemblyInfo.cs
+++ PowerArgs/Properties/AssemblyInfo.cs
@@ -32,7 +32,7 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.6.0.9")]
-[assembly: AssemblyFileVersion("2.6.0.9")]
+[assembly: AssemblyVersion("2.6.0.10")]
+[assembly: AssemblyFileVersion("2.6.0.10")]
 //[assembly: InternalsVisibleTo("ArgsTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100599691571e51717eff0888f672ef5295866ae3749279076ba157e93eae2376a9867a2c1057b5e2f247d258de7b017e77c3ba5362ef2258f9af78e3a4a12dba4920b74df312454148da53396b7475e1e801ca42928296555f4a5dc90497ebae144680fb33bec22a86e4a7954bf66c94592c331a01f0e73c9b6db0b8e0ecb8fab1")]
 [assembly: InternalsVisibleTo("ArgsTests")]


Refactored widget sizes for android

Refactored widget sizes for android

--- PrintHistory/PrintHistoryListItem.cs
+++ PrintHistory/PrintHistoryListItem.cs
@@ -53,7 +53,16 @@
 		private bool showTimestamp;
 		private TextWidget partLabel;
 		public CheckBox selectionCheckBox;
-
+#if(__ANDROID__)
+		private float pointSizeFactor = 0.85f;
+		private static int rightOverlayWidth  = 240;
+
+#else
+		private float pointSizeFactor = 1f;
+		private static int rightOverlayWidth  = 200;
+
+#endif
+		private int actionButtonSize = rightOverlayWidth/2;
 		private SlideWidget rightButtonOverlay;

 		private LinkButtonFactory linkButtonFactory = new LinkButtonFactory();
@@ -96,7 +105,7 @@

 					string labelName = textInfo.ToTitleCase(printTask.PrintName);
 					labelName = labelName.Replace('_', ' ');
-					partLabel = new TextWidget(labelName, pointSize: 15);
+					partLabel = new TextWidget(labelName, pointSize: 15 * pointSizeFactor);
 					partLabel.TextColor = WidgetTextColor;

 					labelContainer.AddChild(partLabel);
@@ -110,13 +119,13 @@
 				buttonContainer.Margin = new BorderDouble(0);
 				buttonContainer.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
 				{
-					TextWidget statusIndicator = new TextWidget("Status: Completed".Localize(), pointSize: 8);
+					TextWidget statusIndicator = new TextWidget("Status: Completed".Localize(), pointSize: 8 * pointSizeFactor);
 					statusIndicator.Margin = new BorderDouble(right: 3);
 					//buttonContainer.AddChild(statusIndicator);

 					string printTimeLabel = "Time".Localize().ToUpper();
 					string printTimeLabelFull = string.Format("{0}: ", printTimeLabel);
-					TextWidget timeLabel = new TextWidget(printTimeLabelFull, pointSize: 8);
+					TextWidget timeLabel = new TextWidget(printTimeLabelFull, pointSize: 8 * pointSizeFactor);
 					timeLabel.TextColor = timeTextColor;

 					TextWidget timeIndicator;
@@ -127,11 +136,11 @@
 					}
 					else if (minutes > 60)
 					{
-						timeIndicator = new TextWidget("{0}hrs {1}min".FormatWith(printTask.PrintTimeMinutes / 60, printTask.PrintTimeMinutes % 60), pointSize: 12);
+						timeIndicator = new TextWidget("{0}hrs {1}min".FormatWith(printTask.PrintTimeMinutes / 60, printTask.PrintTimeMinutes % 60), pointSize: 12 * pointSizeFactor);
 					}
 					else
 					{
-						timeIndicator = new TextWidget(string.Format("{0}min", printTask.PrintTimeMinutes), pointSize: 12);
+						timeIndicator = new TextWidget(string.Format("{0}min", printTask.PrintTimeMinutes), pointSize: 12 * pointSizeFactor);
 					}

 					timeIndicator.Margin = new BorderDouble(right: 6);
@@ -159,7 +168,7 @@
 				rightButtonOverlay = new SlideWidget();
 				rightButtonOverlay.VAnchor = VAnchor.ParentBottomTop;
 				rightButtonOverlay.HAnchor = Agg.UI.HAnchor.ParentRight;
-				rightButtonOverlay.Width = 200;
+				rightButtonOverlay.Width = rightOverlayWidth;
 				rightButtonOverlay.Visible = false;

 				FlowLayoutWidget rightMiddleColumnContainer = new FlowLayoutWidget(FlowDirection.LeftToRight);
@@ -173,7 +182,7 @@
 					FatFlatClickWidget viewButton = new FatFlatClickWidget(viewLabel);
 					viewButton.VAnchor = VAnchor.ParentBottomTop;
 					viewButton.BackgroundColor = ActiveTheme.Instance.SecondaryAccentColor;
-					viewButton.Width = 100;
+					viewButton.Width = actionButtonSize;
 					viewButton.Click += ViewButton_Click;
 					rightMiddleColumnContainer.AddChild(viewButton);

@@ -185,7 +194,7 @@
 					FatFlatClickWidget printButton = new FatFlatClickWidget(printLabel);
 					printButton.VAnchor = VAnchor.ParentBottomTop;
 					printButton.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
-					printButton.Width = 100;
+					printButton.Width = actionButtonSize;
 					printButton.Click += (sender, e) =>
 					{
 						UiThread.RunOnIdle((state) =>
@@ -219,11 +228,11 @@
 					startTimeContainer.Padding = new BorderDouble(0, 3);

 					string startLabelFull = "{0}:".FormatWith("Start".Localize().ToUpper());
-					TextWidget startLabel = new TextWidget(startLabelFull, pointSize: 8);
+					TextWidget startLabel = new TextWidget(startLabelFull, pointSize: 8 * pointSizeFactor);
 					startLabel.TextColor = timeTextColor;

 					string startTimeString = printTask.PrintStart.ToString("MMM d yyyy h:mm ") + printTask.PrintStart.ToString("tt").ToLower();
-					TextWidget startDate = new TextWidget(startTimeString, pointSize: 12);
+					TextWidget startDate = new TextWidget(startTimeString, pointSize: 12 * pointSizeFactor);
 					startDate.TextColor = timeTextColor;

 					startTimeContainer.AddChild(startLabel);
@@ -235,7 +244,7 @@
 					endTimeContainer.Padding = new BorderDouble(0, 3);

 					string endLabelFull = "{0}:".FormatWith("End".Localize().ToUpper());
-					TextWidget endLabel = new TextWidget(endLabelFull, pointSize: 8);
+					TextWidget endLabel = new TextWidget(endLabelFull, pointSize: 8 * pointSizeFactor);
 					endLabel.TextColor = timeTextColor;

 					string endTimeString;
@@ -248,7 +257,7 @@
 						endTimeString = "Unknown".Localize();
 					}

-					TextWidget endDate = new TextWidget(endTimeString, pointSize: 12);
+					TextWidget endDate = new TextWidget(endTimeString, pointSize: 12 * pointSizeFactor);
 					endDate.TextColor = timeTextColor;

 					endTimeContainer.AddChild(endLabel);
@@ -262,7 +271,7 @@
 					timestampColumn.AddChild(horizontalLine);
 					timestampColumn.AddChild(startTimeContainer);

-					timestampColumn.Width = 200;
+					timestampColumn.Width = rightOverlayWidth;

 					primaryFlow.AddChild(timestampColumn);
 				}


Patch from Wouter Bolsterlee fixing mnemonic support (BGO #557880)

2008-12-29  Gabriel Burt  <gabriel.burt@gmail.com>

	* src/Libraries/Hyena.Gui/Hyena.Widgets/ImageButton.cs: Patch from Wouter
	Bolsterlee fixing mnemonic support (BGO #557880)

svn path=/trunk/banshee/; revision=4869

--- Hyena.Gui/Hyena.Widgets/ImageButton.cs
+++ Hyena.Gui/Hyena.Widgets/ImageButton.cs
@@ -44,7 +44,7 @@
             image.IconSize = (int) iconSize;

             Label label = new Label ();
-            label.Markup = text;
+            label.MarkupWithMnemonic = text;

             HBox hbox = new HBox ();
             hbox.Spacing = 2;


Tolerate 0-value (missing) local size headers.

Some rogue zip creators fail to set a non-zero local header size in
Extra Data causing SharpZLib to reject them, this patch causes the
library to tolerate that particular oversight like most other libraries.

--- ICSharpCode.SharpZipLib/Zip/ZipFile.cs
+++ ICSharpCode.SharpZipLib/Zip/ZipFile.cs
@@ -1194,16 +1194,17 @@
 				// Size can be verified only if it is known in the local header.
 				// it will always be known in the central header.
 				if (((localFlags & (int)GeneralBitFlags.Descriptor) == 0) ||
-					((size > 0) || (compressedSize > 0))) {
-
-					if (size != entry.Size) {
+					((size > 0 || compressedSize > 0) && entry.Size > 0)) {
+
+					if ((size != 0)
+						&& (size != entry.Size)) {
 						throw new ZipException(
 							string.Format("Size mismatch between central header({0}) and local header({1})",
 								entry.Size, size));
 					}

-					if (compressedSize != entry.CompressedSize &&
-						compressedSize != 0xFFFFFFFF && compressedSize != -1) {
+					if ((compressedSize != 0)
+						&& (compressedSize != entry.CompressedSize && compressedSize != 0xFFFFFFFF && compressedSize != -1)) {
 						throw new ZipException(
 							string.Format("Compressed size mismatch between central header({0}) and local header({1})",
 							entry.CompressedSize, compressedSize));


Kill white space.

Kill white space.

--- IIS.SLSharp/Translation/GlslVisitor.cs
+++ IIS.SLSharp/Translation/GlslVisitor.cs
@@ -282,7 +282,7 @@
                 result.Append(s).Append("u");
                 return result;
             }
-
+
             return result.Append(primitiveExpression.Value.ToString());
         }


Group header rotated 90 degrees in gallery view to better fit the layout.

--- ImageListView/ImageListViewRenderer.cs
+++ ImageListView/ImageListViewRenderer.cs
@@ -352,7 +352,15 @@
                     else
                         g.SetClip(ImageListView.layoutManager.ClientArea);

-                    DrawGroupHeader(g, group.Name, group.headerBounds);
+                    if (ImageListView.View == View.Gallery)
+                    {
+                        g.TranslateTransform(group.headerBounds.Left, group.headerBounds.Bottom);
+                        g.RotateTransform(270);
+                        DrawGroupHeader(g, group.Name, new Rectangle(0, 0, group.headerBounds.Height, group.headerBounds.Width));
+                        g.ResetTransform();
+                    }
+                    else
+                        DrawGroupHeader(g, group.Name, group.headerBounds);
                 }
             }
             /// <summary>


#132 Incorrect scope of rdf:lang attribute in RDF/XML parser

--- RDFSharp/Model/Serializers/RDFXml.cs
+++ RDFSharp/Model/Serializers/RDFXml.cs
@@ -426,7 +426,7 @@
                         Uri xmlBase = null;
                         if (xmlnsAttrs != null && xmlnsAttrs.Count > 0)
                         {
-                            var xmlBaseAttr = (rdfRDF.Attributes?[RDFVocabulary.XML.PREFIX + ":base"]
+                            var xmlBaseAttr = (rdfRDF.Attributes?[RDFVocabulary.XML.PREFIX + ":base"]
                                                     ?? rdfRDF.Attributes?["xmlns"]);
                             if (xmlBaseAttr != null)
                             {
@@ -446,8 +446,11 @@

                         #region elements
                         //Parse resource elements, which are the children of root node
-                        if (rdfRDF.HasChildNodes)
-                            ParseNodeList(rdfRDF.ChildNodes, result, xmlBase);
+                        if (rdfRDF.HasChildNodes)
+                        {
+                            XmlAttribute xmlLangRoot = GetXmlLangAttribute(rdfRDF);
+                            ParseNodeList(rdfRDF.ChildNodes, result, xmlBase, xmlLangRoot);
+                        }
                         #endregion

                     }
@@ -468,7 +471,7 @@
         /// <summary>
         /// Parses the given list of nodes
         /// </summary>
-        private static List<RDFResource> ParseNodeList(XmlNodeList nodeList, RDFGraph result, Uri xmlBase)
+        private static List<RDFResource> ParseNodeList(XmlNodeList nodeList, RDFGraph result, Uri xmlBase, XmlAttribute xmlLangParent)
         {
             var subjects = new List<RDFResource>();
             var subjNodesEnum = nodeList.GetEnumerator();
@@ -484,6 +487,7 @@
                     continue;

                 //Assert resource as subject
+                XmlAttribute xmlLangSubj = GetXmlLangAttribute(subjNode) ?? xmlLangParent;
                 RDFResource subj = GetSubjectNode(subjNode, xmlBase, result);
                 if (subj == null)
                     subj = new RDFResource();
@@ -491,7 +495,44 @@
                 #endregion

                 #region predObjList
-                //Parse pred elements, which are the childs of subj element
+                //Parse predicate elements (attributes)
+                if (subjNode.Attributes?.Count > 0)
+                {
+                    List<XmlAttribute> subjAttributes = subjNode.Attributes.OfType<XmlAttribute>().ToList();
+                    subjAttributes.ForEach(subjAttr =>
+                    {
+                        switch (subjAttr.Name.ToLower())
+                        {
+                            //Skip reserved attributes
+                            case "rdf:about":
+                            case "rdf:resource":
+                            case "rdf:id":
+                            case "rdf:nodeid":
+                            case "xml:lang":
+                                break;
+
+                            //Threat rdf:type attribute as SPO
+                            case "rdf:type":
+                                Uri rdfTypeValue = RDFModelUtilities.GetUriFromString(subjAttr.Value);
+                                if (rdfTypeValue != null)
+                                {
+                                    RDFResource obj = new RDFResource(rdfTypeValue.ToString());
+                                    result.AddTriple(new RDFTriple(subj, RDFVocabulary.RDF.TYPE, obj));
+                                }
+                                break;
+
+                            //Threat other attributes as SPL
+                            default:
+                                RDFResource subjAttrPred = subjAttr.NamespaceURI == String.Empty ? new RDFResource(xmlBase + subjAttr.LocalName)
+                                                                                : new RDFResource(subjAttr.NamespaceURI + subjAttr.LocalName);
+                                RDFPlainLiteral plit = new RDFPlainLiteral(RDFModelUtilities.ASCII_To_Unicode(HttpUtility.HtmlDecode(subjAttr.Value)), xmlLangSubj?.Value);
+                                result.AddTriple(new RDFTriple(subj, subjAttrPred, plit));
+                                break;
+                        }
+                    });
+                }
+
+                //Parse predicate elements (child nodes)
                 if (subjNode.HasChildNodes)
                 {
                     IEnumerator predNodesEnum = subjNode.ChildNodes.GetEnumerator();
@@ -508,6 +549,7 @@
                             continue;

                         //Get the predicate
+                        XmlAttribute xmlLangPred = GetXmlLangAttribute(predNode) ?? xmlLangSubj;
                         if (predNode.NamespaceURI == String.Empty)
                             pred = new RDFResource(xmlBase + predNode.LocalName);
                         else
@@ -515,56 +557,12 @@
                                                                             : new RDFResource(predNode.NamespaceURI + predNode.LocalName));
                         #endregion

-                        #region object
-                        //Check if there is a "rdf:about" or a "rdf:resource" attribute
-                        XmlAttribute rdfObject = (GetRdfAboutAttribute(predNode) ?? GetRdfResourceAttribute(predNode));
-                        if (rdfObject != null)
-                        {
-                            //Attribute found, but we must check if it is "rdf:ID", "rdf:nodeID" or a relative Uri
-                            String rdfObjectValue = ResolveRelativeNode(rdfObject, xmlBase);
-                            RDFResource obj = new RDFResource(rdfObjectValue);
-                            result.AddTriple(new RDFTriple(subj, pred, obj));
-                            continue;
-                        }
-                        #endregion
-
-                        #region typed literal
-                        //Check if there is a "rdf:datatype" attribute
-                        XmlAttribute rdfDatatype = GetRdfDatatypeAttribute(predNode);
-                        if (rdfDatatype != null)
-                        {
-                            var dtype = RDFModelUtilities.GetDatatypeFromString(rdfDatatype.Value);
-                            RDFTypedLiteral tLit = new RDFTypedLiteral(RDFModelUtilities.ASCII_To_Unicode(HttpUtility.HtmlDecode(predNode.InnerText)), dtype);
-                            result.AddTriple(new RDFTriple(subj, pred, tLit));
-                            continue;
-                        }
-                        //Check if there is a "rdf:parseType=Literal" attribute
-                        XmlAttribute parseLiteral = GetParseTypeLiteralAttribute(predNode);
-                        if (parseLiteral != null)
-                        {
-                            RDFTypedLiteral tLit = new RDFTypedLiteral(RDFModelUtilities.ASCII_To_Unicode(HttpUtility.HtmlDecode(predNode.InnerXml)), RDFModelEnums.RDFDatatypes.RDFS_LITERAL);
-                            result.AddTriple(new RDFTriple(subj, pred, tLit));
-                            continue;
-                        }
-                        #endregion
-
-                        #region plain literal
-                        //Check if there is a "xml:lang" attribute, or if a unique textual child
-                        XmlAttribute xmlLang = GetXmlLangAttribute(predNode);
-                        if (xmlLang != null || (predNode.HasChildNodes && predNode.ChildNodes.Count == 1 && predNode.ChildNodes[0].NodeType == XmlNodeType.Text))
-                        {
-                            RDFPlainLiteral pLit = new RDFPlainLiteral(RDFModelUtilities.ASCII_To_Unicode(HttpUtility.HtmlDecode(predNode.InnerText)), (xmlLang != null ? xmlLang.Value : String.Empty));
-                            result.AddTriple(new RDFTriple(subj, pred, pLit));
-                            continue;
-                        }
-                        #endregion
-
                         #region collection
                         //Check if there is a "rdf:parseType=Collection" attribute
                         XmlAttribute rdfCollect = GetParseTypeCollectionAttribute(predNode);
                         if (rdfCollect != null)
                         {
-                            ParseCollectionElements(xmlBase, predNode, subj, pred, result);
+                            ParseCollectionElements(xmlBase, predNode, subj, pred, result, xmlLangPred);
                             continue;
                         }
                         #endregion
@@ -584,11 +582,54 @@
                         }
                         #endregion

+                        #region object
+                        //Check if there is a "rdf:about" or a "rdf:resource" attribute
+                        XmlAttribute rdfObject = (GetRdfAboutAttribute(predNode) ?? GetRdfResourceAttribute(predNode));
+                        if (rdfObject != null)
+                        {
+                            //Attribute found, but we must check if it is "rdf:ID", "rdf:nodeID" or a relative Uri
+                            String rdfObjectValue = ResolveRelativeNode(rdfObject, xmlBase);
+                            RDFResource obj = new RDFResource(rdfObjectValue);
+                            result.AddTriple(new RDFTriple(subj, pred, obj));
+                            continue;
+                        }
+                        #endregion
+
+                        #region typed literal
+                        //Check if there is a "rdf:datatype" attribute
+                        XmlAttribute rdfDatatype = GetRdfDatatypeAttribute(predNode);
+                        if (rdfDatatype != null)
+                        {
+                            var dtype = RDFModelUtilities.GetDatatypeFromString(rdfDatatype.Value);
+                            RDFTypedLiteral tLit = new RDFTypedLiteral(RDFModelUtilities.ASCII_To_Unicode(HttpUtility.HtmlDecode(predNode.InnerText)), dtype);
+                            result.AddTriple(new RDFTriple(subj, pred, tLit));
+                            continue;
+                        }
+                        //Check if there is a "rdf:parseType=Literal" attribute
+                        XmlAttribute parseLiteral = GetParseTypeLiteralAttribute(predNode);
+                        if (parseLiteral != null)
+                        {
+                            RDFTypedLiteral tLit = new RDFTypedLiteral(RDFModelUtilities.ASCII_To_Unicode(HttpUtility.HtmlDecode(predNode.InnerXml)), RDFModelEnums.RDFDatatypes.RDFS_LITERAL);
+                            result.AddTriple(new RDFTriple(subj, pred, tLit));
+                            continue;
+                        }
+                        #endregion
+
+                        #region plain literal
+                        //Check if there is a unique textual child
+                        if (predNode.HasChildNodes && predNode.ChildNodes.Count == 1 && predNode.ChildNodes[0].NodeType == XmlNodeType.Text)
+                        {
+                            RDFPlainLiteral pLit = new RDFPlainLiteral(RDFModelUtilities.ASCII_To_Unicode(HttpUtility.HtmlDecode(predNode.InnerText)), xmlLangPred?.Value);
+                            result.AddTriple(new RDFTriple(subj, pred, pLit));
+                            continue;
+                        }
+                        #endregion
+
                         #region nested description
                         //At last, check for nested resource descriptions
                         if (predNode.HasChildNodes)
                         {
-                            var nestedSubjects = ParseNodeList(predNode.ChildNodes, result, xmlBase);
+                            var nestedSubjects = ParseNodeList(predNode.ChildNodes, result, xmlBase, xmlLangPred);
                             foreach (var nestedSubject in nestedSubjects)
                                 result.AddTriple(new RDFTriple(subj, pred, nestedSubject));
                         }
@@ -740,8 +781,8 @@
             {

                 //We are interested in finding the "rdf:about" or "rdf:resource" node for the subj
-                XmlAttribute rdfAbout =
-                    (GetRdfAboutAttribute(subjNode)
+                XmlAttribute rdfAbout =
+                    (GetRdfAboutAttribute(subjNode)
                         ?? GetRdfResourceAttribute(subjNode));
                 if (rdfAbout != null)
                 {
@@ -758,11 +799,11 @@
                 {
                     RDFResource obj = null;
                     if (subjNode.NamespaceURI == String.Empty)
-                    {
+                    {
                         obj = new RDFResource(xmlBase + subjNode.LocalName);
                     }
                     else
-                    {
+                    {
                         obj = new RDFResource(subjNode.NamespaceURI + subjNode.LocalName);
                     }
                     result.AddTriple(new RDFTriple(subj, RDFVocabulary.RDF.TYPE, obj));
@@ -781,15 +822,15 @@
                 {
                     RDFResource obj = null;
                     if (subjNode.NamespaceURI == String.Empty)
-                    {
+                    {
                         obj = new RDFResource(xmlBase + subjNode.LocalName);
                     }
                     else
-                    {
+                    {
                         obj = new RDFResource(subjNode.NamespaceURI + subjNode.LocalName);
                     }
                     result.AddTriple(new RDFTriple(subj, RDFVocabulary.RDF.TYPE, obj));
-                }
+                }
             }

             return subj;
@@ -928,7 +969,7 @@
         /// to build its standard reification triples.
         /// </summary>
         private static void ParseCollectionElements(Uri xmlBase, XmlNode predNode, RDFResource subj,
-                                                     RDFResource pred, RDFGraph result)
+                                                    RDFResource pred, RDFGraph result, XmlAttribute xmlLangSubj)
         {
             //Attach the collection as the blank object of the current predicate
             RDFResource obj = new RDFResource();
@@ -939,7 +980,8 @@
             //we can iterate detected collection items as resources
             if (predNode.HasChildNodes)
             {
-                var elems = ParseNodeList(predNode.ChildNodes, result, xmlBase);
+                XmlAttribute xmlLangPred = GetXmlLangAttribute(predNode) ?? xmlLangSubj;
+                List<RDFResource> elems = ParseNodeList(predNode.ChildNodes, result, xmlBase, xmlLangPred);
                 foreach (RDFResource elem in elems)
                 {
                     // obj -> rdf:type -> rdf:list


add a keyboard shortcut

add a keyboard shortcut

--- IndiaPlugin/IndiaPlugin/IndiaPlugin.cs
+++ IndiaPlugin/IndiaPlugin/IndiaPlugin.cs
@@ -52,6 +52,7 @@
             m_tsmiAddGroups.Text = "Listen to Current Entries";
             m_tsmiAddGroups.Click += SpeakEntriesMenuItem;
             m_tsmiPopup.DropDownItems.Add(m_tsmiAddGroups);
+            m_tsmiPopup.ShortcutKeys = KeysControl | Keys.P;

             return true;
         }


git-svn-id: https://jumony.svn.codeplex.com/svn/trunk@69221 2327b42d-5241-43d6-9e2a-de5ac946f064

--- Ivony.Html/Extensions/DomExtensions.cs
+++ Ivony.Html/Extensions/DomExtensions.cs
@@ -134,7 +134,7 @@
       if ( comment == null )
         throw new ArgumentNullException( "comment" );

-
+
       lock ( container.SyncRoot )
       {
         return AddComment( container, container.Nodes().Count(), comment );
@@ -200,6 +200,10 @@
       if ( fragment == null )
         throw new ArgumentNullException( "fragment" );

+      if ( !object.Equals( fragment.Document, node.Document ) )
+        throw new InvalidOperationException();
+
+

@@ -209,8 +213,8 @@
         Remove( node );
         return fragment.Into( node.Container, index );
       }
-
-    }
+    }
+


Use more standard namespace formatting

Use more standard namespace formatting

--- osu.Framework/Platform/Linux/LinuxGameHost.cs
+++ osu.Framework/Platform/Linux/LinuxGameHost.cs
@@ -1,10 +1,10 @@
 // Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
 // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu-framework/master/LICENCE

+using osu.Framework.Platform.Linux.Native;
+
 namespace osu.Framework.Platform.Linux
 {
-    using Native;
-
     public class LinuxGameHost : DesktopGameHost
     {
         internal LinuxGameHost(string gameName, bool bindIPC = false)


Trim whitespace

Trim whitespace

--- osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs
+++ osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs
@@ -31,7 +31,7 @@
                 if (position == value)
                     return;
                 position = value;
-
+
                 PositionChanged?.Invoke(value);
             }
         }


Use `SettingsNumberBox.NumberBox` instead of `OsuNumberBox`

--- osu.Game/Rulesets/Mods/SeedSettingsControl.cs
+++ osu.Game/Rulesets/Mods/SeedSettingsControl.cs
@@ -5,7 +5,6 @@
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.UserInterface;
-using osu.Game.Graphics.UserInterface;
 using osu.Game.Overlays.Settings;

 namespace osu.Game.Rulesets.Mods
@@ -35,7 +34,7 @@
                 }
             }

-            private readonly OsuNumberBox seedNumberBox;
+            private readonly SettingsNumberBox.NumberBox seedNumberBox;

             public SeedControl()
             {
@@ -61,7 +60,7 @@
                         {
                             new Drawable[]
                             {
-                                seedNumberBox = new OsuNumberBox
+                                seedNumberBox = new SettingsNumberBox.NumberBox
                                 {
                                     RelativeSizeAxes = Axes.X,
                                     CommitOnFocusLost = true


Handle the case one of the sub-folders is the target folder.

--- ConverterService.cs
+++ ConverterService.cs
@@ -81,7 +81,8 @@
 		/// <param name="inTextAlphaBitsValue"></param>
 		/// <param name="inQuality"></param>
 		/// <returns></returns>
-		public bool ConvertPDFFolder2JPG(string inConvertFolderPath, string inTargetFolderPath, string inConvertFileWildCard, bool inDeleteSourcePDF, bool inSearchSubFolders, double inResolutionX, double inResolutionY, double inGraphicsAlphaBitsValue, double inTextAlphaBitsValue, double inQuality)
+		public bool ConvertPDFFolder2JPG(string inConvertFolderPath, string inTargetFolderPath, string inConvertFileWildCard, bool inDeleteSourcePDF,
+										bool inSearchSubFolders, double inResolutionX, double inResolutionY, double inGraphicsAlphaBitsValue, double inTextAlphaBitsValue, double inQuality)
 		{
 			bool conversionSucceed;

@@ -180,20 +181,18 @@

 		/// <summary>
 		/// Walking traverse all folders under inRoot looking for PDF files need to convert to JPG.
-		/// While find one convert it and put it under the same folder if inSameTrgetFolder==true, otherwise creating a folder under inTargetFolderPath with the
-		/// same name as the original file (to convert) located on.
 		/// </summary>
 		/// <param name="inFileConvertor"></param>
 		/// <param name="inRoot"></param>
 		/// <param name="inTargetFolderPath"></param>
 		/// <param name="inConvertFileWildCard"></param>
 		/// <param name="inDeleteSourcePDF"></param>
-		/// <param name="inSearchSubFolders"></param>
-		/// <param name="inSameTrgetFolder"></param>
+		/// <param name="inSearchSubFolders"> If true traverse each sub-folders and convert them, except if one of the sub-folders is the target folder. </param>
+		/// <param name="inSameTargetFolder"> If false create new sub folder under target folder path with the same name as the root sub-folder. </param>
 		/// <param name="inResolutionX"></param>
 		/// <param name="inResolutionY"></param>
-		private bool WalkDirectoryTreePDF2JPG(FileConverter inFileConvertor, System.IO.DirectoryInfo inRoot, string inTargetFolderPath, string inConvertFileWildCard,
-												bool inDeleteSourcePDF, bool inSearchSubFolders, bool inSameTrgetFolder, double inResolutionX, double inResolutionY,
+		private bool WalkDirectoryTreePDF2JPG(FileConverter inFileConvertor, System.IO.DirectoryInfo inRoot, string inTargetFolderPath, string inConvertFileWildCard,
+												bool inDeleteSourcePDF, bool inSearchSubFolders, bool inSameTargetFolder, double inResolutionX, double inResolutionY,
 												double inGraphicsAlphaBitsValue, double inTextAlphaBitsValue, double inQuality)
 		{
 			bool fileConversion;
@@ -229,19 +228,22 @@
 					subDirs = inRoot.GetDirectories();
 					foreach (System.IO.DirectoryInfo dirInfo in subDirs)
 					{
-						if (!inSameTrgetFolder)
+						// In case the target folder is sub directory of the converted folder don't check it.
+						if (inTargetFolderPath.Contains(dirInfo.FullName))
+							continue;
+						if (!inSameTargetFolder)
 						{
 							//Create a new sub folder under target folder path
 							string newPath = System.IO.Path.Combine(inTargetFolderPath, dirInfo.Name);
 							//Create the sub folder
 							System.IO.Directory.CreateDirectory(newPath);
 							//Recursive call for each subdirectory.
-							WalkDirectoryTreePDF2JPG(inFileConvertor, dirInfo, newPath, inConvertFileWildCard, inDeleteSourcePDF, inSearchSubFolders, inSameTrgetFolder, inResolutionX, inResolutionY, inGraphicsAlphaBitsValue, inTextAlphaBitsValue, inQuality);
+							WalkDirectoryTreePDF2JPG(inFileConvertor, dirInfo, newPath, inConvertFileWildCard, inDeleteSourcePDF, inSearchSubFolders, inSameTargetFolder, inResolutionX, inResolutionY, inGraphicsAlphaBitsValue, inTextAlphaBitsValue, inQuality);
 						}
 						else
 						{
 							// Recursive call for each subdirectory.
-							WalkDirectoryTreePDF2JPG(inFileConvertor, dirInfo, dirInfo.FullName, inConvertFileWildCard, inDeleteSourcePDF, inSearchSubFolders, inSameTrgetFolder, inResolutionX, inResolutionY, inGraphicsAlphaBitsValue, inTextAlphaBitsValue, inQuality);
+							WalkDirectoryTreePDF2JPG(inFileConvertor, dirInfo, dirInfo.FullName, inConvertFileWildCard, inDeleteSourcePDF, inSearchSubFolders, inSameTargetFolder, inResolutionX, inResolutionY, inGraphicsAlphaBitsValue, inTextAlphaBitsValue, inQuality);
 						}

 					}
@@ -253,22 +255,20 @@
 		}

 		/// <summary>
-		/// Walking traverse all folders under inRoot looking for PDF files need to convert to EPS.
-		/// While find one convert it and put it under the same folder if inSameTrgetFolder==true, otherwise creating a folder under inTargetFolderPath with the
-		/// same name as the original file located on.
+		/// Walking traverse all folders under inRoot looking for PDF files need to convert to EPS.
 		/// </summary>
 		/// <param name="inFileConvertor"></param>
 		/// <param name="inRoot"></param>
 		/// <param name="inTargetFolderPath"></param>
 		/// <param name="inConvertFileWildCard"></param>
 		/// <param name="inDeleteSourcePDF"></param>
-		/// <param name="inSearchSubFolders"></param>
-		/// <param name="inSameTrgetFolder"></param>
+		/// <param name="inSearchSubFolders"> If true traverse each sub-folders and convert them, except if one of the sub-folders is the target folder. </param>
+		/// <param name="inSameTargetFolder"> If false create new sub folder under target folder path with the same name as the root sub-folder. </param>
 		/// <param name="inFirstPageToConvert"></param>
 		/// <param name="inLastPageToConvert"></param>
 		/// <returns></returns>
 		private bool WalkDirectoryTreePDF2EPS(FileConverter inFileConvertor, System.IO.DirectoryInfo inRoot, string inTargetFolderPath, string inConvertFileWildCard,
-												bool inDeleteSourcePDF, bool inSearchSubFolders, bool inSameTrgetFolder, double inFirstPageToConvert, double inLastPageToConvert)
+												bool inDeleteSourcePDF, bool inSearchSubFolders, bool inSameTargetFolder, double inFirstPageToConvert, double inLastPageToConvert)
 		{
 			bool fileConversion;

@@ -302,19 +302,23 @@
 					subDirs = inRoot.GetDirectories();
 					foreach (System.IO.DirectoryInfo dirInfo in subDirs)
 					{
-						if (!inSameTrgetFolder)
+						// In case the target folder is sub directory of the converted folder don't check it.
+						if (inTargetFolderPath.Contains(dirInfo.FullName))
+							continue;
+
+						if (!inSameTargetFolder)
 						{
-							//Create a new sub folder under target folder path
+							//Create new sub folder under target folder path
 							string newPath = System.IO.Path.Combine(inTargetFolderPath, dirInfo.Name);
 							//Create the sub folder
 							System.IO.Directory.CreateDirectory(newPath);
 							//Recursive call for each subdirectory.
-							WalkDirectoryTreePDF2EPS(inFileConvertor, dirInfo, newPath, inConvertFileWildCard, inDeleteSourcePDF, inSearchSubFolders, inSameTrgetFolder, inFirstPageToConvert, inLastPageToConvert);
+							WalkDirectoryTreePDF2EPS(inFileConvertor, dirInfo, newPath, inConvertFileWildCard, inDeleteSourcePDF, inSearchSubFolders, inSameTargetFolder, inFirstPageToConvert, inLastPageToConvert);
 						}
 						else
 						{
 							// Recursive call for each subdirectory.
-							WalkDirectoryTreePDF2EPS(inFileConvertor, dirInfo, dirInfo.FullName, inConvertFileWildCard, inDeleteSourcePDF, inSearchSubFolders, inSameTrgetFolder, inFirstPageToConvert, inLastPageToConvert);
+							WalkDirectoryTreePDF2EPS(inFileConvertor, dirInfo, dirInfo.FullName, inConvertFileWildCard, inDeleteSourcePDF, inSearchSubFolders, inSameTargetFolder, inFirstPageToConvert, inLastPageToConvert);
 						}

 					}


Version bump to 1.2.1

Version bump to 1.2.1

--- RailPhase/Properties/AssemblyInfo.cs
+++ RailPhase/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0")]
-[assembly: AssemblyFileVersion("1.2.0")]
+[assembly: AssemblyVersion("1.2.1")]
+[assembly: AssemblyFileVersion("1.2.1")]


recognize and unpack LZSS-compressed files.

--- ArcFormats/ArcBlackPackage.cs
+++ ArcFormats/ArcBlackPackage.cs
@@ -29,13 +29,13 @@
 using System.IO;
 using GameRes.Utility;

-namespace GameRes.Formats.BlackPackage
+namespace GameRes.Formats.Ffa
 {
     [Export(typeof(ArchiveFormat))]
     public class DatOpener : ArchiveFormat
     {
-        public override string         Tag { get { return "DAT/BP"; } }
-        public override string Description { get { return "Black Package resource archive"; } }
+        public override string         Tag { get { return "FFA/DAT"; } }
+        public override string Description { get { return "FFA System resource archive"; } }
         public override uint     Signature { get { return 0; } }
         public override bool  IsHierarchic { get { return false; } }
         public override bool     CanCreate { get { return false; } }
@@ -72,5 +72,25 @@
                 return new ArcFile (file, this, dir);
             }
         }
+
+        public override Stream OpenEntry (ArcFile arc, Entry entry)
+        {
+            var input = arc.File.CreateStream (entry.Offset, entry.Size);
+            if (entry.Size <= 8 || Path.GetExtension (entry.Name).ToLowerInvariant() != ".so4")
+                return input;
+            using (var header = new ArcView.Reader (input))
+            {
+                int packed = header.ReadInt32();
+                int unpacked = header.ReadInt32();
+                if (packed+8 != entry.Size || packed <= 0 || unpacked <= 0)
+                    return input;
+                using (input)
+                using (var reader = new LzssReader (input, packed, unpacked))
+                {
+                    reader.Unpack();
+                    return new MemoryStream (reader.Data);
+                }
+            }
+        }
     }
 }


Looks like fixed, add auto-cleanup for IgnoredAppIDs

--- ArchiSteamFarm/CardsFarmer.cs
+++ ArchiSteamFarm/CardsFarmer.cs
@@ -23,6 +23,7 @@
 */

 using System;
+using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Globalization;
 using System.Linq;
@@ -36,8 +37,9 @@
 namespace ArchiSteamFarm {
 	internal sealed class CardsFarmer : IDisposable {
 		private const byte HoursToBump = 2; // How many hours are required for restricted accounts
-
-		private static readonly ConcurrentHashSet<uint> IgnoredAppIDs = new ConcurrentHashSet<uint>(); // Reserved for unreleased games
+		private const byte HoursToIgnore = 24; // How many hours we ignore unreleased appIDs and don't bother checking them again
+
+		private static readonly ConcurrentDictionary<uint, DateTime> IgnoredAppIDs = new ConcurrentDictionary<uint, DateTime>(); // Reserved for unreleased games
 		private static readonly HashSet<uint> UntrustedAppIDs = new HashSet<uint> { 440, 570, 730 };

 		[JsonProperty]
@@ -336,9 +338,20 @@
 					continue;
 				}

-				if (IgnoredAppIDs.Contains(appID) || GlobalConfig.GlobalBlacklist.Contains(appID) || Program.GlobalConfig.Blacklist.Contains(appID)) {
+				if (GlobalConfig.GlobalBlacklist.Contains(appID) || Program.GlobalConfig.Blacklist.Contains(appID)) {
 					// We have this appID blacklisted, so skip it
 					continue;
+				}
+
+				DateTime lastPICSReport;
+				if (IgnoredAppIDs.TryGetValue(appID, out lastPICSReport)) {
+					if (lastPICSReport.AddHours(HoursToIgnore) < DateTime.UtcNow) {
+						// This game served its time as being ignored
+						IgnoredAppIDs.TryRemove(appID, out lastPICSReport);
+					} else {
+						// This game is still ignored
+						continue;
+					}
 				}

 				// Cards
@@ -540,7 +553,7 @@
 					keepFarming = await ShouldFarm(game).ConfigureAwait(false);
 				}
 			} else {
-				IgnoredAppIDs.Add(game.AppID);
+				IgnoredAppIDs[game.AppID] = DateTime.UtcNow;
 				Bot.ArchiLogger.LogGenericInfo(string.Format(Strings.IdlingGameNotReleasedYet, game.AppID, game.GameName));
 			}


MC-109 Add and update tests for sorting

MC-109 Add and update tests for sorting

--- MSOE.MediaComplete.Test/SortingTest.cs
+++ MSOE.MediaComplete.Test/SortingTest.cs
@@ -204,8 +204,9 @@
         [TestMethod, Timeout(30000)]
         public void Import_CausesSort_IgnoresOldFiles()
         {
+            SettingWrapper.SetIsSorting(true);
             // ReSharper disable once ObjectCreationAsStatement
-            new Sorter(null, null); // Force the static initializer to fire.
+            new Sorter(null, null);
             var decoyFile = FileHelper.CreateTestFile(_homeDir.FullName); // Deliberately put an unsorted file in
             decoyFile.MoveTo(decoyFile.FullName + ".decoy.mp3");
             FileHelper.CreateTestFile(_importDir.FullName);
@@ -225,6 +226,33 @@
             Assert.IsTrue(decoyFile.Exists);
         }

+        /// <summary>
+        /// Make sure that imports trigger sorting operations on the new files.
+        /// </summary>
+        [TestMethod, Timeout(30000)]
+        public void Import_NoSort_IgnoresOldFiles()
+        {
+            SettingWrapper.SetIsSorting(false);
+            // ReSharper disable once ObjectCreationAsStatement
+            new Sorter(null, null);
+            var decoyFile = FileHelper.CreateTestFile(_homeDir.FullName); // Deliberately put an unsorted file in
+            decoyFile.MoveTo(decoyFile.FullName + ".decoy.mp3");
+            FileHelper.CreateTestFile(_importDir.FullName);
+            var normalFileDest = _homeDir.FullName + Path.DirectorySeparatorChar + Util.Constants.ValidMp3FileName;
+
+            var task = new Importer(_homeDir.FullName).ImportDirectory(_importDir.FullName, true);
+            while (!task.IsCompleted)
+            {
+
+            }
+            // Need to poll for the file, since we don't have a way of monitoring the sorter directly.
+            while (!new FileInfo(normalFileDest).Exists)
+            {
+            }
+
+            Assert.IsTrue(decoyFile.Exists);
+        }
+
         public static SortSettings GetNormalSettings()
         {
             return new SortSettings


start of ui code

start of ui code

--- MSOE.MediaComplete/MainWindowPlayer.cs
+++ MSOE.MediaComplete/MainWindowPlayer.cs
@@ -335,8 +335,12 @@
         /// <param name="e"></param>
         private void PreviousButton_OnClick(object sender, RoutedEventArgs e)
         {
-            //TODO: MC-34 or MC-35
-            //throw new System.NotImplementedException();
+            var queue = NowPlaying.Inst;
+            var old = queue.Index;
+            queue.PreviousSong();
+            var current = queue.Index;
+            UpdateColorEvent(old, current);
+            Play();
         }

         /// <summary>
@@ -346,8 +350,11 @@
         /// <param name="e"></param>
         private void SkipButton_OnClick(object sender, RoutedEventArgs e)
         {
-            //TODO: MC-34 or MC-35
-            //throw new System.NotImplementedException();
+            var old = NowPlaying.Inst.Index;
+            NowPlaying.Inst.NextSong();
+            var current = NowPlaying.Inst.Index;
+            UpdateColorEvent(old, current);
+            Play();
         }

         /// <summary>


Removed the obsolete verification methods

--- Main/FluentAssertions.Net35/Execute.cs
+++ Main/FluentAssertions.Net35/Execute.cs
@@ -1,11 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-using FluentAssertions.Formatting;
-using FluentAssertions.Frameworks;
-
-namespace FluentAssertions
+namespace FluentAssertions
 {
     ///
     /// Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure.
@@ -19,119 +12,5 @@
         {
             get { return new Verification(); }
         }
-
-
-        #region Obsolete
-
-        ///
-        ///   Asserts that the supplied <paramref name = "condition" /> is met.
-        ///
-        /// <param name = "condition">The condition to assert.</param>
-        /// <param name = "failureMessage">
-        ///   The message that will be used in the exception. This should describe what was expected and why. This message
-        ///   can contain the following three placeholders:

-        ///   <list type = "bullet">
-        ///     <item>{0} = the expected value</item>
-        ///     <item>{1} = the actual value</item>
-        ///     <item>{2} = a reason explaining the expectations</item>
-        ///   </list>

-        /// </param>
-        /// <param name = "expected">
-        ///   The expected value, or <c>null</c> if there is no explicit expected value.
-        /// </param>
-        /// <param name = "actual">The actual value, or <c>null</c> if there is no explicit actual value.</param>
-        /// <param name = "reason">Should describe the reason for the expectation.</param>
-        /// <param name = "reasonArgs">Optional args for formatting placeholders in the <paramref name = "reason" />.</param>
-        [Obsolete("The Verify method is no longer supported! Use Verification.ForCondition instead.")]
-        public static void Verify(Func<bool> condition, string failureMessage, object expected, object actual,
-            string reason,
-            params object[] reasonArgs)
-        {
-            Verify(condition.Invoke(), failureMessage, expected, actual, reason, reasonArgs);
-        }
-
-        ///
-        ///   Asserts that the supplied <paramref name = "condition" /> is met.
-        ///
-        /// <param name = "condition">The condition to assert.</param>
-        /// <param name = "failureMessage">
-        ///   The message that will be used in the exception. This should describe what was expected and why. This message
-        ///   can contain the following three placeholders:

-        ///   <list type = "bullet">
-        ///     <item>{0} = the expected value</item>
-        ///     <item>{1} = the actual value</item>
-        ///     <item>{2} = a reason explaining the expectations</item>
-        ///   </list>

-        /// </param>
-        /// <param name = "expected">
-        ///   The expected value, or <c>null</c> if there is no explicit expected value.
-        /// </param>
-        /// <param name = "actual">The actual value, or <c>null</c> if there is no explicit actual value.</param>
-        /// <param name = "reason">Should describe the reason for the expectation.</param>
-        /// <param name = "reasonArgs">Optional args for formatting placeholders in the <paramref name = "reason" />.</param>
-        [Obsolete("The Verify method is no longer supported! Use Verification.ForCondition instead.")]
-        public static void Verify(bool condition, string failureMessage, object expected, object actual, string reason, params object[] reasonArgs)
-        {
-            if (!condition)
-            {
-                Fail(failureMessage, expected, actual, reason, reasonArgs);
-            }
-        }
-
-        ///
-        ///   Handles an assertion failure.
-        ///
-        /// <param name = "failureMessage">
-        ///   The message that will be used in the exception. This should describe what was expected and why. This message
-        ///   can contain the following three placeholders:

-        ///   <list type = "bullet">
-        ///     <item>{0} = the expected value</item>
-        ///     <item>{1} = the actual value</item>
-        ///     <item>{2} = a reason explaining the expectations</item>
-        ///   </list>

-        ///   Any additional placeholders are allowed and will be satisfied using the <paramref name = "failureMessageArgs" />.
-        /// </param>
-        /// <param name = "expected">
-        ///   The expected value, or <c>null</c> if there is no explicit expected value.
-        /// </param>
-        /// <param name = "actual">The actual value, or <c>null</c> if there is no explicit actual value.</param>
-        /// <param name = "reason">Should describe the reason for the expectation.</param>
-        /// <param name = "reasonArgs">Optional args for formatting placeholders in the <paramref name = "reason" />.</param>
-        /// <param name = "failureMessageArgs">
-        ///   Optional arguments to satisfy any additional placeholders in the <paramref name = "failureMessage" />
-        /// </param>
-        [Obsolete("The Fail method is no longer supported! Use Verification.FailWith instead.")]
-        public static void Fail(string failureMessage, object expected, object actual, string reason,
-            object[] reasonArgs,
-            params object[] failureMessageArgs)
-        {
-            var values = new List<string>
-            {
-                Formatter.ToString(expected),
-                Formatter.ToString(actual),
-                SanitizeReason(reason, reasonArgs),
-            };
-
-            values.AddRange(failureMessageArgs.Select(arg => Formatter.ToString(arg)));
-
-            AssertionHelper.Throw(string.Format(failureMessage, values.ToArray()));
-        }
-
-        private static string SanitizeReason(string reason, object[] reasonArgs)
-        {
-            if (!String.IsNullOrEmpty(reason))
-            {
-                if (!reason.StartsWith("because", StringComparison.CurrentCultureIgnoreCase))
-                {
-                    reason = "because " + reason;
-                }
-
-                return " " + String.Format(reason, reasonArgs);
-            }
-
-            return "";
-        }
-
-        #endregion
     }
 }


Make possible to change timespan

Make possible to change timespan

--- MediaManager/MediaManagerExtensions.cs
+++ MediaManager/MediaManagerExtensions.cs
@@ -56,9 +56,11 @@
             return mediaItem;
         }

-        public static Task PlayPreviousOrSeekToStart(this IMediaManager mediaManager)
+        public static Task PlayPreviousOrSeekToStart(this IMediaManager mediaManager, TimeSpan? timeSpan = null)
         {
-            if (mediaManager.Position < TimeSpan.FromSeconds(3))
+            timeSpan = timeSpan ?? TimeSpan.FromSeconds(3);
+
+            if (mediaManager.Position < timeSpan)
                 return mediaManager.PlayPrevious();
             else
                 return SeekToStart(mediaManager);


working on login page

working on login page

--- MeetU/MeetU/Views/Account/Login.cshtml
+++ MeetU/MeetU/Views/Account/Login.cshtml
@@ -5,58 +5,41 @@
 }

-

-

-

-

+

+

+            @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
+            {
+                @Html.AntiForgeryToken()
+                @Html.ValidationSummary(true, "", new { @class = "text-danger" })
+

+                    @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
+                    @Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" })
+

+

+                    @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
+                    @Html.ValidationMessageFor(m => m.Password, "", new { @class = "text-danger" })
+

-

+

+

+

+                            @Html.CheckBoxFor(m => m.RememberMe)
+                            @Html.LabelFor(m => m.RememberMe)
+

+

+

-                    @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
-                    {
-                        @Html.AntiForgeryToken()
-                        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
-

-

-                                @Html.TextBoxFor(m => m.UserName, new { @class = "form-control", @style = "width:238px" })
-                                @Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" })
-

-

-
-

-

-                                @Html.PasswordFor(m => m.Password, new { @class = "form-control", @style = "width:238px" })
-                                @Html.ValidationMessageFor(m => m.Password, "", new { @class = "text-danger" })
-

-

-
-

-

-

-                                    @Html.CheckBoxFor(m => m.RememberMe)
-                                    @Html.LabelFor(m => m.RememberMe)
-

-

-

-
-

-

-                                <input type="submit" value="Log in" class="btn btn-default" , style = "width:238px"/>
-

-

-                        @* Enable this once you have account confirmation enabled for password reset functionality
-

-                                @Html.ActionLink("Forgot your password?", "ForgotPassword")
-
*@
-                    }
-
-

-
-

-

+

+                    <input type="submit" value="Log in" class="btn btn-default btn-block" />
+

+                @* Enable this once you have account confirmation enabled for password reset functionality
+

+                        @Html.ActionLink("Forgot your password?", "ForgotPassword")
+
*@
+            }
+

-


Removido informações do ambiente

Removido informações do ambiente

--- MegaManager/frmImportacaoResultados.cs
+++ MegaManager/frmImportacaoResultados.cs
@@ -33,11 +33,11 @@
         const string FILE_EXTRACTED_NAME = "d_megasc.htm";

-        private const string PROXY_LOGIN = @"GLOBAL\sbtgao";
-        private const string PROXY_PASS = "Welcome@2015";
-
-        private const string PROXY_SERVER = "PROXYBRSA1.SCANIA.COM";
-        private const int PROXY_PORT = 8080;
+        private const string PROXY_LOGIN = @"GLOBAL\foobar";
+        private const string PROXY_PASS = ">9000";
+
+        private const string PROXY_SERVER = "FOO.BAR.COM";
+        private const int PROXY_PORT = 31337;

         public string PATH_DOWNLOAD


Now the window doesn't stay huge after a large options list

--- MetasploitPayloadUtility/MainWindow.cs
+++ MetasploitPayloadUtility/MainWindow.cs
@@ -452,6 +452,8 @@
 		addBox.PackStart (addPayload, false, false, 0);
 		payloadDetails.PackStart (addBox, false, false, 0);
 		payloadDetails.ShowAll ();
+
+		this.Resize (payloadDetails.Allocation.Width + (800-payloadDetails.Allocation.Width), payloadDetails.Allocation.Height + (600-payloadDetails.Allocation.Height));
 	}

 	protected VBox RedrawOptions (Dictionary<string, object> opts, bool mine)


Cleanup after Rebase

Cleanup after Rebase

--- Assets/Scripts/GameManager.cs
+++ Assets/Scripts/GameManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;


Added goal respawning function

Added goal respawning function

--- Assets/Scripts/GameManager.cs
+++ Assets/Scripts/GameManager.cs
@@ -4,11 +4,12 @@
 public class GameManager : MonoBehaviour {

 	public GameObject Player;
-	private Vector3 SpawnPoint;
+	private Vector3 SpawnPoint = new Vector3(-8,0,0);
+	public float NextGoalDistance = 5;
+	private bool GoalReached = false;

 	// Use this for initialization
 	void Start () {
-		SpawnPoint = Player.transform.position;
 	}

 	// Update is called once per frame
@@ -22,11 +23,21 @@
 		go.transform.parent = Player.transform;
 		go.transform.localPosition = Vector3.zero;
 	}
+
 	public void DestroyPiece() {
 		GameObject.Destroy (Player.transform.GetChild (0).gameObject);
 	}
+
 	public void RespawnPlayer() {
 		Player.transform.DetachChildren ();
 		NewPiece ();
+		if (GoalReached) {
+			RespawnGoal();
+		}
+	}
+
+	public void RespawnGoal() {
+
+		GoalReached = false;
 	}
 }


- Popup update button is hidden when using predetermined string values

--- Assets/Plugins/Editor/Vexe/Drawers/User/Popups/PopupDrawer.cs
+++ Assets/Plugins/Editor/Vexe/Drawers/User/Popups/PopupDrawer.cs
@@ -10,20 +10,22 @@
 {
 	public class PopupDrawer : AttributeDrawer<string, PopupAttribute>
 	{
-		private string[] values;
-		private int? currentIndex;
-		private MethodCaller<object, object> populateMethod;
-		private MemberGetter<object, object> populateMember;
-		private bool populateFromTarget, populateFromType;
+		private string[] _values;
+		private int? _currentIndex;
+		private MethodCaller<object, object> _populateMethod;
+		private MemberGetter<object, object> _populateMember;
+		private bool _populateFromTarget, _populateFromType;
 		private static string[] NA = new string[1] { "NA" };
-		private const string OwnerTypePrefix = "target";
+		private const string kOwnerTypePrefix = "target";
+        private bool _showUpdateButton = true;

 		protected override void Initialize()
 		{
 			string fromMember = attribute.PopulateFrom;
 			if (fromMember.IsNullOrEmpty())
 			{
-				values = attribute.values;
+				_values = attribute.values;
+                _showUpdateButton = false;
 			}
 			else
 			{
@@ -35,10 +37,10 @@
 				}
 				else
 				{
-					if (split[0].ToLower() == OwnerTypePrefix) // populate from unityTarget
+					if (split[0].ToLower() == kOwnerTypePrefix) // populate from unityTarget
 					{
 						populateFrom = unityTarget.GetType();
-						populateFromTarget = true;
+						_populateFromTarget = true;
 					}
 					else // populate from type (member should be static)
 					{
@@ -50,7 +52,7 @@
 						if (populateFrom == null)
 							throw new InvalidOperationException("Couldn't find type " + typeName);

-						populateFromType = true;
+						_populateFromType = true;
 					}

 					fromMember = split[1];
@@ -63,19 +65,19 @@

 				var field = member as FieldInfo;
 				if (field != null)
-					populateMember = (member as FieldInfo).DelegateForGet();
+					_populateMember = (member as FieldInfo).DelegateForGet();
 				else
 				{
 					var prop = member as PropertyInfo;
 					if (prop != null)
-						populateMember = (member as PropertyInfo).DelegateForGet();
+						_populateMember = (member as PropertyInfo).DelegateForGet();
 					else
 					{
 						var method = member as MethodInfo;
 						if (method == null)
 							throw new Exception("{0} is not a field, nor a property nor a method!".FormatWith(fromMember));

-						populateMethod = (member as MethodInfo).DelegateForCall();
+						_populateMethod = (member as MethodInfo).DelegateForCall();
 					}
 				}
 			}
@@ -86,33 +88,30 @@
 			if (memberValue == null)
 				memberValue = string.Empty;

-			if (values == null)
+			if (_values == null)
 				UpdateValues();

-			//if (!currentIndex.HasValue)
-			{
-				currentIndex = values.IndexOf(memberValue);
-				if (currentIndex == -1)
-				{
-					currentIndex = 0;
-					if (values.Length > 0)
-						memberValue = values[0];
-				}
-			}
+            _currentIndex = _values.IndexOf(memberValue);
+            if (_currentIndex == -1)
+            {
+                _currentIndex = 0;
+                if (_values.Length > 0)
+                    memberValue = _values[0];
+            }

 			using (gui.Horizontal())
 			{
-				int x = gui.Popup(displayText, currentIndex.Value, values);
+				int x = gui.Popup(displayText, _currentIndex.Value, _values);
 				{
-					if (currentIndex != x || (values.InBounds(x) && memberValue != values[x]))
+					if (_currentIndex != x || (_values.InBounds(x) && memberValue != _values[x]))
 					{
-						memberValue = values[x];
-						currentIndex = x;
+						memberValue = _values[x];
+						_currentIndex = x;
 						gui.RequestResetIfRabbit();
 					}
 				}

-				if (gui.MiniButton("U", "Update popup values", MiniButtonStyle.Right))
+				if (_showUpdateButton && gui.MiniButton("U", "Update popup values", MiniButtonStyle.Right))
 					UpdateValues();
 			}
 		}
@@ -120,25 +119,25 @@
 		void UpdateValues()
 		{
 			object target;
-			if (populateFromTarget)
+			if (_populateFromTarget)
 				target = unityTarget;
-			else if (populateFromType)
+			else if (_populateFromType)
 				target = null;
 			else target = rawTarget;

-			if (populateMember != null)
+			if (_populateMember != null)
 			{
-				var pop = populateMember(target);
+				var pop = _populateMember(target);
 				if (pop != null)
-					values = ProcessPopulation(pop);
+					_values = ProcessPopulation(pop);
 			}
-			else if (populateMethod != null)
+			else if (_populateMethod != null)
 			{
-				var pop = populateMethod(target, null);
+				var pop = _populateMethod(target, null);
 				if (pop != null)
-					values = ProcessPopulation(pop);
+					_values = ProcessPopulation(pop);
 			}
-			else values = NA;
+			else _values = NA;
 		}

 		string[] ProcessPopulation(object obj)
@@ -153,6 +152,5 @@

 			return list.ToArray();
 		}
-
 	}
 }