/// <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); } } }
/// <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); }