コード例 #1
0
        /// <summary>
        /// Carica il documento da stream
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="fileName"></param>
        /// <returns>true se ok</returns>
        public bool Open(Stream stream, string fileName)
        {
            bool ok = true;

            selezionati.Clear();
            this.filename = fileName;
            try
            {
                using (StreamReader sr = new StreamReader(stream))
                {
                    var serializer = new JsonSerializer();
                    dati = (Dati)serializer.Deserialize(sr, typeof(Dati));
                }
            }
            catch (Exception e)
            {
                ok = false;
                Messaggi.AddMessage(Messaggi.ERR.ERRORE_OPEN, e.ToString(), Messaggi.Tipo.Errori);
            }
            int failed;

            if ((failed = dati.AggiornaRiferimenti()) > 0)
            {
                ok = false;
                Messaggi.AddMessage(Messaggi.ERR.AGGIORNA_RIFERIMENTI, $"Falliti {failed} rami", Messaggi.Tipo.Errori);
            }
            if (ok)
            {
                _isModified = false;
            }
            return(ok);
        }
コード例 #2
0
 /// <summary>
 /// Costruttore
 /// </summary>
 public CircuitoDoc()
 {
     dati        = new Dati();
     selezionati = new List <Elemento>();
     dati.Nome   = "Circuito" + (indx.ToString()).PadLeft(3, '0');
     indx++;
     filename    = string.Empty;
     _isModified = false;
 }
コード例 #3
0
 /// <summary>
 /// Allinea tutti i nodi alla griglia della vista
 /// </summary>
 /// <param name="v">Vista con la griglia</param>
 public void AllineaAllaGriglia(Vista v)
 {
     foreach (Elemento el in Dati.Elementi())
     {
         if (el is Nodo)
         {
             Point2D rp = ((Nodo)el).P / v.GridStep;                         // Rapporti
             rp.X           = Math.Round(rp.X, 0) * v.GridStep;
             rp.Y           = Math.Round(rp.Y, 0) * v.GridStep;
             ((Nodo)el).P.X = rp.X;
             ((Nodo)el).P.Y = rp.Y;
         }
     }
     _isModified = true;
 }
コード例 #4
0
        public void FitZoom(Dati dt)
        {
            Tuple <Point2D, Point2D> wrldExt = dt.GetExtension();
            Point2D szw = wrldExt.Item2 - wrldExt.Item1;
            Point2D cnw = (wrldExt.Item2 + wrldExt.Item1) / 2;

            centro = cnw;                                                               // Pan ottimale: nel centro
            Point2D szc       = new Point2D(szClient.Width, szClient.Height);
            Point2D cnc       = cenClient;
            Point2D scala_tmp = szw / szc;                                              // Scale in X e in Y
            double  scala_opt = Math.Max(scala_tmp.X, scala_tmp.Y) * Def.ZOOM_FIT_ENLARGE;

            scalaXY.X = scalaXY.Y = 1 / scala_opt;                                      // Scala ottimale
            RecalcSzWlorld();
            dl.IsUpdated = false;
            return;
        }