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