예제 #1
0
        //-------------------------------------------------------------
        public MenuItemObject GetMenuItemByRoles(MenuItemObject menuObj, List <string> roleNames)
        {
            if (menuObj == null)
            {
                return(null);
            }

            //Menü Elemanında Rol tanımlıysa  alt elemanlara iniyor
            //insersect: İki Listenin kesişimini alır
            if (menuObj.Roles.Intersect(roleNames).Count() > 0 || menuObj.Roles[0] == "*")
            {
                for (int i = 0; i < menuObj.ChildMenuItems.Count; i++)
                {
                    //Herbir çocuk için alt menüye iniyor
                    menuObj.ChildMenuItems[i] = GetMenuItemByRoles(menuObj.ChildMenuItems[i], roleNames);
                }

                //null elemanları kaldırıyor
                menuObj.ChildMenuItems.RemoveAll(m => m == null);

                return(menuObj);
            }
            else
            {
                return(null);
            }
        }
예제 #2
0
 internal void setProperties(MenuItemObject menuItem)
 {
     MenuItem = menuItem;
     //Debug.Log("Should have created:" + menuItem.text);
     if (MainLabel)
     {
         MainLabel.pivot = UIWidget.Pivot.TopLeft;
         MainLabel.text  = MenuItem.text;
         MainLabel.gameObject.transform.localPosition = new Vector3(ConvertLeft(MenuItem.left), ConvertTop(MenuItem.top));
         if (MenuItem.color != null)
         {
             MainLabel.color = DisplayManager.HexToColor(MenuItem.color);
         }
         else
         {
             //Debug.Log("Color is null for:" + menuItem.text);
         }
         try
         {
             MainLabel.fontSize = int.Parse(MenuItem.fontsize) * 2;
         }
         catch (Exception c)
         {
             Debug.Log("Exception" + MenuItem.key);
         }
     }
     else
     {
         //Debug.Log("Main Label is Null");
     }
 }
예제 #3
0
        //-------------------------------------------------------------
        public List <MenuItemObject> GetMenuList(List <string> roleNames)
        {
            List <MenuItemObject> allMenuList = ReadMenuItems();
            List <MenuItemObject> menuList    = new List <MenuItemObject>();
            MenuItemObject        mainMenu    = null;

            foreach (MenuItemObject item in allMenuList)
            {
                menuList.Add(GetMenuItemByRoles(item, roleNames));
            }

            //null elemanları kaldırıyor
            menuList.RemoveAll(m => m == null);

            if (menuList.Count >= maxMainMenuItemCount)
            {
                mainMenu = new MenuItemObject()
                {
                    ChildMenuItems = menuList.GetRange(0, menuList.Count),
                    Icon           = "fa fa-bars",
                    Link           = "javascript:;",
                    Name           = "Uygulamalar"
                };

                menuList.Clear();
                menuList.Add(mainMenu);
            }

            return(menuList);
        }
예제 #4
0
파일: AppMenu.cs 프로젝트: bs118636/TekApp
        public void AddMenuItem <TDataContext, TUserControl>(string header) where TUserControl : UserControl
        {
            var obj = new MenuItemObject()
            {
                DataContextObject = typeof(TDataContext),
                UserControl       = typeof(TUserControl)
            };

            MenuItemObjectList.Add(obj);

            var item = new MenuItem()
            {
                Header      = header,
                IsCheckable = true,
                IsEnabled   = true
            };

            item.Click += new RoutedEventHandler(ClickEvent);

            Binding menuCheckBinding = new Binding("IsChecked")
            {
                Source = this,
                Mode   = BindingMode.TwoWay,
                UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
            };

            BindingOperations.SetBinding(item, MenuItem.IsCheckableProperty, menuCheckBinding);
            MenuItemList.Add(item);
        }
        /// <summary>
        ///
        /// </summary>
        protected override void ProcessRecord()
        {
            Regex rxOption = new Regex("^\\d+$");

            if (string.IsNullOrWhiteSpace(OptionKey) && !IsSpace && (Script != null || Func != null))
            {
                //if they did not assign a option, then auto-assign one via next index #
                var idxOptions = this.MenuObject.MenuItems.Where(i => i.Option != null && rxOption.IsMatch(i.Option)).Select(i => int.Parse(i.Option)).ToArray();
                int max        = idxOptions.Length == 0 ? 0 : idxOptions.OrderBy(i => i).Max();
                OptionKey = (max + 1).ToString();
            }
            else if (!IsSpace && (Script != null || Func != null))
            {
                var existing = this.MenuObject.MenuItems.Where(i => i.Option == OptionKey).FirstOrDefault();
                if (existing != null)
                {
                    throw new Exception($"Menu item already exists with option '{OptionKey}");
                }
            }
            else if (new string[] { "q", "Q" }.Contains(OptionKey))
            {
                throw new Exception($"Menu item already exists with option '{OptionKey}");
            }


            MenuItemObject menuItem = new MenuItemObject
            {
                Name              = this.Name,
                DisplayName       = this.DisplayName,
                Description       = this.Description,
                Script            = this.Script,
                ScriptArgs        = this.ScriptArgs,
                Func              = this.Func,
                FuncArgs          = this.FuncArgs,
                ForegroundColor   = this.ForegroundColor,
                DisableConfirm    = this.DisableConfirm,
                ConfirmTargetData = this.ConfirmTargetData,
                IsSpace           = this.IsSpace,
                Option            = this.OptionKey,
                VisibleScript     = this.VisibleScript,
                VisibleScriptArgs = this.VisibleScriptArgs,
                VisibleFunc       = this.VisibleFunc,
                VisibleFuncArgs   = this.VisibleFuncArgs,
                Default           = this.Default
            };

            if (InsertAt.HasValue)
            {
                this.MenuObject.MenuItems.Insert(InsertAt.Value, menuItem);
            }
            else
            {
                this.MenuObject.MenuItems.Add(menuItem);
            }

            WriteObject(this.MenuObject);

            base.ProcessRecord();
        }
예제 #6
0
 public void setProperties(MenuItemObject MenuItem)
 {
     SceneID = MenuItem.promoid;
     Texture1.GetComponent <UITexture>().pivot = UIWidget.Pivot.TopLeft;
     //Texture1.GetComponent<RectTransform>().sizeDelta = new Vector2(height,width);
     Texture1.GetComponent <UITexture>().height = MenuItem.height * 2;
     Texture1.GetComponent <UITexture>().width  = MenuItem.width * 2;
     Texture1.transform.localPosition           = new Vector3(ConvertLeft(MenuItem.left), ConvertTop(MenuItem.top));
     Debug.Log("Loading Picture Data:" + MenuItem.promoid);
     StartCoroutine(getPictureSlideShowData(MenuItem.promoid));
 }
예제 #7
0
 private void MenuLayoutChanged(object sender, ValueChangedEventArgs e)
 {
     MenuItemObjects.Clear();
     Debug.Log("Menu Layout Changed:" + e.Snapshot.ChildrenCount);
     foreach (DataSnapshot child in e.Snapshot.Children)
     {
         MenuItemObject tempObj = JsonConvert.DeserializeObject <MenuItemObject>(child.GetRawJsonValue());
         tempObj.key = child.Key;
         //    Debug.Log("Temp Key: " + tempObj.key);
         MenuItemObjects.Add(tempObj);
     }
     DisplayManager.displayManager.RestaurantManager.BroadcastMessage("UpdateMenuChild");
 }
예제 #8
0
        //-------------------------------------------------------------
        public static IEnumerable <MenuItemObject> GetNodesSadeceEnUstNodes(MenuItemObject node)
        {
            if (node == null)
            {
                yield break;
            }

            yield return(node);

            foreach (var n in node.ChildMenuItems)
            {
                yield return(n);
            }
        }
예제 #9
0
        //-------------------------------------------------------------

        public static IEnumerable <MenuItemObject> GetNodes(MenuItemObject node)
        {
            if (node == null)
            {
                yield break;
            }

            yield return(node);

            foreach (var n in node.ChildMenuItems)
            {
                foreach (var innerN in GetNodes(n))
                {
                    yield return(innerN);
                }
            }
        }
예제 #10
0
    private void HandleValueChanged(object sender, ValueChangedEventArgs args)
    {
        //Debug.Log("Handle Value Changed");
        if (args.DatabaseError != null)
        {
            //Debug.LogError(args.DatabaseError.Message);
            return;
        }
        switch (args.Snapshot.Child("type").Value.ToString())
        {
        case "Label":

            break;
        }
        MenuItem = JsonConvert.DeserializeObject <MenuItemObject>(args.Snapshot.GetRawJsonValue());
        setProperties(MenuItem);
    }
예제 #11
0
 internal void setProperties(string Json)
 {
     MenuItem = JsonConvert.DeserializeObject <MenuItemObject>(Json);
     setProperties(MenuItem);
 }
        /// <summary>
        ///
        /// </summary>
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();
            try
            {
                MenuItemObject menuSelected = null;
                #region InvokeItem
                if (MyInvocation.BoundParameters.ContainsKey("InvokeItem"))
                {
                    menuSelected = Menu.MenuItems[this.InvokeItem];

                    if (menuSelected != null)
                    {
                        WriteVerbose($"Menu: {menuSelected.Name}");
                        if (menuSelected.DisableConfirm.HasValue && !menuSelected.DisableConfirm.Value && !this.ShouldProcess(menuSelected.ConfirmTargetData, $"{menuSelected.Name}"))
                        {
                            WriteWarning($"Execution aborted for [{menuSelected.Name}]");
                        }
                        else if (menuSelected.Script != null)
                        {
                            Host.UI.WriteLine(ConsoleColor.White, ConsoleColor.DarkBlue, $"Invoking [{menuSelected.Name}]");
                            Host.UI.Write($"Args: ");
                            if (menuSelected.ScriptArgs != null)
                            {
                                foreach (var arg in menuSelected.ScriptArgs)
                                {
                                    Host.UI.Write($"{arg} ");
                                }
                            }
                            Host.UI.WriteLine();
                            try
                            {
                                WriteVerbose("Calling Script");
                                var r_objs = menuSelected.Script.InvokeWithContext(null, null, menuSelected.ScriptArgs);
                                foreach (var obj in r_objs)
                                {
                                    WriteObject(obj.BaseObject);
                                }
                                WriteVerbose("Called Script");
                            }
                            catch (RuntimeException ex)
                            {
                                WriteError(ex.ErrorRecord);
                            }
                            Host.UI.WriteLine(ConsoleColor.White, ConsoleColor.DarkBlue, $"Invoke [{menuSelected.Name}] Completed!");
                        }
                        else if (menuSelected.Func != null)
                        {
                            Host.UI.WriteLine(ConsoleColor.White, ConsoleColor.DarkBlue, $"Invoking [{menuSelected.Name}]");
                            Host.UI.Write($"Args: ");
                            if (menuSelected.FuncArgs != null)
                            {
                                foreach (var arg in menuSelected.FuncArgs)
                                {
                                    Host.UI.Write($"{arg} ");
                                }
                            }
                            Host.UI.WriteLine();
                            try
                            {
                                WriteVerbose("Calling Func");
                                var r_objs = menuSelected.Func(menuSelected, menuSelected.FuncArgs ?? new object[0]);
                                if (r_objs != null)
                                {
                                    foreach (var obj in r_objs)
                                    {
                                        WriteObject(obj);
                                    }
                                }
                                WriteVerbose("Called Func");
                            }
                            catch (RuntimeException ex)
                            {
                                WriteError(ex.ErrorRecord);
                            }
                            Host.UI.WriteLine(ConsoleColor.White, ConsoleColor.DarkBlue, $"Invoke [{menuSelected.Name}] Completed!");
                        }
                        else
                        {
                            WriteWarning($"No Script or Func to perform for [{menuSelected.Name}]");
                        }
                    }
                }
                #endregion
                menuSelected = null;
                #region Show Menu
                Stopwatch processingTime = Stopwatch.StartNew();
                Regex     rxOption       = new Regex("^\\d+$");
                var       menuLines      = new ArrayList();

                if (Menu == null)
                {
                    WriteError(new ErrorRecord(new ArgumentNullException("Menu", "Menu parameter must not be null."), "MenuNotGiven", ErrorCategory.InvalidArgument, null));
                    return;
                }

                var menuFrame     = new string(MenuOptions.MenuFillChar, (MenuOptions.MaxWidth - 2));
                var menuEmptyLine = new string(' ', (MenuOptions.MaxWidth - 2));
                // Top Header border
                WriteMenuLine(menuFrame, MenuOptions.MenuFillColor);
                // Menu Display Name
                WriteMenuLine(Menu.DisplayName, MenuOptions.MenuNameColor);
                if (!string.IsNullOrWhiteSpace(Menu.Description))
                {
                    WriteMenuLine(Menu.Description, MenuOptions.MenuNameColor);
                }

                WriteMenuLine(menuEmptyLine, MenuOptions.MenuFillColor);

                if (HeaderScript != null)
                {
                    try
                    {
                        HeaderScript.InvokeWithContext(null, null);
                    }
                    catch (RuntimeException ex)
                    {
                        WriteError(ex.ErrorRecord);
                    }
                }
                else if (MenuOptions.HeaderScript != null)
                {
                    try
                    {
                        MenuOptions.HeaderScript.InvokeWithContext(null, null);
                    }
                    catch (RuntimeException ex)
                    {
                        WriteError(ex.ErrorRecord);
                    }
                }
                else if (HeaderFunc != null)
                {
                    try
                    {
                        HeaderFunc(this.Menu, MenuOptions);
                    }
                    catch (RuntimeException ex)
                    {
                        WriteError(ex.ErrorRecord);
                    }
                }
                else if (MenuOptions.HeaderFunc != null)
                {
                    try
                    {
                        MenuOptions.HeaderFunc(this.Menu, MenuOptions);
                    }
                    catch (RuntimeException ex)
                    {
                        WriteError(ex.ErrorRecord);
                    }
                }
                else
                {
                    WriteMenuLine(MenuOptions.Heading, MenuOptions.HeadingColor);
                    WriteMenuLine(menuEmptyLine, MenuOptions.MenuFillColor);
                    WriteMenuLine(MenuOptions.SubHeading, MenuOptions.SubHeadingColor);
                }
                WriteMenuLine(menuEmptyLine, MenuOptions.MenuFillColor);

                // Bottom Header border
                WriteMenuLine(menuFrame, MenuOptions.MenuFillColor);
                WriteMenuLine(menuEmptyLine, MenuOptions.MenuFillColor);

                var idxOptions    = this.Menu.MenuItems.Where(i => rxOption.IsMatch($"{i.Option}")).Select(i => int.Parse(i.Option)).ToArray();
                int maxIdxOptions = (idxOptions.Length == 0) ? 0 : idxOptions.OrderBy(i => i).Max();

                bool visible;
                foreach (var item in Menu.MenuItems)
                {
                    ConsoleColor menuColor;
                    if (!string.IsNullOrWhiteSpace(item.Option) && !(item.Func == null && item.Script == null))
                    {
                        menuColor = MenuOptions.MenuItemColor;
                    }
                    else
                    {
                        menuColor = MenuOptions.ViewOnlyColor;
                    }

                    visible = true;
                    if (item.VisibleScript != null)
                    {
                        Collection <PSObject> aOut = null;
                        try
                        {
                            aOut = item.VisibleScript.InvokeWithContext(null, null, item.VisibleScriptArgs);
                        }
                        catch (RuntimeException ex)
                        {
                            WriteError(ex.ErrorRecord);
                        }
                        if (aOut != null && aOut.Count > 0 && aOut[0].BaseObject is bool)
                        {
                            visible = (bool)aOut[0].BaseObject;
                        }
                        else
                        {
                            WriteWarning($"Object returned from VisibleScript script is not a boolean value for menu item [{item.Name}], returned [{aOut}]");
                        }
                    }
                    else if (item.VisibleFunc != null)
                    {
                        try
                        {
                            visible = item.VisibleFunc(item, item.VisibleFuncArgs);
                        }
                        catch (RuntimeException ex)
                        {
                            WriteError(ex.ErrorRecord);
                        }
                    }

                    if (visible)
                    {
                        if (item.ForegroundColor != null)
                        {
                            menuColor = item.ForegroundColor.Value;
                        }

                        if (item.IsSpace.HasValue && item.IsSpace.Value)
                        {
                            WriteMenuLine(" ", menuColor, true);
                        }
                        else if (!string.IsNullOrWhiteSpace(item.Option))
                        {
                            if (DefaultOption == "Q" && (item.Default ?? false)) // We only use the first option that is set as default.
                            {
                                DefaultOption = item.Option;
                            }
                            var Option = item.Option;
                            if (maxIdxOptions >= 10 && rxOption.IsMatch(item.Option) && int.Parse(item.Option) < 10)
                            {
                                Option = $" {Option}";
                            }
                            WriteMenuLine($"{Option}. {item.DisplayName}", menuColor, true);
                        }
                        else
                        {
                            WriteMenuLine($"{item.DisplayName}", menuColor, true);
                        }
                    }
                }

                WriteMenuLine(menuEmptyLine, MenuOptions.MenuFillColor);
                WriteMenuLine("Q Exit Menu", ConsoleColor.Red, true);

                WriteMenuLine(menuEmptyLine, MenuOptions.MenuFillColor);
                WriteMenuLine(menuEmptyLine, MenuOptions.MenuFillColor);

                WriteMenuLine(MenuOptions.FooterText, MenuOptions.FooterTextColor);
                WriteMenuLine(menuEmptyLine, MenuOptions.MenuFillColor);

                // Bottom border
                WriteMenuLine(menuFrame, MenuOptions.MenuFillColor);

                Host.UI.Write($"Please choose a option [{DefaultOption}] ");
                processingTime.Stop();
                LogPerfEvent(processingTime.Elapsed + MetricData.ProcessingTime);
                userSelection = Host.UI.ReadLine();
                WriteVerbose($"Selection: {userSelection}");

                if (string.IsNullOrWhiteSpace(userSelection))
                {
                    userSelection = DefaultOption;
                    WriteVerbose($"Using default option: {userSelection}");
                }
                else
                {
                    WriteVerbose($"Selection: {userSelection}");
                }
                _qosEvent.Selected = userSelection;

                if (userSelection.Equals("Q", StringComparison.CurrentCultureIgnoreCase))
                {
                    WriteVerbose("Exiting Menu");
                    WriteObject("quit");
                    return;
                }

                menuSelected = Menu.MenuItems.Where(i => i.Option != null && i.Option.Equals(userSelection, StringComparison.CurrentCultureIgnoreCase)).SingleOrDefault();
                visible      = true;
                if (menuSelected != null && menuSelected.VisibleScript != null)
                {
                    Collection <PSObject> aOut = null;
                    try
                    {
                        aOut = menuSelected.VisibleScript.InvokeWithContext(null, null, menuSelected.VisibleScriptArgs);
                    }
                    catch (RuntimeException ex)
                    {
                        WriteError(ex.ErrorRecord);
                    }
                    if (aOut != null && aOut.Count > 0 && aOut[0].BaseObject is bool)
                    {
                        visible = (bool)aOut[0].BaseObject;
                    }
                    else
                    {
                        WriteWarning($"Object returned from VisibleScript script is not a boolean value for menu item [{menuSelected.Name}], returned [{aOut}]");
                    }
                }
                else if (menuSelected != null && menuSelected.VisibleFunc != null)
                {
                    try
                    {
                        visible = menuSelected.VisibleFunc(menuSelected, menuSelected.VisibleFuncArgs);
                    }
                    catch (RuntimeException ex)
                    {
                        WriteError(ex.ErrorRecord);
                    }
                }
                if (!visible)
                {
                    menuSelected = null;
                }

                if (menuSelected != null)
                {
                    WriteVerbose($"Menu: {menuSelected.Name}");
                    if (menuSelected.DisableConfirm.HasValue && !menuSelected.DisableConfirm.Value && !this.ShouldProcess(menuSelected.ConfirmTargetData, $"{menuSelected.Name}"))
                    {
                        WriteWarning("Execution aborted");
                    }
                    else if (menuSelected.Script != null)
                    {
                        Host.UI.WriteLine(ConsoleColor.White, ConsoleColor.DarkBlue, $"Invoking [{menuSelected.Name}]");
                        Host.UI.Write($"Args: ");
                        if (menuSelected.ScriptArgs != null)
                        {
                            foreach (var arg in menuSelected.ScriptArgs)
                            {
                                Host.UI.Write($"{arg} ");
                            }
                        }
                        Host.UI.WriteLine();
                        try
                        {
                            WriteVerbose("Calling Script");
                            var r_objs = menuSelected.Script.InvokeWithContext(null, null, menuSelected.ScriptArgs);
                            foreach (var obj in r_objs)
                            {
                                WriteObject(obj.BaseObject);
                            }
                            WriteVerbose("Called Script");
                        }
                        catch (RuntimeException ex)
                        {
                            WriteError(ex.ErrorRecord);
                        }
                        Host.UI.WriteLine(ConsoleColor.White, ConsoleColor.DarkBlue, $"Invoke [{menuSelected.Name}] Completed!");
                    }
                    else if (menuSelected.Func != null)
                    {
                        Host.UI.WriteLine(ConsoleColor.White, ConsoleColor.DarkBlue, $"Invoking [{menuSelected.Name}]");
                        Host.UI.Write($"Args: ");
                        if (menuSelected.FuncArgs != null)
                        {
                            foreach (var arg in menuSelected.FuncArgs)
                            {
                                Host.UI.Write($"{arg} ");
                            }
                        }
                        Host.UI.WriteLine();
                        try
                        {
                            WriteVerbose("Calling Func");
                            var r_objs = menuSelected.Func(menuSelected, menuSelected.FuncArgs ?? new object[0]);
                            if (r_objs != null)
                            {
                                foreach (var obj in r_objs)
                                {
                                    WriteObject(obj);
                                }
                            }
                            WriteVerbose("Called Func");
                        }
                        catch (RuntimeException ex)
                        {
                            WriteError(ex.ErrorRecord);
                        }
                        Host.UI.WriteLine(ConsoleColor.White, ConsoleColor.DarkBlue, $"Invoke [{menuSelected.Name}] Completed!");
                    }
                    else
                    {
                        WriteWarning($"No Script or Func to perform for [{menuSelected.Name}]");
                    }
                }
                else
                {
                    Host.UI.WriteLine(ConsoleColor.Red, Host.UI.RawUI.BackgroundColor, $"Menuitem not found [{userSelection}]");
                    Host.UI.Write("Press enter to continue...");
                    Host.UI.ReadLine();
                }
                #endregion
            }
            catch (Exception ex)
            {
                WriteError(new ErrorRecord(ex, "5000", ErrorCategory.NotSpecified, this));
            }
            finally
            {
            }
        }