Mono.Terminal.MenuBar.DrawMenu C# (CSharp) Method

DrawMenu() private method

private DrawMenu ( int idx, int col, int line ) : void
idx int
col int
line int
return void
        void DrawMenu(int idx, int col, int line)
        {
            int max = 0;
            var menu = Menus [idx];

            if (menu.Children == null)
                return;

            foreach (var m in menu.Children){
                if (m == null)
                    continue;

                if (m.Width > max)
                    max = m.Width;
            }
            max += 4;
            DrawFrame (col + x, line, max, menu.Children.Length + 2, true);
            for (int i = 0; i < menu.Children.Length; i++){
                var item = menu.Children [i];

                Move (line + 1 + i, col + 1);
                Curses.attrset (item == null ? Application.ColorFocus : i == menu.Current ? Application.ColorMenuSelected : Application.ColorMenu);
                for (int p = 0; p < max - 2; p++)
                    Curses.addch (item == null ? Curses.ACS_HLINE : ' ');

                if (item == null)
                    continue;

                Move (line + 1 + i, col + 2);
                DrawHotString (item.Title,
                           i == menu.Current ? Application.ColorMenuHotSelected : Application.ColorMenuHot,
                           i == menu.Current ? Application.ColorMenuSelected : Application.ColorMenu);

                // The help string
                var l = item.Help.Length;
                Move (line + 1 + i, col + x + max - l - 2);
                Curses.addstr (item.Help);
            }
        }