Exemple #1
0
        /// <summary>
        /// Инициализация п.п. главного меню
        ///  в ~ от разрешенных к загрузке плюгИнов
        /// </summary>
        /// <param name="strErr">Сообщение об ошибке</param>
        /// <returns>Результат инициализации меню</returns>
        private int initializeMenu(out string strErr)
        {
            int iRes = -1
            , idListener = -1
            , iKeyPlugIn = -1, iKeyFPanel = -1;

            strErr = string.Empty;

            string strUserDomainName = string.Empty;

            string [] arIdFPanels = null;

            idListener = DbSources.Sources().Register(s_listFormConnectionSettings[(int)CONN_SETT_TYPE.MAIN_DB].getConnSett(), false, @"MAIN_DB");

            initializeLogging();

            s_plugIns.Load(HTepUsers.GetPlugins(idListener, out iRes), out iRes);

            if (iRes == 0)
            {
                arIdFPanels = HTepUsers.GetIdIsUseFPanels(idListener, out iRes).Split(new char[] { ',' }, StringSplitOptions.None);
                //Проверить рез-т чтения наименования плюгина
                if (iRes == 0)
                {
                    ToolStripMenuItem miOwner = null
                    , miItem = null;
                    string[] arHierarchyOwnerMenuItems;
                    //Циклл по строкам - идентификатрам/разрешениям использовать плюгин
                    foreach (string key in arIdFPanels)
                    {
                        iKeyFPanel = Int32.Parse(key);
                        iKeyPlugIn = s_plugIns.GetKeyOfIdFPanel(iKeyFPanel);
                        if (!(iKeyPlugIn < 0))
                        {
                            arHierarchyOwnerMenuItems = s_plugIns[iKeyPlugIn].GetNameOwnerMenuItem(iKeyFPanel).Split(new char[] { '\\' }, StringSplitOptions.None);
                            //Поиск пункта "родительского" пункта меню для плюг'ина
                            miOwner = FindMainMenuItemOfText(arHierarchyOwnerMenuItems[0]);
                            //Проверка найден ли "родительский" пункт меню для плюг'ина
                            if (miOwner == null)
                            {                  //НЕ найден - создаем
                                int indx = -1; // индекс для добавляемого пункта
                                if (arHierarchyOwnerMenuItems[0].Equals(@"Помощь") == false)
                                {
                                    // индекс для всех пунктов кроме "Помощь"
                                    indx = this.MainMenuStrip.Items.Count - 1;
                                }
                                else
                                {
                                    ;
                                }

                                if (indx < 0)
                                {
                                    // для пункта "Помощь" - он всегда крайний
                                    //  , и не имеет сложной иерархии
                                    this.MainMenuStrip.Items.Add(miOwner = new ToolStripMenuItem(arHierarchyOwnerMenuItems[0]));
                                }
                                else
                                {
                                    // для всех пунктов кроме "Помощь"
                                    this.MainMenuStrip.Items.Insert(indx, miOwner = new ToolStripMenuItem(arHierarchyOwnerMenuItems[0]));
                                }
                            }
                            else
                            {
                                ;
                            }
                            //Реализовать иерархию п.п. (признак наличия иерархии - длина массива)
                            for (int i = 1; i < arHierarchyOwnerMenuItems.Length; i++)
                            {
                                //Найти п. меню очередного уровня
                                miItem = FindMainMenuItemOfText(arHierarchyOwnerMenuItems[i]);
                                if (miItem == null)
                                {
                                    // в случае отсутствия добавить к ранее найденному
                                    miOwner.DropDownItems.Add(miItem = new ToolStripMenuItem(arHierarchyOwnerMenuItems[i]));
                                }
                                else
                                {
                                    ;
                                }

                                miOwner = miItem;
                            }
                            //Добавить пункт меню для плюг'ина
                            miItem     = miOwner.DropDownItems.Add(s_plugIns[iKeyPlugIn].GetNameMenuItem(iKeyFPanel)) as ToolStripMenuItem;
                            miItem.Tag = iKeyFPanel;
                            //Обработку выбора пункта меню предоставить плюг'ину
                            miItem.Click += s_plugIns[iKeyPlugIn].OnClickMenuItem; //postOnClickMenuItem;
                            //Добавить обработчик запросов для плюг'ина от главной формы
                            // только ОДИН раз
                            if ((s_plugIns[iKeyPlugIn] as PlugInBase).IsEvtDataAskedHostHandled == false)
                            {
                                (s_plugIns[iKeyPlugIn] as PlugInBase).EvtDataAskedHost += new DelegateObjectFunc(s_plugIns.OnEvtDataAskedHost);
                            }
                            else
                            {
                                ;
                            }

                            initializePlugIn(s_plugIns[iKeyPlugIn]);
                        }
                        else
                        {
                            Logging.Logg().Error(@"FormMain::initializeMenu () - не найден плюгИн для вкладки (ID=" + iKeyFPanel + @")...", Logging.INDEX_MESSAGE.NOT_SET);
                        }
                    }

                    if (iRes == 0)
                    {
                        профайлАвтоЗагрузитьСохранитьToolStripMenuItem.Checked = Convert.ToBoolean(HTepUsers.GetAllowed((int)HTepUsers.ID_ALLOWED.AUTO_LOADSAVE_USERPROFILE_CHECKED));
                        профайлАвтоЗагрузитьСохранитьToolStripMenuItem.Enabled = Convert.ToBoolean(HTepUsers.GetAllowed((int)HTepUsers.ID_ALLOWED.AUTO_LOADSAVE_USERPROFILE_ACCESS));
                        //Успешный запуск на выполнение приложения
                        Start();
                    }
                    else
                    {
                        switch (iRes)
                        {
                        case -2:
                            strErr = @"Не удалось загрузить все разрешенные для использования модули из списка (несоответствие идентификатроов)";
                            break;

                        case -1:
                        default:
                            strErr = @"Не удалось загрузить все разрешенные для использования модули из списка";
                            break;
                        }
                    }
                }
                else
                {
                    if (iRes == 0)
                    {
                        iRes = -1;
                    }
                    else
                    {
                        ;
                    }
                    strErr = @"Не удалось сформировать список разрешенных для использования модулей";
                }
            }
            else
            {
                if (iRes == 0)
                {
                    iRes = -1;
                }
                else
                {
                    ;
                }
                strErr = @"Ошибка при загрузке библиотек - см. лог-файл...";
            }

            DbSources.Sources().UnRegister(idListener);

            return(iRes);
        }
Exemple #2
0
        /// <summary>
        /// Инициализация п.п. главного меню
        ///  в ~ от разрешенных к загрузке плюгИнов
        /// </summary>
        /// <param name="strErr">Сообщение об ошибке</param>
        /// <returns>Результат инициализации меню</returns>
        private int initializeMenu(out string strErr)
        {
            int iRes     = -1
            , idListener = -1;

            strErr = string.Empty;

            string strUserDomainName = string.Empty;

            idListener = DbSources.Sources().Register(s_listFormConnectionSettings[(int)CONN_SETT_TYPE.MAIN_DB].getConnSett(), false, @"MAIN_DB");

            try {
                using (HTepUsers users = new HTepUsers(idListener)) {; }

                iRes = 0;
            }
            catch (Exception e) { }

            if (iRes == 0)
            {
                initializeLogging();

                s_plugIns.Load(HTepUsers.GetPlugins(idListener, out iRes));

                if (iRes == 0)
                {
                    //Проверить рез-т чтения наименования плюгина
                    if (iRes == 0)
                    {
                        ToolStripMenuItem miOwner = null
                        , miItem = null;
                        string[] arHierarchyOwnerMenuItems;
                        //Циклл по строкам - идентификатрам/разрешениям использовать плюгин
                        foreach (IPlugIn plugIn in s_plugIns.Values)
                        {
                            arHierarchyOwnerMenuItems =
                                (plugIn as PlugInMenuItem).NameOwnerMenuItem.Split(new char [] { '\\' }, StringSplitOptions.None);;
                            //Поиск пункта "родительского" пункта меню для плюг'ина
                            miOwner = FindMainMenuItemOfText(arHierarchyOwnerMenuItems[0]);
                            //Проверка найден ли "родительский" пункт меню для плюг'ина
                            if (miOwner == null)
                            {                  //НЕ найден - создаем
                                int indx = -1; // индекс для добавляемого пункта
                                if (arHierarchyOwnerMenuItems[0].Equals(@"Помощь") == false)
                                {
                                    // индекс для всех пунктов кроме "Помощь"
                                    indx = this.MainMenuStrip.Items.Count - 1;
                                }
                                else
                                {
                                    ;
                                }

                                if (indx < 0)
                                {
                                    // для пункта "Помощь" - он всегда крайний
                                    //  , и не имеет сложной иерархии
                                    this.MainMenuStrip.Items.Add(miOwner = new ToolStripMenuItem(arHierarchyOwnerMenuItems[0]));
                                }
                                else
                                {
                                    // для всех пунктов кроме "Помощь"
                                    this.MainMenuStrip.Items.Insert(indx, miOwner = new ToolStripMenuItem(arHierarchyOwnerMenuItems[0]));
                                }
                            }
                            else
                            {
                                ;
                            }
                            //Реализовать иерархию п.п. (признак наличия иерархии - длина массива)
                            for (int i = 1; i < arHierarchyOwnerMenuItems.Length; i++)
                            {
                                //Найти п. меню очередного уровня
                                miItem = FindMainMenuItemOfText(arHierarchyOwnerMenuItems[i]);
                                if (miItem == null)
                                {
                                    // в случае отсутствия добавить к ранее найденному
                                    miOwner.DropDownItems.Add(miItem = new ToolStripMenuItem(arHierarchyOwnerMenuItems[i]));
                                }
                                else
                                {
                                    ;
                                }

                                miOwner = miItem;
                            }
                            //Добавить пункт меню для плюг'ина
                            miItem = miOwner.DropDownItems.Add((plugIn as PlugInMenuItem).NameMenuItem) as ToolStripMenuItem;
                            //Обработку выбора пункта меню предоставить плюг'ину
                            miItem.Click += (plugIn as PlugInMenuItem).OnClickMenuItem;
                            //Добавить обработчик запросов для плюг'ина от главной формы
                            (plugIn as PlugInBase).EvtDataAskedHost += new DelegateObjectFunc(s_plugIns.OnEvtDataAskedHost);

                            initializePlugIn(plugIn);
                        }

                        if (iRes == 0)
                        {
                            профайлАвтоЗагрузитьСохранитьToolStripMenuItem.Checked = Convert.ToBoolean(HTepUsers.GetAllowed((int)HTepUsers.ID_ALLOWED.AUTO_LOADSAVE_USERPROFILE_CHECKED));
                            профайлАвтоЗагрузитьСохранитьToolStripMenuItem.Enabled = Convert.ToBoolean(HTepUsers.GetAllowed((int)HTepUsers.ID_ALLOWED.AUTO_LOADSAVE_USERPROFILE_ACCESS));
                            //Успешный запуск на выполнение приложения
                            Start();
                        }
                        else
                        {
                            switch (iRes)
                            {
                            case -2:
                                strErr = @"Не удалось загрузить все разрешенные для использования модули из списка (несоответствие идентификатроов)";
                                break;

                            case -1:
                            default:
                                strErr = @"Не удалось загрузить все разрешенные для использования модули из списка";
                                break;
                            }
                        }
                    }
                    else
                    {
                        if (iRes == 0)
                        {
                            iRes = -1;
                        }
                        else
                        {
                            ;
                        }
                        strErr = @"Не удалось сформировать список разрешенных для использования модулей";
                    }
                }
                else
                {
                    if (iRes == 0)
                    {
                        iRes = -1;
                    }
                    else
                    {
                        ;
                    }
                    strErr = @"Не удалось сформировать правила для роли пользователя";
                }
            }
            else
            {
                if (iRes == 0)
                {
                    iRes = -1;
                }
                else
                {
                    ;
                }
                strErr = @"Не удалось идентифицировать пользователя";
            }

            DbSources.Sources().UnRegister(idListener);

            return(iRes);
        }