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();
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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;
        }