/// <summary> /// Organizes the content of the tab. /// </summary> private void OrganizeTabContent() { PositionItemSource = new List <Positions>(); Random rand = new Random(); var imax = rand.Next(8, 10); for (int i = 0; i < imax; i++) { GenerateDumpPositions(rand); } var qry = new List <Positions>(PositionItemSource.DistinctBy(i => i.Pos).OrderBy(i => i.Pos)); AsynchronousQueryExecutor.Call(qry, l => PositionItemSource = new List <Positions>(l), null); TabGrid = new Grid(); TabGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new System.Windows.GridLength(5, System.Windows.GridUnitType.Star) }); TabGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = System.Windows.GridLength.Auto }); TabGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new System.Windows.GridLength(4, System.Windows.GridUnitType.Star) }); GridSplitter gridSplitter = new GridSplitter() { Width = 6 }; DataGrid = new DataGrid { Name = "PositionGrid", CanUserAddRows = true, ItemsSource = PositionItemSource }; ProgramEditor.SetValue(Grid.ColumnProperty, 0); gridSplitter.SetValue(Grid.ColumnProperty, 1); DataGrid.SetValue(Grid.ColumnProperty, 2); TabGrid.Children.Add(ProgramEditor); TabGrid.Children.Add(gridSplitter); TabGrid.Children.Add(DataGrid); TabContent = new Border { BorderBrush = new SolidColorBrush(System.Windows.Media.Color.FromRgb(221, 221, 221)), BorderThickness = new System.Windows.Thickness(1), CornerRadius = new System.Windows.CornerRadius(0, 0, 10, 10), Padding = new System.Windows.Thickness(5), Child = TabGrid }; }
/// <summary> /// Initializes new tab. /// </summary> /// <param name="untitledsCount">If this is tab for new program, pass number to be displayed eg. ~Untitled 3~</param> /// <param name="program">Pass existing program or null for new, fresh tab.</param> public TabItem(int untitledsCount, Program program) { if (program == null) { Header = $"Untitled {untitledsCount}"; ProgramEditor = new ProgramEditor { Text = string.Empty, HorizontalScrollBarVisibility = ScrollBarVisibility.Auto, VerticalScrollBarVisibility = ScrollBarVisibility.Auto, IsHighlightingEnabled = true, SyntaxCheckerMode = ProgramEditor.SyntaxCheckerModeE.RealTime, ShowLineNumbers = true, }; //we are setting this twice to trigger rising edge event. Dont change it, just accept fact that it is working this way. UnsavedChanged = false; UnsavedChanged = true; } else { Header = program.Name; ProgramEditor = new ProgramEditor() { Text = program.Content, HorizontalScrollBarVisibility = ScrollBarVisibility.Auto, VerticalScrollBarVisibility = ScrollBarVisibility.Auto, IsHighlightingEnabled = true, SyntaxCheckerMode = ProgramEditor.SyntaxCheckerModeE.RealTime, ShowLineNumbers = true }; UnsavedChanged = false; } Program = program; ProgramEditor.TextChanged += ProgramEditor_TextChanged; OrganizeTabContent(); }