Advertisement
Guest User

Untitled

a guest
Jul 19th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 61.86 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using AxmvMapLib;
  6. using Npgsql;
  7. using mvMapLib;
  8.  
  9. namespace Rekod
  10. {
  11.     public class layersManager
  12.     {
  13.         private layersManagerFRMRastr rastrfrm1;
  14.         private LayerItems selectedLayer1;
  15.         private AxMapLIb mapLib;
  16.         private mainFrm mainFrm1;
  17.         private NpgsqlConnection conn1;
  18.         private int curObjSelected;
  19.         private int curTableSelected;
  20.         private string curTableName;
  21.         string name_map_name;
  22.         int idT2, id_pk;
  23.         bool hideBaseLayers1;
  24.         FlowLayoutPanel flowLayoutPanel1;
  25.         Panel panel1;
  26.         PostgreSQLSource postgres;
  27.  
  28.         public delegate void layer_deleteEventHandler(string name);
  29.         public delegate void layer_addEventHandler(string name);
  30.         public delegate void layer_MoveUpEventHandler(string name);
  31.         public delegate void layer_MoveDownEventHandler(string name);
  32.  
  33.         public event layer_deleteEventHandler layer_delete;
  34.         public event layer_addEventHandler layer_add;
  35.         public event layer_MoveUpEventHandler layer_up;
  36.         public event layer_MoveDownEventHandler layer_down;
  37.  
  38.         public layersManager(AxMapLIb map, mainFrm parentForm, NpgsqlConnection conn, FlowLayoutPanel flowPanel, Panel panel)
  39.         {
  40.  
  41.             flowLayoutPanel1 = flowPanel;
  42.             panel1 = panel;
  43.             mapLib = map;
  44.  
  45.             mainFrm1 = parentForm;
  46.             conn1 = conn;
  47.  
  48.  
  49.  
  50.             curObjSelected = 0;
  51.             curTableSelected = 0;
  52.             curTableName = "";
  53.            // rastrfrm1 = new layersManagerFRMRastr(this);
  54.             mapLib.Selected += new AxmvMapLib.IMapLIbEvents_SelectedEventHandler(mapLib_Selected);
  55.             loadLayerListFromDB();
  56.            
  57. //            mapLib.mapUpdate();
  58.  
  59.  
  60.         }
  61.         public int baseLayersCount
  62.         {
  63.             get
  64.             {
  65.                 int i = 0;
  66.                 foreach (Control cc in flowLayoutPanel1.Controls)
  67.                 {
  68.                     if (((LayerItems)cc).isBaseLayer == true)
  69.                     {
  70.                         i++;
  71.                     }
  72.                 }
  73.                 return i;
  74.             }
  75.         }
  76.         public string[] userLayersVisibleAndSelectable
  77.         {
  78.             get
  79.             {
  80.                 string[] ss = new string[] { };
  81.                 foreach (Control cc in flowLayoutPanel1.Controls)
  82.                 {
  83.                     LayerItems ll=(LayerItems)cc;
  84.                     if (ll.isBaseLayer == false && ll.isVectorLayer == false && ll.layerVisible == true && ll.layerLoaded == true)
  85.                     {
  86.                         string[] s1 = new string[ss.Length + 1];
  87.                         ss.CopyTo(s1, 0);
  88.                         ss = new string[s1.Length];
  89.                         s1.CopyTo(ss, 0);
  90.                         ss[ss.Length - 1] = ll.layerName;
  91.                     }
  92.                     if (ll.layerName == "Поля")
  93.                     {
  94.                         string[] s1 = new string[ss.Length + 1];
  95.                         ss.CopyTo(s1, 0);
  96.                         ss = new string[s1.Length];
  97.                         s1.CopyTo(ss, 0);
  98.                         ss[ss.Length - 1] = ll.layerName;
  99.                     }
  100.                 }
  101.                 return ss;
  102.             }
  103.         }
  104.         public void updateLayers()
  105.         {
  106.             flowLayoutPanel1.SuspendLayout();
  107.             foreach (Control cc in flowLayoutPanel1.Controls)
  108.             {
  109.                 LayerItems li = (LayerItems)cc;
  110.                 if (li.isBaseLayer == false && li.isVectorLayer == false)
  111.                 {
  112.                     mvMapLib.mvLayer ll = mapLib.getLayer(li.Name);
  113.                     if (ll != null)
  114.                     {
  115.                         ll.deleteLayer();
  116.                         flowLayoutPanel1.Controls.Remove(li);
  117.                     }
  118.                 }
  119.             }
  120.             loadLayerListFromDB();
  121.             flowLayoutPanel1.Visible = !flowLayoutPanel1.Visible;
  122.             flowLayoutPanel1.Visible = !flowLayoutPanel1.Visible;
  123.             flowLayoutPanel1.ResumeLayout();
  124.         }
  125.  
  126.         public void updateLayer(string Name)
  127.         {
  128.             foreach (Control cc in flowLayoutPanel1.Controls)
  129.             {
  130.                 LayerItems li = (LayerItems)cc;
  131.                 if (li.layerName == Name)
  132.                 {
  133.                     mvMapLib.mvLayer ll = mapLib.getLayer(li.layerName);
  134.                     if (ll != null)
  135.                     {
  136.                         if (!classesOfMetods.getTableInfoOfNameMap(li.layerName).sourceLayer)
  137.                         {
  138.                             ll.deleteLayer();
  139.                         }
  140.                         //flowLayoutPanel1.Controls.Remove(li);
  141.                         openTable(li.layerId);
  142.                         ll = mapLib.getLayer(li.layerName);
  143.                         if (ll != null)
  144.                         {
  145.                             ll.editable = li.layerEdit;
  146.                             ll.Visible = li.layerVisible;
  147.                             break;
  148.                         }
  149.                         break;
  150.                     }
  151.                 }
  152.             }
  153.             mapLib.Update();
  154.         }
  155.         // V-F:
  156.         public void addLayer(string name, int id, bool edit, bool visible, bool loaded, bool BaseLayer, bool vectorLayer)
  157.         {
  158.             bool rez = false;
  159.             //int posUserLayer = 0, posBaseLayer = 0, posVectorLayer = 0;
  160.             //int tmpI = 0;
  161.             foreach (Control cc in flowLayoutPanel1.Controls)
  162.             {
  163.                 LayerItems li = (LayerItems)cc;
  164.                 if (li.layerName == name)
  165.                 {
  166.                     rez = true;
  167.  
  168.                     break;
  169.                 }
  170.             }
  171.             if (!rez)
  172.             {
  173.                 LayerItems item1 = new LayerItems();
  174.                 item1.layerName = name;
  175.                 item1.layerVisible = visible;
  176.                 item1.layerEdit = edit;
  177.                 item1.layerLoaded = loaded;
  178.                 item1.isBaseLayer = BaseLayer;
  179.                 item1.isVectorLayer = vectorLayer;
  180.                 item1.layerId = id;
  181.                 item1.layer_Click += new LayerItems.layer_ClickEventHandler(item1_layer_Click);
  182.                 item1.layer_Edit += new LayerItems.layer_EditEventHandler(item1_layer_Edit);
  183.                 item1.layer_Visible += new LayerItems.layer_VisibleEventHandler(item1_layer_Visible);
  184.                 item1.layer_DoubleClick += new LayerItems.layer_DoubleClickEventHandler(item1_layer_DoubleClick);
  185.  
  186.                 flowLayoutPanel1.Controls.Add(item1);
  187.                 if (vectorLayer)
  188.                 {
  189.                     item1.BringToFront();
  190.                 }
  191.                 else if (!BaseLayer)
  192.                 {
  193.                     item1.BringToFront();
  194.                 }
  195.                 layer_addEventHandler handler1 = layer_add;
  196.                 if (handler1 != null)
  197.                 {
  198.                     handler1(name);
  199.                 }
  200.                 flowLayoutPanel1.Refresh();
  201.             }
  202.         }
  203.         public void addLayer(string name, int id, bool edit, bool visible, bool loaded, bool BaseLayer, bool vectorLayer, string rastrPath)
  204.         {
  205.             bool rez = false;
  206.             //int posUserLayer = 0, posBaseLayer = 0, posVectorLayer = 0;
  207.             //int tmpI = 0;
  208.             foreach (Control cc in flowLayoutPanel1.Controls)
  209.             {
  210.                 LayerItems li = (LayerItems)cc;
  211.                 if (li.layerName == name)
  212.                 {
  213.                     rez = true;
  214.  
  215.                     break;
  216.                 }
  217.             }
  218.             if (!rez)
  219.             {
  220.                 LayerItems item1 = new LayerItems();
  221.                 item1.layerName = name;
  222.                 item1.layerVisible = visible;
  223.                 item1.layerEdit = edit;
  224.                 item1.layerLoaded = loaded;
  225.                 item1.isBaseLayer = BaseLayer;
  226.                 item1.isVectorLayer = vectorLayer;
  227.                 item1.layerId = id;
  228.                 item1.layerRastPath = rastrPath;
  229.                 item1.layer_Click += new LayerItems.layer_ClickEventHandler(item1_layer_Click);
  230.                 item1.layer_Edit += new LayerItems.layer_EditEventHandler(item1_layer_Edit);
  231.                 item1.layer_Visible += new LayerItems.layer_VisibleEventHandler(item1_layer_Visible);
  232.                 item1.layer_DoubleClick += new LayerItems.layer_DoubleClickEventHandler(item1_layer_DoubleClick);
  233.  
  234.                 flowLayoutPanel1.Controls.Add(item1);
  235.                 if (vectorLayer)
  236.                 {
  237.                     item1.BringToFront();
  238.                 }
  239.                 else if (!BaseLayer)
  240.                 {
  241.                     item1.SendToBack();
  242.                 }
  243.                 layer_addEventHandler handler1 = layer_add;
  244.                 if (handler1 != null)
  245.                 {
  246.                     handler1(name);
  247.                 }
  248.                 flowLayoutPanel1.Refresh();
  249.             }
  250.         }
  251.  
  252.         void item1_layer_DoubleClick(object sender, LayerManagerEventArgs a)
  253.         {
  254.             LayerItems li = (LayerItems)sender;
  255.             if (li.isBaseLayer == false && li.isVectorLayer == false)
  256.             {
  257.                 mvMapLib.mvLayer ll = mapLib.getLayer(li.layerName);
  258.                 if (ll != null)
  259.                 {
  260.                     ll.deleteLayer();
  261.  
  262.                     li.layer_Edit -= item1_layer_Edit;
  263.                     li.layer_Visible -= item1_layer_Visible;
  264.  
  265.                     li.layerEdit = false;
  266.                     li.layerVisible = false;
  267.  
  268.  
  269.                     li.layer_Edit += new LayerItems.layer_EditEventHandler(item1_layer_Edit);
  270.                     li.layer_Visible += new LayerItems.layer_VisibleEventHandler(item1_layer_Visible);
  271.  
  272.                     li.layerLoaded = false;
  273.                 }
  274.                 mapLib.mapUpdate();
  275.             }
  276.         }
  277.         // V-F: Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° слоСв.
  278.         void loadLayerListFromDB()
  279.         {
  280.            
  281.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  282.             NpgsqlDataReader zxReader;
  283.            
  284.             List<tablesInfo> tInfo = new List<tablesInfo>();
  285.             tInfo = classesOfMetods.getTableOfType(1);
  286.             for (int i = 0; tInfo.Count > i; i++)
  287.             {
  288.                 addLayer(tInfo[i].nameMap, tInfo[i].idTable, false, false, false, false, false);
  289.             }
  290.         }
  291.         private void hideBaseLayers(bool hide)
  292.         {
  293.             if (hide && hideBaseLayers1)
  294.             {
  295.                 return;
  296.             }
  297.             if (!hide && !hideBaseLayers1)
  298.             {
  299.                 return;
  300.             }
  301.  
  302.             if (hide)
  303.             {
  304.                 foreach (Control cc in flowLayoutPanel1.Controls)
  305.                 {
  306.                     LayerItems ii = (LayerItems)cc;
  307.                     if (ii.isBaseLayer && !ii.isVectorLayer)
  308.                     {
  309.                         ii.layerVisible = false;
  310.                         flowLayoutPanel1.PerformLayout();
  311.                     }
  312.                 }
  313.                 hideBaseLayers1 = true;
  314.             }
  315.             else
  316.             {
  317.                 foreach (Control cc in flowLayoutPanel1.Controls)
  318.                 {
  319.                     LayerItems ii = (LayerItems)cc;
  320.                     if (ii.isBaseLayer && !ii.isVectorLayer && ii.layerName!="Π“Ρ€Π°Π½ΠΈΡ†Ρ‹Π Π°ΠΉΠΎΠ½ΠΎΠ²")
  321.                     {
  322.                         ii.layerVisible = true;
  323.                         flowLayoutPanel1.PerformLayout();
  324.                     }
  325.                 }
  326.                 hideBaseLayers1 = false;
  327.             }
  328.         }
  329.  
  330.         void item1_layer_Visible(object sender, LayerManagerEventArgs a)
  331.         {
  332.             if (((LayerItems)sender).isVectorLayer == true)
  333.             {
  334.                 mvMapLib.mvImageLayer ll = mapLib.getImageLayer(((LayerItems)sender).layerRastPath);
  335.                 if (ll == null)
  336.                 {
  337.                     mapLib.LoadLayer(((LayerItems)sender).layerRastPath, true);
  338.                     ll = mapLib.getImageLayer(((LayerItems)sender).layerRastPath);
  339.                     if (ll != null)
  340.                     {
  341.                         ll.Visible = a.LayerVisible;
  342.                         ((LayerItems)sender).layerLoaded = true;
  343.                     }
  344.                 }
  345.                 else
  346.                 {
  347.                     ll.Visible = a.LayerVisible;
  348.                 }
  349.             }
  350.             else
  351.             {
  352.                 mvMapLib.mvLayer ll = mapLib.getLayer(a.LayerName);
  353.                 if (ll != null)
  354.                 {
  355.                     ll.Visible = a.LayerVisible;
  356.                 }
  357.                 else
  358.                 {
  359.                     openTable(((LayerItems)sender).layerId);
  360.                     ll = mapLib.getLayer(a.LayerName);
  361.                     if (ll != null)
  362.                     {
  363.                         ll.Visible = a.LayerVisible;
  364.                         ((LayerItems)sender).layerLoaded = true;
  365.                     }
  366.                 }
  367.             }
  368.             bool rez = false;
  369.             foreach (Control cc in flowLayoutPanel1.Controls)
  370.             {
  371.                 LayerItems ii = (LayerItems)cc;
  372.                 if (ii.isVectorLayer && ii.layerVisible)
  373.                 {
  374.                     rez = true;
  375.                     break;
  376.                 }
  377.             }
  378.             if (rez)
  379.             {
  380.                 hideBaseLayers(true);
  381.             }
  382.             else
  383.             {
  384.                 hideBaseLayers(false);
  385.             }
  386.             mapLib.mapUpdate();
  387.         }
  388.  
  389.         private void openTable(int idT)
  390.         {
  391.             if (idT > -1)
  392.             {
  393.                 string sql = getSqlLayerDb(idT);
  394.                 loadLayerDb(sql, idT);
  395.             }
  396.             else
  397.             {
  398.  
  399.             }
  400.         }
  401.         private void openTableGrid(int idT, string nameT)
  402.         {
  403.             if (idT > -1)
  404.             {
  405.  
  406.                 itemsTableGrid frm = new itemsTableGrid(conn1, idT, false, 0, 0, 0);
  407.  
  408.                 frm.dataGridView1.CellClick += new DataGridViewCellEventHandler(table_Click);
  409.                 frm.button5.Click += new EventHandler(button5_Click_tab);
  410.                 name_map_name = nameT;
  411.                 idT2 = idT;
  412.                 frm.Text = "Π”Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ \"" + nameT + "\"";
  413.                 frm.Show();
  414.                 id_pk=frm.id_pk;
  415.             }
  416.             else
  417.             {
  418.  
  419.             }
  420.         }
  421.         public void table_Click(object sender, DataGridViewCellEventArgs e)
  422.         {
  423.             if (e.RowIndex > -1)
  424.             {
  425.  
  426.                 mvMapLib.mvLayer ll = mapLib.getLayer(name_map_name);
  427.                 if (ll != null)
  428.                 {
  429.                     //double d = mapLib.ScaleZoom;
  430.                     mapLib.getLayer(name_map_name).MoveTo(Convert.ToInt32(((DataGridView)sender).Rows[e.RowIndex].Cells[id_pk].Value.ToString()), true);
  431.                     mvVectorObject ob = mapLib.getLayer(name_map_name).getObject(Convert.ToInt32(((DataGridView)sender).Rows[e.RowIndex].Cells[id_pk].Value.ToString()));
  432.                     mvCenterGlobal gb = ob.CenterGlobal;
  433.                     mapLib.MoveTo(gb);
  434.                     mapLib.getLayer(name_map_name).SelectId(Convert.ToInt32(((DataGridView)sender).Rows[e.RowIndex].Cells[id_pk].Value.ToString()));
  435.                     mapLib.mapUpdate();
  436.                     //mapLib.ScaleZoom = d;
  437.                 }
  438.  
  439.             }
  440.         }
  441.         public void button5_Click_tab(object sender, EventArgs e)
  442.         {
  443.             //string sql = getSqlLayerDb(idT2);
  444.             //loadLayerDb(sql, idT2);
  445.             updateLayer(name_map_name);
  446.         }
  447.         void item1_layer_Edit(object sender, LayerManagerEventArgs a)
  448.         {
  449.             if (((LayerItems)sender).isVectorLayer == false)
  450.             {
  451.                 mvMapLib.mvLayer ll = mapLib.getLayer(a.LayerName);
  452.                 if (ll != null)
  453.                 {
  454.                     ll.editable = a.LayerEdited;
  455.                     if (a.LayerEdited == true)
  456.                     {
  457.                         foreach (Control cc in flowLayoutPanel1.Controls)
  458.                         {
  459.                             if (((LayerItems)cc).layerName != a.LayerName)
  460.                             {
  461.                                 ((LayerItems)cc).layer_Edit -= item1_layer_Edit;
  462.                                 ((LayerItems)cc).layerEdit = false;
  463.                                 ((LayerItems)cc).layer_Edit += new LayerItems.layer_EditEventHandler(item1_layer_Edit);
  464.                             }
  465.                         }
  466.                     }
  467.                 }
  468.                 else
  469.                 {
  470.                     openTable(((LayerItems)sender).layerId);
  471.                     ll = mapLib.getLayer(a.LayerName);
  472.                     if (ll != null)
  473.                     {
  474.                         ll.editable = a.LayerEdited;
  475.                         ((LayerItems)sender).layerLoaded = true;
  476.                         ((LayerItems)sender).layerVisible = true;
  477.                         if (a.LayerEdited == true)
  478.                         {
  479.                             foreach (Control cc in flowLayoutPanel1.Controls)
  480.                             {
  481.                                 if (((LayerItems)cc).layerName != a.LayerName)
  482.                                 {
  483.                                     ((LayerItems)cc).layer_Edit -= item1_layer_Edit;
  484.                                     ((LayerItems)cc).layerEdit = false;
  485.                                     ((LayerItems)cc).layer_Edit += new LayerItems.layer_EditEventHandler(item1_layer_Edit);
  486.                                 }
  487.                             }
  488.                         }
  489.                     }
  490.                 }
  491.             }
  492.         }
  493.  
  494.         void item1_layer_Click(object sender, LayerManagerEventArgs a)
  495.         {
  496.             flowLayoutPanel1.SuspendLayout();
  497.             //LayerItems ii = (LayerItems)sender;
  498.             foreach (Control cc in flowLayoutPanel1.Controls)
  499.             {
  500.                 ((LayerItems)cc).Selected = false;
  501.             }
  502.             ((LayerItems)sender).Selected = true;
  503.             selectedLayer1 = (LayerItems)sender;
  504.             flowLayoutPanel1.ResumeLayout();
  505.         }
  506.  
  507.         public void removeLayer(string Name)
  508.         {
  509.             foreach (Control cc in flowLayoutPanel1.Controls)
  510.             {
  511.                 LayerItems ii = (LayerItems)cc;
  512.                 if (ii.layerName.Contains(Name))
  513.                 {
  514.                     flowLayoutPanel1.Controls.Remove(cc);
  515.                     layer_deleteEventHandler handler1 = layer_delete;
  516.                     if (handler1 != null)
  517.                     {
  518.                         handler1(Name);
  519.                     }
  520.                     if (cc == ii)
  521.                     {
  522.                         selectedLayer1 = null;
  523.                     }
  524.                     break;
  525.                 }
  526.             }
  527.         }
  528.  
  529.         public void button1_Click(object sender, EventArgs e)
  530.         {
  531.             // Π²Π²Π΅Ρ€Ρ…
  532.             if (selectedLayer1 != null)
  533.             {
  534.                 if (flowLayoutPanel1.Controls.IndexOf(selectedLayer1) != -1 && selectedLayer1.isVectorLayer == false && selectedLayer1.isBaseLayer == false)
  535.                 {
  536.                     int a = flowLayoutPanel1.Controls.IndexOf(selectedLayer1);
  537.  
  538.                     if ((a - 1) >= 0)
  539.                     {
  540.                         if (mapLib.getLayer(((LayerItems)flowLayoutPanel1.Controls[a - 1]).layerName) != null)
  541.                         {
  542.                             layer_MoveUpEventHandler handler1 = layer_up;
  543.                             if (handler1 != null)
  544.                             {
  545.                                 handler1(selectedLayer1.layerName);
  546.                             }
  547.                             mapLib.getLayer(((LayerItems)flowLayoutPanel1.Controls[a - 1]).layerName).MoveUp();
  548.                             flowLayoutPanel1.Controls.SetChildIndex(selectedLayer1, a - 1);
  549.                             flowLayoutPanel1.Controls[a - 1].Focus();
  550.                            
  551.                         }
  552.                     }
  553.                 }
  554.             }
  555.         }
  556.  
  557.         public void button2_Click(object sender, EventArgs e)
  558.         {
  559.             // Π²Π½ΠΈΠ·
  560.             if (selectedLayer1 != null)
  561.             {
  562.                 if (flowLayoutPanel1.Controls.IndexOf(selectedLayer1) != -1 && selectedLayer1.isVectorLayer == false && selectedLayer1.isBaseLayer == false)
  563.                 {
  564.                     int a = flowLayoutPanel1.Controls.IndexOf(selectedLayer1);
  565.  
  566.                     if ((a + 1) < flowLayoutPanel1.Controls.Count)
  567.                     {
  568.                         if (((LayerItems)flowLayoutPanel1.Controls[a + 1]).isVectorLayer == false && selectedLayer1.isBaseLayer == false)
  569.                         {
  570.                             if (mapLib.getLayer(((LayerItems)flowLayoutPanel1.Controls[a + 1]).layerName) != null)
  571.                             {
  572.                                 layer_MoveDownEventHandler handler1 = layer_down;
  573.  
  574.                                 if (handler1 != null)
  575.                                 {
  576.                                     handler1(selectedLayer1.layerName);
  577.                                 }
  578.  
  579.                                 mapLib.getLayer(((LayerItems)flowLayoutPanel1.Controls[a + 1]).layerName).MoveDown();
  580.                                 flowLayoutPanel1.Controls.SetChildIndex(selectedLayer1, a + 1);
  581.                                 flowLayoutPanel1.Controls[a + 1].Focus();
  582.                             }
  583.                         }
  584.                     }
  585.                 }
  586.             }
  587.         }
  588.  
  589.         private void flowLayoutPanel1_Scroll(object sender, ScrollEventArgs e)
  590.         {
  591.             flowLayoutPanel1.Refresh();
  592.         }
  593.  
  594.  
  595.         public void button3_Click(object sender, EventArgs e)
  596.         {
  597.             if (selectedLayer1 != null)
  598.             {
  599.                 if (flowLayoutPanel1.Controls.IndexOf(selectedLayer1) != -1)
  600.                 {
  601.                     if (selectedLayer1.isVectorLayer == false && selectedLayer1.isBaseLayer == false)
  602.                     {
  603.                         fieldEditFrm frm1 = new fieldEditFrm(conn1, selectedLayer1.layerId);
  604.                         frm1.ShowDialog();
  605.                     }
  606.                     else
  607.                     {
  608.                     }
  609.                 }
  610.             }
  611.         }
  612.  
  613.         public void button5_Click(object sender, EventArgs e)
  614.         {
  615.             if (selectedLayer1 != null)
  616.             {
  617.                 selectedLayer1.layerEdit = true;
  618.                 if (selectedLayer1.layerId != 0 && !selectedLayer1.isBaseLayer && !selectedLayer1.isVectorLayer && selectedLayer1.layerLoaded)
  619.                 {
  620.                     try
  621.                     {
  622.                         int idT = 0;
  623.                         tablesInfo tInfo = new tablesInfo();
  624.                         tInfo = classesOfMetods.getTableInfo(selectedLayer1.layerId);
  625.                         idT = tInfo.typeGeom;
  626.  
  627.                         switch (idT)
  628.                         {
  629.                             case 0:
  630.                                 return;
  631.                             case 1:
  632.                                 mapLib.SetCursor(mvMapLib.Cursors.mlAddDot);
  633.                                 break;
  634.                             case 2:
  635.                                 mapLib.SetCursor(mvMapLib.Cursors.mlAddPolyLine);
  636.                                 break;
  637.                             case 3:
  638.                                 mapLib.SetCursor(mvMapLib.Cursors.mlAddPolygon);
  639.                                 break;
  640.                         }
  641.  
  642.                     }
  643.                     catch (Exception x)
  644.                     {
  645.                         MessageBox.Show(x.Message);
  646.                     }
  647.                 }
  648.             }
  649.  
  650.         }
  651.  
  652.         public void button4_Click_1(object sender, EventArgs e)
  653.         {
  654.             foreach (Control cc in flowLayoutPanel1.Controls)
  655.             {
  656.                 if (((LayerItems)cc).layerEdit)
  657.                 {
  658.                     selectedLayer1 = (LayerItems)cc;
  659.                 }
  660.             }
  661.             try
  662.             {
  663.                 deleteObjectFromLayer();
  664.             }
  665.             catch (Exception x)
  666.             {
  667.                 MessageBox.Show(x.Message);
  668.             }
  669.         }
  670.  
  671.         public void deleteObjectFromLayer()
  672.         {
  673.             if (curTableSelected > 0)
  674.             {
  675.                 DialogResult dr = MessageBox.Show("Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΡƒΡŽ запись?",
  676.                                 "Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°", MessageBoxButtons.YesNo);
  677.                 if (dr == DialogResult.Yes)
  678.                 {
  679.                     NpgsqlCommand qwCmd = conn1.CreateCommand();
  680.                     qwCmd.CommandText = "DELETE FROM " + classesOfMetods.getTableInfo(curTableSelected).nameSheme + "." + curTableName + " WHERE " + classesOfMetods.getTableInfo(curTableSelected).pkField + " = " + curObjSelected.ToString();
  681.                     qwCmd.ExecuteNonQuery();
  682.                     Classes.workLogFile.writeLogFile("deleted --> idT=" + curTableSelected.ToString() + " id_obj=" + curObjSelected.ToString(), false, false);
  683.                     mvMapLib.mvLayer ll = mapLib.getLayer(selectedLayer1.layerName);
  684.                     if (ll != null)
  685.                     {
  686.                         ll.DeleteID(curObjSelected);
  687.                         ll.editable = true;
  688.                     }
  689.                     string sql = getSqlLayerDb(curTableSelected);
  690.                     loadLayerDb(sql, curTableSelected);
  691.                     //MessageBox.Show("Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡƒΠ΄Π°Π»Π΅Π½!");
  692.                     mapLib.StatusInfo = "Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡƒΠ΄Π°Π»Π΅Π½!";
  693.  
  694.                 }
  695.             }
  696.             else
  697.             {
  698.                 MessageBox.Show("НС Π²Ρ‹Π±Ρ€Π°Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚!");
  699.             }
  700.         }
  701.  
  702.         public void updateTableAfterEdit(int idT)
  703.         {
  704.             string sql = getSqlLayerDb(idT);
  705.             loadLayerDb(sql, idT);
  706.             mvMapLib.mvLayer ll = mapLib.getLayer(selectedLayer1.layerName);
  707.             if (ll != null)
  708.             {
  709.                 ll.editable = true;
  710.             }
  711.         }
  712.  
  713.         void mapLib_Selected(object sender, AxmvMapLib.IMapLIbEvents_SelectedEvent e)
  714.         {
  715.             //selectLayer = e.layer.NAME;
  716.             flowLayoutPanel1.SuspendLayout();
  717.             foreach (Control cc in flowLayoutPanel1.Controls)
  718.             {
  719.                 ((LayerItems)cc).Selected = false;
  720.                 if (((LayerItems)cc).layerName == e.layer.NAME)
  721.                 {
  722.                     ((LayerItems)cc).Selected = true;
  723.                     selectedLayer1 = (LayerItems)cc;
  724.                 }
  725.             }
  726.  
  727.             flowLayoutPanel1.ResumeLayout();
  728.             tablesInfo tInfo = classesOfMetods.getTableInfoOfNameMap(e.layer.NAME);
  729.             if (tInfo.nameDB != null && tInfo.nameDB!="")
  730.             {
  731.                 curTableSelected = tInfo.idTable;
  732.                 curTableName = tInfo.nameDB;
  733.                 curObjSelected = e.ids;
  734.             }
  735.             else
  736.             {
  737.                 curTableSelected = -1;
  738.                 curTableName = "";
  739.             }
  740.         }
  741.  
  742.         private string getSqlLayerDb(int id)
  743.         {
  744.             cti.ThreadProgress frm = new cti.ThreadProgress(true);
  745.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  746.             NpgsqlDataReader zxReader;
  747.  
  748.             fieldArray[] fa = loadFieldArray();
  749.             tablesArray[] ta = loadTablesArray();
  750.  
  751.  
  752.             string selectSQL = "", fromSQL = "FROM ", whereSQL = "WHERE ", tableSql = "";
  753.  
  754.             string name_db = classesOfMetods.getTableInfo(id).nameDB;
  755.             string shema = classesOfMetods.getTableInfo(id).nameSheme;
  756.             string geom_field = classesOfMetods.getTableInfo(id).geomFieldName;
  757.             tableSql = name_db;
  758.  
  759.             fromSQL = fromSQL + "" + shema + "." + name_db + ", ";
  760.             whereSQL = whereSQL + "true AND ";
  761.  
  762.  
  763.             selectSQL = "SELECT ";
  764.  
  765.             qwCmd.CommandText = "SELECT name_db, name_map, type_field, visible, " +
  766.                         "name_lable, is_reference, is_interval, ref_table, ref_field, ref_field_end, ref_field_name " +
  767.                         "FROM " + Program.scheme + ".table_field_info" +
  768.                         " WHERE id_table = " + id.ToString();
  769.             zxReader = qwCmd.ExecuteReader();
  770.             while (zxReader.Read())
  771.             {
  772.                 if (zxReader.GetBoolean(3) && zxReader.GetInt32(2) != 5)
  773.                 {
  774.                     if (!zxReader.GetBoolean(5) && !zxReader.GetBoolean(6))
  775.                     {
  776.                         selectSQL = selectSQL + "" + shema + "." + tableSql + "." + zxReader.GetValue(0).ToString() + ", ";
  777.                     }
  778.                     else
  779.                     {
  780.                         if (zxReader.GetBoolean(5))
  781.                         {
  782.                             selectSQL = selectSQL + "" + shema + "." + getTableNameDB(ta, zxReader.GetInt32(7)) + "." + getFieldNameDB(fa, zxReader.GetInt32(10)) + ", ";
  783.                             fromSQL = fromSQL + "" + shema + "." + getTableNameDB(ta, zxReader.GetInt32(7)) + ", ";
  784.                             whereSQL = whereSQL + "" + shema + "." + tableSql + "." + zxReader.GetValue(0).ToString() + "="
  785.                                     + "" + shema + "." + getTableNameDB(ta, zxReader.GetInt32(7)) + "." + getFieldNameDB(fa, zxReader.GetInt32(8)) + " AND ";
  786.                         }
  787.                         else
  788.                         {
  789.                             selectSQL = selectSQL + "" + shema + "." + getTableNameDB(ta, zxReader.GetInt32(7)) + "." + getFieldNameDB(fa, zxReader.GetInt32(10)) + ", ";
  790.                             fromSQL = fromSQL + "" + shema + "." + getTableNameDB(ta, zxReader.GetInt32(7)) + ", ";
  791.                             whereSQL = whereSQL + "" + shema + "." + tableSql + "." + zxReader.GetValue(0).ToString() + ">"
  792.                                     + "" + shema + "." + getTableNameDB(ta, zxReader.GetInt32(7)) + "." + getFieldNameDB(fa, zxReader.GetInt32(8)) +
  793.                                     " AND " + "" + shema + "." + tableSql + "." + zxReader.GetValue(0).ToString() + "<="
  794.                                     + "" + shema + "." + getTableNameDB(ta, zxReader.GetInt32(7)) + "." + getFieldNameDB(fa, zxReader.GetInt32(9)) + " AND ";
  795.                         }
  796.                     }
  797.                 }
  798.             }
  799.             selectSQL = selectSQL.Substring(0, selectSQL.Length - 2);
  800.             selectSQL = selectSQL + ", astext(transform(" + shema + "." + tableSql + "." + geom_field + ", "+Program.srid+")) as geom ";
  801.             fromSQL = fromSQL.Substring(0, fromSQL.Length - 2);
  802.             whereSQL = whereSQL.Substring(0, whereSQL.Length - 4);
  803.             string sql = selectSQL + " " + fromSQL + " " + whereSQL + ";";
  804.             zxReader.Close();
  805.             frm.Close();
  806.             return sql;
  807.         }
  808.         private fieldArray[] loadFieldArray()
  809.         {
  810.             fieldArray[] fa = new fieldArray[Program.field_info.Count];
  811.             for (int i = 0; Program.field_info.Count > i; i++)
  812.             {
  813.                 fa[i].idField = Program.field_info[i].idField;
  814.                 fa[i].nameDB = Program.field_info[i].nameDB;
  815.                 fa[i].nameMap = Program.field_info[i].nameMap;
  816.             }
  817.             return fa;
  818.         }
  819.         private tablesArray[] loadTablesArray()
  820.         {
  821.             tablesArray[] fa = new tablesArray[Program.tables_info.Count];
  822.             for (int i = 0; Program.tables_info.Count > i; i++)
  823.             {
  824.                 fa[i].idTable = Program.tables_info[i].idTable;
  825.                 fa[i].nameDB = Program.tables_info[i].nameDB;
  826.                 fa[i].nameMap = Program.tables_info[i].nameMap;
  827.             }
  828.             return fa;
  829.         }
  830.         private string getTableNameDB(tablesArray[] fa, int id)
  831.         {
  832.  
  833.             for (int i = 0; fa.Length > i; i++)
  834.             {
  835.                 if (fa[i].idTable == id)
  836.                 {
  837.                     return fa[i].nameDB;
  838.                 }
  839.             }
  840.             return null;
  841.         }
  842.  
  843.         private string getFieldNameDB(fieldArray[] fa, int id)
  844.         {
  845.  
  846.             for (int i = 0; fa.Length > i; i++)
  847.             {
  848.                 if (fa[i].idField == id)
  849.                 {
  850.                     return fa[i].nameDB;
  851.                 }
  852.             }
  853.             return null;
  854.         }
  855.  
  856.         private void loadLayerFromSource(int idT)
  857.         {
  858.             tablesInfo ti = classesOfMetods.getTableInfo(idT);
  859.             if (ti.idTable!=0)
  860.             {
  861.                 if (mapLib.getLayer(ti.nameMap) != null)
  862.                 {
  863.                     mapLib.getLayer(ti.nameMap).Update();
  864.                     return;
  865.                 }
  866.  
  867.  
  868.                 mapLib.mapUpdate();
  869.  
  870.                 if (postgres == null)
  871.                 {
  872.                     postgres = mapLib.CreatePostgresSource();
  873.  
  874.                     postgres.prepare("host=" + Program.user_info.ipString + " port=" + Program.user_info.portString + " user=" +
  875.                         Program.user_info.loginUser + " password=" + Program.user_info.pwdUser +
  876.                         " dbname=" + Program.user_info.dbString, Convert.ToInt32(Program.srid));
  877.  
  878.  
  879.                     postgres.Connect();
  880.                     //postgres.logFile("mv_postgre.log");
  881.                 }
  882.                 try
  883.                 {
  884.                     mvLayer layer = postgres.addLayer(ti.nameSheme + "." + ti.nameDB, ti.nameMap, ti.pkField, ti.geomFieldName, ti.lableFieldName, "", "", ti.imageColumn, ti.angleColumn);
  885.  
  886.                     if (layer != null)
  887.                     {
  888.                         if (ti.imageColumn == "")
  889.                         {
  890.                             layer.uniform = true;
  891.                             layer.SetUniformStyle(getPenObjectDefault(idT), getmvBrushObjectDefault(idT), getSymbolDefault(idT), getFontObjectDefault(idT));
  892.                         }
  893.  
  894.                         if (ti.useBounds)
  895.                         {
  896.                             layer.usebounds = ti.useBounds;
  897.                             layer.MaxScale = Convert.ToUInt32(ti.maxScale);
  898.                             layer.MinScale = Convert.ToUInt32(ti.minScale);
  899.                         }
  900.                         if (ti.lableFieldName != "")
  901.                         {
  902.                             layer.showlabels = true;
  903.                         }
  904.                         mapLib.mapUpdate();
  905.                         mapLib.mapRepaint();
  906.                     }
  907.                 }
  908.                 catch
  909.                 {
  910.                     mapLib.StatusInfo = "Ошибка Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ слоя!";
  911.                 }
  912.             }
  913.         }
  914.         private void loadLayerDb(string sql, int idT)
  915.         {
  916.             if (classesOfMetods.getTableInfo(idT).sourceLayer)
  917.             {
  918.                 loadLayerFromSource(idT);
  919.                 return;
  920.             }
  921.             cti.ThreadProgress frm = new cti.ThreadProgress(true);
  922.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  923.             NpgsqlDataReader zxReader;
  924.  
  925.             bool default_style = false;
  926.             qwCmd.CommandText = "SELECT default_style FROM " + Program.scheme + ".table_info WHERE id = " + idT.ToString();
  927.             zxReader = qwCmd.ExecuteReader();
  928.             while (zxReader.Read())
  929.             {
  930.                 default_style = zxReader.GetBoolean(0);
  931.             }
  932.             zxReader.Close();
  933.  
  934.             if (default_style)
  935.             {
  936.                 mvMapLib.mvSymbolObject Symbol = new mvMapLib.mvSymbolObject();
  937.                 mvMapLib.mvFontObject font = new mvMapLib.mvFontObject();
  938.                 mvMapLib.mvPenObject pen = new mvMapLib.mvPenObject();
  939.                 mvMapLib.mvBrushObject brush = new mvMapLib.mvBrushObject();
  940.  
  941.                 int id_type_geom = 0;
  942.                 string id_name_type_geom = "", map_name = "";
  943.                 qwCmd.CommandText = "SELECT ttg.id, ttg.name, ti.name_map " +
  944.                     "FROM " + Program.scheme + ".table_info ti, " + Program.scheme + ".table_type_geom ttg WHERE ti.geom_type = ttg.id AND ti.id = " + idT.ToString();
  945.                 zxReader = qwCmd.ExecuteReader();
  946.                 if (zxReader.Read())
  947.                 {
  948.                     id_type_geom = zxReader.GetInt32(0);
  949.                     id_name_type_geom = zxReader.GetValue(1).ToString();
  950.                     map_name = zxReader.GetValue(2).ToString();
  951.                 }
  952.                 zxReader.Close();
  953.  
  954.                 mvMapLib.mvLayer templayer;
  955.                 mvMapLib.mvVectorObject cobj;
  956.                 mvMapLib.mvStringArray fields = new mvMapLib.mvStringArray();
  957.                 mvMapLib.mvStringArray attr = new mvMapLib.mvStringArray();
  958.                 fields = getFields(idT);
  959.                 attr.count = fields.count;
  960.                 templayer = createLayerDb(map_name, fields);
  961.                 string lableField = classesOfMetods.getTableInfo(idT).lableFieldName;
  962.                 if (lableField != null && lableField != "")
  963.                 {
  964.  
  965.                     for (int t = 0; templayer.FieldsCount > t; t++)
  966.                     {
  967.                         if (templayer.FieldName(t).ToString() == lableField)
  968.                         {
  969.                             templayer.LabelField = t;
  970.                             templayer.labelOffset = 0;
  971.                             templayer.showlabels = true;
  972.                         }
  973.                     }
  974.                 }
  975.                 int style = 0;
  976.                 switch (id_type_geom)
  977.                 {
  978.                     case 1:
  979.                         Symbol = getSymbolDefault(idT);
  980.                         font = getFontObjectDefault(idT);
  981.                         style = templayer.CreateDotStyle(Symbol, font);
  982.                         break;
  983.                     case 2:
  984.                         pen = getPenObjectDefault(idT);
  985.                         style = templayer.CreateLineStyle(pen);
  986.                         break;
  987.                     case 3:
  988.                         pen = getPenObjectDefault(idT);
  989.                         brush = getmvBrushObjectDefault(idT);
  990.                         style = templayer.CreatePolygonStyle(pen, brush);
  991.                         break;
  992.                 }
  993.  
  994.                 qwCmd.CommandText = sql;
  995.                 zxReader = qwCmd.ExecuteReader();
  996.                 int i = 0;
  997.                 string wkt = "";
  998.                 while (zxReader.Read())
  999.                 {
  1000.                     int y = 0;
  1001.                     for (int t = 0; zxReader.FieldCount > t; t++)
  1002.                     {
  1003.                         if (zxReader.GetName(t) != "geom")
  1004.                         {
  1005.                             attr.setElem(y, zxReader.GetValue(t).ToString());
  1006.                             y++;
  1007.                         }
  1008.                         else
  1009.                         {
  1010.                             wkt = zxReader.GetValue(t).ToString();
  1011.                             if (wkt.IndexOf("GON") > -1)
  1012.                             {
  1013.                                 wkt = zxReader.GetValue(t).ToString().Replace("((", "(");
  1014.                                 wkt = wkt.Replace("))", ")");
  1015.                             }
  1016.                         }
  1017.                     }
  1018.                     cobj = templayer.CreateObject();
  1019.                     cobj.setWKT(wkt);
  1020.                     cobj.SetAttributes(attr);
  1021.                     cobj.style = style;
  1022.                     i++;
  1023.                 }
  1024.                 zxReader.Close();
  1025.                 mapLib.mapUpdate();
  1026.             }
  1027.             else
  1028.             {
  1029.                 bool is_ref = false;
  1030.                 string ref_table = "", ref_field = "", ref_field_end = "", ref_field_name = "";
  1031.                 qwCmd.CommandText = "SELECT id, name_db, name_map, is_reference, is_interval, ref_table, ref_field, ref_field_end, ref_field_name " +
  1032.                     "FROM " + Program.scheme + ".table_field_info " +
  1033.                     "WHERE is_style = true AND id_table = " + idT.ToString();
  1034.                 zxReader = qwCmd.ExecuteReader();
  1035.                 if (zxReader.Read())
  1036.                 {
  1037.                     is_ref = zxReader.GetBoolean(3);
  1038.                     ref_table = zxReader.GetValue(5).ToString();
  1039.                     ref_field = zxReader.GetValue(6).ToString();
  1040.                     ref_field_end = zxReader.GetValue(7).ToString();
  1041.                     ref_field_name = zxReader.GetValue(8).ToString();
  1042.                 }
  1043.                 zxReader.Close();
  1044.  
  1045.                 fieldArray[] fa = loadFieldArray();
  1046.                 tablesArray[] ta = loadTablesArray();
  1047.  
  1048.                 mvMapLib.mvSymbolObject Symbol = new mvMapLib.mvSymbolObject();
  1049.                 mvMapLib.mvFontObject font = new mvMapLib.mvFontObject();
  1050.                 mvMapLib.mvPenObject pen = new mvMapLib.mvPenObject();
  1051.                 mvMapLib.mvBrushObject brush = new mvMapLib.mvBrushObject();
  1052.  
  1053.                 int count = 0;
  1054.                 qwCmd.CommandText = "SELECT count(*)::INTEGER as val FROM farm." + getTableNameDB(ta, Convert.ToInt32(ref_table));
  1055.                 zxReader = qwCmd.ExecuteReader();
  1056.                 if (zxReader.Read())
  1057.                 {
  1058.                     count = zxReader.GetInt32(0);
  1059.                 }
  1060.                 zxReader.Close();
  1061.                 int[] style = new int[count];
  1062.  
  1063.  
  1064.                 int id_type_geom = 0;
  1065.                 string id_name_type_geom = "", map_name = "";
  1066.                 qwCmd.CommandText = "SELECT ttg.id, ttg.name, ti.name_map " +
  1067.                     "FROM " + Program.scheme + ".table_info ti, " + Program.scheme + ".table_type_geom ttg WHERE ti.geom_type = ttg.id AND ti.id = " + idT.ToString();
  1068.                 zxReader = qwCmd.ExecuteReader();
  1069.                 if (zxReader.Read())
  1070.                 {
  1071.                     id_type_geom = zxReader.GetInt32(0);
  1072.                     id_name_type_geom = zxReader.GetValue(1).ToString();
  1073.                     map_name = zxReader.GetValue(2).ToString();
  1074.                 }
  1075.                 zxReader.Close();
  1076.  
  1077.                 mvMapLib.mvLayer templayer;
  1078.                 mvMapLib.mvVectorObject cobj;
  1079.                 mvMapLib.mvStringArray fields = new mvMapLib.mvStringArray();
  1080.                 mvMapLib.mvStringArray attr = new mvMapLib.mvStringArray();
  1081.                 fields = getFields(idT);
  1082.                 attr.count = fields.count;
  1083.                 templayer = createLayerDb(map_name, fields);
  1084.                 string lableField = classesOfMetods.getTableInfo(idT).lableFieldName;
  1085.                 if (lableField != null && lableField != "")
  1086.                 {
  1087.  
  1088.                     for (int t = 0; templayer.FieldsCount > t; t++)
  1089.                     {
  1090.                         if (templayer.FieldName(t).ToString() == lableField)
  1091.                         {
  1092.                             templayer.LabelField = t;
  1093.                             templayer.labelOffset = 0;
  1094.                             templayer.showlabels = true;
  1095.                         }
  1096.                     }
  1097.                 }
  1098.                 int[] idList = getList(getTableNameDB(ta, Convert.ToInt32(ref_table)), count);
  1099.  
  1100.                 if (is_ref)
  1101.                 {
  1102.                     objStyleRef[] styleRef = new objStyleRef[count];
  1103.                     for (int i = 0; idList.Length > i; i++)
  1104.                     {
  1105.                         switch (id_type_geom)
  1106.                         {
  1107.                             case 1:
  1108.                                 Symbol = getSymbolRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1109.                                 font = getFontObjectRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1110.                                 styleRef[i].idMap = templayer.CreateDotStyle(Symbol, font);
  1111.                                 styleRef[i].FieldName = getFieldNameDB(fa, Convert.ToInt32(ref_field));
  1112.                                 styleRef[i].Val = getVal(getTableNameDB(ta, Convert.ToInt32(ref_table)),
  1113.                                             getFieldNameDB(fa, Convert.ToInt32(ref_field_name)), idList[i]);
  1114.                                 break;
  1115.                             case 2:
  1116.                                 pen = getPenObjectRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1117.                                 styleRef[i].idMap = templayer.CreateLineStyle(pen);
  1118.                                 styleRef[i].FieldName = getFieldNameDB(fa, Convert.ToInt32(ref_field));
  1119.                                 styleRef[i].Val = getVal(getTableNameDB(ta, Convert.ToInt32(ref_table)),
  1120.                                             getFieldNameDB(fa, Convert.ToInt32(ref_field_name)), idList[i]);
  1121.                                 break;
  1122.                             case 3:
  1123.                                 pen = getPenObjectRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1124.                                 brush = getmvBrushObjectRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1125.                                 styleRef[i].idMap = templayer.CreatePolygonStyle(pen, brush);
  1126.                                 styleRef[i].FieldName = getFieldNameDB(fa, Convert.ToInt32(ref_field));
  1127.                                 styleRef[i].Val = getVal(getTableNameDB(ta, Convert.ToInt32(ref_table)),
  1128.                                     getFieldNameDB(fa, Convert.ToInt32(ref_field_name)), idList[i]);
  1129.                                 break;
  1130.                         }
  1131.                     }
  1132.  
  1133.                     qwCmd.CommandText = sql;
  1134.                     zxReader = qwCmd.ExecuteReader();
  1135.                     string wkt = "";
  1136.                     string ref_f_name = getFieldNameDB(fa, Convert.ToInt32(ref_field_name));
  1137.                     while (zxReader.Read())
  1138.                     {
  1139.                         int y = 0;
  1140.                         string val = "";
  1141.                         for (int t = 0; zxReader.FieldCount > t; t++)
  1142.                         {
  1143.                             if (zxReader.GetName(t) != "geom")
  1144.                             {
  1145.                                 attr.setElem(y, zxReader.GetValue(t).ToString());
  1146.                                 if (zxReader.GetName(t) == ref_f_name)
  1147.                                 {
  1148.                                     val = zxReader.GetValue(t).ToString();
  1149.                                 }
  1150.                                 y++;
  1151.                             }
  1152.                             else
  1153.                             {
  1154.                                 wkt = zxReader.GetValue(t).ToString();
  1155.                                 if (wkt.IndexOf("GON") > -1)
  1156.                                 {
  1157.                                     wkt = zxReader.GetValue(t).ToString().Replace("((", "(");
  1158.                                     wkt = wkt.Replace("))", ")");
  1159.                                 }
  1160.                             }
  1161.                         }
  1162.                         cobj = templayer.CreateObject();
  1163.                         cobj.setWKT(wkt);
  1164.                         cobj.SetAttributes(attr);
  1165.                         cobj.style = getStyle(val, styleRef);
  1166.                     }
  1167.                     zxReader.Close();
  1168.                     mapLib.mapUpdate();
  1169.                 }
  1170.                 else
  1171.                 {
  1172.                     objStyleRef[] styleRef = new objStyleRef[count];
  1173.                     for (int i = 0; idList.Length > i; i++)
  1174.                     {
  1175.                         switch (id_type_geom)
  1176.                         {
  1177.                             case 1:
  1178.                                 Symbol = getSymbolRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1179.                                 font = getFontObjectRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1180.                                 styleRef[i].idMap = templayer.CreateDotStyle(Symbol, font);
  1181.                                 styleRef[i].FieldName = getFieldNameDB(fa, Convert.ToInt32(ref_field));
  1182.                                 styleRef[i].Val = getVal(getTableNameDB(ta, Convert.ToInt32(ref_table)),
  1183.                                             getFieldNameDB(fa, Convert.ToInt32(ref_field_name)), idList[i]);
  1184.                                 break;
  1185.                             case 2:
  1186.                                 pen = getPenObjectRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1187.                                 styleRef[i].idMap = templayer.CreateLineStyle(pen);
  1188.                                 styleRef[i].FieldName = getFieldNameDB(fa, Convert.ToInt32(ref_field));
  1189.                                 styleRef[i].Val = getVal(getTableNameDB(ta, Convert.ToInt32(ref_table)),
  1190.                                             getFieldNameDB(fa, Convert.ToInt32(ref_field_name)), idList[i]);
  1191.                                 break;
  1192.                             case 3:
  1193.                                 pen = getPenObjectRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1194.                                 brush = getmvBrushObjectRef(getTableNameDB(ta, Convert.ToInt32(ref_table)), idList[i]);
  1195.                                 styleRef[i].idMap = templayer.CreatePolygonStyle(pen, brush);
  1196.                                 styleRef[i].FieldName = getFieldNameDB(fa, Convert.ToInt32(ref_field));
  1197.                                 styleRef[i].Val = getVal(getTableNameDB(ta, Convert.ToInt32(ref_table)),
  1198.                                     getFieldNameDB(fa, Convert.ToInt32(ref_field_name)), idList[i]);
  1199.                                 break;
  1200.                         }
  1201.                     }
  1202.  
  1203.                     qwCmd.CommandText = sql;
  1204.                     zxReader = qwCmd.ExecuteReader();
  1205.                     string wkt = "";
  1206.                     string ref_f_name = getFieldNameDB(fa, Convert.ToInt32(ref_field_name));
  1207.                     while (zxReader.Read())
  1208.                     {
  1209.                         int y = 0;
  1210.                         string val = "";
  1211.                         for (int t = 0; zxReader.FieldCount > t; t++)
  1212.                         {
  1213.                             if (zxReader.GetName(t) != "geom")
  1214.                             {
  1215.                                 attr.setElem(y, zxReader.GetValue(t).ToString());
  1216.                                 if (zxReader.GetName(t) == ref_f_name)
  1217.                                 {
  1218.                                     val = zxReader.GetValue(t).ToString();
  1219.                                 }
  1220.                                 y++;
  1221.                             }
  1222.                             else
  1223.                             {
  1224.                                 wkt = zxReader.GetValue(t).ToString();
  1225.                                 if (wkt.IndexOf("GON") > -1)
  1226.                                 {
  1227.                                     wkt = zxReader.GetValue(t).ToString().Replace("((", "(");
  1228.                                     wkt = wkt.Replace("))", ")");
  1229.                                 }
  1230.                             }
  1231.                         }
  1232.                         cobj = templayer.CreateObject();
  1233.                         cobj.setWKT(wkt);
  1234.                         cobj.SetAttributes(attr);
  1235.                         cobj.style = getStyle(val, styleRef);
  1236.                     }
  1237.                     zxReader.Close();
  1238.                     mapLib.mapUpdate();
  1239.                 }
  1240.             }
  1241.             frm.Close();
  1242.         }
  1243.  
  1244.         private mvMapLib.mvStringArray getFields(int idT)
  1245.         {
  1246.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1247.             NpgsqlDataReader zxReader;
  1248.             int count = 0;
  1249.             qwCmd.CommandText = "SELECT count(*)::INTEGER as val " +
  1250.                 "FROM " + Program.scheme + ".table_field_info WHERE type_field <>5 AND visible = true AND id_table = " + idT.ToString();
  1251.             zxReader = qwCmd.ExecuteReader();
  1252.             if (zxReader.Read())
  1253.             {
  1254.                 count = zxReader.GetInt32(0);
  1255.             }
  1256.             zxReader.Close();
  1257.  
  1258.             mvMapLib.mvStringArray fields = new mvMapLib.mvStringArray();
  1259.             fields.count = count;
  1260.             qwCmd.CommandText = "SELECT name_map " +
  1261.                     "FROM " + Program.scheme + ".table_field_info WHERE type_field <>5 AND visible = true AND id_table = " + idT.ToString();
  1262.             zxReader = qwCmd.ExecuteReader();
  1263.             int i = 0;
  1264.             while (zxReader.Read())
  1265.             {
  1266.                 fields.setElem(i, zxReader.GetValue(0).ToString());
  1267.                 i++;
  1268.             }
  1269.             zxReader.Close();
  1270.             return fields;
  1271.         }
  1272.  
  1273.         private mvMapLib.mvLayer createLayerDb(string name, mvMapLib.mvStringArray fields)
  1274.         {
  1275.  
  1276.             mvMapLib.mvLayer ll = mapLib.getLayer(name);
  1277.             if (ll != null)
  1278.             {
  1279.                 ll.deleteLayer();
  1280.             }
  1281.             return mapLib.CreateLayer(name, fields);
  1282.         }
  1283.  
  1284.         private mvMapLib.mvSymbolObject getSymbolDefault(int idT)
  1285.         {
  1286.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1287.             NpgsqlDataReader zxReader;
  1288.             mvMapLib.mvSymbolObject symb = new mvMapLib.mvSymbolObject();
  1289.             qwCmd.CommandText = "SELECT symbol FROM " + Program.scheme + ".table_info WHERE id = " + idT.ToString();
  1290.             zxReader = qwCmd.ExecuteReader();
  1291.             if (zxReader.Read())
  1292.             {
  1293.                 symb.shape = Convert.ToUInt32(zxReader.GetInt32(0));
  1294.             }
  1295.             zxReader.Close();
  1296.             return symb;
  1297.         }
  1298.  
  1299.         private mvMapLib.mvPenObject getPenObjectDefault(int idT)
  1300.         {
  1301.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1302.             NpgsqlDataReader zxReader;
  1303.             mvMapLib.mvPenObject pen = new mvMapLib.mvPenObject();
  1304.             qwCmd.CommandText = "SELECT pencolor, penwidth, pentype FROM " + Program.scheme + ".table_info WHERE id = " + idT.ToString();
  1305.             zxReader = qwCmd.ExecuteReader();
  1306.             if (zxReader.Read())
  1307.             {
  1308.                 pen.Color = Convert.ToUInt32(zxReader.GetInt32(0));
  1309.                 pen.width = Convert.ToUInt32(zxReader.GetInt32(1));
  1310.                 pen.ctype = Convert.ToUInt16(zxReader.GetInt32(2));
  1311.             }
  1312.             zxReader.Close();
  1313.             return pen;
  1314.         }
  1315.  
  1316.         private mvMapLib.mvFontObject getFontObjectDefault(int idT)
  1317.         {
  1318.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1319.             NpgsqlDataReader zxReader;
  1320.             mvMapLib.mvFontObject font = new mvMapLib.mvFontObject();
  1321.             qwCmd.CommandText = "SELECT fontname, fontcolor, fontframecolor, fontsize FROM " + Program.scheme + ".table_info WHERE id = " + idT.ToString();
  1322.             zxReader = qwCmd.ExecuteReader();
  1323.             if (zxReader.Read())
  1324.             {
  1325.                 font.fontname = zxReader.GetValue(0).ToString();
  1326.                 font.Color = Convert.ToUInt32(zxReader.GetInt32(1));
  1327.                 font.framecolor = Convert.ToUInt32(zxReader.GetInt32(2));
  1328.                 font.size = zxReader.GetInt32(3);
  1329.             }
  1330.             zxReader.Close();
  1331.             return font;
  1332.         }
  1333.  
  1334.         private mvMapLib.mvBrushObject getmvBrushObjectDefault(int idT)
  1335.         {
  1336.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1337.             NpgsqlDataReader zxReader;
  1338.             mvMapLib.mvBrushObject brush = new mvMapLib.mvBrushObject();
  1339.             qwCmd.CommandText = "SELECT brushbgcolor, brushfgcolor, brushstyle, brushhatch FROM " + Program.scheme + ".table_info WHERE id = " + idT.ToString();
  1340.             zxReader = qwCmd.ExecuteReader();
  1341.             if (zxReader.Read())
  1342.             {
  1343.                 brush.bgcolor = Convert.ToUInt32(zxReader.GetInt32(0));
  1344.                 brush.fgcolor = Convert.ToUInt32(zxReader.GetInt32(1));
  1345.                 brush.style = Convert.ToUInt16(zxReader.GetInt32(2));
  1346.                 brush.hatch = Convert.ToUInt16(zxReader.GetInt32(3));
  1347.             }
  1348.             zxReader.Close();
  1349.             return brush;
  1350.         }
  1351.  
  1352.         private int[] getList(string tableName, int count)
  1353.         {
  1354.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1355.             NpgsqlDataReader zxReader;
  1356.             int[] temp = new int[count];
  1357.             qwCmd.CommandText = "SELECT id FROM " + classesOfMetods.getTableInfoOfNameDB(tableName).nameSheme + "." + tableName + ";";
  1358.             zxReader = qwCmd.ExecuteReader();
  1359.             int i = 0;
  1360.             while (zxReader.Read())
  1361.             {
  1362.                 temp[i] = zxReader.GetInt32(0);
  1363.                 i++;
  1364.             }
  1365.             zxReader.Close();
  1366.             return temp;
  1367.         }
  1368.  
  1369.         private mvMapLib.mvSymbolObject getSymbolRef(string tableName, int idTR)
  1370.         {
  1371.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1372.             NpgsqlDataReader zxReader;
  1373.             mvMapLib.mvSymbolObject symb = new mvMapLib.mvSymbolObject();
  1374.             qwCmd.CommandText = "SELECT symbol FROM " + classesOfMetods.getTableInfoOfNameDB(tableName).nameSheme + "." + tableName + " WHERE id = " + idTR.ToString();
  1375.             zxReader = qwCmd.ExecuteReader();
  1376.             if (zxReader.Read())
  1377.             {
  1378.                 symb.shape = Convert.ToUInt32(zxReader.GetInt32(0));
  1379.             }
  1380.             zxReader.Close();
  1381.             return symb;
  1382.         }
  1383.  
  1384.         private mvMapLib.mvFontObject getFontObjectRef(string tableName, int idTR)
  1385.         {
  1386.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1387.             NpgsqlDataReader zxReader;
  1388.             mvMapLib.mvFontObject font = new mvMapLib.mvFontObject();
  1389.             qwCmd.CommandText = "SELECT fontname, fontcolor, fontframecolor, fontsize FROM " + classesOfMetods.getTableInfoOfNameDB(tableName).nameSheme + "." + tableName + " WHERE id = " + idTR.ToString();
  1390.             zxReader = qwCmd.ExecuteReader();
  1391.             if (zxReader.Read())
  1392.             {
  1393.                 font.fontname = zxReader.GetValue(0).ToString();
  1394.                 font.Color = Convert.ToUInt32(zxReader.GetInt32(1));
  1395.                 font.framecolor = Convert.ToUInt32(zxReader.GetInt32(2));
  1396.                 font.size = zxReader.GetInt32(3);
  1397.             }
  1398.             zxReader.Close();
  1399.             return font;
  1400.         }
  1401.  
  1402.         private string getVal(string tableName, string fieldName, int id)
  1403.         {
  1404.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1405.             NpgsqlDataReader zxReader;
  1406.             string name = "";
  1407.             qwCmd.CommandText = "SELECT " + fieldName + " FROM " + classesOfMetods.getTableInfoOfNameDB(tableName).nameSheme + "." + tableName + " WHERE id = " + id.ToString();
  1408.             zxReader = qwCmd.ExecuteReader();
  1409.             if (zxReader.Read())
  1410.             {
  1411.                 name = zxReader.GetValue(0).ToString();
  1412.             }
  1413.             zxReader.Close();
  1414.             return name;
  1415.         }
  1416.  
  1417.         private mvMapLib.mvPenObject getPenObjectRef(string tableName, int idTR)
  1418.         {
  1419.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1420.             NpgsqlDataReader zxReader;
  1421.             mvMapLib.mvPenObject pen = new mvMapLib.mvPenObject();
  1422.             qwCmd.CommandText = "SELECT pencolor, penwidth, pentype FROM " + classesOfMetods.getTableInfoOfNameDB(tableName).nameSheme + "." + tableName + " WHERE id = " + idTR.ToString();
  1423.             zxReader = qwCmd.ExecuteReader();
  1424.             if (zxReader.Read())
  1425.             {
  1426.                 pen.Color = Convert.ToUInt32(zxReader.GetInt32(0));
  1427.                 pen.width = Convert.ToUInt32(zxReader.GetInt32(1));
  1428.                 pen.ctype = Convert.ToUInt16(zxReader.GetInt32(2));
  1429.             }
  1430.             zxReader.Close();
  1431.             return pen;
  1432.         }
  1433.  
  1434.         private mvMapLib.mvBrushObject getmvBrushObjectRef(string tableName, int idTR)
  1435.         {
  1436.             NpgsqlCommand qwCmd = conn1.CreateCommand();
  1437.             NpgsqlDataReader zxReader;
  1438.             mvMapLib.mvBrushObject brush = new mvMapLib.mvBrushObject();
  1439.             qwCmd.CommandText = "SELECT brushbgcolor, brushfgcolor, brushstyle, brushhatch FROM " + classesOfMetods.getTableInfoOfNameDB(tableName).nameSheme + "." + tableName + " WHERE id = " + idTR.ToString();
  1440.             zxReader = qwCmd.ExecuteReader();
  1441.             if (zxReader.Read())
  1442.             {
  1443.                 brush.bgcolor = Convert.ToUInt32(zxReader.GetInt32(0));
  1444.                 brush.fgcolor = Convert.ToUInt32(zxReader.GetInt32(1));
  1445.                 brush.style = Convert.ToUInt16(zxReader.GetInt32(2));
  1446.                 brush.hatch = Convert.ToUInt16(zxReader.GetInt32(3));
  1447.             }
  1448.             zxReader.Close();
  1449.             return brush;
  1450.         }
  1451.  
  1452.         private int getStyle(string val, objStyleRef[] styleRef)
  1453.         {
  1454.             for (int i = 0; styleRef.Length > i; i++)
  1455.             {
  1456.                 if (styleRef[i].Val == val)
  1457.                 {
  1458.                     return styleRef[i].idMap;
  1459.                 }
  1460.             }
  1461.             return 0;
  1462.         }
  1463.  
  1464.         public void button6_Click(object sender, EventArgs e)
  1465.         {
  1466.             flowLayoutPanel1.SuspendLayout();
  1467.             foreach (Control cc in flowLayoutPanel1.Controls)
  1468.             {
  1469.                 LayerItems li = (LayerItems)cc;
  1470.                 if (li.isBaseLayer == false && li.isVectorLayer == false)
  1471.                 {
  1472.                     updateLayer(li.layerName);
  1473.                 }
  1474.             }
  1475.             loadLayerListFromDB();
  1476.             flowLayoutPanel1.ResumeLayout();
  1477.         }
  1478.  
  1479.         public void button7_Click(object sender, EventArgs e)
  1480.         {
  1481.             if (selectedLayer1 != null && !selectedLayer1.isBaseLayer && !selectedLayer1.isVectorLayer)
  1482.             {
  1483.                 openTableGrid(selectedLayer1.layerId, selectedLayer1.layerName);
  1484.             }
  1485.         }
  1486.  
  1487.         private void layersManagerFRM_FormClosing(object sender, FormClosingEventArgs e)
  1488.         {
  1489.             if (e.CloseReason == CloseReason.UserClosing)
  1490.             {
  1491.  
  1492.                 e.Cancel = true;
  1493.                 panel1.Hide();
  1494.             }
  1495.  
  1496.         }
  1497.  
  1498.         public void button8_Click(object sender, EventArgs e)
  1499.         {
  1500.             //this.TopMost = false;
  1501.             rastrfrm1.ShowDialog();
  1502.             //this.TopMost = true;
  1503.         }
  1504.  
  1505.         public void layersManagerFRM_VisibleChanged(object sender, EventArgs e)
  1506.         {
  1507.             if (panel1.Visible == true)
  1508.             {
  1509.                 SortLayers();
  1510.             }
  1511.         }
  1512.         private void SortLayers()
  1513.         {
  1514.             List<LayerItems> lv = new List<LayerItems>();
  1515.             List<LayerItems> lb = new List<LayerItems>();
  1516.             List<LayerItems> lu = new List<LayerItems>();
  1517.             foreach (Control cc in flowLayoutPanel1.Controls)
  1518.             {
  1519.                 LayerItems li = (LayerItems)cc;
  1520.                 if (li.isVectorLayer == true)
  1521.                 {
  1522.                     lv.Add(li);
  1523.                 }
  1524.                 else if (li.isBaseLayer == true)
  1525.                 {
  1526.                     lb.Add(li);
  1527.                 }
  1528.                 else
  1529.                 {
  1530.                     lu.Add(li);
  1531.                 }
  1532.             }
  1533.             flowLayoutPanel1.Controls.Clear();
  1534.             flowLayoutPanel1.Controls.AddRange(lu.ToArray());
  1535.             flowLayoutPanel1.Controls.AddRange(lb.ToArray());
  1536.             flowLayoutPanel1.Controls.AddRange(lv.ToArray());
  1537.         }
  1538.     }
  1539. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement