예제 #1
0
        /// <summary>
        /// Загрузить вкладки, сохраненные в профиле пользователя
        /// </summary>
        private void loadProfile()
        {
            PlugInMenuItem plugIn;
            string         ids = HTepUsers.GetAllowed((int)HTepUsers.ID_ALLOWED.USERPROFILE_PLUGINS)
            , strNameOwnerMenuItem = string.Empty, strNameMenuItem = string.Empty;

            string[] arIds = ids.Split(new char [] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            ////Вариант №1
            //ToolStripItem[] menuItems;
            //Вариант №2
            ToolStripItem menuItem;
            int           id = -1;

            foreach (string strId in arIds)
            {
                int key = -1;

                id  = Convert.ToInt32(strId);
                key = s_plugIns.GetKeyOfIdFPanel(id);

                if (!(key < 0))
                {
                    plugIn = s_plugIns[key] as PlugInMenuItem;
                    if (plugIn == null)
                    {
                        continue;
                    }
                    else
                    {
                        ;
                    }
                    strNameOwnerMenuItem = plugIn.GetNameOwnerMenuItem(id);
                    strNameMenuItem      = plugIn.GetNameMenuItem(id);

                    ////Вариант №1
                    //menuItems = this.MainMenuStrip.Items.Find(strNameMenuItem, true);
                    //menuItem = menuItems[0];
                    //Вариант №2
                    menuItem = FindMainMenuItemOfText(strNameMenuItem);

                    if ((menuItem as ToolStripMenuItem).Checked == false)
                    {
                        m_iAutoActionTabs++;
                        menuItem.PerformClick();
                    }
                    else
                    {
                        ;
                    }
                }
                else
                {
                    Logging.Logg().Warning(@"FormMain::loadProfile () - не удалось загрузить plugIn.Id=" + id + @" ...", Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
        }
예제 #2
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);
        }