public PeriodVisual(Period period, GlobalLine line, MainWindow wnd) { this.wnd = wnd; Source = period; this.Line = line; Can = new Canvas { Background=Brushes.Black, Height=Settings.LineHeight, Visibility=Visibility.Collapsed, HorizontalAlignment=HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top}; brd.Stroke = Brushes.Red; brd.StrokeThickness = 0; brd.HorizontalAlignment = HorizontalAlignment.Stretch; brd.VerticalAlignment = VerticalAlignment.Stretch; brd.Width = Can.ActualWidth; brd.Height = Can.ActualHeight; Can.Children.Add(brd); Canvas.SetZIndex(brd, 100); Can.MouseEnter+=Can_MouseEnter; Can.MouseLeave += Can_MouseLeave; Can.MouseLeftButtonDown += Can_MouseLeftButtonDown; Can.MouseLeftButtonUp += Can_MouseLeftButtonUp; Can.MouseMove += Can_MouseMove; Can.Opacity = 1.0; MenuItem CMIDelete = new MenuItem { Header = "Удалить" }; CMIDelete.Click += CMIDelete_Click; CMPeriod.Items.Add(CMIDelete); MenuItem CMIProps = new MenuItem { Header="Свойства"}; CMIProps.Click += CMIProps_Click; CMPeriod.Items.Add(CMIProps); Can.ContextMenu = CMPeriod; wnd.GSVSignals.Children.Add(Can); Grid.SetColumn(Can,2); Grid.SetZIndex(Can, 100); }
public LTakt(MainWindow wnd, Canvas Can, int Num, double LTaktWidth, double CanWidth) { TaktHeight = 0; if ((wnd!=null)&&(Can == wnd.CanTop)) TaktHeight = 80; N = Num; //this.wnd = wnd; this.Can = Can; int TTakt = Project.TTakt; //double CanWidth = (Can.Parent as Grid).ColumnDefinitions[1].ActualWidth - 5; TaktText.Background = Brushes.Black; TaktText.Foreground = Brushes.LightGray; TaktText.Text = Num.ToString(); TaktText.FontSize = 10; PGTakt = new Polygon(); PGTakt.Stroke = StandartBrushes.TaktLine; double LeftX = N * LTaktWidth; double RightX = LeftX + LTaktWidth; if (RightX > CanWidth) RightX = CanWidth; PGTakt.Points.Add(new Point(LeftX, TaktHeight + 10)); PGTakt.Points.Add(new Point(LeftX + 2, TaktHeight + 2)); PGTakt.Points.Add(new Point(RightX - 2, TaktHeight + 2)); PGTakt.Points.Add(new Point(RightX, TaktHeight + 10)); PGTakt.Points.Add(new Point(RightX - 2, TaktHeight + 20 - 2)); PGTakt.Points.Add(new Point(LeftX + 2, TaktHeight + 20 - 2)); Can.Children.Add(PGTakt); Canvas.SetZIndex(PGTakt, -2); }
public GlobalLine(Signal signal, MainWindow wnd) { signal.GLines.Add(this); this.wnd = wnd; CreateCMSignal(); CreateItems(); TVIName.ContextMenu = CMSignal; TVIName.Header = signal.Name; TVIName.Style = (Style)wnd.FindResource(Signal.Modes.ToStr(signal.Mode)); wnd.TVSignals.Items.Add(TVIName); DLine = new SignalLine(signal, TVILine, this, wnd); }
public WindowSource(MainWindow wnd) { Source = wnd; Name = wnd.WndName; foreach (GlobalLine GLine in wnd.Lines) { Lines.Add(new WindowSourceLine(GLine.DLine.Source, this)); } TIWindow = new TabItem { Header = Name.Replace("_", "__"), Tag = this, ContextMenu = FormSourceItemsCache.CMTab, Content = new ScrollViewer { IsTabStop = false, Background = Brushes.Black, Content = new Grid { Children = { new TreeView { Tag = this, Padding = new Thickness(0, 0, 0, 0), Margin = new Thickness(0, 0, 0, 0), IsTabStop = false, Background = Brushes.Transparent } } } } }; foreach (WindowSourceLine Line in Lines) TVWindow.Items.Add(Line.TVIName); }
public GlobalLine(Bus bus, MainWindow wnd, List<GlobalLine> GSubLines) { bus.GLines.Add(this); this.wnd = wnd; CreateCMBus(); CreateItems(); TVIName.ContextMenu = CMBus; TVIName.Header = bus.Name; TVIName.Style = (Style)wnd.FindResource("Bus"); TVIName.Expanded +=new RoutedEventHandler(TVIName_Expanded); TVIName.Collapsed += new RoutedEventHandler(TVIName_Collapsed); wnd.TVSignals.Items.Add(TVIName); DLine = new BusLine(bus, TVILine, GSubLines, wnd); }
public BusLine(Bus bus, TreeViewItem LBILine, List<GlobalLine> GSubLines, MainWindow Wnd) { Bus = bus; Source = Bus; Type = DrawingLine.Types.Bus; wnd = Wnd; CanLine = new Canvas(); CanLine.Height = Settings.LineHeight; CanLine.VerticalAlignment = VerticalAlignment.Stretch; CanLine.HorizontalAlignment = HorizontalAlignment.Stretch; CanLine.Background = Brushes.Transparent; CanLine.Margin = new Thickness(0, 0, 0, 0); LBILine.Header = CanLine; GSignalLines = GSubLines; }
public SignalLine(Signal signal, TreeViewItem LBILine, GlobalLine GLine, MainWindow Wnd) { Type = DrawingLine.Types.Signal; wnd = Wnd; Parent = GLine; //------------------- Creating Canvas ------------------------------------ CanLine = new Canvas(); CanLine.Height = Settings.LineHeight -2; CanLine.VerticalAlignment = VerticalAlignment.Top; CanLine.HorizontalAlignment = HorizontalAlignment.Stretch; CanLine.Background = Brushes.Transparent; CanLine.Margin = new Thickness(-18, 0, 0, 0); LBILine.Header = CanLine; //------------------------------------------------------------------------- // Context Menu MenuItem MITemp = new MenuItem { Header = "0"}; MITemp.Click += MISetZero_Click; CMCanLine.Items.Add(MITemp); MITemp = new MenuItem { Header = "1" }; MITemp.Click += MISetOne_Click; CMCanLine.Items.Add(MITemp); MITemp = new MenuItem { Header = "#" }; MITemp.Click += MISetHash_Click; CMCanLine.Items.Add(MITemp); MITemp = new MenuItem { Header = "*" }; MITemp.Click += MISetStar_Click; CMCanLine.Items.Add(MITemp); MITemp = new MenuItem { Header = "Z" }; MITemp.Click += MISetZ_Click; CMCanLine.Items.Add(MITemp); MITemp = new MenuItem { Header = "X" }; MITemp.Click += MISetX_Click; CMCanLine.Items.Add(MITemp); MITemp = new MenuItem { Header = "Удалить" }; MITemp.Click += MIDelete_Click; CMCanLine.Items.Add(MITemp); CanLine.ContextMenu = CMCanLine; //Signal = signal; Source = signal; //------------------------------------------------------------------------- RenewContextMenuVisibility(); Gen = Project.Gens.Pot; //Redraw(); }
public TimeLine(MainWindow wnd) { this.wnd = wnd; RMainTop = new Rectangle { Stroke = Brushes.LightGray, StrokeThickness = 2, HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Top, Margin = new Thickness(5, 18, 0, 0) }; wnd.GTop.Children.Add(RMainTop); Grid.SetColumn(RMainTop, 1); RMainBottom = new Rectangle { Stroke = Brushes.LightGray, StrokeThickness = 2, HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Bottom, Margin = new Thickness(0, 0, 0, 10) }; wnd.GScrollBar.Children.Add(RMainBottom); Grid.SetZIndex(RMainBottom, -1); }
public FormSourceItemsCache(MainWindow SenderWindow) { foreach (MainWindow wnd in App.Windows) if (SenderWindow != wnd) wnd.Visibility = Visibility.Collapsed; this.SenderWindow = SenderWindow; InitializeComponent(); MenuItem MITemp = new MenuItem{ Header="Создать"}; MITemp.Click += TabItem_GotFocus; CMTab.Items.Add(MITemp); MITemp = new MenuItem{ Header="Переименовать"}; MITemp.Click += MITabRename_Click; CMTab.Items.Add(MITemp); MITemp = new MenuItem{ Header="Удалить"}; MITemp.Click += MITabDelete_Click; CMTab.Items.Add(MITemp); }
// | | public Marker(string name, int type, int value, MainWindow wnd) { this.Type = type; this.wnd = wnd; Base = new Line(); RBaseSig = new Rectangle(); BaseScroll = new Line(); TBTime = new TextBlock(); Name = name; _Value = value; brush = StandartBrushes.Markers[type]; switch (type) { case CursorLine: HPos = 2; break; case BaseLine: HPos = 3; break; case EndLine: HPos = 1; isReversed = true; break; case SimpleMarker: HPos = 1; break; } TBTime.MouseRightButtonDown += new MouseButtonEventHandler(TBTime_MouseRightButtonDown); ContextMenu MarkerMenu = new ContextMenu(); MenuItem MIDel = new MenuItem(); MIDel.Header = "Удалить"; MIDel.Click += new RoutedEventHandler(MIDel_Click); MarkerMenu.Items.Add(MIDel); MenuItem MIProp = new MenuItem(); MIProp.Header = "Свойства"; MIProp.Click += new RoutedEventHandler(MIProp_Click); MarkerMenu.Items.Add(MIProp); TBTime.ContextMenu = MarkerMenu; Draw(); }
public void Add(Signal signal, MainWindow wnd) { GlobalLines.Add(new GlobalLine(signal, wnd)); }
//Bus (create with emty signals) public void Add(Bus bus, int n1, int n2, List<BusChange> BChanges, MainWindow wnd) { List<GlobalLine> GLTemp = new List<GlobalLine>(); GlobalLines.Add(new GlobalLine(bus, wnd, GLTemp)); for (int i = n1; i <= n2; i++) { for (int j = 0; j < BChanges.Count; j++) { Change ch = BChanges[j].GetChangeAt(i - n1, n2 - n1 + 1); if (ch.Value != Change.Proc) bus.Signals[i-n1].ChangeAdd(ch); } GLTemp.Add(new GlobalLine(bus.Signals[i - n1], GlobalLines[GlobalLines.Count - 1], wnd)); } GlobalLines[GlobalLines.Count - 1].TVIName.IsExpanded = true; }
public TaktLine(MainWindow wnd, Canvas Can) { double CanWidth = (Can.Parent as Grid).ColumnDefinitions[1].ActualWidth - 5; this.wnd = wnd; this.Can = Can; int TaktWidth = wnd.EndTakt - wnd.BeginTakt + 1; for (int i = Takts.Count; i < wnd.TaktCount; i++) Takts.Add(new LTakt(wnd, Can, Takts.Count, TaktWidth / CanWidth, CanWidth)); }
//Bus (create from existing bus) public void Add(Bus bus, MainWindow wnd) { List<GlobalLine> GLTemp = new List<GlobalLine>(); GlobalLines.Add(new GlobalLine(bus, wnd, GLTemp)); for (int i = 0; i < bus.Signals.Count; i++) { GLTemp.Add(new GlobalLine(bus.Signals[i], GlobalLines[GlobalLines.Count - 1], wnd)); } GlobalLines[GlobalLines.Count - 1].TVIName.IsExpanded = true; }
public static void OpenDgm() { var xmlDocument = new XmlDocument { XmlResolver = null }; xmlDocument.Load(Project.ProjectFilePath); //Gens XmlNodeList xnGens = xmlDocument.SelectNodes("/Project/Generators/Generator"); foreach (XmlNode xnGen in xnGens) { Project.Gens.Add(new Generator(xnGen["Name"].InnerText, Generator.FromSTR(xnGen["Type"].InnerText), Convert.ToInt32(xnGen["Sdw"].InnerText), Convert.ToInt32(xnGen["Dlit"].InnerText))); } //Strobs XmlNodeList xnStrobs = xmlDocument.SelectNodes("/Project/Strobs/Strob"); foreach (XmlNode xnStrob in xnStrobs) { Project.Strobs.Add(new Strob(xnStrob["Name"].InnerText, Convert.ToInt32(xnStrob["Sdw"].InnerText), Convert.ToInt32(xnStrob["Dlit"].InnerText))); } //Items int Type; List<Change> Changes; List<Signal> Signals; Signal Sig; //XmlNodeList XmlNodeList xnSignals; XmlNodeList xnChanges; XmlNodeList xnPeriods; XmlNodeList xnItems = xmlDocument.SelectNodes("/Project/SourceItems/Item"); foreach (XmlNode xnItem in xnItems) { Type = Convert.ToInt32(xnItem["Type"].InnerText); //Type = Convert.ToInt32(xnItem["Type"].InnerText); switch (Type) { case SourceItem.Types.Signal: Sig = new Signal(xnItem["Name"].InnerText, Convert.ToInt32(xnItem["Mode"].InnerText)); xnChanges = xnItem.SelectNodes("Changes/Change"); foreach (XmlNode xnChange in xnChanges) { Sig.ChangeAdd(new Change(Convert.ToInt32(xnChange["Takt"].InnerText), Convert.ToInt32(xnChange["Value"].InnerText))); } xnPeriods = xnItem.SelectNodes("Periods/Period"); foreach (XmlNode xnPeriod in xnPeriods) { Changes = new List<Change>(); xnChanges = xnPeriod.SelectNodes("Changes/Change"); foreach (XmlNode xnChange in xnChanges) { Changes.Add(new Change(Convert.ToInt32(xnChange["Takt"].InnerText), Convert.ToInt32(xnChange["Value"].InnerText))); } Sig.Periods.Add(new Period(Convert.ToInt32(xnPeriod["Beg"].InnerText), xnPeriod["N"].InnerText, Convert.ToInt32(xnPeriod["Per"].InnerText), Changes)); } Project.Items.Add(Sig); break; case SourceItem.Types.Bus: Signals = new List<Signal>(); xnSignals = xnItem.SelectNodes("Signals/Signal"); foreach (XmlNode xnSignal in xnSignals) { Sig = new Signal(xnSignal["Name"].InnerText, Convert.ToInt32(xnSignal["Mode"].InnerText)); xnChanges = xnSignal.SelectNodes("Changes/Change"); foreach (XmlNode xnChange in xnChanges) { Sig.ChangeAdd(new Change(Convert.ToInt32(xnChange["Takt"].InnerText), Convert.ToInt32(xnChange["Value"].InnerText))); } xnPeriods = xnItem.SelectNodes("Periods/Period"); foreach (XmlNode xnPeriod in xnPeriods) { Changes = new List<Change>(); xnChanges = xnPeriod.SelectNodes("Changes/Change"); foreach (XmlNode xnChange in xnChanges) { Changes.Add(new Change(Convert.ToInt32(xnChange["Takt"].InnerText), Convert.ToInt32(xnChange["Value"].InnerText))); } Sig.Periods.Add(new Period(Convert.ToInt32(xnPeriod["Beg"].InnerText), xnPeriod["N"].InnerText, Convert.ToInt32(xnPeriod["Per"].InnerText), Changes)); } Signals.Add(Sig); } Project.Items.Add(new Bus(xnItem["Name"].InnerText, Signals, Convert.ToInt32(xnItem["N1"].InnerText), Convert.ToInt32(xnItem["N2"].InnerText))); break; case SourceItem.Types.Group: // break; } } MainWindow Window; XmlNodeList xnWindows = xmlDocument.SelectNodes("/Project/Windows/Window"); XmlNodeList xnMarkers; XmlNodeList xnLines; foreach (XmlNode xnWindow in xnWindows) { Window = new MainWindow { WndName = xnWindow["Name"].InnerText, TaktCount = Convert.ToInt32(xnWindow["TaktCount"].InnerText), Width = Convert.ToDouble(xnWindow["Width"].InnerText), Height = Convert.ToDouble(xnWindow["Height"].InnerText) }; App.Windows.Add(Window); Window.Show(); Window.GSVSignals.ColumnDefinitions[0].Width = new GridLength(Convert.ToDouble(xnWindow["GSVSignals0"].InnerText)); Window.GSVSignals.ColumnDefinitions[1].Width = new GridLength(Convert.ToDouble(xnWindow["GSVSignals1"].InnerText)); Window.Change_Workspace(Convert.ToInt32(xnWindow["BeginTakt"].InnerText), Convert.ToInt32(xnWindow["EndTakt"].InnerText)); Window.CBValueMarker.SelectedIndex = Convert.ToInt32(xnWindow["CBValueMarkerIndex"].InnerText); //Markers xnMarkers = xnWindow.SelectNodes("Markers/Marker"); int i = 0; foreach (XmlNode xnMarker in xnMarkers) { switch (i) { case 0: // CursorLine Window.CursorLine.Name = xnMarker["Name"].InnerText; Window.CursorLine.Value = Convert.ToInt32(xnMarker["Value"].InnerText); Window.CursorLine.brush = (Brush)new System.Windows.Media.BrushConverter().ConvertFromString(xnMarker["Brush"].InnerText); break; case 1: //BaseLine Window.BaseLine.Name = xnMarker["Name"].InnerText; Window.BaseLine.Value = Convert.ToInt32(xnMarker["Value"].InnerText); Window.BaseLine.brush = (Brush)new System.Windows.Media.BrushConverter().ConvertFromString(xnMarker["Brush"].InnerText); break; case 2: // EndLine Window.EndLine.Name = xnMarker["Name"].InnerText; Window.EndLine.Value = Convert.ToInt32(xnMarker["Value"].InnerText); Window.EndLine.brush = (Brush)new System.Windows.Media.BrushConverter().ConvertFromString(xnMarker["Brush"].InnerText); break; default: //Markers Window.Markers.Add(new Marker(xnMarker["Name"].InnerText, Marker.SimpleMarker, Convert.ToInt32(xnMarker["Value"].InnerText), Window)); Window.Markers.Last().brush = (Brush)new System.Windows.Media.BrushConverter().ConvertFromString(xnMarker["Brush"].InnerText); break; } i++; } //Lines xnLines = xnWindow.SelectNodes("Lines/Line"); foreach (XmlNode xnLine in xnLines) { Type = Convert.ToInt32(xnLine["Type"].InnerText); switch (Type) { case DrawingLine.Types.Signal: Window.Lines.Add(Project.Items.Find(xnLine["SourceName"].InnerText) as Signal, Window); (Window.Lines.Last.DLine as SignalLine).Gen = Project.Gens.Find(xnLine["GenName"].InnerText); break; case DrawingLine.Types.Bus: Window.Lines.Add(Project.Items.Find(xnLine["SourceName"].InnerText) as Bus, Window); (Window.Lines.Last.DLine as BusLine).Gen = Project.Gens.Find(xnLine["GenName"].InnerText); break; } } } }
private void Application_Startup(object sender, StartupEventArgs e) { if (e.Args.Count() > 0) FromDgm(e.Args[0]); else { MainWindow wnd = new MainWindow(); Windows.Add(wnd); wnd.Show(); } }
private void TabItem_GotFocus(object sender, RoutedEventArgs e) { MainWindow wnd = new MainWindow(); wnd.WndName = "Wnd_#"; Wins.Add(new WindowSource(wnd)); TCWndLines.Items.Insert(TCWndLines.Items.Count - 1,Wins.Last().TIWindow); TCWndLines.SelectedIndex = TCWndLines.Items.Count - 2; //TreeView TempTV = (((TCWndLines.Items[TCWndLines.Items.Count - 2] as TabItem).Content as ScrollViewer).Content as Grid).Children[0] as TreeView; Wins.Last().TVWindow.PreviewMouseLeftButtonDown +=TreeView_PreviewMouseLeftButtonDown; //WndTreeViews.Add(TempTV); int index = TCWndLines.SelectedIndex; TabItem CurrentTab = TCWndLines.Items[index] as TabItem; TextBox TBRename = new TextBox(); TBRename.Tag = CurrentTab; TBRename.KeyDown += TBRename_KeyDown; TBRename.LostFocus += TBRename_LostFocus; TBRename.Text = Wins[index].Name; CurrentTab.Header = TBRename; TBRename.Select(0, TBRename.Text.Length); // тут необходимо передать фокус созданному TextBox }
bool Contains(MainWindow wnd) { foreach (WindowSource WinS in Wins) { if (WinS.Source == wnd) return true; } return false; }
public void Update(List<WindowSourceLine> Lines, MainWindow wnd) { Clear(); foreach (WindowSourceLine Line in Lines) { switch (Line.Type) { case SourceItem.Types.Signal: Add(Line.Source as Signal, wnd); break; case SourceItem.Types.Bus: Add(Line.Source as Bus, wnd); break; } } }