示例#1
0
        private void nacrtajSliku(string putanja, int x, int y, string ime)
        {
            Image img = Image.FromFile(putanja);

            Ikonica picture = new Ikonica();

            picture.SizeMode = PictureBoxSizeMode.AutoSize;
            picture.Image    = img;

            //postavljamo poziciju i oduzimamo tako da nam slika bude na centru x,y poz
            picture.Location = new Point(x - picture.Width / 2, y - picture.Height / 2);
            picture.Show();
            picture.ime = ime;

            //dodajemo ovde rucno evenove sta se desi kad korisnik klikne na ikonice
            picture.MouseClick       += new MouseEventHandler(klikNaIkonicu);
            picture.MouseDoubleClick += new MouseEventHandler(dupliKlikNaIkonicu);

            picture.MouseDown += new MouseEventHandler(drzimoNaIkonicu);
            picture.MouseMove += new MouseEventHandler(zapoceoDrag);

            picture.MouseHover += new EventHandler((s, e) =>
            {
                ToolTip tt = new ToolTip();
                tt.SetToolTip(picture, ime);
            });

            listaIkonica.Add(picture);

            this.Controls.Add(picture);              //kada programski dodajemo kontrole moramo ih ubaciti u Controls listu
            this.Controls.SetChildIndex(picture, 0); //postavimo ga na front, da se iscrtava ispred mape
        }
示例#2
0
        private void klikNaIkonicu(object sender, MouseEventArgs e)
        {
            Ikonica s = (Ikonica)sender;

            if (!s.Equals(selektovan))
            {
                if (e.Clicks == 1)
                {
                    //koristimo selektovan objekat da imamo samo 1 selektovan uvek
                    if (selektovan != null)
                    {
                        selektovan.BorderStyle = BorderStyle.None;
                    }

                    s.BorderStyle = BorderStyle.FixedSingle;
                    selektovan    = s;

                    //nadjemo node kliknute ikonice i njega oznacimo, ako ih ima vise oznacimo prvi [0]
                    TreeNode[] nodes = drvo.Nodes.Find(s.ime, true);

                    if (nodes.Length > 0)
                    {
                        drvo.SelectedNode = nodes[0];
                    }
                }
            }
        }
示例#3
0
 private void mapaPanel_MouseClick(object sender, MouseEventArgs e)
 {
     if (selektovan != null)
     {
         selektovan.BorderStyle = BorderStyle.None;
         selektovan             = null;
     }
 }
示例#4
0
        private void dupliKlikNaIkonicu(object sender, MouseEventArgs e)
        {
            Ikonica          s = (Ikonica)sender;
            SQLiteDataReader r = MainForm.baza.Select("SELECT id FROM lokali WHERE ime='" + s.ime + "'");

            new UnosLokalaForm(r["id"].ToString()).ShowDialog();
            populateTree();
        }
        private void canvasMapa_Drop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent("myFormat"))
            {
                Vrsta v = e.Data.GetData("myFormat") as Vrsta;

                MainWindow.InstancaKolekcije.ListaVrste.Remove(v);
                VrstaListe.Remove(v);
                Image ikonica = new Image();
                ikonica.Height = 30;
                ikonica.Width  = 30;
                BitmapImage ikonicaSource = new BitmapImage(new Uri(v.Ikonica));
                ikonica.Name   = v.Id;
                ikonica.Source = ikonicaSource;

                if (!promena)
                {
                    this.canvasMapa.Children.Add(ikonica);

                    Point p = e.GetPosition(this.canvasMapa);

                    Canvas.SetLeft(ikonica, p.X);
                    Canvas.SetTop(ikonica, p.Y);

                    Ikonica icon = new Ikonica(p.X, p.Y, v);
                    MainWindow.InstancaKolekcije.MapaVrste.Add(icon);
                }
                else
                {
                    Point p = e.GetPosition(this.canvasMapa);
                    for (int i = 0; i < MainWindow.InstancaKolekcije.MapaVrste.Count; i++)
                    {
                        if (MainWindow.InstancaKolekcije.MapaVrste[i].V.Id.Equals(v.Id))
                        {
                            Ikonica saCanvasa = MainWindow.InstancaKolekcije.MapaVrste[i];
                            canvasMapa.Children.RemoveAt(i);
                            canvasMapa.Children.Insert(i, ikonica);

                            Vrsta pomV = razdaljina(p);
                            if (pomV != null)
                            {
                                p.X = saCanvasa.X;
                                p.Y = saCanvasa.Y;
                            }

                            Canvas.SetLeft(ikonica, p.X);
                            Canvas.SetTop(ikonica, p.Y);

                            MainWindow.InstancaKolekcije.MapaVrste[i].X = p.X;
                            MainWindow.InstancaKolekcije.MapaVrste[i].Y = p.Y;
                            break;
                        }
                    }
                }
            }
        }
示例#6
0
        /*
         * Ovo se poziva kada spustimo node na mapu
         */
        private void mapaPanel_DragDrop(object sender, DragEventArgs e)
        {
            Type     t          = new TreeNode().GetType(); //nadjemo tip preko ovog izvalacimo sta smo preneli
            Type     ikonicaTip = new Ikonica().GetType();
            TreeNode prevuceni;
            Ikonica  pomerena;

            selekcioniProzor = Rectangle.Empty;

            if (e.Data.GetDataPresent(t))                //proverimo da li smo povukli te podatke
            {
                prevuceni = (TreeNode)e.Data.GetData(t); //uzmemo nas prevuceni node

                if (prevuceni.ForeColor.Equals(Color.Gray))
                {
                    return;
                }

                //Sada imamo koj node smo stavili na mapu, preko imena izvucemo iz baze njegovu sliku

                SQLiteDataReader r = MainForm.baza.Select("SELECT ikona FROM tipovi WHERE ime= '" + prevuceni.Parent.Text + "'");

                int x = e.X - this.Left - 4;
                int y = e.Y - this.Top - menuStrip1.Height - 4;

                //pozivamo pomocnu metodu za crtanje, ubacujemo x,y poz uz mali offset zbog menia i paddinga izmedju
                nacrtajSliku(r["ikona"].ToString(), x, y, prevuceni.Text);

                //Napomena: postavimo da je node siv, na drugim mestima vrsimo prvere ako je siv da ne moze da se doda
                prevuceni.ForeColor = Color.Gray;


                string        sql             = @"UPDATE lokali SET X = @xxx, Y = @yyy
                              WHERE ime='" + prevuceni.Name + "'";
                SQLiteCommand pozicijeCommand = new SQLiteCommand(sql, MainForm.baza.dbConn);
                pozicijeCommand.Parameters.AddWithValue("@xxx", x);
                pozicijeCommand.Parameters.AddWithValue("@yyy", y);
                pozicijeCommand.ExecuteReader();
            }
            else if (e.Data.GetDataPresent(ikonicaTip))
            {
                pomerena = (Ikonica)e.Data.GetData(ikonicaTip);

                int x = e.X - this.Left - 4;
                int y = e.Y - this.Top - menuStrip1.Height - 4;

                pomerena.Location = new Point(x, y);

                string        sql             = @"UPDATE lokali SET X = @xxx, Y = @yyy
                              WHERE ime='" + pomerena.ime + "'";
                SQLiteCommand pozicijeCommand = new SQLiteCommand(sql, MainForm.baza.dbConn);
                pozicijeCommand.Parameters.AddWithValue("@xxx", x);
                pozicijeCommand.Parameters.AddWithValue("@yyy", y);
                pozicijeCommand.ExecuteReader();
            }
        }
示例#7
0
        private void drzimoNaIkonicu(object sender, MouseEventArgs e)
        {
            dragIkonica = (Ikonica)sender; //nasli node na toj lokaciji

            if (dragIkonica != null)       //ako smo uboli neki node
            {
                Size dragVelicina = SystemInformation.DragSize;
                selekcioniProzor = new Rectangle(new Point(e.X - (dragVelicina.Width / 2), e.Y - (dragVelicina.Height / 2)), dragVelicina);
            }
        }
示例#8
0
        private void mapaPanel_DragEnter(object sender, DragEventArgs e)
        {
            Type type = new TreeNode().GetType();
            Type t    = new Ikonica().GetType();

            if (e.Data.GetDataPresent(type) || e.Data.GetDataPresent(t))
            {
                e.Effect = DragDropEffects.Copy;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }
示例#9
0
        private void zapoceoDrag(object sender, MouseEventArgs e)
        {
            Ikonica s = (Ikonica)sender;

            //korisnik je kliknuo i sad drzi levi taster misa
            if (e.Button == MouseButtons.Left)
            {
                //prva provera da li je uopste dobar node krenuo da povlaci
                if ((selekcioniProzor != Rectangle.Empty) &&
                    (!selekcioniProzor.Contains(e.X, e.Y))) //druga da li je izasao iz "mrtve zone"
                {
                    offset = SystemInformation.WorkingArea.Location;

                    DragDropEffects efekti = s.DoDragDrop(dragIkonica, DragDropEffects.Copy);
                }
            }
        }
示例#10
0
        /// <summary>
        /// Kada selektujemo node na tree, prodjemo kroz listu ikonica i sleketujemo
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            string ime = e.Node.Name;

            foreach (Ikonica i in listaIkonica)
            {
                if (i.ime.Equals(ime))
                {
                    if (selektovan != null)
                    {
                        selektovan.BorderStyle = BorderStyle.None;
                    }

                    i.BorderStyle = BorderStyle.FixedSingle;
                    selektovan    = i;
                }
            }
        }
示例#11
0
        private void canvasMapa_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            startPoint = e.GetPosition(this.canvasMapa);
            Vrsta v = razdaljina(startPoint);

            if (v != null)
            {
                for (int i = 0; i < MainWindow.InstancaKolekcije.MapaVrste.Count; i++)
                {
                    if (MainWindow.InstancaKolekcije.MapaVrste[i].V.Id.Equals(v.Id))
                    {
                        Ikonica tempV = MainWindow.InstancaKolekcije.MapaVrste[i];
                        canvasMapa.Children.RemoveAt(i);
                        MainWindow.InstancaKolekcije.ListaVrste.Add(tempV.V);
                        MainWindow.InstancaKolekcije.MapaVrste.RemoveAt(i);
                        break;
                    }
                }
            }
        }
示例#12
0
        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            Vrsta v = (Vrsta)tabela.SelectedItem;

            MainWindow.InstancaKolekcije.Vrste.Remove(v);
            // MainWindow.InstancaKolekcije.ListaVrste.Remove(v);

            for (int i = 0; i < MainWindow.InstancaKolekcije.ListaVrste.Count; i++)
            {
                if (MainWindow.InstancaKolekcije.ListaVrste[i].Id.Equals(v.Id))
                {
                    MainWindow.InstancaKolekcije.ListaVrste.RemoveAt(i);
                }
            }
            //  MainWindow.InstanceMW.RefreshView();



            // TODO brisanje iz MapaVrste



            for (int i = 0; i < MainWindow.InstancaKolekcije.MapaVrste.Count; i++)
            {
                if (MainWindow.InstancaKolekcije.MapaVrste[i].V.Id.Equals(v.Id))
                {
                    Ikonica tempV = MainWindow.InstancaKolekcije.MapaVrste[i];
                    MainWindow.InstanceMW.canvasMapa.Children.RemoveAt(i);
                    MainWindow.InstancaKolekcije.MapaVrste.RemoveAt(i);
                    break;
                }
            }

            for (int i = 0; i < VrsteLista.Count; i++)
            {
                if (VrsteLista[i].Id.Equals(v.Id))
                {
                    VrsteLista.RemoveAt(i);
                }
            }
        }