示例#1
0
        /// <summary>
        /// Проверяет текущий файл на соответствие настройкам
        /// </summary>
        /// <param name="file">Файл</param>
        /// <param name="extension">Расширение файла</param>
        public static bool CheckFileWithSettings(string file, string extension)
        {
            if (extension != ".xml" && GlobalVariables.AppSettings.OnlyXml)
            {
                return(false);
            }

            if (extension == ".xml")
            {
                if (!GlobalVariables.AppSettings.EmptyXml)
                {
                    try
                    {
                        var details = XmlFile.Create(file).Details;

                        return(details != null && details.Count != 0);
                    }
                    catch (XmlParserException)
                    {
                        return(false);
                    }
                }
            }
            else if (extension == ".smali")
            {
                if (!GlobalVariables.AppSettings.EmptySmali && !SmaliFile.HasLines(file))
                {
                    return(false);
                }
            }
            else if (GlobalVariables.AppSettings.ImageExtensions.Contains(extension))
            {
                if (!GlobalVariables.AppSettings.Images)
                {
                    return(false);
                }
            }
            else if (GlobalVariables.AppSettings.OtherExtensions.Contains(extension))
            {
                if (!GlobalVariables.AppSettings.OtherFiles)
                {
                    return(false);
                }
            }

            return(true);
        }
示例#2
0
        /// <summary>
        /// Возвращает изменяемый файл, соответствующий файлу на диске, или null, если подходящий файл не найден
        /// </summary>
        /// <param name="filePath">Путь к файлу на диске</param>
        public static IEditableFile GetSuitableEditableFile(string filePath)
        {
            switch (Path.GetExtension(filePath))
            {
            case ".xml":
                if (IsDictionaryFile(filePath))
                {
                    return(new DictionaryFile(filePath));
                }

                return(XmlFile.Create(filePath));

            case ".smali":
                return(new SmaliFile(filePath));
            }

            return(null);
        }
示例#3
0
        /// <summary>
        /// Загружает файл в редактор
        /// </summary>
        /// <param name="pathToFile">Файл</param>
        public static void LoadFile(string pathToFile)
        {
            var ext = Path.GetExtension(pathToFile);

            if (!GlobalVariables.EditableFileExtenstions.Contains(ext))
            {
                Process.Start(pathToFile);
                return;
            }
            
            IEditableFile file;

            try
            {
                switch (ext)
                {
                    case ".xml":
                        file = XmlFile.Create(pathToFile);
                        break;
                    default: //".smali":
                        file = new SmaliFile(pathToFile);
                        break;
                }
            }
            catch (IOException ex)
            {
                // todo: add to string resources
                MessBox.ShowDial($"Не удалось загрузить файл из-за ошибки системы.\nСообщение: {ex.Message}", StringResources.ErrorLower);
                return;
            }

            WindowManager.ActivateWindow<EditorWindow>();

            ManualEventManager.GetEvent<AddEditableFilesEvent>()
                .Publish(new AddEditableFilesEvent(file));

            ManualEventManager.GetEvent<EditorScrollToFileAndSelectEvent>()
                .Publish(new EditorScrollToFileAndSelectEvent(f => f.FileName.Equals(file.FileName, StringComparison.Ordinal)));
        }