Beispiel #1
0
        /// <summary>
        /// Добавить компоненты в словари
        /// </summary>
        private bool AddComponents(ISchemeComp schemeComp, AttrTranslator attrTranslator)
        {
            CompLibSpec compLibSpec = schemeComp.CompLibSpec;
            string      errMsg;

            if (compLibSpec != null)
            {
                if (compLibSpec.Validate(out errMsg) && compLibSpec.CompFactory != null)
                {
                    allSpecs.Add(compLibSpec);
                    factsByPrefix[compLibSpec.XmlPrefix] = compLibSpec.CompFactory;

                    foreach (CompItem compItem in compLibSpec.CompItems)
                    {
                        if (compItem != null && compItem.CompType != null)
                        {
                            specsByType[compItem.CompType.FullName] = compLibSpec;
                            if (attrTranslator != null)
                            {
                                attrTranslator.TranslateAttrs(compItem.CompType);
                            }
                        }
                    }

                    return(true);
                }
                else if (!string.IsNullOrEmpty(errMsg))
                {
                    LoadErrors.Add(errMsg);
                }
            }

            return(false);
        }
Beispiel #2
0
        /// <summary>
        /// Загрузить компоненты из файлов
        /// </summary>
        public void LoadCompFromFiles()
        {
            try
            {
                lock (syncLock)
                {
                    log.WriteAction(Localization.UseRussian ?
                                    "Загрузка компонентов из файлов" :
                                    "Load components from files");

                    ClearDicts();
                    AttrTranslator attrTranslator = new AttrTranslator();
                    DirectoryInfo  dirInfo        = new DirectoryInfo(appDirs.BinDir);
                    FileInfo[]     fileInfoArr    = dirInfo.GetFiles(CompLibMask, SearchOption.TopDirectoryOnly);

                    foreach (FileInfo fileInfo in fileInfoArr)
                    {
                        string     fileName   = fileInfo.FullName;
                        PluginSpec pluginSpec = PluginSpec.CreateFromDll(fileName, out string errMsg);

                        if (pluginSpec == null)
                        {
                            log.WriteError(errMsg);
                        }
                        else if (pluginSpec is ISchemeComp)
                        {
                            pluginSpec.AppDirs = appDirs;
                            pluginSpec.Log     = log;
                            pluginSpec.Init();

                            if (AddComponents((ISchemeComp)pluginSpec, attrTranslator))
                            {
                                log.WriteAction(string.Format(Localization.UseRussian ?
                                                              "Загружены компоненты из файла {0}" :
                                                              "Components are loaded from the file {0}", fileName));
                            }
                            else
                            {
                                log.WriteAction(string.Format(Localization.UseRussian ?
                                                              "Не удалось загрузить компоненты из файла {0}" :
                                                              "Unable to load components from the file {0}", fileName));
                            }
                        }
                        else
                        {
                            log.WriteError(string.Format(Localization.UseRussian ?
                                                         "Библиотека {0} не предоставляет компоненты схем" :
                                                         "The assembly {0} does not provide scheme components", fileName));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                log.WriteException(ex, Localization.UseRussian ?
                                   "Ошибка при загрузке компонентов из файлов" :
                                   "Error loading components from files");
            }
        }
        /// <summary>
        /// Loads language dictionaries.
        /// </summary>
        public override void LoadDictionaries()
        {
            if (!Locale.LoadDictionaries(AppDirs.LangDir, DriverUtils.DriverCode, out string errMsg))
            {
                ScadaUiUtils.ShowError(errMsg);
            }

            DriverPhrases.Init();
            AttrTranslator.Translate(typeof(DeviceOptions));
            AttrTranslator.Translate(typeof(ItemConfig));
        }
        /// <summary>
        /// Инициализировать плагин
        /// </summary>
        public override void Init()
        {
            if (SchemeContext.GetInstance().EditorMode)
            {
                // загрузка словарей
                if (!Localization.LoadDictionaries(Path.Combine(AppDirs.PluginsDir, "SchBasicComp", "lang"),
                                                   "PlgSchBasicComp", out string errMsg))
                {
                    Log.WriteError(errMsg);
                }

                // перевод атрибутов классов, которые используются при редактировании, но не являются компонентами схем
                AttrTranslator attrTranslator = new AttrTranslator();
                attrTranslator.TranslateAttrs(typeof(ColorCondition));
                attrTranslator.TranslateAttrs(typeof(PopupSize));
            }
        }