예제 #1
0
        public MainWindow()
        {
            InitializeComponent();

            if (File.Exists(JsonWorker.JsonFilePath))
            {
                using (FileStream stream = File.OpenRead(JsonWorker.JsonFilePath))
                {
                    byte[] array = new byte[stream.Length];
                    stream.Read(array, 0, array.Length);
                    JsonWorker.JsonFileItems = Encoding.Default.GetString(array);
                }

                List <FileItem> fileItemsListFromJson = JsonWorker.DeserializationFileItemsJson(JsonWorker.JsonFileItems);

                // Если нужно, чтобы WPF-приложение загружало в ListBox пользовательские виджеты из JSON-файла FileItems.json, то оставляем код, как сейчас он есть.
                AddInListBoxCustomWidget(fileItemsListFromJson);

                /* Если нужно, чтобы WPF-приложение загружало в ListBox пользовательские виджеты из всех существующих каталогов, которые находятся в папке Debug (например, сейчас там находится
                 * одна папка Text files), то строчку кода над этим комментарием заносим под комментарий, внизу строчки кода убираем из под комментария. В данной ситуации предусмотрено, что
                 * WPF-приложение может быть запущено с любого компьютера или с одного компьютера, но само приложение может быть запущено с разных каталогов файловой системы, соответственно,
                 * если WPF-приложение было в первый раз запущено с одного компьютера, а во второй раз с другого компьютера, то пути расположений файлов будут отличаться между одним компьютером
                 * и другим компьютером (или между одним каталогом и другим каталогом одного компьютера).*/

                /*List<FileItem> fileItemsListFromFolder = FileItemsInitializer(_workingDirectory);
                 *
                 * if (ListsEqual(fileItemsListFromJson, fileItemsListFromFolder))
                 * {
                 *  AddInListBoxCustomWidget(fileItemsListFromJson);
                 * }
                 * else
                 * {
                 *  File.Delete(JsonWorker.JsonFilePath);
                 *
                 *  JsonWorker.CreateJsonFile(fileItemsListFromFolder);
                 *
                 *  AddInListBoxCustomWidget(fileItemsListFromFolder);
                 * }*/
            }
            else
            {
                List <FileItem> fileItemsList = FileItemsInitializer(_workingDirectory);

                JsonWorker.CreateJsonFile(fileItemsList);

                AddInListBoxCustomWidget(fileItemsList);
            }
        }
예제 #2
0
        private void Button_DeleteWidget_Click(object sender, RoutedEventArgs e)
        {
            if (ListBoxFiles.SelectedItem != null)
            {
                string fileName     = ((CustomWidget)ListBoxFiles.SelectedItem).FileName;
                string filePathInfo = ((CustomWidget)ListBoxFiles.SelectedItem).FilePathInfo;

                List <FileItem> fileItemsList = JsonWorker.DeserializationFileItemsJson(JsonWorker.JsonFileItems);
                FileItem        fileItem      = fileItemsList.First(x => x.Name == fileName && x.Path == filePathInfo);
                fileItemsList.Remove(fileItem);

                JsonWorker.JsonFileItems = JsonWorker.SerializationFileItemsJson(fileItemsList);

                File.WriteAllText(JsonWorker.JsonFilePath, JsonWorker.JsonFileItems);

                ListBoxFiles.Items.Remove(ListBoxFiles.SelectedItem);
            }
        }
예제 #3
0
        private void Button_CreateNewWidget_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog()
            {
                Filter = "Текстовые файлы (*.txt)|*.txt",
            };

            if (fileDialog.ShowDialog() == true)
            {
                FileInfo fileInfo = new FileInfo(fileDialog.FileName);

                FileItem fileItem = new FileItem()
                {
                    Name = fileInfo.Name,
                    Path = fileInfo.DirectoryName
                };

                List <FileItem> fileItemsList = JsonWorker.DeserializationFileItemsJson(JsonWorker.JsonFileItems);
                fileItemsList.Add(fileItem);

                JsonWorker.JsonFileItems = JsonWorker.SerializationFileItemsJson(fileItemsList);

                using (FileStream stream = new FileStream(JsonWorker.JsonFilePath, FileMode.OpenOrCreate))
                {
                    byte[] array = Encoding.Default.GetBytes(JsonWorker.JsonFileItems);
                    stream.Write(array, 0, array.Length);
                }

                CustomWidget newWidget = new CustomWidget()
                {
                    FileName     = fileItem.Name,
                    FilePathInfo = fileItem.Path,
                    Width        = 400
                };

                ListBoxFiles.Items.Add(newWidget);

                newWidget.IsEnabledTextBoxFileName     = false;
                newWidget.IsEnabledTextBoxFilePathInfo = false;
                newWidget.VisibilityButtonCloseFile    = true;
                newWidget.OpenFileStatus = true;

                Process process = new Process
                {
                    StartInfo           = new ProcessStartInfo("notepad", Path.Combine(fileItem.Path, fileItem.Name)),
                    EnableRaisingEvents = true
                };

                process.Exited += (x, y) =>
                {
                    Dispatcher.Invoke(() =>
                    {
                        newWidget.IsEnabledTextBoxFileName     = true;
                        newWidget.IsEnabledTextBoxFilePathInfo = true;
                        newWidget.VisibilityButtonCloseFile    = false;
                        newWidget.OpenFileStatus = false;
                    });
                };

                newWidget.OpenedFile = process;
                process.Start();
            }
        }