private void cmbObGroups_SelectedIndexChanged(object sender, EventArgs e) { // Check if it is group that had been selected or only label for creating a new one if (!cmbObGroups.SelectedItem.ToString().Contains("[")) { currentGroup = _Dh.myObGroups[cmbObGroups.SelectedIndex]; if (isbtnNewObjectClicked) { isbtnNewObjectClicked = false; cmbObGroups.Enabled = true; currentGroup = null; cmbObGroups_SelectedIndexChanged(null, null); } else { isbtnNewObjectClicked = true; cmbObGroups.Enabled = false; currentGroup = _Dh.myObGroups[cmbObGroups.SelectedIndex]; } somePoints = new List <PointLatLng>(); recycleIndexes = new List <int>(); } }
public static GMapOverlay getOverlay(GMapControl gmc, xObGroup x) { foreach (GMapOverlay overlay in gmc.Overlays) { if (overlay.Id.ToString() == x.Name.ToString()) { return(overlay); } } return(null); }
public static GMapOverlay getOverlay(GMapControl gmc, xObject x) { xObGroup obGr = getGroupById((int)x.ObGroupId); foreach (GMapOverlay overlay in gmc.Overlays) { if (overlay.Id == obGr.Name) { return(overlay); } } return(null); }
private void trvObGroups_AfterCheck(object sender, TreeViewEventArgs e) { if (e.Action == TreeViewAction.ByMouse) { if (e.Node.Name.Contains("obgr")) { xObGroup obGr = _Dh.getGroupById(Convert.ToInt64(e.Node.Name.Substring(5))); if (e.Node.Checked) { foreach (TreeNode tn in e.Node.Nodes) { tn.Checked = true; } foreach (xObject x in _Dh.getObjectsByGroupId(obGr.Id)) { drawObject(x); } } else { foreach (TreeNode tn in e.Node.Nodes) { tn.Checked = false; } _Dh.getOverlay(TheMap, obGr).Clear(); } } else if (e.Node.Name.Contains("obj")) { xObGroup obGr = _Dh.getGroupById(Convert.ToInt64(e.Node.Parent.Name.Substring(5))); xObject xObj = _Dh.getObjectById(Convert.ToInt64(e.Node.Name.Substring(4))); if (e.Node.Checked) { drawObject(xObj); } else { removeObjFromMap(xObj); } } } }
public static AccessLevel getGroupAccessLevel(xObGroup g) { try { if (myAccount.IsModerator) { return(AccessLevel.Remove); } return(myAccount.Permissions[g.Id]); } catch (KeyNotFoundException kex) { return(AccessLevel.Read); } catch (Exception ex) { err_processor(ex); return(AccessLevel.None); } }
private void removeObjFromMap(xObject obj) { xObGroup obGr = _Dh.getGroupById(obj.ObGroupId); GMapOverlay ov = _Dh.getOverlay(TheMap, obGr); switch (obGr.GroupType) { case ObjectType.DOT: ov.Markers.Remove(obj.Marker); break; case ObjectType.ROUTE: obj.Route.Overlay.Markers.Remove(obj.Marker); ov.Routes.Remove(obj.Route); break; case ObjectType.POLYGON: obj.Polygon.Overlay.Markers.Remove(obj.Marker); ov.Polygons.Remove(obj.Polygon); break; } }
private void btnOk_Click(object sender, EventArgs e) { if (wObGroup.Id > 0) { // Saving an existing objects group wObGroup.Name = txtObGrName.Text; wObGroup.C_Date = wObGroup.C_Date; if (wObGroup.GroupType != ObjectType.DOT) { wObGroup.Appendix = lineDashStyle + ":" + lineColor + ":" + lineThickness; } else { wObGroup.Appendix = b64Icon; } MySqlCommand comm = new MySqlCommand(); comm.CommandText = "UPDATE `obgroups` SET uid=@uid,name=@name,description=@description,type=@type,appendix=@appendix,c_date=@c_date WHERE id=@id"; comm.Parameters.AddWithValue("@id", wObGroup.Id); comm.Parameters.AddWithValue("@uid", wObGroup.Uid); comm.Parameters.AddWithValue("@name", wObGroup.Name); comm.Parameters.AddWithValue("@description", wObGroup.Description); comm.Parameters.AddWithValue("@type", (int)wObGroup.GroupType); comm.Parameters.AddWithValue("@appendix", wObGroup.Appendix); comm.Parameters.AddWithValue("@c_date", wObGroup.C_Date); _Dh.dbExecute(comm); _Dh.msgInformation("Информация обновлена!"); } else { // Creating new objects group wObGroup = new xObGroup() { Name = txtObGrName.Text, Uid = _Dh.myAccount.Id, C_Date = _Dh.rightNow }; wObGroup.GroupType = (ObjectType)cmbObjectTypes.SelectedIndex; if (wObGroup.GroupType != ObjectType.DOT) { if (lineColor.Length > 4) { wObGroup.Appendix = lineDashStyle + ":" + lineColor + ":" + lineThickness; } } else if (b64Icon.Length > 4) { wObGroup.Appendix = b64Icon; } MySqlCommand comm = new MySqlCommand(); comm.CommandText = "INSERT INTO obgroups(uid,name,description,type,appendix,c_date) VALUES(@uid,@name,@description,@type,@appendix,@c_date)"; comm.Parameters.AddWithValue("@uid", wObGroup.Uid); comm.Parameters.AddWithValue("@name", wObGroup.Name); comm.Parameters.AddWithValue("@description", wObGroup.Description); comm.Parameters.AddWithValue("@type", (int)wObGroup.GroupType); comm.Parameters.AddWithValue("@appendix", wObGroup.Appendix); comm.Parameters.AddWithValue("@c_date", wObGroup.C_Date); wObGroup.Id = _Dh.dbExecute(comm); _Dh.myObGroups.Add(wObGroup); _Dh.msgInformation("Новая группа объектов создана!"); } // Load Pen for current object if (wObGroup.GroupType != ObjectType.DOT) { wObGroup.Pen = new Pen(_Dh.colorFromHex(lineColor), lineThickness); if (lineDashStyle == "solid") { wObGroup.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; } if (lineDashStyle == "dashed") { wObGroup.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; } if (lineDashStyle == "dotted") { wObGroup.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; } } //********************************************************************************** this.DialogResult = DialogResult.OK; this.Close(); }
private void drawObject(xObject x) { xObGroup obGr = _Dh.getGroupById(x.ObGroupId); GMapOverlay ov = _Dh.getOverlay(TheMap, obGr); switch (obGr.GroupType) { case ObjectType.DOT: GMarkerGoogle marker = null; PointLatLng point = x.Coordinates[0]; if (obGr.Appendix.Length > 5) { Bitmap bmp; using (var ms = new MemoryStream(Convert.FromBase64String(obGr.Appendix))) { bmp = new Bitmap(ms); } marker = new GMarkerGoogle(point, bmp); } else { marker = new GMarkerGoogle(point, GMarkerGoogleType.green); } MarkerTooltipMode mode = MarkerTooltipMode.Always; marker.ToolTip = new GMapBaloonToolTip(marker); marker.ToolTipMode = mode; Brush ToolTipBackColor = new SolidBrush(Color.Transparent); marker.ToolTipText = x.Name; x.Marker = marker; ov.Markers.Add(x.Marker); TheMap.UpdateMarkerLocalPosition(x.Marker); break; case ObjectType.ROUTE: GMapRoute route = new GMapRoute(x.Coordinates, x.Name); route.Stroke = obGr.Pen; route.IsHitTestVisible = true; x.Marker = new GMarkerGoogle(route.Points[0], new Bitmap(1, 1)) { Tag = x.Name, IsVisible = false, ToolTipMode = MarkerTooltipMode.Always, ToolTipText = x.Name }; x.Route = route; ov.Routes.Add(x.Route); x.Route.Overlay.Markers.Add(x.Marker); break; case ObjectType.POLYGON: var polygon = new GMapPolygon(x.Coordinates, x.Name); polygon.Fill = new SolidBrush(Color.FromArgb(50, obGr.Pen.Color)); polygon.Stroke = obGr.Pen; polygon.IsHitTestVisible = true; x.Marker = new GMarkerGoogle(polygon.Points[0], new Bitmap(1, 1)) { Tag = x.Name, IsVisible = false, ToolTipMode = MarkerTooltipMode.Always, ToolTipText = x.Name }; x.Polygon = polygon; ov.Polygons.Add(x.Polygon); x.Polygon.Overlay.Markers.Add(x.Marker); break; } }
public void RefreshUI() { saveState(); isEditMode = false; trvObGroups.Nodes.Clear(); foreach (GMapOverlay x in TheMap.Overlays) { x.Clear(); } if (_Dh.myObGroups.Count > 0) { cmbObGroups.Items.Clear(); foreach (xObGroup xobgroup in _Dh.myObGroups) { cmbObGroups.Items.Add(xobgroup.Name); } cmbObGroups.Items.Add(strNewObGroup); cmbObGroups.SelectedIndex = cmbObGroups.Items.Count - 1; } // Populate TreeView and draw objects on the map foreach (xObGroup x in _Dh.myObGroups) { // Check access to this objects group for this user if (_Dh.getGroupAccessLevel(x).CompareTo(_Dh.AccessLevel.Read) < 0) { continue; } List <xObject> childs = _Dh.getObjectsByGroupId(x.Id); if (childs != null && childs.Count > 0) { trvObGroups.Nodes.Add("obgr_" + x.Id, x.Name).Checked = true; foreach (xObject child in childs) { trvObGroups.Nodes["obgr_" + x.Id].Nodes.Add("obj_" + child.Id, child.Name).Checked = true; } foreach (xObject o in _Dh.getObjectsByGroupId(x.Id)) { drawObject(o); } } } // Restoring TreeView from saved state foreach (DictionaryEntry dictionaryEntry in stgList.pdArray) { bool b = (bool)dictionaryEntry.Value; TreeNode[] nodes = trvObGroups.Nodes.Find(dictionaryEntry.Key.ToString(), true); if (nodes.Length > 0) { string[] keyparts = dictionaryEntry.Key.ToString().Split(new char[] { '_' }); xObGroup xgr = null; xObject xob = null; if (keyparts[0].Equals("obgr")) { xgr = _Dh.getGroupById(Convert.ToInt32(keyparts[1])); } else { xob = _Dh.getObjectById(Convert.ToInt32(keyparts[1])); xgr = _Dh.getGroupById(xob.ObGroupId); } GMapOverlay overlay = _Dh.getOverlay(TheMap, xgr); // Check or uncheck current node TreeNode itemNode = trvObGroups.Nodes.Find(dictionaryEntry.Key.ToString(), true)[0]; itemNode.Checked = b; if (!b) { // Hide objects if they are not selected in the TreeView if (keyparts[0].Equals("obj")) { removeObjFromMap(_Dh.getObjById(Convert.ToInt64(keyparts[1]))); } else { overlay.Clear(); } } } } trvObGroups.ExpandAll(); if (_Dh.myObGroups.Count == 0) { // For the first start spcMain.Panel1MinSize = 1; spcMain.SplitterDistance = 1; cmbObGroups.Visible = false; } }
public static void loadObGroupsData() { using (MySqlConnection connection = new MySqlConnection(connectionString())) { try { connection.Open(); MySqlDataReader reader; var cmd = new MySqlCommand("SELECT * from `obgroups`", connection); reader = cmd.ExecuteReader(); _Dh.myObGroups = new List <xObGroup>(); while (reader.Read()) { xObGroup x = new xObGroup() { Id = sfIntReader(reader, "id"), Uid = sfIntReader(reader, "uid"), Name = sfStringReader(reader, "name"), Description = sfStringReader(reader, "description"), Appendix = sfStringReader(reader, "appendix"), GroupType = (ObjectType)sfIntReader(reader, "type"), C_Date = sfStringReader(reader, "c_date") }; x.Pen = new Pen(Color.Violet, 4); x.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; // Load Pen for current object if (x.GroupType != ObjectType.DOT && x.Appendix.Length > 4) { string ds = "solid", clr = "#000000"; int thickness = 1; ds = x.Appendix.Split(new char[] { ':' })[0]; clr = x.Appendix.Split(new char[] { ':' })[1]; thickness = Convert.ToInt32(x.Appendix.Split(new char[] { ':' })[2]); x.Pen = new Pen(colorFromHex(clr), thickness); if (ds == "solid") { x.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; } if (ds == "dashed") { x.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; } if (ds == "dotted") { x.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; } } _Dh.myObGroups.Add(x); } reader.Close(); } catch (Exception ex) { err_processor(ex); } } }