Пример #1
0
        private static void TV_DropCommand_Execute(DragEventArgs args)
        {
            args.Handled = true;

            string[] list = args.GetFilesDrop();

            if (list == null)
            {
                return;
            }

            List <IEditableFile> files = list.Select(AndroidFilesUtils.GetSuitableEditableFile).Where(it => it != null).ToList();

            WindowManager.ActivateWindow <EditorWindow>();

            if (files.Count == 0)
            {
                return;
            }

            ManualEventManager.GetEvent <AddEditableFilesEvent>()
            .Publish(new AddEditableFilesEvent(files, false));

            string fileName = files[0].FileName;

            ManualEventManager.GetEvent <EditorScrollToFileAndSelectEvent>()
            .Publish(new EditorScrollToFileAndSelectEvent(f => f.FileName.Equals(fileName, StringComparison.Ordinal)));
        }
        private void LoadFiles(string extension, Func <string, IEditableFile> createNew)
        {
            ConcurrentQueue <IEditableFile> filesList = null;

            LoadingProcessWindow.ShowWindow(
                beforeStarting: () => IsBusy = true,
                threadActions: (cts, invoker) =>
            {
                invoker.IsIndeterminate = true;

                string[] files = Directory.GetFiles(_globalVariables.CurrentProjectFolder.Value, "*" + extension, SearchOption.AllDirectories);

                invoker.IsIndeterminate = false;

                invoker.ProcessMax = files.Length;

                filesList = new ConcurrentQueue <IEditableFile>();

                Parallel.ForEach(files, file =>
                {
                    if (!CommonUtils.CheckFilePath(file))
                    {
                        return;
                    }

                    cts.ThrowIfCancellationRequested();

                    try
                    {
                        filesList.Enqueue(createNew(file));
                    }
                    catch (Exception)
                    {
                        // ignored
                    }

                    invoker.ProcessValue++;
                });
            },
                finishActions: () =>
            {
                List <IEditableFile> res =
                    (filesList ?? Enumerable.Empty <IEditableFile>())
                    .Where(file => file.Details != null && file.Details.Count > 0)
                    .ToList();

                IsBusy = false;

                WindowManager.ActivateWindow <EditorWindow>();

                ManualEventManager.GetEvent <AddEditableFilesEvent>()
                .Publish(new AddEditableFilesEvent(res));
            },
                ownerWindow: _window
                );
        }
Пример #3
0
        private static void TV_LoadAllInXmlCommand_Execute(FilesTreeViewNodeModel model)
        {
            if (model.Options.Ext != ".xml" || !IOUtils.FileExists(model.Options.FullPath))
            {
                return;
            }

            var file = new XmlFile(model.Options.FullPath, XmlFile.XmlRules, true);

            WindowManager.ActivateWindow <EditorWindow>();

            ManualEventManager.GetEvent <AddEditableFilesEvent>()
            .Publish(new AddEditableFilesEvent(file));
        }
Пример #4
0
        private void LoadSelectedFileCommand_Execute()
        {
            var selectedFile = SelectedFile.Value;

            if (selectedFile == null)
            {
                return;
            }

            CommonUtils.LoadFile(Path.Combine(_globalVariables.CurrentProjectFolder.Value, selectedFile.FileName.Substring(StartFormattedString.Length)));

            ManualEventManager.GetEvent <EditorScrollToStringAndSelectEvent>()
            .Publish(new EditorScrollToStringAndSelectEvent(
                         _ => true, str => selectedFile.Text.Equals(str.OldText, StringComparison.Ordinal)));
        }
Пример #5
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)));
        }