private void _guiSpeedLimitsWindow(int num)
        {
            GUILayout.BeginHorizontal();

            Color oldColor = GUI.color;

            for (int i = 0; i < SpeedLimitManager.Instance.AvailableSpeedLimits.Count; ++i)
            {
                if (curSpeedLimitIndex != i)
                {
                    GUI.color = Color.gray;
                }
                float signSize = TrafficManagerTool.AdaptWidth(guiSpeedSignSize);
                if (GUILayout.Button(TextureResources.SpeedLimitTextures[SpeedLimitManager.Instance.AvailableSpeedLimits[i]], GUILayout.Width(signSize), GUILayout.Height(signSize)))
                {
                    curSpeedLimitIndex = i;
                }
                GUI.color = oldColor;

                if (i == 6)
                {
                    GUILayout.EndHorizontal();
                    GUILayout.BeginHorizontal();
                }
            }

            GUILayout.EndHorizontal();

            if (GUILayout.Button(Translation.GetString("Default_speed_limits")))
            {
                TrafficManagerTool.ShowAdvisor(this.GetType().Name + "_Defaults");
                defaultsWindowVisible = true;
            }

            showLimitsPerLane = GUILayout.Toggle(showLimitsPerLane, Translation.GetString("Show_lane-wise_speed_limits"));

            DragWindow(ref windowRect);
        }
        /// <summary>
        /// The window for selecting and applying a speed limit
        /// </summary>
        /// <param name="num"></param>
        private void GuiSpeedLimitsWindow(int num)
        {
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();

            Color             oldColor       = GUI.color;
            List <SpeedValue> allSpeedLimits = EnumerateSpeedLimits(SpeedUnit.CurrentlyConfigured);

            allSpeedLimits.Add(new SpeedValue(0)); // add last item: no limit

            bool showMph     = GlobalConfig.Instance.Main.DisplaySpeedLimitsMph;
            var  column      = 0u; // break palette to a new line at breakColumn
            int  breakColumn = showMph ? BREAK_PALETTE_COLUMN_MPH : BREAK_PALETTE_COLUMN_KMPH;

            foreach (SpeedValue speedLimit in allSpeedLimits)
            {
                // Highlight palette item if it is very close to its float speed
                if (FloatUtil.NearlyEqual(currentPaletteSpeedLimit.GameUnits, speedLimit.GameUnits))
                {
                    GUI.color = Color.gray;
                }

                GuiSpeedLimitsWindow_AddButton(showMph, speedLimit);
                GUI.color = oldColor;

                // TODO: This can be calculated from SpeedLimit MPH or KMPH limit constants
                column++;
                if (column % breakColumn == 0)
                {
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();
                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                }
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            //---------------------
            // UI buttons row
            //---------------------
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();

            if (GUILayout.Button(Translation.GetString("Default_speed_limits"),
                                 GUILayout.Width(200)))
            {
                TrafficManagerTool.ShowAdvisor(this.GetType().Name + "_Defaults");
                defaultsWindowVisible = true;
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            //---------------------
            // Checkboxes row
            //---------------------
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            showLimitsPerLane = GUILayout.Toggle(
                showLimitsPerLane,
                Translation.GetString("Show_lane-wise_speed_limits"));

            GUILayout.FlexibleSpace();

            // Display MPH checkbox, if ticked will save global config
            bool displayMph = GlobalConfig.Instance.Main.DisplaySpeedLimitsMph;

            displayMph = GUILayout.Toggle(displayMph, Translation.GetString("Display_speed_limits_mph"));

            if (GlobalConfig.Instance.Main.DisplaySpeedLimitsMph != displayMph)
            {
                OptionsGeneralTab.SetDisplayInMph(displayMph);
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            DragWindow(ref paletteWindowRect);
        }