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 }
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]; } } } }
private void mapaPanel_MouseClick(object sender, MouseEventArgs e) { if (selektovan != null) { selektovan.BorderStyle = BorderStyle.None; selektovan = null; } }
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; } } } } }
/* * 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(); } }
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); } }
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; } }
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); } } }
/// <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; } } }
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; } } } }
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); } } }