Inheritance: System.Windows.Controls.Control, INotifyPropertyChanged
Esempio n. 1
0
        public static ColorCircularMenuItem CreateColorMenu(string title, int pos)
        {

            CircularMenuItem opacity = new CircularMenuItem()
                                           {
                                               Title = "Opacity",
                                               Position = 7,
                                               Items = new List<CircularMenuItem>()
                                                           {
                                                               new CircularMenuItem() {Title = "20%", Position = 1},
                                                               new CircularMenuItem() {Title = "40%", Position = 2},
                                                               new CircularMenuItem() {Title = "60%", Position = 3},
                                                               new CircularMenuItem() {Title = "80%", Position = 4},
                                                               new CircularMenuItem() {Title = "100%", Position = 5},
                                                           }
                                           };
            

            ColorCircularMenuItem result = new ColorCircularMenuItem()
                                               {
                                                   Title = title,
                                                   Position = pos,
                                                   Items = new List<CircularMenuItem>()
                                                               {
                                                                   new CircularMenuItem() {Title = "Purple",Fill = Brushes.Purple,Position = 0},
                                                                   new CircularMenuItem() {Title = "Red",Fill = Brushes.Red,Position = 1},
                                                                   new CircularMenuItem() {Title = "Blue",Fill = Brushes.Blue, Position = 2},
                                                                   new CircularMenuItem() {Title = "Black",Fill = Brushes.Black, Position = 3},
                                                                   new CircularMenuItem() {Title = "Orange",Fill = Brushes.Orange,Position = 4},
                                                                   new CircularMenuItem() {Title = "Green",Fill = Brushes.Green, Position = 5},
                                                                   
                                                                 
                                                                   new CircularMenuItem() {Title = "None",Position = 6},
                                                                   opacity
                                                               }
                                               };

            opacity.ItemSelected += (e, f) =>
            {
                var i =
                    double.Parse(f.SelectedItem.Title.Remove(f.SelectedItem.Title.Length - 1, 1)) / 100.0;
                result.UpdateOpacity(i);
                opacity.Menu.Back();
            };

            result.Opacity = 1;

            result.ItemSelected += (e, s) =>
                                       {
                                           result.UpdateColor(((SolidColorBrush)s.SelectedItem.Fill).Color);
                                           if (result.Menu != null) result.Menu.Back();
                                       };

            return result;
        }
Esempio n. 2
0
        protected override void OnViewLoaded(object view) {
            base.OnViewLoaded(view);

            var nav = new CircularMenuItem()
            {
                Icon = "pack://application:,,,/csTasksPlugin;component/Images/new task.png"
                //Element = "M93.621 44.371C93.621 20.318 74.053 0.75 50 0.75S6.379 20.318 6.379 44.371c0 19.396 12.727 35.867 30.266 41.521   L50 99.25l13.355-13.355C80.895 80.238 93.621 63.768 93.621 44.371z M50 76.736c-17.846 0-32.364-14.521-32.364-32.365   c0-17.845 14.519-32.364 32.364-32.364s32.364 14.519 32.364 32.364C82.364 62.216 67.846 76.736 50 76.736z M49.41954,39.667637C48.692036,39.667637 48.101837,40.270634 48.101837,41.014027 48.101837,41.76012 48.692036,42.362915 49.41954,42.362915 50.145443,42.362915 50.735249,41.76012 50.735249,41.014027 50.735249,40.270634 50.145443,39.667637 49.41954,39.667637z M44.825417,39.607838C44.097614,39.607838 43.509415,40.210533 43.509415,40.953926 43.509415,41.69762 44.097614,42.303116 44.825417,42.303116 45.55172,42.303116 46.141525,41.69762 46.141525,40.953926 46.141525,40.210533 45.55172,39.607838 44.825417,39.607838z M6.3522615,5.5287595C5.911829,5.5287595,5.5541072,5.8554168,5.5541077,6.2604427L5.5541077,37.508957C5.5541072,37.913853,5.911829,38.240654,6.3522615,38.240654L55.388371,38.240654C55.828773,38.240654,56.188175,37.913853,56.188175,37.508957L56.188175,6.2604427C56.188175,5.8554168,55.828773,5.5287595,55.388371,5.5287595z M0.98016852,0L61.087196,0C61.629902,-2.3297311E-09,62.068005,0.436275,62.068005,0.97923898L62.068005,42.791309C62.068005,43.333004,61.629902,43.772999,61.087196,43.772999L38.711491,43.772999 38.711491,42.46711C38.711491,41.924217,38.272388,41.484024,37.729683,41.484024L24.010818,41.484024C23.471514,41.484024,23.030712,41.924217,23.030712,42.46711L23.030712,43.772999 0.98016852,43.772999C0.43945515,43.772999,-3.5527137E-15,43.333004,0,42.791309L0,0.97923898C-3.5527137E-15,0.436275,0.43945515,-2.3297311E-09,0.98016852,0z",
                //Items = new List<CircularMenuItem>()
            };
            nav.Selected += (sender, args) => AddTaskWithScreenshot();

            AppStateSettings.Instance.CircularMenus.Add(nav);
        }
Esempio n. 3
0
        public void UpdateButtons()
        {
            if (ShowScreenshotButton && circularMenuItem==null)
            {
                circularMenuItem = new CircularMenuItem {Title = "Take Screenshot"};
                circularMenuItem.Selected += TakeScreenshot;

                circularMenuItem.Id = Guid.NewGuid().ToString();
                circularMenuItem.Icon = "pack://application:,,,/csCommon;component/Resources/Icons/Camerablack.png";
                AppState.AddCircularMenu(circularMenuItem);
            }
            if (!ShowScreenshotButton && circularMenuItem!=null)
            {
                AppState.RemoveCircularMenu(circularMenuItem.Id);
                circularMenuItem = null;
            }

            if (ShowNotebookTab && st==null)
            {
                timeTabViewModel = new NoteTabViewModel() { Plugin = this };

                st = new StartPanelTabItem
                {
                    Name = "Background",
                    HeaderStyle = TabHeaderStyle.Image,
                    Image = new BitmapImage(new Uri("pack://application:,,,/csCommon;component/Resources/Icons/Book-Open.png")),
                    ModelInstance = timeTabViewModel
                };
                AppState.AddStartPanelTabItem(st);
            }
            if (!ShowNotebookTab && st != null)
            {
                AppState.RemoveStartPanelTabItem(st);
                st = null;
            }
        }
Esempio n. 4
0
 public void Stop() {
     //AppState.RemoveStartPanelTabItem(AppraisalTabItem);
     //AppState.RemoveStartPanelTabItem(FunctionsTabItem);
     menu = AppState.CircularMenus.FirstOrDefault(m => string.Equals(m.Id, "AppraisalMenu"));
     if (menu != null) AppState.CircularMenus.Remove(menu);
     IsRunning = false;
     Active = false;
     UpdateTabs();
     Save();
 }
Esempio n. 5
0
        private void UpdateCircularMenu(PoI p, DataBinding db, dsLayer pl, Point pos)
        {
            if (!p.NEffectiveStyle.CanEdit.ValueOrFalse()) return;
            pos = new Point(pos.X + 50, pos.Y - 50);
            if (!p.IsSelected)
            {
                if (menu != null) AppState.RemoveCircularMenu("PoiMenu" + p.Id);
                return;
            }
            var lineWidth = new CircularMenuItem
            {
                Title = "Line\nWidth",
                Position = 5,
                Items = new List<CircularMenuItem> {
                    new CircularMenuItem {
                        Title = "1",
                        Position = 1
                    },
                    new CircularMenuItem {
                        Title = "2",
                        Position = 2
                    },
                    new CircularMenuItem {
                        Title = "3",
                        Position = 3
                    },
                    new CircularMenuItem {
                        Title = "5",
                        Position = 4
                    },
                    new CircularMenuItem {
                        Title = "10",
                        Position = 5
                    }
                }
            };

            lineWidth.ItemSelected += (e, f) =>
            {
                p.StrokeWidth = Convert.ToDouble(f.SelectedItem.Title);
                lineWidth.Menu.Back();
                //pl.RedrawPoi(p, db.Attributes["Graphic"] as Graphic);
            };

            //Color c = Colors.Blue;
            var fill = ColorCircularMenuItem.CreateColorMenu("Fill", 6);
            fill.ColorChanged += (e, f) =>
            {
                //SolidColorBrush scb = fill.Fill as SolidColorBrush;
                p.FillColor = fill.Color;
                //pl.RedrawPoi(p, db.Attributes["Graphic"] as Graphic);
            };

            var line = ColorCircularMenuItem.CreateColorMenu("Line\nColor", 7);
            line.ColorChanged += (e, f) =>
            {
                p.StrokeColor = line.Color;
                //pl.RedrawPoi(p, db.Attributes["Graphic"] as Graphic);
            };

            var delete = new CircularMenuItem
            {
                Position = 2,
                Title = "Delete",
                Element = "M33.977998,27.684L33.977998,58.102997 41.373998,58.102997 41.373998,27.684z M14.841999,27.684L14.841999,58.102997 22.237998,58.102997 22.237998,27.684z M4.0319996,22.433001L52.183,22.433001 52.183,63.999001 4.0319996,63.999001z M15.974,0L40.195001,0 40.195001,7.7260003 56.167001,7.7260003 56.167001,16.000999 0,16.000999 0,7.7260003 15.974,7.7260003z"
            };
            delete.Selected += (e, f) => AppState.RemoveCircularMenu("PoiMenu" + p.Id);

            var stylemenu = new CircularMenuItem
            {
                Id = "style",
                Title = "Style",
                Position = 1,
                Icon = "pack://application:,,,/csCommon;component/Resources/Icons/paint.png",
                Items = new List<CircularMenuItem> {
                    lineWidth,
                    fill,
                    line
                }
            };

            menu = new CircularMenuItem
            {
                Id = "PoiMenu" + p.Id,
                Title = "test",
                StartPosition = pos,
                Icon = "pack://application:,,,/csCommon;component/Resources/Icons/paint.png",
                Items = new List<CircularMenuItem>
                {
                    stylemenu,
                    delete
                },
                AutoCloseTimeout = 10
            };
            AppState.AddCircularMenu(menu);

            //AppState.SetCircularMenu(menu);
        }
Esempio n. 6
0
        /// <summary>
        ///     The create circular menu for esri shapes.
        /// </summary>
        private void CreateCircularMenuForEsriShapes()
        {
            const string CircularStyleMenuFreehand = "Freehand";
            const string CircularStyleMenuPolygon = "Polygon";
            const string CircularStyleMenuPolyline = "Polyline";
            const string CircularStyleMenuCircle = "Circle";

            var lineWidth = new CircularMenuItem
                                {
                                    Title = "Line\nWidth", 
                                    Position = 1, // 5, 
                                    Items =
                                        new List<CircularMenuItem>
                                            {
                                                new CircularMenuItem
                                                    {
                                                        Title = "1", 
                                                        Position =
                                                            1
                                                    }, 
                                                new CircularMenuItem
                                                    {
                                                        Title = "2", 
                                                        Position =
                                                            2
                                                    }, 
                                                new CircularMenuItem
                                                    {
                                                        Title = "3", 
                                                        Position =
                                                            3
                                                    }, 
                                                new CircularMenuItem
                                                    {
                                                        Title = "5", 
                                                        Position =
                                                            4
                                                    }, 
                                                new CircularMenuItem
                                                    {
                                                        Title =
                                                            "10", 
                                                        Position
                                                            = 5
                                                    }
                                            }
                                };

            lineWidth.ItemSelected += (e, f) =>
                {
                    this.mEsriShapePoi.StrokeWidth = Convert.ToDouble(f.SelectedItem.Title);
                    this.mEsriShapePoi.UpdateEffectiveStyle();
                    this.SyncAndDisplayEsriShapeDrawingTool();
                    lineWidth.Menu.Back();
                };

            /*
            var drawStyle = new CircularMenuItem
                                {
                                    Title = "Style", 
                                    Position = 2, 
                                    Items =
                                        new List<CircularMenuItem>
                                            {
                                                new CircularMenuItem
                                                    {
                                                        Title =
                                                            CircularStyleMenuFreehand, 
                                                        Icon =
                                                            "pack://application:,,,/csCommon;component/Resources/Icons/freehand.png", 
                                                        Position
                                                            = 1
                                                    }, 
                                                new CircularMenuItem
                                                    {
                                                        Title =
                                                            CircularStyleMenuCircle, 
                                                        Icon =
                                                            "pack://application:,,,/csCommon;component/Resources/Icons/circle.png", 
                                                        Position
                                                            = 2
                                                    }, 
                                                new CircularMenuItem
                                                    {
                                                        Title =
                                                            CircularStyleMenuPolygon, 
                                                        Icon =
                                                            "pack://application:,,,/csCommon;component/Resources/Icons/polygon.png", 
                                                        Position
                                                            = 3
                                                    }, 
                                                new CircularMenuItem
                                                    {
                                                        Title =
                                                            CircularStyleMenuPolyline, 
                                                        Icon =
                                                            "pack://application:,,,/csCommon;component/Resources/Icons/polygon.png", 
                                                        Position
                                                            = 4
                                                    }
                                            }
                                };
            drawStyle.ItemSelected += (e, f) =>
                {
                    drawStyle.Menu.Back();

                    switch (f.SelectedItem.Title)
                    {
                        case CircularStyleMenuFreehand:
                            this.mEsriShapePoi.DrawingMode = DrawingModes.Freehand;
                            break;
                        case CircularStyleMenuPolygon:
                            this.mEsriShapePoi.DrawingMode = DrawingModes.Polygon;
                            break;
                        case CircularStyleMenuPolyline:
                            this.mEsriShapePoi.DrawingMode = DrawingModes.Polyline;
                            break;
                        case CircularStyleMenuCircle:
                            this.mEsriShapePoi.DrawingMode = DrawingModes.Circle;
                            break;
                        default:
                            Debug.Assert(false, "Not implemented menu item");
                            break;
                    }

                    this.mEsriShapePoi.UpdateEffectiveStyle();
                    this.SyncAndDisplayEsriShapeDrawingTool();
                };
            */
            // Color c = Colors.Blue;
            var fill = ColorCircularMenuItem.CreateColorMenu("Fill", 6);
            fill.ColorChanged += (e, f) =>
                {
                    // SolidColorBrush scb = fill.Fill as SolidColorBrush;
                    this.mEsriShapePoi.FillColor = fill.Color;
                    this.mEsriShapePoi.UpdateEffectiveStyle();
                    this.SyncAndDisplayEsriShapeDrawingTool();
                };

            var line = ColorCircularMenuItem.CreateColorMenu("Line\nColor", 7);
            line.ColorChanged += (e, f) =>
                {
                    this.mEsriShapePoi.StrokeColor = line.Color;
                    this.mEsriShapePoi.UpdateEffectiveStyle();
                    this.SyncAndDisplayEsriShapeDrawingTool();
                };

            this.menu = new CircularMenuItem
                            {
                                Id = "PoiDrawing" + this.Layer.ID, 
                                Title = "test", 
                                Icon =
                                    "pack://application:,,,/csCommon;component/Resources/Icons/paint.png", 
                                Items =
                                    new List<CircularMenuItem> { lineWidth, fill, line /*, drawStyle */ }
                            };
        }
Esempio n. 7
0
        public void Start()
        {
            IsRunning = true;
            SubscribeToPoiSelections();
            circularMenuItem = new CircularMenuItem { Title = "Evaluate measure" };
            circularMenuItem.Selected += circularMenuItem_Selected;

            circularMenuItem.Id = Guid.NewGuid().ToString();
            circularMenuItem.Icon = "pack://application:,,,/csCommon;component/Resources/Icons/radial_sliders.png";
            AppState.AddCircularMenu(circularMenuItem);

            DisableMenuItem();
        }
Esempio n. 8
0
        public void Init()
        {
            //var viewModel = IoC.GetAllInstances(typeof(IBookmark)).FirstOrDefault() as IBookmark;

            Menu = new CircularMenuItem
            {
                Id    = "Events",
                Title = "test",
                Icon  = "pack://*****:*****@"icons\layers.png";

            AppState.AddStartPanelTabItem(spti);
        }
Esempio n. 9
0
        private void UpdateMenu()
        {
            circularMenuItem.Items.Clear();
            lineColor = ColorCircularMenuItem.CreateColorMenu("Line", 5);
            lineColor.Color = Colors.Black;
            circularMenuItem.Items.Add(lineColor);

            fillColor = ColorCircularMenuItem.CreateColorMenu("Fill", 6);
            fillColor.Color = Colors.Transparent;
            //circularMenuItem.Items.Add(fillColor);

            sketchMenuItem = new CircularMenuItem
            {
                Title = "Draw",
                Id = "Draw",
                CanCheck = true,
                Fill = Brushes.White,
                Icon = "pack://application:,,,/csCommon;component/Resources/Icons/freehand.png"
            };

            Draw = new Draw(AppState.ViewDef.MapControl)
            {
                DrawMode = DrawMode.Freehand,
                LineSymbol = new SimpleLineSymbol {Color = Brushes.Black, Width = 3}
            };
            Draw.DrawBegin += MyDrawObject_DrawBegin;
            Draw.DrawComplete += MyDrawObjectDrawComplete;
            sketchMenuItem.Selected += (s, f) =>
            {
                selectedPoiType = new PoI
                {
                    Service = SketchService,
                    DrawingMode = DrawingModes.Polyline,
                    StrokeColor = lineColor.Color,
                    FillColor = Colors.Transparent,
                    StrokeWidth = 3,
                    
                };
                Draw.LineSymbol = new SimpleLineSymbol {Color = new SolidColorBrush(lineColor.Color), Width = 3};
                //sketchMenuItem.Fill = AppState.AccentBrush;
                Draw.IsEnabled = true;
                drawingNotification = new NotificationEventArgs
                {
                    Id = Guid.NewGuid(),
                    Style = NotificationStyle.Popup,
                    Duration = TimeSpan.FromHours(1),
                    Header = "Drawing activated",
                    Foreground = Brushes.White,
                    Background = AppState.AccentBrush,
                    Image = new BitmapImage(new Uri("pack://application:,,,/csCommon;component/Resources/Icons/Pen.png"))
                };

                AppState.TriggerNotification(drawingNotification);
            };

            var clear = new CircularMenuItem
            {
                Title = "Clear",
                Id = "Clear",
                CanCheck = true,
                Position = 3,
                Icon = "pack://application:,,,/csCommon;component/Resources/Icons/appbar.delete.png"
            };
            clear.Selected += (s, f) => { while (SketchService.PoIs.Any()) SketchService.PoIs.RemoveAt(0); };

            circularMenuItem.Items.Add(sketchMenuItem);
            circularMenuItem.Items.Add(clear);
        }
Esempio n. 10
0
        public void Start()
        {
            IsRunning = true;
            SketchService = CreateService();
            circularMenuItem = new CircularMenuItem {Title = "Start Sketch"};
            circularMenuItem.Selected += circularMenuItem_Selected;

            circularMenuItem.Id = Guid.NewGuid().ToString();
            circularMenuItem.Icon = "pack://application:,,,/csCommon;component/Resources/Icons/Pen.png";
            AppState.AddCircularMenu(circularMenuItem);

            circularMenuItem.OpenChanged += (e, f) =>
            {
                if (circularMenuItem.IsOpen)
                {
                    CreateService();
                    SketchService.Layer.Visible = true;
                    SketchService.Layer.Opacity = 1;
                }
                else
                {
                    if (SketchService != null)
                    {
                        SketchService.Layer.Opacity = 0;
                    }
                    if (Draw != null && Draw.IsEnabled) Draw.IsEnabled = false;
                    DisableSelections();
                }
            };

            UpdateMenu();
            Execute.OnUIThread(() => AppState.DataServer.Services.Add(SketchService));
        }
Esempio n. 11
0
 public void TriggerItemSelected(CircularMenuItem item, CircularMenu m)
 {
     var handler = ItemSelected;
     if (handler != null) handler(this, new MenuItemEventArgs { SelectedItem = item, Menu = m });
 }
Esempio n. 12
0
        public void SelectItem(CircularMenuItem mi)
        {
            if (mi == null) return;
            mi.Menu = this;
            if (mi.Items == null || mi.Items.Count == 0)
            {
                mi.TriggerSelected(this);
                if (SelectedItem != null) SelectedItem.TriggerItemSelected(mi, this);
                Update();
            }
            else
            {
                if (mi != RootItem && mi.Parent == null) mi.Parent = SelectedItem;
                SelectedItem = mi;

                if (SelectedItem.Parent != null)
                {
                    pBack.Visibility = Visibility.Visible;
                    iCenterIcon.Visibility = Visibility.Collapsed;
                }
                else
                {
                    pBack.Visibility = Visibility.Collapsed;
                    iCenterIcon.Visibility = Visibility.Visible;
                    iCenterIcon.Source = mi.Icon != null
                        ? new BitmapImage(new Uri(mi.Icon, UriKind.RelativeOrAbsolute))
                        : null;
                }
                Draw();
            }
        }
Esempio n. 13
0
 private static void HighlightSelectedItem(string speed, CircularMenuItem speedMenu)
 {
     foreach (var i in speedMenu.Items)
     {
         i.Fill = i.Id.Equals(speed)
             ? Brushes.LightGray
             : Brushes.White;
     }
 }
Esempio n. 14
0
        /// <summary>
        /// Create the circular menu for the player.
        /// </summary>
        public void CreatePlayerMenu()
        {
            var speeds = new List<CircularMenuItem>
            {
                new CircularMenuItem {Id = "Speed_1",  Title = "1X",  Position = 1},
                new CircularMenuItem {Id = "Speed_2",  Title = "2X",  Position = 2},
                new CircularMenuItem {Id = "Speed_4",  Title = "4X",  Position = 3},
                new CircularMenuItem {Id = "Speed_-1", Title = "-1X", Position = 7},
                new CircularMenuItem {Id = "Speed_-2", Title = "-2X", Position = 6},
                new CircularMenuItem {Id = "Speed_-4", Title = "-4X", Position = 5}
            };
            var sizes = new List<CircularMenuItem>
            {
                new CircularMenuItem {Id = "Size_Sec",    Title = "1 sec",   Position = 1},
                new CircularMenuItem {Id = "Size_Min",    Title = "1 min",   Position = 2},
                new CircularMenuItem {Id = "Size_Hr",     Title = "1 hour",  Position = 3},
                new CircularMenuItem {Id = "Size_Day",    Title = "1 day",   Position = 4},
                new CircularMenuItem {Id = "Size_Mnth",   Title = "1 month", Position = 5},
                new CircularMenuItem {Id = "Size_Yr",     Title = "1 year",  Position = 6},
                new CircularMenuItem {Id = "Size_Custom", Title = "Custom",  Position = 7}
            };

            foreach (var mi in speeds)
                mi.ItemSelected += Menu_ItemSelected;
            var playMenuItem = new CircularMenuItem
            {
                Id = "Play",
                Title = "Play",
                Position = 1,
                Icon = "pack://application:,,,/csCommon;component/Resources/Icons/play_black.png",
                Background = Brushes.LightGray
            };

            var setPlayEndTimeMenuItem = new CircularMenuItem
            {
                Id = "SetPlayEndTime",
                Title = "Set end",
                Position = 5,
                Icon = "pack://application:,,,/csCommon;component/Resources/Icons/play_Finish.png",
                Background = Brushes.LightGray
            };
            var setPlayStartTimeMenuItem = new CircularMenuItem
             {
                 Id = "SetPlayStartTime",
                 Title = "Set start",
                 Position = 6,
                 Icon = "pack://application:,,,/csCommon;component/Resources/Icons/play_SetStart.png",
                 Background = Brushes.LightGray
             };
            var speedMenuItem = new CircularMenuItem
            {
                Id = "Speed",
                Title = "Speed 1x",
                Position = 3,
                Icon = "pack://application:,,,/csCommon;component/Resources/Icons/Gauge.png",
                Background = Brushes.LightGray,
                Items = speeds
            };
            var stepsize = new CircularMenuItem
            {
                Id = "Step",
                Title = "Stepsize",
                Position = 4,
                Icon = "pack://application:,,,/csCommon;component/Resources/Icons/Gauge.png",
                Background = Brushes.LightGray,
                Items = sizes
            };
            var rootMenuItems = new List<CircularMenuItem>
            {
                playMenuItem,
                new CircularMenuItem
                {
                    Id = "Stop",
                    Title = "Stop",
                    Position = 2,
                    Icon = "pack://application:,,,/csCommon;component/Resources/Icons/stop_black.png",
                    Background = Brushes.LightGray
                },
                speedMenuItem,
                stepsize,
                setPlayEndTimeMenuItem,
                setPlayStartTimeMenuItem
            };
            var menu = new CircularMenuItem
            {
                Id = "TimePlayer",
                Title = "Player",
                Icon = "pack://application:,,,/csCommon;component/Resources/Icons/play_media.png",
                Background = Brushes.Black,
                Items = rootMenuItems
            };

            foreach (var mi in rootMenuItems)
                mi.ItemSelected += Menu_ItemSelected;
            menu.ItemSelected += Menu_ItemSelected;

            HighlightSelectedItem("Speed_" + playSpeedFactor, speedMenuItem);
            var stepsizetext = ConvertStepToString(PlayStepSize);
            HighlightSelectedItem(stepsizetext, stepsize);
            if (stepsizetext == "Size_Custom")
            {
                var custom = sizes.FirstOrDefault(k => k.Id == "Size_Custom");
                if (custom != null) custom.Title = "Custom: " + PlayStepSize;
            }
            AppStateSettings.Instance.AddCircularMenu(menu);
        }