예제 #1
0
        private void btnCopyAsImage_Click(object sender, RoutedEventArgs e)
        {
            if (gateCanvas.selected.Count > 0)
            {
                UIGates.IC ic = gateCanvas.CreateIC("(clipboard)", GateCanvas.SELECTED_GATES.SELECTED);


                GateCanvas tmp = new GateCanvas(ic, icl);
                tmp.Width  = tmp.GetBounds(0, false).Width;
                tmp.Height = tmp.GetBounds(0, false).Height;
                BackgroundWorker bg = new BackgroundWorker();
                bg.DoWork += (s2, e2) =>
                {
                    System.Threading.Thread.Sleep(500); // prop time
                    // don't use wait on propagation because if there is a loop
                    // it will loop forever
                };
                bg.RunWorkerCompleted += (s2, e2) =>
                {
                    tmp.Mute = true;
                    tmp.UpdateLayout();
                    tmp.UpdateWireConnections();
                    Clipboard.SetImage(tmp.CreateImage());
                    Grid1.Children.Remove(tmp);
                };

                Grid1.Children.Add(tmp);
                bg.RunWorkerAsync();
            }
        }
예제 #2
0
        /// <summary>
        /// Replace the existing canvas with a new canvas, based on the IC given.
        /// This is similar to closing this window and replacing it with another window
        /// based on that IC instead.
        /// </summary>
        /// <param name="newgcic"></param>
        public void RefreshGateCanvas(UIGates.IC newgcic)
        {
            Grid1.Children.Remove(gateCanvas);

            gateCanvas.Circuit.Stop();

            gateCanvas = new GateCanvas(newgcic, icl);
            gateCanvas.UndoProvider = (UndoRedo.UndoManager)Resources["undoManager"];
            this.UnregisterName("gateCanvas");
            this.RegisterName("gateCanvas", gateCanvas);
            Grid1.Children.Insert(0 /*Grid1.Children.Count - 4*/, gateCanvas);
            Grid.SetColumn(gateCanvas, 1);
            Grid.SetRow(gateCanvas, 1);
            _basedon = newgcic;

            if (!string.IsNullOrEmpty(newgcic.AbGate.Name))
            {
                _filename      = newgcic.AbGate.Name;
                spGates.ICName = newgcic.AbGate.Name;
                UpdateTitle();
            }

            if (MyEditLevel == EditLevel.FULL || MyEditLevel == EditLevel.EDIT)
            {
                // monitor the clipboard to provide cut/copy/paste visibility
                gateCanvas.selected.ListChanged += (s2, e2) =>
                {
                    btnCopy.IsEnabled        = gateCanvas.selected.Count > 0;
                    btnCut.IsEnabled         = gateCanvas.selected.Count > 0;
                    btnCopyAsImage.IsEnabled = gateCanvas.selected.Count > 0;
                };
            }

            if (_myEditLevel == EditLevel.FULL)
            {
                gateCanvas.Circuit.Start();
            }

            gateCanvas.SetCaptureICLChanges();

            gateCanvas.Zoom = slZoom.Value;

            gateCanvas.UpdateLayout();
            gateCanvas.UpdateWireConnections();
        }
예제 #3
0
        /// <summary>
        /// Replace the existing canvas with a new canvas, based on the IC given.
        /// This is similar to closing this window and replacing it with another window
        /// based on that IC instead.
        /// </summary>
        /// <param name="newgcic"></param>
        public void RefreshGateCanvas(UIGates.IC newgcic)
        {
            Grid1.Children.Remove(gateCanvas);

            gateCanvas.Circuit.Stop();

            gateCanvas = new GateCanvas(newgcic, icl);
            gateCanvas.UndoProvider = (UndoRedo.UndoManager)Resources["undoManager"];
            this.UnregisterName("gateCanvas");
            this.RegisterName("gateCanvas", gateCanvas);
            Grid1.Children.Insert(0 /*Grid1.Children.Count - 4*/,gateCanvas);
            Grid.SetColumn(gateCanvas, 1);
            Grid.SetRow(gateCanvas, 1);
            _basedon = newgcic;

            if (!string.IsNullOrEmpty(newgcic.AbGate.Name))
            {
                _filename = newgcic.AbGate.Name;
                spGates.ICName = newgcic.AbGate.Name;
                UpdateTitle();
            }

            if (MyEditLevel == EditLevel.FULL || MyEditLevel == EditLevel.EDIT)
            {
                // monitor the clipboard to provide cut/copy/paste visibility
                gateCanvas.selected.ListChanged += (s2, e2) =>
                {
                    btnCopy.IsEnabled = gateCanvas.selected.Count > 0;
                    btnCut.IsEnabled = gateCanvas.selected.Count > 0;
                    btnCopyAsImage.IsEnabled = gateCanvas.selected.Count > 0;
                };
            }

            if (_myEditLevel == EditLevel.FULL)
                gateCanvas.Circuit.Start();

            gateCanvas.SetCaptureICLChanges();

            gateCanvas.Zoom = slZoom.Value;

            gateCanvas.UpdateLayout();
            gateCanvas.UpdateWireConnections();

            
            
        }
예제 #4
0
 private void btnCopyAsImage_Click(object sender, RoutedEventArgs e)
 {
     if (gateCanvas.selected.Count > 0)
     {
         UIGates.IC ic = gateCanvas.CreateIC("(clipboard)", GateCanvas.SELECTED_GATES.SELECTED);
         
         
         GateCanvas tmp = new GateCanvas(ic, icl);
         tmp.Width = tmp.GetBounds(0, false).Width;
         tmp.Height = tmp.GetBounds(0, false).Height;
         BackgroundWorker bg = new BackgroundWorker();
         bg.DoWork += (s2, e2) =>
         {
             System.Threading.Thread.Sleep(500); // prop time
             // don't use wait on propagation because if there is a loop
             // it will loop forever
         };
         bg.RunWorkerCompleted += (s2, e2) =>
         {
             tmp.Mute = true;
             tmp.UpdateLayout();
             tmp.UpdateWireConnections();
             Clipboard.SetImage(tmp.CreateImage());
             Grid1.Children.Remove(tmp);
         };
         
         Grid1.Children.Add(tmp);
         bg.RunWorkerAsync();
         
     }
 }