예제 #1
0
        public void otvori(String file)
        {
            IFormatter form  = new BinaryFormatter();
            Lista      lista = null;
            Stream     str   = null;

            try
            {
                str = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read);
            }
            catch (IOException ex)
            {
                MessageBox.Show("Nije moguće otvoriti datoteku zbog " + ex + "!", "Greška!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            try
            {
                if (str != null)
                {
                    lista = (Lista)form.Deserialize(str);
                }
            }
            catch (SerializationException ex)
            {
                MessageBox.Show("Nije moguće otvoriti datoteku zbog " + ex + "!", "Greška!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                if (str != null)
                {
                    str.Close();
                }
            }
            if (lista == null)
            {
                listaRastojanja = new List <Rastojanje>();
            }
            else
            {
                listaRastojanja = lista.listaRastojanja;
            }
        }
예제 #2
0
 private void pbPovezivanje_Click(object sender, EventArgs e)
 {
     if (selektovana != null && selektovana2 != null)
     {
         UnosRazdaljine udaljenost = new UnosRazdaljine();
         if (udaljenost.ShowDialog() == DialogResult.OK)
         {
             Rastojanje r = new Rastojanje();
             r.razd = udaljenost.razdaljina;
             r.g1   = selektovana;
             r.g2   = selektovana2;
             Lista.Instanca().listaRastojanja.Add(r);
             // Model.MemorisiDatoteku();
             gradoviPanel1.Refresh();
         }
     }
     else
     {
         MessageBox.Show("Dva grada moraju biti selektovana da bi se mogla povezati!");
     }
 }
예제 #3
0
        /*        protected Lista(SerializationInfo info, StreamingContext context)
         *     {
         *         if (info == null)
         *             throw new System.ArgumentNullException("info");
         *         listaa = (Lista)info.GetValue("AltName", typeof(Lista));
         *
         *     }
         *
         *
         *      [SecurityPermission(SecurityAction.LinkDemand,
         *         Flags = SecurityPermissionFlag.SerializationFormatter)]
         *      public virtual void GetObjectData(
         *     SerializationInfo info, StreamingContext context)
         *      {
         *          if (info == null)
         *              throw new System.ArgumentNullException("info");
         *          info.AddValue("AltName", lista);
         *      }*/
        public void SAVE()
        {
            String         fajl;
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Title        = "Čuvanje fajla";
            sfd.DefaultExt   = "bin";
            sfd.AddExtension = true;
            sfd.Filter       = "Bin files(*.bin)|*.bin|All files(*.*)|*.*";
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                Lista lista = Lista.Instanca();
                for (int i = 0; i < lista.listaRastojanja.Count; i++)
                {
                    Image  im1   = lista.listaRastojanja[i].g1.Image;
                    String tag1  = lista.listaRastojanja[i].g1.Tag.ToString();
                    Point  lok1  = lista.listaRastojanja[i].g1.Location;
                    Size   size1 = lista.listaRastojanja[i].g1.Size;

                    Image  im2   = lista.listaRastojanja[i].g2.Image;
                    String tag2  = lista.listaRastojanja[i].g2.Tag.ToString();
                    Point  lok2  = lista.listaRastojanja[i].g2.Location;
                    Size   size2 = lista.listaRastojanja[i].g2.Size;

                    rastojanje = lista.listaRastojanja[i].razd;


                    Dat dat = new Dat(im1, lok1, size1, tag1, im2, lok2, size2, tag2, rastojanje);

                    listaDat.Add(dat);
                }
                IFormatter form = new BinaryFormatter();
                fajl = sfd.FileName;
                Stream str = new FileStream(fajl, FileMode.Create, FileAccess.Write, FileShare.None);
                form.Serialize(str, listaDat);
                str.Close();
            }
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            Graphics gr = e.Graphics;

            gr.FillRectangle(Brushes.White, this.ClientRectangle);

            Rectangle rec    = this.ClientRectangle;
            int       width  = rec.Width;
            int       height = rec.Height;
            Font      f      = new Font(FontFamily.GenericSerif, 8);

            foreach (Rastojanje m in Lista.Instanca().listaRastojanja)
            {
                PictureBox g1         = m.g1;
                PictureBox g2         = m.g2;
                String     razdaljina = m.razd.ToString();
                float      xx1        = (float)g1.Location.X;
                float      yy1        = (float)g1.Location.Y;
                float      xx2        = (float)g2.Location.X;
                float      yy2        = (float)g2.Location.Y;
                gr.DrawLine(Pens.Green, xx1 + 10, yy1 + 10, xx2 + 10, yy2 + 10);
                gr.DrawString(razdaljina, f, Brushes.Black, (xx1 + xx2) / 2, (yy1 + yy2) / 2 - 2);
            }

            if (Main.tekuci != null)
            {
                State stanje = Main.tekuci[Main.tekuci.Count - 1];
                int   x      = 140;
                int   y      = 30;
                int   ss     = 1;
                for (int i = 1; i < stanje.gradovi.Count; i++)
                {
                    PictureBox g1 = stanje.gradovi[i - 1];
                    PictureBox g2 = stanje.gradovi[i];
                    Font       fr = new Font(FontFamily.GenericSansSerif, 12);
                    Font       ff = new Font(FontFamily.GenericSansSerif, 10);
                    gr.DrawString("Lista gradova: ", fr, Brushes.Gray, width - 140, 0);
                    gr.DrawLine(Pens.Gray, width - 137, 20, width - 40, 20);
                    gr.DrawLine(Pens.Gray, width - 142, 0, width - 142, height);
                    if (i == 1)
                    {
                        // String tag = g1.Tag.ToString();
                        //Label l1 = new Label();

                        gr.DrawString(ss + "." + g1.Name, ff, Brushes.RosyBrown, width - x, y);
                        ss++;
                        //l1.Location=   new Point(100,100);
                        //  l1.Visible = true;
                        y += 20;
                    }
                    //String tag2 = g2.Tag.ToString();
                    //Label l2 = new Label();
                    // l2.Text = "wfwe";
                    gr.DrawString(ss + "." + g2.Name, ff, Brushes.RosyBrown, width - x, y);
                    ss++;
                    //l2.Visible = true;
                    y += 20;
                    float xx1 = (float)g1.Location.X;
                    float yy1 = (float)g1.Location.Y;
                    float xx2 = (float)g2.Location.X;
                    float yy2 = (float)g2.Location.Y;
                    gr.DrawLine(Pens.Red, xx1 + 10, yy1 + 10, xx2 + 10, yy2 + 10);
                }
            }
        }
예제 #5
0
 private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
 {
     Lista.Instanca().SAVE();
 }
예제 #6
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Lista.Instanca().LOAD();

            gradoviPanel1.SuspendLayout();

            for (int i = 0; i < Lista.listaDat.Count; i++)
            {
                Dat d1 = Lista.listaDat[i];

                PictureBox pb = new PictureBox();
                pb.AllowDrop = false;

                pb.Location = d1.lokacija;
                pb.Size     = d1.velicina;
                pb.Image    = d1.slk;
                pb.Tag      = d1.tag;
                // pb.Name = "grad " + chA.ToString();

                //MessageBox.Show(pb.Name);
                pb.SizeMode    = PictureBoxSizeMode.AutoSize;
                pb.MouseClick += new MouseEventHandler(gradoviPanel1_MouseClick);
                pb.MouseDown  += new MouseEventHandler(pb_MouseDown);
                pb.MouseMove  += new MouseEventHandler(pb_MouseMove);

                // a++;
                //i++;
                //MessageBox.Show(pb.Name);


                // listaGradova.Add(pb);


                PictureBox pb2 = new PictureBox();
                pb2.AllowDrop = false;

                pb2.Location = d1.lokacija2;
                pb2.Size     = d1.velicina2;
                pb2.Image    = d1.slk2;
                pb2.Tag      = d1.tag2;
                // pb.Name = "grad " + chA.ToString();

                //MessageBox.Show(pb.Name);
                pb2.SizeMode    = PictureBoxSizeMode.AutoSize;
                pb2.MouseClick += new MouseEventHandler(gradoviPanel1_MouseClick);
                pb2.MouseDown  += new MouseEventHandler(pb_MouseDown);
                pb2.MouseMove  += new MouseEventHandler(pb_MouseMove);

                // a++;
                //i++;
                //MessageBox.Show(pb.Name);
                gradoviPanel1.Controls.Add(pb);
                gradoviPanel1.Controls.Add(pb2);

                // listaGradova.Add(pb);
                Rastojanje r = new Rastojanje();
                r.razd = d1.razdaljina;
                r.g1   = pb;
                r.g2   = pb2;
                // Model.MemorisiDatoteku();
                // gradoviPanel1.Refresh();

                Lista.Instanca().listaRastojanja.Add(r);
            }
            gradoviPanel1.ResumeLayout(false);
            gradoviPanel1.Refresh();
        }
예제 #7
0
        // int kk = 0;

        /*   if (kk == 1)
         *                     {
         *                         MessageBox.Show("Ne postoji veza");
         *                         return;
         *                     }*/
        private void btnBrisivezu_Click(object sender, EventArgs e)
        {
            if (selektovana != null && selektovana2 != null)
            {
                Brisanje     b  = new Brisanje("Da li želite da obrišete vezu?");
                DialogResult dr = b.ShowDialog();

                if (dr == DialogResult.OK)
                {
                    foreach (PictureBox p in gradoviPanel1.Controls)
                    {
                        if (p.Tag.Equals(selektovana.Tag))
                        {
                            gradoviPanel1.SuspendLayout();
                            int n = Lista.Instanca().listaRastojanja.Count;
                            for (int k = 0; k < n; k++)
                            {
                                if (Lista.Instanca().listaRastojanja[k].g1.Tag.Equals(selektovana.Tag) || Lista.Instanca().listaRastojanja[k].g2.Tag.Equals(selektovana2.Tag))
                                {
                                    Lista.Instanca().listaRastojanja.Remove(Lista.Instanca().listaRastojanja[k]);
                                    n--;
                                    k--;
                                    //  kk = 1;
                                    break;
                                }
                            }
                            gradoviPanel1.resenje = null;
                            tekuci = null;
                            gradoviPanel1.ResumeLayout(false);
                            gradoviPanel1.Refresh();
                            break;
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("Morate selektovati dva grada za brisanje veze!");
            }

            gradoviPanel1.Refresh();
        }
예제 #8
0
        private void btnObrisi_Click_1(object sender, EventArgs e)
        {
            if (selektovana == null || selektovana2 != null)
            {
                MessageBox.Show("Morate selektovati tacno jedan grad za brisanje!");
            }
            else
            {
                Brisanje     b  = new Brisanje("Da li želite da obrišete grad?");
                DialogResult dr = b.ShowDialog();

                if (dr == DialogResult.OK)
                {
                    if (selektovana != null)
                    {
                        foreach (PictureBox p in gradoviPanel1.Controls)
                        {
                            if (p.Tag.Equals(selektovana.Tag))
                            {
                                gradoviPanel1.SuspendLayout();
                                int n = Lista.Instanca().listaRastojanja.Count;
                                for (int k = 0; k < n; k++)
                                {
                                    if (Lista.Instanca().listaRastojanja[k].g1.Tag.Equals(selektovana.Tag) || Lista.Instanca().listaRastojanja[k].g2.Tag.Equals(selektovana.Tag))
                                    {
                                        Lista.Instanca().listaRastojanja.Remove(Lista.Instanca().listaRastojanja[k]);
                                        n--;
                                        k--;
                                    }
                                }
                                gradoviPanel1.resenje = null;
                                tekuci = null;
                                gradoviPanel1.Controls.Remove(p);
                                //  x -= 50;
                                obrisana.Add(p);
                                brisiKlik++;
                                m++;
                                i--;
                                selektovana = null;
                                gradoviPanel1.ResumeLayout(false);
                                gradoviPanel1.Refresh();
                                break;
                            }
                        }
                    }
                }
            }


            gradoviPanel1.Refresh();
        }