private void UpdateInformation() { ChartComboBox.Items.Clear(); foreach (DamageChartImage t in _chartImages) { ChartComboBox.Items.Add(t); } if (_document == null) { return; } DamageChartImage dci = _chartImages.FirstOrDefault(ci => ci.ChartName == _document.DamageChart2DImageName); if (dci == null) { return; } ChartComboBox.SelectedItem = dci; foreach (DamageSector damageSector in _document.DamageSectors) { if (damageSector.DamageChartColumn < 0 || (damageSector.DamageChartColumn + 1) > ChartGrid.ColumnDefinitions.Count || damageSector.DamageChartRow < 0 || (damageSector.DamageChartRow + 1) > ChartGrid.RowDefinitions.Count) { continue; } UIElement uiElement = null; foreach (UIElement child in ChartGrid.Children) { if (Grid.GetColumn(child) == damageSector.DamageChartColumn && Grid.GetRow(child) == damageSector.DamageChartRow) { uiElement = child; } } if (uiElement == null) { continue; } ToggleButton button = uiElement as ToggleButton; if (button == null) { continue; } button.IsChecked = true; button.Tag = damageSector; button.ToolTip = new ToolTip { Content = string.IsNullOrEmpty(damageSector.Remarks) ? "No Information" : damageSector.Remarks };// damageSector.Remarks; } }
private void AddNewChartButtonOnClick(object sender, RoutedEventArgs e) { DamageDocument newDoc = new DamageDocument(1, _currentDirctive.ItemId); DamageChartImage dci = _chartImages.FirstOrDefault(ci => ci.ChartName == newDoc.DamageChart2DImageName) ?? _selectDamageChartImage; if (dci != null) { newDoc.DamageChart2DImageName = dci.ChartName; newDoc.DamageChartImage = dci.Image; } DamageChartsListView.Items.Add(newDoc); DamageChartsListView.SelectedIndex = DamageChartsListView.Items.Count - 1; }
///<summary> ///</summary> ///<returns></returns> public void SaveData() { DamageChartImage dci = ChartComboBox.SelectedItem as DamageChartImage; if (dci != null) { _document.DamageChart2DImageName = dci.ChartName; } else { _document.DamageChart2DImageName = ""; } List <ToggleButton> checkedButtons = ChartGrid.Children.OfType <ToggleButton>().Where(tb => tb.IsChecked == true).ToList(); List <DamageSector> sectorsToDelete = new List <DamageSector>(_document.DamageSectors); _document.DamageSectors.Clear(); foreach (ToggleButton checkedButton in checkedButtons.Where(cb => cb.Tag as DamageSector != null)) { sectorsToDelete.Remove((DamageSector)checkedButton.Tag); _document.DamageSectors.Add((DamageSector)checkedButton.Tag); } foreach (DamageSector sectorToDelete in sectorsToDelete) { if (sectorToDelete.ItemId > 0) { sectorToDelete.IsDeleted = true; _document.DamageSectors.Add(sectorToDelete); } } foreach (ToggleButton checkedButton in checkedButtons.Where(cb => cb.Tag as DamageSector == null)) { DamageSector newDamageSector = new DamageSector() { DamageChartColumn = Grid.GetColumn(checkedButton), DamageChartRow = Grid.GetRow(checkedButton), DamageDocument = _document, }; checkedButton.Tag = newDamageSector; _document.DamageSectors.Add(newDamageSector); } }
private void DamageChartsListView_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { DamageDocument doc = DamageChartsListView.SelectedItem as DamageDocument; if (doc == null) { return; } DamageChartImage dci = _chartImages.FirstOrDefault(ci => ci.ChartName == doc.DamageChart2DImageName) ?? _selectDamageChartImage; if (dci == null) { return; } ChartComboBox.SelectedItem = dci; }
///<summary> ///</summary> ///<returns></returns> public bool GetChangeStatus() { DamageChartImage dci = ChartComboBox.SelectedItem as DamageChartImage; if (dci != null && dci.ChartName != _document.DamageChart2DImageName) { return(true); } //Проверка на содержание объекта в коллекции List <ToggleButton> checkedButtons = ChartGrid.Children.OfType <ToggleButton>().Where(tb => tb.IsChecked == true).ToList(); if (checkedButtons.Count != _document.DamageSectors.Count) { return(true); } if (checkedButtons.Any(cb => cb.Tag as DamageSector == null)) { return(true); } return(false); }
///<summary> ///</summary> private void UpdateInformation() { if (_currentDirctive == null || _currentDirctive.DamageDocs == null || _currentAircraft == null) { return; } _chartImages.Clear(); _chartImages.AddRange(new[] { _b737300400500Bs46Leftside, _b737300400500Bs46Rightside, _b737300400500WingLowerSurface, _b737300400500WingUpperSurface, _b737500RearLeft, _b737500Side, _b737500Top, _selectDamageChartImage }); ChartComboBox.Items.Clear(); foreach (DamageChartImage t in _chartImages) { ChartComboBox.Items.Add(t); } DamageChartsListView.Items.Clear(); if (_currentDirctive.DamageDocs.Count == 0) { //если у родителя нет ни одного Damage Doc-а, то ему добавляется в коллекцию Damage Doc-ов //пустой Damage Doc, ради того, что бы при появлении формы она не была пустой //если пользователь не изменит объект пустого Damage Doc-а, то данный Damage Doc при //закрытии формы не сохранится и произоидет удаление всех пустых Damage Doc-ов из //коллекции Damage Doc-ов родителя DamageDocument damageDoc = new DamageDocument(1, _currentDirctive.ItemId); _currentDirctive.DamageDocs.Add(damageDoc); DamageDocument imageDoc = new DamageDocument(2, _currentDirctive.ItemId); _currentDirctive.DamageDocs.Add(imageDoc); } int countCharts = 0, countImages = 0; foreach (DamageDocument document in _currentDirctive.DamageDocs) { if (document.DocumentTypeId == 1) { DamageChartImage dci = _chartImages.FirstOrDefault(ci => ci.ChartName == document.DamageChart2DImageName); if (dci != null) { document.DamageChart2DImageName = dci.ChartName; document.DamageChartImage = dci.Image; } DamageChartsListView.Items.Add(document); } if (document.DocumentTypeId == 2) { //DamageChartImageControl docControl = new DamageChartImageControl(doc); //if (countImages == 0) docControl.Extended = true; //else docControl.Extended = false; //countImages++; //_damageImagesFileControls.Add(docControl); //docControl.Deleted += ImageDeleted; //flowLayoutPanelImages.Controls.Remove(panelButtonsImages); //flowLayoutPanelImages.Controls.Add(docControl); //flowLayoutPanelImages.Controls.Add(panelButtonsImages); } } DamageChartsListView.SelectedIndex = 0; DamageDocument doc = DamageChartsListView.SelectedItem as DamageDocument; if (doc == null) { return; } foreach (DamageSector damageSector in doc.DamageSectors) { if (damageSector.DamageChartColumn < 0 || (damageSector.DamageChartColumn + 1) > ChartGrid.ColumnDefinitions.Count || damageSector.DamageChartRow < 0 || (damageSector.DamageChartRow + 1) > ChartGrid.RowDefinitions.Count) { continue; } UIElement uiElement = null; foreach (UIElement child in ChartGrid.Children) { if (Grid.GetColumn(child) == damageSector.DamageChartColumn && Grid.GetRow(child) == damageSector.DamageChartRow) { uiElement = child; } } if (uiElement == null) { continue; } ToggleButton button = uiElement as ToggleButton; if (button == null) { continue; } button.IsChecked = true; button.Tag = damageSector; System.Windows.Controls.RichTextBox rtb = new System.Windows.Controls.RichTextBox { FontFamily = FontFamily, FontSize = FontSize }; FlowDocumentScrollViewer flowDocument = new FlowDocumentScrollViewer(); string tooltipTex = string.IsNullOrEmpty(damageSector.Remarks) ? "No Information" : damageSector.Remarks; try { //TextRange tr = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); var documentBytes = Encoding.UTF8.GetBytes(tooltipTex); using (var reader = new MemoryStream(documentBytes)) { reader.Position = 0; rtb.SelectAll(); rtb.Selection.Load(reader, System.Windows.DataFormats.Rtf); } flowDocument.Document = rtb.Document; } catch (Exception) { } button.ToolTip = flowDocument; } }
private void ChartComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { ChartGrid.ColumnDefinitions.Clear(); ChartGrid.RowDefinitions.Clear(); foreach (UIElement uiElement in ChartGrid.Children) { if (uiElement is Button) { ((Button)uiElement).Click -= DamageSectorButtonClick; } } ChartGrid.Children.Clear(); DamageChartImage dci = ChartComboBox.SelectedItem as DamageChartImage ?? _selectDamageChartImage; if (dci == null || dci.Image == null) { return; } try { BitmapConverter converter = new BitmapConverter(); ImageSource imageSource = (ImageSource)converter.Convert(dci.Image, null, null, null); ChartGrid.Width = imageSource.Width; ChartGrid.Height = imageSource.Height; ChartGrid.Background = new ImageBrush(imageSource); } catch (Exception ex) { MessageBox.Show(ex.Message); } for (int i = 0; i < dci.CountColumns; i++) { ChartGrid.ColumnDefinitions.Add(new ColumnDefinition()); } for (int i = 0; i < dci.CountRows; i++) { ChartGrid.RowDefinitions.Add(new RowDefinition()); } for (int i = 0; i < ChartGrid.ColumnDefinitions.Count; i++) { for (int j = 0; j < ChartGrid.RowDefinitions.Count; j++) { ToggleButton newButton = new ToggleButton { Content = "X", VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Stretch, }; newButton.Click += DamageSectorButtonClick; Grid.SetColumn(newButton, i); Grid.SetRow(newButton, j); ChartGrid.Children.Add(newButton); } } DamageDocument doc = DamageChartsListView.SelectedItem as DamageDocument; if (doc == null) { return; } if (doc.DamageChart2DImageName == dci.ChartName) { foreach (DamageSector damageSector in doc.DamageSectors) { if (damageSector.DamageChartColumn < 0 || (damageSector.DamageChartColumn + 1) > ChartGrid.ColumnDefinitions.Count || damageSector.DamageChartRow < 0 || (damageSector.DamageChartRow + 1) > ChartGrid.RowDefinitions.Count) { continue; } UIElement uiElement = null; foreach (UIElement child in ChartGrid.Children) { if (Grid.GetColumn(child) == damageSector.DamageChartColumn && Grid.GetRow(child) == damageSector.DamageChartRow) { uiElement = child; } } if (uiElement == null) { continue; } ToggleButton button = uiElement as ToggleButton; if (button == null) { continue; } button.IsChecked = true; button.Tag = damageSector; System.Windows.Controls.RichTextBox rtb = new System.Windows.Controls.RichTextBox() { FontFamily = FontFamily, FontSize = FontSize }; FlowDocumentScrollViewer flowDocument = new FlowDocumentScrollViewer(); string tooltipTex = string.IsNullOrEmpty(damageSector.Remarks) ? "No Information" : damageSector.Remarks; try { //TextRange tr = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); var documentBytes = Encoding.UTF8.GetBytes(tooltipTex); using (var reader = new MemoryStream(documentBytes)) { reader.Position = 0; rtb.SelectAll(); rtb.Selection.Load(reader, System.Windows.DataFormats.Rtf); } flowDocument.Document = rtb.Document; } catch (Exception) { } button.ToolTip = flowDocument; } } else { doc.DamageChartImage = dci.Image; doc.DamageChart2DImageName = dci.ChartName; } }
private void ChartComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { ChartGrid.ColumnDefinitions.Clear(); ChartGrid.RowDefinitions.Clear(); foreach (UIElement uiElement in ChartGrid.Children) { if (uiElement is Button) { ((Button)uiElement).Click -= MainWindowClick; } } ChartGrid.Children.Clear(); //MainCanvas.Children.Clear(); DamageChartImage dci = ChartComboBox.SelectedItem as DamageChartImage; if (dci == null || dci.ImagePath == null || dci.CountColumns <= 0 || dci.CountRows <= 0) { return; } try { ImageSourceConverter converter = new ImageSourceConverter(); string path = $@"{(System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location))}\{dci.ImagePath}"; ImageSource imageSource = (ImageSource)converter.ConvertFromString(path); this.Width = imageSource.Width; this.Height = imageSource.Height; ChartGrid.Background = new ImageBrush(imageSource); } catch (Exception ex) { MessageBox.Show(ex.Message); } for (int i = 0; i < dci.CountColumns; i++) { ChartGrid.ColumnDefinitions.Add(new ColumnDefinition()); } for (int i = 0; i < dci.CountRows; i++) { ChartGrid.RowDefinitions.Add(new RowDefinition()); } //Grid.SetRowSpan(MainCanvas, ChartGrid.RowDefinitions.Count); //Grid.SetColumnSpan(MainCanvas, ChartGrid.ColumnDefinitions.Count); for (int i = 0; i < ChartGrid.ColumnDefinitions.Count; i++) { for (int j = 0; j < ChartGrid.RowDefinitions.Count; j++) { ToggleButton newButton = new ToggleButton { Content = "X", VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Stretch, }; //newButton.Click += MainWindow_Click; Grid.SetColumn(newButton, i); Grid.SetRow(newButton, j); ChartGrid.Children.Add(newButton); } } }