Exemple #1
0
 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);
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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;
        }
Exemple #7
0
        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();
        }
Exemple #8
0
        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);
        }
Exemple #10
0
        // |                |
        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();
        }
Exemple #11
0
 public void Add(Signal signal, MainWindow wnd)
 {
     GlobalLines.Add(new GlobalLine(signal, wnd));
 }
Exemple #12
0
 //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;
 }
Exemple #13
0
 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));
 }
Exemple #14
0
 //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;
 }
Exemple #15
0
        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;
                    }
                }

            }
        }
Exemple #16
0
 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;
 }
Exemple #19
0
 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;
         }
     }
 }