private void CreateFolder(object sender, RoutedEventArgs e) { char[] InvalidChars = { '"', '/', '\\', '<', '>', '?', '*', '|', ':' }; if (tbNameFolder.Text.IndexOfAny(InvalidChars) != -1) { Border border = new Border(); border.BorderThickness = new Thickness(2); border.Background = new SolidColorBrush(Colors.White); border.BorderBrush = new SolidColorBrush(Colors.Red); TextBlock textBlock = new TextBlock(); textBlock.TextWrapping = TextWrapping.Wrap; textBlock.Text = "Имя папки не должно содержать символы: < > | \" / \\ * : ?"; border.Child = textBlock; Message.Child = border; Message.IsOpen = true; e.Handled = true; return; } if (string.IsNullOrWhiteSpace(tbNameFolder.Text)) { Border border = new Border(); border.BorderThickness = new Thickness(2); border.Background = new SolidColorBrush(Colors.White); border.BorderBrush = new SolidColorBrush(Colors.Red); TextBlock textBlock = new TextBlock(); textBlock.TextWrapping = TextWrapping.Wrap; textBlock.Text = "Имя папки не должно содержать только пробелы или быть пустой строкой."; border.Child = textBlock; Message.Child = border; Message.IsOpen = true; e.Handled = true; return; } Window MainWindow = ((AppWPF)System.Windows.Application.Current).MainWindow; Dictionary <string, FolderScada> CollectionFolders = ((MainWindow)((AppWPF)Application.Current).MainWindow).ProjectBin.CollectionFolderScada; //Находим индекс имени проекта, для удаления и получения пути проекта int index = ((MainWindow)((AppWPF)Application.Current).MainWindow).ProjectBin.PathProject.LastIndexOf(((MainWindow)((AppWPF)Application.Current).MainWindow).ProjectBin.ProjectName); FolderScada fs = new FolderScada(); fs.Name = tbNameFolder.Text; fs.Path = ((MainWindow)((AppWPF)Application.Current).MainWindow).ProjectBin.PathProject.Remove(index) + "\\" + tbNameFolder.Text; fs.Attachments = 0; //Проверка существования папки if (Directory.Exists(fs.Path)) { MessageBox.Show("Папка " + fs.Path + " уже существует.", "Ошибка создания папки", MessageBoxButton.OK, MessageBoxImage.Error); e.Handled = true; return; } CollectionFolders.Add(fs.Path, fs); Directory.CreateDirectory(fs.Path); StackPanel panel = new StackPanel(); panel.Orientation = System.Windows.Controls.Orientation.Horizontal; Image imageFolder = new Image(); imageFolder.Source = new BitmapImage(new Uri("Images/CloseFolder16.png", UriKind.Relative)); Image imageMenuItemCreateFolder = new Image(); imageMenuItemCreateFolder.Source = new BitmapImage(new Uri("Images/NewFolder16.png", UriKind.Relative)); Image imageMenuItemCreatePage = new Image(); imageMenuItemCreatePage.Source = new BitmapImage(new Uri("Images/NewPage16.png", UriKind.Relative)); Image imageCut = new Image(); imageCut.Source = new BitmapImage(new Uri("Images/Cut16.png", UriKind.Relative)); Image imageInsert = new Image(); imageInsert.Source = new BitmapImage(new Uri("Images/Insert16.ico", UriKind.Relative)); Image ImageDelete = new Image(); ImageDelete.Source = new BitmapImage(new Uri("Images/FolderDelete16.png", UriKind.Relative)); Image ImageCopy = new Image(); ImageCopy.Source = new BitmapImage(new Uri("Images/CopyFolder16.ico", UriKind.Relative)); TreeViewItem ItemFolder = new TreeViewItem(); ItemFolder.Collapsed += ((MainWindow)MainWindow).Collapsed; ItemFolder.Expanded += ((MainWindow)MainWindow).Expanded; ItemFolder.Tag = fs; ItemFolder.KeyDown += ((MainWindow)MainWindow).RenameFolder; fs.TreeItem = ItemFolder; MenuItem MenuItemCreate = new MenuItem(); MenuItemCreate.Header = "Добавить"; MenuItem MenuItemCreateFolder = new MenuItem(); MenuItemCreateFolder.Icon = imageMenuItemCreateFolder; MenuItemCreateFolder.Header = "Папку"; MenuItemCreateFolder.Tag = ItemFolder; // Нужен для индефикации в какую папку сохранять при создании вложенной папки MenuItemCreateFolder.Click += ((MainWindow)MainWindow).ContextMenuCreateFolder; MenuItem menuItemDeleteFolder = new MenuItem(); menuItemDeleteFolder.Header = "Удалить"; menuItemDeleteFolder.Icon = ImageDelete; menuItemDeleteFolder.Tag = fs; menuItemDeleteFolder.Click += ((MainWindow)MainWindow).DeleteItem; MenuItem MenuItemCreatePage = new MenuItem(); MenuItemCreatePage.Icon = imageMenuItemCreatePage; MenuItemCreatePage.Header = "Страницу"; MenuItemCreatePage.Tag = ItemFolder; // Нужен для индефикации в какую папку сохранять при создании вложенной страницы MenuItemCreatePage.Click += ((MainWindow)MainWindow).ContextMenuCreatePage; MenuItem menuItemCopyFolder = new MenuItem(); menuItemCopyFolder.IsEnabled = false; menuItemCopyFolder.Style = (Style)Application.Current.FindResource("ControlOnToolBar"); menuItemCopyFolder.Header = "Копировать"; menuItemCopyFolder.Icon = ImageCopy; menuItemCopyFolder.Tag = fs; menuItemCopyFolder.Click += ((MainWindow)MainWindow).CopyItem; MenuItem menuItemCutFolder = new MenuItem(); menuItemCutFolder.IsEnabled = false; menuItemCutFolder.Style = (Style)Application.Current.FindResource("ControlOnToolBar"); menuItemCutFolder.Header = "Вырезать"; menuItemCutFolder.Icon = imageCut; menuItemCutFolder.Tag = fs; menuItemCutFolder.Click += ((MainWindow)MainWindow).CutItem; Binding BindingInsert = new Binding(); BindingInsert.Source = (MainWindow)MainWindow; BindingInsert.Path = new PropertyPath("IsBindingInsert"); BindingInsert.Mode = BindingMode.OneWay; MenuItem menuItemInsert = new MenuItem(); menuItemInsert.Header = "Вставить"; menuItemInsert.Tag = fs; menuItemInsert.SetBinding(MenuItem.IsEnabledProperty, BindingInsert); menuItemInsert.Icon = imageInsert; menuItemInsert.Click += ((MainWindow)MainWindow).InsertItem; MenuItemCreate.Items.Add(MenuItemCreateFolder); MenuItemCreate.Items.Add(MenuItemCreatePage); ContextMenu ContextMenuFolder = new ContextMenu(); ContextMenuFolder.Tag = "FolderScada"; ContextMenuFolder.Items.Add(MenuItemCreate); ContextMenuFolder.Items.Add(menuItemCopyFolder); ContextMenuFolder.Items.Add(menuItemCutFolder); ContextMenuFolder.Items.Add(menuItemInsert); ContextMenuFolder.Items.Add(menuItemDeleteFolder); ItemFolder.ContextMenu = ContextMenuFolder; System.Windows.Controls.TextBox tbRenameFolder = new System.Windows.Controls.TextBox(); tbRenameFolder.KeyDown += ((MainWindow)MainWindow).OkRenameFolder; tbRenameFolder.Text = fs.Name; System.Windows.Controls.Label lNameFolder = new System.Windows.Controls.Label(); lNameFolder.Content = fs.Name; lNameFolder.Tag = tbRenameFolder; AlphanumComparator a = new AlphanumComparator(); a.Name = (string)lNameFolder.Content; panel.Tag = a; panel.Children.Add(imageFolder); panel.Children.Add(lNameFolder); ItemFolder.Header = panel; ((MainWindow)MainWindow).BrowseProject.Items.Add(ItemFolder); ((MainWindow)MainWindow).BrowseProject.Items.SortDescriptions.Clear(); ((MainWindow)MainWindow).BrowseProject.Items.SortDescriptions.Add(new SortDescription("ContextMenu.Tag", ListSortDirection.Ascending)); ((MainWindow)MainWindow).BrowseProject.Items.SortDescriptions.Add(new SortDescription("Header.Tag", ListSortDirection.Ascending)); e.Handled = true; this.Close(); }
public void WriteFile(string path) { // Where to add lines int addIndex = _allLines.Count; StringBuilder builder = new StringBuilder(); if (!_list) { var last = _writeKeyValues.Where(p => !p.Added).OrderByDescending(p => p.Line).FirstOrDefault(); if (last != null) { addIndex = last.Line + (last.Length <= 0 ? 1 : last.Length) - 1; } foreach (var confElement in _writeKeyValues.OrderByDescending(p => p.Line)) { if (confElement.Added) { _allLines.Insert(addIndex, string.Concat("\t", confElement.Key, ": ", confElement.Value)); continue; } if (confElement.Modified) { for (int i = 0; i < confElement.Length; i++) { _allLines[i + confElement.Line - 1] = null; } _allLines[confElement.Line - 1] = string.Concat("\t", confElement.Key, ": ", confElement.Value); } } } else { // Set modified lines first foreach (var confElement in _writeArrays.Where(p => p.Modified)) { for (int i = 0; i < confElement.Length; i++) { _allLines[i + confElement.Line - 1] = null; } _allLines[confElement.Line - 1] = confElement.Objects[1].ObjectValue; } AlphanumComparator alphaComparer = new AlphanumComparator(); _writeArrays = _writeArrays.OrderBy(p => p[_idKey], alphaComparer).ToList(); // Set added lines in order of their ID foreach (var confElement in _writeArrays.Where(p => p.Added).OrderByDescending(p => Int32.Parse(p[_idKey]))) { int lineIndex = _getInsertIndex(confElement); _allLines.Insert(lineIndex - 1, confElement.Objects[1].ObjectValue); } } foreach (var line in _allLines) { if (line != null) { builder.AppendLine(line); } } IOHelper.WriteAllText(path, builder.ToString()); }
private void CreatePage(object sender, RoutedEventArgs e) { char[] InvalidChars = { '"', '/', '\\', '<', '>', '?', '*', '|', ':' }; if (NamePage.Text.IndexOfAny(InvalidChars) != -1) { Border border = new Border(); border.BorderThickness = new Thickness(2); border.Background = new SolidColorBrush(Colors.White); border.BorderBrush = new SolidColorBrush(Colors.Red); TextBlock textBlock = new TextBlock(); textBlock.TextWrapping = TextWrapping.Wrap; textBlock.Text = "Имя странцы не должно содержать символы: < > | \" / \\ * : ?"; border.Child = textBlock; Message.Child = border; Message.IsOpen = true; e.Handled = true; return; } if (string.IsNullOrWhiteSpace(NamePage.Text)) { Border border = new Border(); border.BorderThickness = new Thickness(2); border.Background = new SolidColorBrush(Colors.White); border.BorderBrush = new SolidColorBrush(Colors.Red); TextBlock textBlock = new TextBlock(); textBlock.TextWrapping = TextWrapping.Wrap; textBlock.Text = "Имя страницы не должно содержать только пробелы или быть пустой строкой."; border.Child = textBlock; Message.Child = border; Message.IsOpen = true; e.Handled = true; return; } if (!NamePage.Text.EndsWith(".pg")) { NamePage.Text += ".pg"; } //Находим индекс имени проекта, для удаления и получения пути проекта int index = ((MainWindow)((AppWPF)Application.Current).MainWindow).ProjectBin.PathProject.LastIndexOf(((MainWindow)((AppWPF)Application.Current).MainWindow).ProjectBin.ProjectName); Window MainWindow = ((AppWPF)System.Windows.Application.Current).MainWindow; PageScada ps = new PageScada(); ps.Name = NamePage.Text; ps.Path = ((MainWindow)((AppWPF)Application.Current).MainWindow).ProjectBin.PathProject.Remove(index) + "\\" + NamePage.Text; ps.Attachments = 0; if (File.Exists(ps.Path)) { MessageBox.Show("Страница " + ps.Path + " уже существует.", "Ошибка создания страницы", MessageBoxButton.OK, MessageBoxImage.Error); e.Handled = true; return; } StackPanel panelPage = new StackPanel(); panelPage.Orientation = System.Windows.Controls.Orientation.Horizontal; Image imageScada = new Image(); imageScada.Source = new BitmapImage(new Uri("Images/Page16.png", UriKind.Relative)); Image imageCut = new Image(); imageCut.Source = new BitmapImage(new Uri("Images/Cut16.png", UriKind.Relative)); Image imageDelete = new Image(); imageDelete.Source = new BitmapImage(new Uri("Images/PageDelete16.png", UriKind.Relative)); Image imageCopy = new Image(); imageCopy.Source = new BitmapImage(new Uri("Images/CopyPage16.png", UriKind.Relative)); MenuItem menuItemCopyPage = new MenuItem(); menuItemCopyPage.IsEnabled = false; menuItemCopyPage.Style = (Style)Application.Current.FindResource("ControlOnToolBar"); menuItemCopyPage.Header = "Копировать"; menuItemCopyPage.Icon = imageCopy; menuItemCopyPage.Tag = ps; menuItemCopyPage.Click += ((MainWindow)MainWindow).CopyItem; MenuItem menuItemCutPage = new MenuItem(); menuItemCutPage.IsEnabled = false; menuItemCutPage.Style = (Style)Application.Current.FindResource("ControlOnToolBar"); menuItemCutPage.Header = "Вырезать"; menuItemCutPage.Icon = imageCut; menuItemCutPage.Tag = ps; menuItemCutPage.Click += ((MainWindow)MainWindow).CutItem; MenuItem menuItemDeletePage = new MenuItem(); menuItemDeletePage.Header = "Удалить"; menuItemDeletePage.Icon = imageDelete; menuItemDeletePage.Tag = ps; menuItemDeletePage.Click += ((MainWindow)MainWindow).DeleteItem; ContextMenu contextMenuPage = new ContextMenu(); contextMenuPage.Tag = "PageScada"; contextMenuPage.Items.Add(menuItemCopyPage); contextMenuPage.Items.Add(menuItemCutPage); contextMenuPage.Items.Add(menuItemDeletePage); TreeViewItem ItemPage = new TreeViewItem(); ItemPage.MouseDoubleClick += ((MainWindow)MainWindow).OpenBrowsePage; ItemPage.Tag = ps; ItemPage.KeyDown += ((MainWindow)MainWindow).RenamePage; ItemPage.ContextMenu = contextMenuPage; ps.TreeItem = ItemPage; System.Windows.Controls.TextBox tbRenamePage = new System.Windows.Controls.TextBox(); tbRenamePage.KeyDown += ((MainWindow)MainWindow).OkRenamePage; tbRenamePage.Text = ps.Name; System.Windows.Controls.Label lNamePage = new System.Windows.Controls.Label(); lNamePage.Content = ps.Name; lNamePage.Tag = tbRenamePage; AlphanumComparator a = new AlphanumComparator(); a.Name = (string)lNamePage.Content; panelPage.Children.Add(imageScada); panelPage.Children.Add(lNamePage); panelPage.Tag = a; ItemPage.Header = panelPage; ((MainWindow)MainWindow).BrowseProject.Items.Add(ItemPage); Page pg = new Page(); ((MainWindow)((AppWPF)Application.Current).MainWindow).ProjectBin.CollectionPageScada.Add(ps.Path, ps); ((AppWPF)System.Windows.Application.Current).CollectionPage.Add(ps.Path, pg); TabItemPage tabItemPage = new TabItemPage(ps); using (FileStream fs = File.Create((ps.Path))) { XamlWriter.Save(pg, fs); fs.Close(); } ((MainWindow)MainWindow).BrowseProject.Items.SortDescriptions.Clear(); ((MainWindow)MainWindow).BrowseProject.Items.SortDescriptions.Add(new SortDescription("ContextMenu.Tag", ListSortDirection.Ascending)); ((MainWindow)MainWindow).BrowseProject.Items.SortDescriptions.Add(new SortDescription("Header.Tag", ListSortDirection.Ascending)); e.Handled = true; this.Close(); }
private void GridViewColumnHeader_Click(object sender, RoutedEventArgs e) { var column = sender as GridViewColumnHeader; if (column == null) { return; } Func<SearchResult, object> function = item => item.Path; IComparer<object> comparer = null; switch (column.Name) { case "FileName": function = item => item.Name; comparer = new AlphanumComparator<object>(); break; case "Location": function = item => item.Path; comparer = new AlphanumComparator<object>(); break; case "Size": function = item => item.Size; break; case "LastModified": function = item => item.LastModified; break; } if (column != _lastColumnClicked) { _descending = false; if (_lastColumnClicked != null) { _lastColumnClicked.ContentTemplate = null; } } else { _descending = !_descending; } // TODO: Cancel other running sort jobs if (_descending) { column.ContentTemplate = Resources["DescendingTemplate"] as DataTemplate; AddTask(() => DisplaySearchResults.SortDescending(function, comparer), "Sorting items"); } else { column.ContentTemplate = Resources["AscendingTemplate"] as DataTemplate; AddTask(() => DisplaySearchResults.Sort(function, comparer), "Sorting items"); } _lastColumnClicked = column; }