1202 lines
51 KiB
C#
1202 lines
51 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Collections;
|
|
|
|
using OliviaDef;
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
using ESRI.ArcGIS.DataSourcesFile;
|
|
using ESRI.ArcGIS.esriSystem;
|
|
using ESRI.ArcGIS.Carto;
|
|
using ESRI.ArcGIS.DataSourcesGDB;
|
|
using System.Diagnostics;
|
|
using ESRI.ArcGIS.Geometry;
|
|
|
|
namespace OliviaAddIn
|
|
{
|
|
/**
|
|
* @file LimpiezaDlg.cs
|
|
* Clase de la ventana de configuración de la herramienta de Limpieza Viaria.
|
|
* Contiene el manejo de sus eventos como el Click o la actualización de su estado.
|
|
*/
|
|
/**
|
|
* Clase de la ventana de configuración de la herramienta de Limpieza Viaria.
|
|
* Contiene el manejo de sus eventos como el Click o la actualización de su estado.
|
|
*/
|
|
public partial class LimpiezaDlg : Form
|
|
{
|
|
//*************************************************************************************
|
|
//Variables
|
|
/**
|
|
* Modos de selección de los niveles y zonas.
|
|
*/
|
|
public enum ModosNiv
|
|
{
|
|
ModTodos, //<Selecciona todos los niveles
|
|
ModSel, //<Deja seleccionar al usuario los niveles
|
|
ModNing, //<No selecciona ningún nivel
|
|
};
|
|
/**
|
|
*
|
|
*/
|
|
public static string vel_nodef = "Def. Vías";
|
|
/**
|
|
* Clase para la lista de ámbitos, relaciona el tipo de ámbito con su texto
|
|
*/
|
|
class AmbitsList
|
|
{
|
|
private LimpiezaDef.AmbitsTra mi_amb_i;
|
|
private string mi_amb_str;
|
|
|
|
public AmbitsList(LimpiezaDef.AmbitsTra amb_i, string amb_str)
|
|
{
|
|
this.mi_amb_i = amb_i;
|
|
this.mi_amb_str = amb_str;
|
|
}
|
|
public LimpiezaDef.AmbitsTra amb_i
|
|
{
|
|
get { return mi_amb_i; }
|
|
set { mi_amb_i = value; }
|
|
}
|
|
public string amb_str
|
|
{
|
|
get { return mi_amb_str; }
|
|
set { mi_amb_str = value; }
|
|
}
|
|
}
|
|
bool hay_alguno_des =false;
|
|
/**
|
|
* Clase para el checklistbox de ámbitos
|
|
*/
|
|
class CheckedListBoxEx : CheckedListBox
|
|
{
|
|
public AmbitsList[] m_ambs_list = null;
|
|
public bool[] m_ambs_gdb = null;
|
|
public void pon_ambs_list(AmbitsList[] ambs)
|
|
{
|
|
m_ambs_list = ambs;
|
|
}
|
|
public void pon_ambs_gdb(bool[] gdb)
|
|
{
|
|
m_ambs_gdb = gdb;
|
|
}
|
|
protected override void OnDrawItem(DrawItemEventArgs e)
|
|
{
|
|
if ((m_ambs_list != null) && (m_ambs_gdb != null) && (e.Index < m_ambs_list.Length) &&
|
|
((int)m_ambs_list[e.Index].amb_i < m_ambs_gdb.Length) && ((int)m_ambs_list[e.Index].amb_i >= 0) &&
|
|
(!m_ambs_gdb[(int)m_ambs_list[e.Index].amb_i]))
|
|
{
|
|
System.Windows.Forms.VisualStyles.CheckBoxState state = System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedDisabled;
|
|
Size glyphSize = CheckBoxRenderer.GetGlyphSize(e.Graphics, state);
|
|
CheckBoxRenderer.DrawCheckBox(
|
|
e.Graphics,
|
|
new System.Drawing.Point(e.Bounds.X + 1, e.Bounds.Y + 1), // add one pixel to align the check gliph properly
|
|
new Rectangle(
|
|
new System.Drawing.Point(e.Bounds.X + glyphSize.Width + 3, e.Bounds.Y), // add three pixels to align text properly
|
|
new Size(e.Bounds.Width - glyphSize.Width, e.Bounds.Height)),
|
|
m_ambs_list[e.Index].amb_str,
|
|
this.Font,
|
|
TextFormatFlags.Left, // text is centered by default
|
|
false,
|
|
state);
|
|
}
|
|
else
|
|
{
|
|
base.OnDrawItem(e);
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Array de variables de tipo AmbitsList para mostrar en la lista, se rellena al elegir el tipo de tratamiento
|
|
*/
|
|
ArrayList ambs_list = null;
|
|
/**
|
|
* Array de variables de tipo AmbitsList para mostrar en la lista, para la opción editable (puedes elegir cualquier ámbito)
|
|
*/
|
|
ArrayList ambs_list_tod_lin = null;
|
|
/**
|
|
* Array de variables de tipo AmbitsList para mostrar en la lista, para la opción editable (puedes elegir cualquier ámbito)
|
|
*/
|
|
ArrayList ambs_list_tod_pto = null;
|
|
/**
|
|
* Array de variables de tipo AmbitsList para mostrar en la lista, para la opción genérica (puedes elegir los ejes de las calles)
|
|
*/
|
|
ArrayList ambs_list_eje = null;
|
|
/**
|
|
* Matriz que da true aquellos ámbitos de trabajo que están contemplados en .gdb una vez leida
|
|
*/
|
|
bool[] amb_tra_gdb = null;
|
|
/**
|
|
* Instancia que contiene las variables de la clase
|
|
*/
|
|
public Limpieza limp = null;
|
|
/**
|
|
* Cadena general para indicar los errores
|
|
*/
|
|
public String err_str = "";
|
|
//*************************************************************************************
|
|
//Métodos
|
|
public LimpiezaDlg()
|
|
{
|
|
InitializeComponent();
|
|
limp = new Limpieza();
|
|
inicia();
|
|
}
|
|
|
|
/**
|
|
* Inicializa los elementos de la ventana: rellena los boxes etc
|
|
*/
|
|
private bool inicia()
|
|
{
|
|
try
|
|
{
|
|
//rellena los checkboxes y listboxes
|
|
LimpiezaDef.rellena_matrs();
|
|
if (OliviaGlob.demo_id == true)
|
|
{
|
|
LimpiezaDef.tipos_tto_str = new string[1];
|
|
LimpiezaDef.tipos_tto_str[0] = "Vaciado de papeleras";
|
|
}
|
|
comboBox_tto.Items.Clear();
|
|
comboBox_tto.Items.AddRange(LimpiezaDef.tipos_tto_str);
|
|
checkedListBox_amb.Items.Clear();
|
|
amb_tra_gdb = OliviaGlob.gdb_limp.lee_amb_gdb(limp);
|
|
checkedListBox_amb.pon_ambs_gdb(amb_tra_gdb);
|
|
|
|
//habilita y deshabilita botones
|
|
textBox_v_despl.Enabled = false;
|
|
//no permite visualizar los elementos del ancho de vía que se acivará cuando se seleccione la opción genérica de ejes de calle
|
|
label_ancho_medio.Visible = false;
|
|
textBox_ancho_medio.Visible = false;
|
|
label_uds_anch_med.Visible = false;
|
|
//no permite visualizar los elementos del umbral de recogida de basuras
|
|
label_umbral_recog.Visible = false;
|
|
tbox_umbral_recog.Visible = false;
|
|
//pone el numero de sectores por defecto
|
|
numericUpDown_sectores.Value = (decimal)limp.n_secdef;
|
|
//rellena los tiempos
|
|
inicia_timepickers();
|
|
//rellena el factor de tráfico
|
|
textBox_traf.Text = limp.trafico.ToString();
|
|
textBox_buff.Text = OliviaGlob.buff_export.ToString();
|
|
|
|
////////////////////////////////////////////////////////////////
|
|
//pone los textos iniciales
|
|
instal_sel.Text = limp.text_selec_instal;
|
|
label_niv.Text = limp.text_selec_nive;
|
|
label_restric.Text = limp.text_selec_rest;
|
|
label_zon.Text = limp.text_selec_zonas;
|
|
label_capa_limp.Text = limp.text_capa_limp;
|
|
|
|
if (!OliviaGlob.gdb_limp.comprueba_campos_limp(limp))
|
|
{
|
|
MessageBox.Show(limp.err_st, "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show("Error al iniciar la ventana de Limpieza", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Inicializa los controles de los tiempos
|
|
*/
|
|
public void inicia_timepickers()
|
|
{
|
|
int[] hm;
|
|
DateTime tmin = new DateTime(2017,01,01,0,0,0);
|
|
DateTime tmax = new DateTime(2017,01,02,0,0,0);
|
|
|
|
//t tratamiento
|
|
cambia_tiempo_tto();
|
|
|
|
//t convenio
|
|
hm = OliviaGlob.dame_h_m(limp.t_conv);
|
|
dateTimePicker_t_conv.MinDate = tmin;
|
|
dateTimePicker_t_conv.MaxDate = tmax;
|
|
dateTimePicker_t_conv.Value = new DateTime(2017,01,01,hm[0],hm[1],0);
|
|
|
|
//t descanso del personal
|
|
hm = OliviaGlob.dame_h_m(limp.t_descan);
|
|
dateTimePicker_t_desc.MinDate = tmin;
|
|
dateTimePicker_t_desc.MaxDate = tmax;
|
|
dateTimePicker_t_desc.Value = new DateTime(2017, 01, 01, hm[0], hm[1], 0);
|
|
|
|
//t carga y descarga
|
|
hm = OliviaGlob.dame_h_m(limp.t_descarg);
|
|
dateTimePicker_carg.MinDate = tmin;
|
|
dateTimePicker_carg.MaxDate = tmax;
|
|
dateTimePicker_carg.Value = new DateTime(2017, 01, 01, hm[0], hm[1], 0);
|
|
|
|
//t desplazamiento inicio/fin
|
|
hm = OliviaGlob.dame_h_m(limp.t_despl_insta);
|
|
dateTimePicker_despl.MinDate = tmin;
|
|
dateTimePicker_despl.MaxDate = tmax;
|
|
dateTimePicker_despl.Value = new DateTime(2017, 01, 01, hm[0], hm[1], 0);
|
|
|
|
//hora de inicio de la jornada
|
|
hm = OliviaGlob.dame_h_m(limp.h_ini);
|
|
dateTimePicker_h_inicio.MinDate = tmin;
|
|
dateTimePicker_h_inicio.MaxDate = tmax;
|
|
dateTimePicker_h_inicio.Value = new DateTime(2017, 01, 01, hm[0], hm[1], 0);
|
|
}
|
|
|
|
/**Pone en la lista los ámbitos de trabajo en función del tipo de tratamiento
|
|
* Los comunes y no comunes a sus opciones. Luego checkea los correspondientes a la opción
|
|
*/
|
|
private ArrayList pon_ambitos()
|
|
{
|
|
ArrayList lista = null;
|
|
try
|
|
{
|
|
if (limp.tipo_tto == (int)LimpiezaDef.TiposTto.TtoNoDef)
|
|
{
|
|
checkedListBox_amb.Items.Clear();
|
|
return lista;
|
|
}
|
|
|
|
rellena_amb_list();
|
|
if ((comboBox_amb.SelectedIndex == 0) && ((limp.tipo_tto < (int)LimpiezaDef.TiposTto.TtoPapeVaci) || (limp.tipo_tto >= (int)LimpiezaDef.TiposTto.TtoCustom)))
|
|
{
|
|
checkedListBox_amb.DataSource = ambs_list_tod_lin;
|
|
checkedListBox_amb.DisplayMember = "amb_str";
|
|
lista = ambs_list_tod_lin;
|
|
}
|
|
else if ((comboBox_amb.SelectedIndex == 0) && (limp.tipo_tto > (int)LimpiezaDef.TiposTto.TtoCaidaHoja))
|
|
{
|
|
checkedListBox_amb.DataSource = ambs_list_tod_pto;
|
|
checkedListBox_amb.DisplayMember = "amb_str";
|
|
lista = ambs_list_tod_pto;
|
|
}
|
|
else if (comboBox_amb.SelectedIndex == 1)
|
|
{
|
|
checkedListBox_amb.DataSource = ambs_list_eje;
|
|
checkedListBox_amb.DisplayMember = "amb_str";
|
|
lista = ambs_list_eje;
|
|
}
|
|
else
|
|
{
|
|
checkedListBox_amb.DataSource = ambs_list;
|
|
checkedListBox_amb.DisplayMember = "amb_str";
|
|
lista = ambs_list;
|
|
}
|
|
checkedListBox_amb.Enabled = false; //se inicia deshabilitado
|
|
check_ambitos(-1, lista); //para resetear los checks
|
|
|
|
//comprueba si están en la gdb, avisa al listbox para que pinte los que no
|
|
hay_alguno_des = false;
|
|
checkedListBox_amb.pon_ambs_list(lista.Cast<AmbitsList>().ToArray());
|
|
for (int i = 0; i < lista.Count; i++)
|
|
{
|
|
if (!amb_tra_gdb[(int)((AmbitsList)lista[i]).amb_i])
|
|
{
|
|
hay_alguno_des = true;
|
|
break;
|
|
}
|
|
}
|
|
//si hay algún ámbito que no está en la gdb, pone el tooltip
|
|
if (hay_alguno_des)
|
|
{
|
|
label_checkambs.ForeColor = System.Drawing.SystemColors.HotTrack;
|
|
toolTip.SetToolTip(label_checkambs, "Aparecen deshabilitados los ámbitos que no tienen entidades en la base de datos");
|
|
}
|
|
else
|
|
{
|
|
label_checkambs.ForeColor = System.Drawing.SystemColors.Control;
|
|
toolTip.SetToolTip(label_checkambs, "");
|
|
}
|
|
return lista;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show("Error al poner los ámbitos", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return null;
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Rellena una lista con los ámbitos comunes y no comunes para mostrar en el listbox en función del tipo de tratamiento
|
|
*/
|
|
private void rellena_amb_list()
|
|
{
|
|
bool[] amb_val;
|
|
bool[] amb_val_tod;
|
|
bool[] amb_val_eje;
|
|
|
|
//lo hace para todos los tratamientos excepto para el Customizble ya que sólo se quieren mostrar las opciones alternaitvas al tratamiento
|
|
if (limp.tipo_tto < (int)LimpiezaDef.TiposTto.TtoCustom)
|
|
{
|
|
//pide un array de booleanos donde es true en las posiciones de los ámbitos comunes
|
|
amb_val = limp.dame_amb(limp.tipo_tto);
|
|
//crea un array con el número de elementos del array anterior que sean true
|
|
ambs_list = new ArrayList(amb_val.Count(x => x));//cuenta los trues
|
|
//rellena el array apuntando los índices y los textos correspondientes a los trues
|
|
for (int i = 0; i < amb_val.Length; i++)
|
|
{
|
|
if (amb_val[i])
|
|
{
|
|
ambs_list.Add(new AmbitsList((LimpiezaDef.AmbitsTra)i,LimpiezaDef.ambits_tra_str[i]));
|
|
}
|
|
}
|
|
}
|
|
|
|
//se hace lo mismo para la opción que da la posibilidad de seleccionar cualquier ámbito lineal
|
|
amb_val_tod = limp.ambs_val[(int)LimpiezaDef.TiposTto.TtoCustom].ambs_ops[0].ambs;
|
|
ambs_list_tod_lin = new ArrayList(amb_val_tod.Count(x => x));
|
|
for (int i = 0; i < amb_val_tod.Length; i++)
|
|
{
|
|
if (amb_val_tod[i])
|
|
{
|
|
ambs_list_tod_lin.Add(new AmbitsList((LimpiezaDef.AmbitsTra)i, LimpiezaDef.ambits_tra_str[i]));
|
|
}
|
|
}
|
|
|
|
//se hace lo mismo para la opción que da la posibilidad de seleccionar cualquier ámbito puntual
|
|
amb_val_tod = limp.ambs_val[(int)LimpiezaDef.TiposTto.TtoCustom].ambs_ops[1].ambs;
|
|
ambs_list_tod_pto = new ArrayList(amb_val_tod.Count(x => x));
|
|
for (int i = 0; i < amb_val_tod.Length; i++)
|
|
{
|
|
if (amb_val_tod[i])
|
|
{
|
|
ambs_list_tod_pto.Add(new AmbitsList((LimpiezaDef.AmbitsTra)i, LimpiezaDef.ambits_tra_str[i]));
|
|
}
|
|
}
|
|
|
|
//se hace lo mismo para la opción que permite seleccionar únicamente los ejes de calle
|
|
amb_val_eje = limp.ambs_val[(int)LimpiezaDef.TiposTto.TtoCustom].ambs_ops[2].ambs;
|
|
ambs_list_eje = new ArrayList(amb_val_eje.Count(x => x));
|
|
for (int i = 0; i < amb_val_eje.Length; i++)
|
|
{
|
|
if (amb_val_eje[i])
|
|
{
|
|
ambs_list_eje.Add(new AmbitsList((LimpiezaDef.AmbitsTra)i, LimpiezaDef.ambits_tra_str[i]));
|
|
}
|
|
}
|
|
}
|
|
|
|
/**Checkea de la lista los ámbitos de trabajo en función del tipo de tratamiento
|
|
* y la opción elegida
|
|
*/
|
|
private void check_ambitos(int iop, ArrayList lista)
|
|
{
|
|
bool check = false;
|
|
if (lista == null)
|
|
return;
|
|
for (int i = 0; i < lista.Count; i++)
|
|
{
|
|
check = false;
|
|
if (iop < 0)
|
|
{
|
|
//para reseteo
|
|
checkedListBox_amb.SetItemChecked(i,false);
|
|
}
|
|
else if (iop == 0)
|
|
{
|
|
//dependiendo del tratamiento seleccionado en la opción 0(Editable) se seleccionarán diferentes opciones del TtoCustom(diferenciando entre ttos lineales o puntuales)
|
|
//para ámbitos lineales
|
|
if (limp.tipo_tto < (int)LimpiezaDef.TiposTto.TtoPapeVaci)
|
|
{
|
|
check = limp.ambs_val[(int)LimpiezaDef.TiposTto.TtoCustom].ambs_ops[iop].ambs[(int)((AmbitsList)lista[i]).amb_i]
|
|
&& amb_tra_gdb[(int)((AmbitsList)lista[i]).amb_i];
|
|
checkedListBox_amb.SetItemChecked(i, check);
|
|
}
|
|
//para ámbitos puntuales
|
|
else if ((limp.tipo_tto > (int)LimpiezaDef.TiposTto.TtoCaidaHoja) && (limp.tipo_tto < (int)LimpiezaDef.TiposTto.TtoCustom))
|
|
{
|
|
//es la opción Genérica que es la opción 1 del TtoCustom, de ahi que el índice sea [iop + 1]
|
|
check = limp.ambs_val[(int)LimpiezaDef.TiposTto.TtoCustom].ambs_ops[iop + 1].ambs[(int)((AmbitsList)lista[i]).amb_i]
|
|
&& amb_tra_gdb[(int)((AmbitsList)lista[i]).amb_i];
|
|
checkedListBox_amb.SetItemChecked(i, check);
|
|
}
|
|
//para ámbito custom
|
|
else
|
|
{
|
|
check = limp.ambs_val[(int)LimpiezaDef.TiposTto.TtoCustom].ambs_ops[iop].ambs[(int)((AmbitsList)lista[i]).amb_i]
|
|
&& amb_tra_gdb[(int)((AmbitsList)lista[i]).amb_i];
|
|
checkedListBox_amb.SetItemChecked(i, check);
|
|
}
|
|
}
|
|
else if (iop == 1)
|
|
{
|
|
//es la opción Genérica que es la opción 2 del TtoCustom, de ahi que el índice sea [iop + 1]
|
|
check = limp.ambs_val[(int)LimpiezaDef.TiposTto.TtoCustom].ambs_ops[iop + 1].ambs[(int)((AmbitsList)lista[i]).amb_i]
|
|
&& amb_tra_gdb[(int)((AmbitsList)lista[i]).amb_i];
|
|
checkedListBox_amb.SetItemChecked(i, check);
|
|
}
|
|
else if ((iop - 2) < (limp.ambs_val[(int)limp.tipo_tto].n_ops))
|
|
{
|
|
//pone el check si el elemento que aparece en la lista porque es común o no común
|
|
//esa opción en concreto le tiene
|
|
check = limp.ambs_val[(int)limp.tipo_tto].ambs_ops[iop-2].ambs[(int)((AmbitsList)lista[i]).amb_i]
|
|
&& amb_tra_gdb[(int)((AmbitsList)lista[i]).amb_i];
|
|
checkedListBox_amb.SetItemChecked(i, check);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Añade a la lista de ambitos seleccionados los que están checkeados de la lista de posibles
|
|
*/
|
|
private bool lee_ambitos()
|
|
{
|
|
limp.amb_tra_sel = new bool[(int)LimpiezaDef.AmbitsTra.AmbN]; //reinicia los ambitos seleccionados
|
|
if (checkedListBox_amb.CheckedItems.Count == 0)
|
|
return false;
|
|
else if ((comboBox_amb.SelectedIndex == 0) && (limp.tipo_tto < (int)LimpiezaDef.TiposTto.TtoPapeVaci))
|
|
{
|
|
for (int i = 0; i < checkedListBox_amb.Items.Count; i++)
|
|
{
|
|
//lo pone a true si ese elemento está checkeado, para lo que coge el índice al array de ámbitos de ese elemento
|
|
if (checkedListBox_amb.GetItemChecked(i))
|
|
limp.amb_tra_sel[(int)((AmbitsList)ambs_list_tod_lin[i]).amb_i] = true;
|
|
}
|
|
}
|
|
else if ((comboBox_amb.SelectedIndex == 0) && (limp.tipo_tto >= (int)LimpiezaDef.TiposTto.TtoPapeVaci))
|
|
{
|
|
for (int i = 0; i < checkedListBox_amb.Items.Count; i++)
|
|
{
|
|
//lo pone a true si ese elemento está checkeado, para lo que coge el índice al array de ámbitos de ese elemento
|
|
if (checkedListBox_amb.GetItemChecked(i))
|
|
limp.amb_tra_sel[(int)((AmbitsList)ambs_list_tod_pto[i]).amb_i] = true;
|
|
}
|
|
}
|
|
else if (comboBox_amb.SelectedIndex == 1)
|
|
{
|
|
for (int i = 0; i < checkedListBox_amb.Items.Count; i++)
|
|
{
|
|
//lo pone a true si ese elemento está checkeado, para lo que coge el índice al array de ámbitos de ese elemento
|
|
if (checkedListBox_amb.GetItemChecked(i))
|
|
limp.amb_tra_sel[(int)((AmbitsList)ambs_list_eje[i]).amb_i] = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int i = 0; i < checkedListBox_amb.Items.Count; i++)
|
|
{
|
|
//lo pone a true si ese elemento está checkeado, para lo que coge el índice al array de ámbitos de ese elemento
|
|
if (checkedListBox_amb.GetItemChecked(i))
|
|
limp.amb_tra_sel[(int)((AmbitsList)ambs_list[i]).amb_i] = true;
|
|
}
|
|
}
|
|
if (limp.amb_tra_sel[(int)LimpiezaDef.AmbitsTra.AmbEjeCalle])//si es ámbito tipo eje de calle
|
|
{
|
|
if (limp.uds_t_tto == (int)GeneralDef.OlvTiposTto.OlvTipTtoMh)
|
|
limp.uds_t_tto = (int)GeneralDef.OlvTiposTto.OlvTipTtoMh_eje;
|
|
else if (limp.uds_t_tto == (int)GeneralDef.OlvTiposTto.OlvTipTtoM2h)
|
|
limp.uds_t_tto = (int)GeneralDef.OlvTiposTto.OlvTipTtoM2h_eje;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Cambio el tiempo del tratamiento en función del tipo de tratamiento seleccionado
|
|
*/
|
|
private void cambia_tiempo_tto()
|
|
{
|
|
if (limp.tipo_tto == (int)LimpiezaDef.TiposTto.TtoNoDef)
|
|
{
|
|
//no está definido
|
|
label_t_tto.Text = "";
|
|
textBox_t_tto.Text = "";
|
|
textBox_t_tto.Enabled = false;
|
|
label_t_tto_def.Text = "Tiempo de tratamiento";
|
|
return;
|
|
}
|
|
else if (limp.tipo_tto >= (int)LimpiezaDef.TiposTto.TtoPapeVaci)
|
|
{
|
|
//tipo puntual, el tiempo es en minutos
|
|
label_t_tto.Text = "min";
|
|
label_t_tto_def.Text = "Tiempo de tratamiento";
|
|
limp.uds_t_tto = (int)OliviaDef.GeneralDef.OlvTiposTto.OlvTipTtoMin;
|
|
}
|
|
else if ((limp.tipo_tto == (int)LimpiezaDef.TiposTto.TtoBarrMecCalz) ||
|
|
(limp.tipo_tto == (int)LimpiezaDef.TiposTto.TtoBaldMecCalz))
|
|
{
|
|
//tipo lineal, es velocidad en m/h
|
|
label_t_tto.Text = "m/h";
|
|
label_t_tto_def.Text = "Veloci. de tratamiento";
|
|
limp.uds_t_tto = (int)OliviaDef.GeneralDef.OlvTiposTto.OlvTipTtoMh;
|
|
}
|
|
else
|
|
{
|
|
//tipo lineal, es velocidad en m2/h
|
|
label_t_tto.Text = "m2/h";
|
|
label_t_tto_def.Text = "Veloci. de tratamiento";
|
|
limp.uds_t_tto = (int)OliviaDef.GeneralDef.OlvTiposTto.OlvTipTtoM2h;
|
|
}
|
|
|
|
textBox_t_tto.Enabled = true;
|
|
textBox_t_tto.Text = LimpiezaDef.tiempos_tto[(int)limp.tipo_tto].ToString();
|
|
}
|
|
|
|
/**
|
|
* Lee los elementos de la ventana y guarda los parámetros
|
|
*/
|
|
private bool lee()
|
|
{
|
|
string str_aux;
|
|
|
|
try
|
|
{
|
|
//lee el tipo de tratamiento
|
|
if (OliviaGlob.demo_id == true)
|
|
{
|
|
if (comboBox_tto.SelectedIndex != -1)
|
|
limp.tipo_tto = (int)LimpiezaDef.TiposTto.TtoPapeVaci;
|
|
}
|
|
else
|
|
limp.tipo_tto = comboBox_tto.SelectedIndex;
|
|
|
|
if (limp.tipo_tto == (int)LimpiezaDef.TiposTto.TtoNoDef)
|
|
{
|
|
err_str = "No se ha seleccionado ningún Tipo de Tratamiento";
|
|
return false;
|
|
}
|
|
|
|
//lee el ámbito seleccionado
|
|
if (!lee_ambitos())
|
|
{
|
|
err_str = "No se ha seleccionado ningún Ámbito de trabajo";
|
|
return false;
|
|
}
|
|
|
|
//lee el ancho medio de la vía si está visible (se ha seleccionado la opción genérica Eje de calles)
|
|
limp.ancho_via = LimpiezaDef.Parametros.ancho_via;
|
|
if (textBox_ancho_medio.Visible)
|
|
{
|
|
try
|
|
{
|
|
str_aux = textBox_ancho_medio.Text;
|
|
limp.ancho_via = Convert.ToDouble(str_aux);
|
|
if ((limp.ancho_via == 0) || (limp.ancho_via > LimpiezaDef.Parametros.ancho_viaM) || (limp.ancho_via < LimpiezaDef.Parametros.ancho_viam))
|
|
{
|
|
err_str = "El ancho de la vía no está dentro de los límites configurados";
|
|
return false;
|
|
}
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
err_str = "El formato introducido para el ancho de la vía no es válido.";
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//cuando se ejecuta el proceso se compurueba si se va a tener en cuenta el umbral de carga de los contendores en su recogida
|
|
if ((checkBox_papelera.Visible == true) && (checkBox_papelera.Checked == true))
|
|
{
|
|
limp.umbral_reco_conten = true;
|
|
try
|
|
{
|
|
limp.umbral_basura = Convert.ToDouble(tbox_umbral_recog.Text);
|
|
if (limp.umbral_basura < 0 || limp.umbral_basura>100)
|
|
{
|
|
err_str = "El umbral de carga de papeleras no está dentro de los límites configurados";
|
|
return false;
|
|
}
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
err_str = "El formato introducido para el umbral de carga de papeleras no es válido.";
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
limp.umbral_reco_conten = false;
|
|
|
|
//lee el tiempo de tratamiento
|
|
try
|
|
{
|
|
str_aux = textBox_t_tto.Text;
|
|
limp.t_tto = Convert.ToDouble(str_aux);
|
|
if ((limp.t_tto == 0) || (limp.t_tto > LimpiezaDef.Parametros.t_ttoM) || (limp.t_tto < LimpiezaDef.Parametros.t_ttom))
|
|
{
|
|
err_str = "El tiempo de tratamiento no está dentro de los límites configurados";
|
|
return false;
|
|
}
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
err_str = "El formato introducido para el tiempo de tratamiento no es válido.";
|
|
return false;
|
|
}
|
|
|
|
//lee la velocidad de desplazamiento
|
|
try
|
|
{
|
|
str_aux = textBox_v_despl.Text;
|
|
if (str_aux != vel_nodef)
|
|
{
|
|
limp.v_despl = Convert.ToDouble(str_aux);
|
|
if ((limp.v_despl == 0) || (limp.v_despl > LimpiezaDef.Parametros.v_despM) || (limp.v_despl < LimpiezaDef.Parametros.v_despm))
|
|
{
|
|
err_str = "La velocidad de desplazamiento no está dentro de los límites configurados";
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
err_str = "El formato introducido para la velocidad de desplazamiento no es válido.";
|
|
return false;
|
|
}
|
|
|
|
//recoge el porcentaje de tráfico que se estima en las vías
|
|
try
|
|
{
|
|
limp.trafico = Convert.ToDouble(textBox_traf.Text);
|
|
if ((limp.trafico < 0) || (limp.trafico > 100))
|
|
{
|
|
err_str = "El porcentaje de tráfico en las vías no está dentro de los límites configurados";
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
err_str = "El formato introducido para el porcentaje de tráfico en las vías no es válido.";
|
|
return false;
|
|
}
|
|
|
|
//lee el buffer de exportación
|
|
try
|
|
{
|
|
OliviaGlob.buff_export = Convert.ToInt32(textBox_buff.Text);
|
|
if ((OliviaGlob.buff_export < 0) || (OliviaGlob.buff_export > 10000))
|
|
{
|
|
err_str = "El buffer de exportación no está dentro de los límites configurados";
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
err_str = "El formato introducido para el buffer de exportación no es válido.";
|
|
return false;
|
|
}
|
|
|
|
//lee el tiempo de trabajo al día por convenio
|
|
int[] hm = { 0, 0 };
|
|
hm[0] = dateTimePicker_t_conv.Value.Hour;
|
|
hm[1] = dateTimePicker_t_conv.Value.Minute;
|
|
limp.t_conv = OliviaGlob.dame_min(hm);
|
|
if ((limp.t_conv == 0) || (limp.t_conv > LimpiezaDef.Parametros.t_convM) || (limp.t_conv < LimpiezaDef.Parametros.t_convm))
|
|
{
|
|
err_str = "El valor introducido para el tiempo de trabajo por convenio no es válido.";
|
|
return false;
|
|
}
|
|
|
|
//lee el tiempo de descanso del personal
|
|
hm[0] = dateTimePicker_t_desc.Value.Hour;
|
|
hm[1] = dateTimePicker_t_desc.Value.Minute;
|
|
limp.t_descan = OliviaGlob.dame_min(hm);
|
|
if ((limp.t_descan == 0) || (limp.t_descan > LimpiezaDef.Parametros.t_descansoM) || (limp.t_descan < LimpiezaDef.Parametros.t_descansom))
|
|
{
|
|
err_str = "El valor introducido para el tiempo de descanso no es válido.";
|
|
return false;
|
|
}
|
|
|
|
//lee el tiempo de carga y descarga
|
|
hm[0] = dateTimePicker_carg.Value.Hour;
|
|
hm[1] = dateTimePicker_carg.Value.Minute;
|
|
limp.t_descarg = OliviaGlob.dame_min(hm);
|
|
if ((limp.t_descarg == 0) || (limp.t_descarg > LimpiezaDef.Parametros.t_cardescM) || (limp.t_descarg < LimpiezaDef.Parametros.t_cardescm))
|
|
{
|
|
err_str = "El valor introducido para el tiempo de carga y descarga no es válido.";
|
|
return false;
|
|
}
|
|
|
|
//lee el tiempo de desplazamiento inicio/fin
|
|
hm[0] = dateTimePicker_despl.Value.Hour;
|
|
hm[1] = dateTimePicker_despl.Value.Minute;
|
|
limp.t_despl_insta = OliviaGlob.dame_min(hm);
|
|
if ((limp.t_despl_insta == 0) || (limp.t_despl_insta > LimpiezaDef.Parametros.t_despM) || (limp.t_despl_insta < LimpiezaDef.Parametros.t_despm))
|
|
{
|
|
err_str = "El valor introducido para el tiempo de desplazamiento no es válido.";
|
|
return false;
|
|
}
|
|
|
|
//lee la hora de inicio de la jornada
|
|
hm[0] = dateTimePicker_h_inicio.Value.Hour;
|
|
hm[1] = dateTimePicker_h_inicio.Value.Minute;
|
|
limp.h_ini = OliviaGlob.dame_min(hm);
|
|
|
|
//se lee el número de puntos de control
|
|
limp.n_ptsctrl = (int)numericUpDown_pctrl.Value;
|
|
if (limp.n_ptsctrl == 0)
|
|
{
|
|
err_str = "No puede haber 0 puntos de control.";
|
|
return false;
|
|
}
|
|
|
|
//se lee el número de sectores si se ha puesto algún valor
|
|
if (checkBox_sector_autom.Checked == true)
|
|
limp.n_secdef = 0;
|
|
else
|
|
{
|
|
limp.n_secdef = (int)numericUpDown_sectores.Value;
|
|
if (checkBox_ajust_sec.Checked == true)
|
|
limp.n_secdef = limp.n_secdef * (-1);//lo envía negativo si es modo ajusta a jornada,
|
|
}
|
|
|
|
//lee si se va a tener en cuenta los elementos asilados o no
|
|
if (checkBox_aislados.Checked == true)
|
|
limp.aislados = 1;
|
|
else
|
|
limp.aislados = 0;
|
|
|
|
return true;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//*************************************************************************************
|
|
//Eventos de elementos de la ventana
|
|
/**
|
|
* Desplegable para seleccionar el tipo de tratamiento
|
|
*/
|
|
private void comboBox_tto_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
textBox_v_despl.Enabled = true;
|
|
if (OliviaGlob.demo_id == true)
|
|
{
|
|
if (comboBox_tto.SelectedIndex != -1)
|
|
limp.tipo_tto = (int)LimpiezaDef.TiposTto.TtoPapeVaci;
|
|
}
|
|
else
|
|
limp.tipo_tto = comboBox_tto.SelectedIndex;
|
|
limp.amb_tra_sel = new bool[(int)LimpiezaDef.AmbitsTra.AmbN]; //reinicia los ambitos seleccionados
|
|
|
|
cambia_tiempo_tto();
|
|
|
|
////////////////////////////////////////
|
|
//Otros cambios que dependen del tratamiento
|
|
if (limp.tipo_tto != (int)LimpiezaDef.TiposTto.TtoNoDef)
|
|
{
|
|
checkBox_restr.Checked = limp.rest_circ[(int)limp.tipo_tto];
|
|
if (limp.t_carg_desc[(int)limp.tipo_tto] == true)
|
|
dateTimePicker_carg.Enabled = true;
|
|
else
|
|
dateTimePicker_carg.Enabled = false;
|
|
|
|
if (LimpiezaDef.v_desplazamiento[(int)limp.tipo_tto] > 0)
|
|
textBox_v_despl.Text = Convert.ToString(LimpiezaDef.v_desplazamiento[(int)limp.tipo_tto]);
|
|
else
|
|
textBox_v_despl.Text = vel_nodef;
|
|
}
|
|
else
|
|
{
|
|
checkBox_restr.Checked = false;
|
|
dateTimePicker_carg.Enabled = false;
|
|
textBox_v_despl.Text = vel_nodef;
|
|
}
|
|
|
|
//si se selecciona el tratamiento de VACIADO DE PAPELERAS se muestra el checkbox que permite sectorizar sólo las papeleras llenas.
|
|
if (limp.tipo_tto == (int)LimpiezaDef.TiposTto.TtoPapeVaci)
|
|
checkBox_papelera.Visible = true;
|
|
else if (limp.tipo_tto != (int)LimpiezaDef.TiposTto.TtoNoDef)
|
|
{
|
|
checkBox_papelera.Visible = false;
|
|
limp.umbral_reco_conten = false;
|
|
label_umbral_recog.Visible = false;
|
|
tbox_umbral_recog.Visible = false;
|
|
}
|
|
|
|
checkedListBox_amb.DataSource = null;
|
|
//permite visualizar los elementos del ancho de vía que se activará cuando se seleccione la opción genérica de ejes de calle
|
|
//siempre y cuando el tiempo de tratamiento sea en m2/h
|
|
label_ancho_medio.Visible = false;
|
|
textBox_ancho_medio.Visible = false;
|
|
label_uds_anch_med.Visible = false;
|
|
|
|
//rellena el combo de opciones de los ambitos
|
|
comboBox_amb.Items.Clear();
|
|
comboBox_amb.Items.Add("Editable");
|
|
comboBox_amb.Items.Add("Genérico");
|
|
//en el caso del tratamiento customizable no se pondrán sus opciones particulares, sólo interesan las opciones globales a todos los tratamientos.
|
|
//las opciones particulares del tratamiento customizable, son realemnte las opciones globales a todos los ttos.
|
|
if ((limp.tipo_tto != (int)LimpiezaDef.TiposTto.TtoNoDef) && (limp.tipo_tto < (int)LimpiezaDef.TiposTto.TtoCustom))
|
|
{
|
|
for (int i = 0; i < (limp.ambs_val[(int)limp.tipo_tto].n_ops); i++)
|
|
comboBox_amb.Items.Add("Opción " + (i + 1));
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show("Error al seleccionar tratamiento", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* El botón cerrar cierra la aplicación Olivia
|
|
*/
|
|
private void LimpiezaDlg_FormClosed(object sender, FormClosedEventArgs e)
|
|
{
|
|
OliviaGlob.borra_files();
|
|
OliviaGlob.inidlg.Show();
|
|
}
|
|
|
|
/**
|
|
* El botón ejecutar lanza el proceso de secotrización y de cálculo de rutas
|
|
*/
|
|
private void button_eje_Click(object sender, EventArgs e)
|
|
{
|
|
Hide();
|
|
if (!ejecuta((int)Ejecuta.ModosEjec.Secto))
|
|
{
|
|
MessageBox.Show("Error al comenzar la ejecución. " + err_str, "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
OliviaGlob.borra_files();
|
|
Show();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Desplegable que permite seleccionar las opciones de ámbitos de trabajo según el tipo de tratamiento seleccionado.
|
|
*/
|
|
private void comboBox_amb_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
ArrayList lista;
|
|
lista = pon_ambitos();
|
|
//checkea los ámbitos de esta opción
|
|
check_ambitos(comboBox_amb.SelectedIndex, lista);
|
|
checkedListBox_amb.Enabled = true;
|
|
if (comboBox_amb.SelectedIndex == 1)
|
|
{
|
|
//permite visualizar los elementos del ancho de vía que se activará cuando se seleccione la opción genérica de ejes de calle siempre y cuando el tiempo de tratamiento sea en ml/h
|
|
if (limp.uds_t_tto != (int)GeneralDef.OlvTiposTto.OlvTipTtoM2h_eje)
|
|
{
|
|
label_ancho_medio.Visible = true;
|
|
label_ancho_medio.Text = "Ancho medio de la calle";
|
|
textBox_ancho_medio.Visible = true;
|
|
textBox_ancho_medio.Text = limp.ancho_via.ToString();
|
|
label_uds_anch_med.Visible = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
label_ancho_medio.Visible = false;
|
|
textBox_ancho_medio.Visible = false;
|
|
label_uds_anch_med.Visible = false;
|
|
}
|
|
if (((limp.tipo_tto == (int)LimpiezaDef.TiposTto.TtoBaldMecCalz) && (comboBox_amb.SelectedIndex >= 2)) ||
|
|
((limp.tipo_tto == (int)LimpiezaDef.TiposTto.TtoCaidaHoja) && (comboBox_amb.SelectedIndex >= 2)))
|
|
checkedListBox_amb.Enabled = false; //si uno de los ámbitos es "eje de calle" no se puede combinar con los demás ámbitos
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show("Error al seleccionar ámbitos", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Se aplica restricciones en la circulación en el cálculo de la sectorización
|
|
*/
|
|
private void bt_restric_circ_Click(object sender, EventArgs e)
|
|
{
|
|
string text_sal;
|
|
Hide();//esconde el dialogo
|
|
if (limp.selec_polig("Seleccionar capa de restricciones de circulación", this.Handle.ToInt32(), out text_sal, out limp.geom_rest_acces))
|
|
{
|
|
label_restric.Text = text_sal;
|
|
limp.text_restr = text_sal;
|
|
}
|
|
else
|
|
{
|
|
label_restric.Text = limp.text_selec_rest;
|
|
limp.text_restr = "";
|
|
}
|
|
Show();
|
|
}
|
|
|
|
/**
|
|
* Para añadir una capa de niveles, en el cálculo de la sectorización, diferente a la existente en la GDB seleccionada al comienzo de la aplicación.
|
|
*/
|
|
private void bt_niveles_Click(object sender, EventArgs e)
|
|
{
|
|
string text_sal;
|
|
Hide();//esconde el dialogo
|
|
if (limp.selec_polig("Seleccionar capa de niveles", this.Handle.ToInt32(), out text_sal, out limp.geom_niveles))
|
|
{
|
|
label_niv.Text = text_sal;
|
|
limp.text_niv = text_sal;
|
|
}
|
|
else
|
|
{
|
|
label_niv.Text = limp.text_selec_nive;
|
|
limp.text_niv = "";
|
|
}
|
|
Show();
|
|
}
|
|
|
|
/**
|
|
* Para añadir una capa de zonas, en el cálculo de la sectorización, diferente a la existente en la GDB seleccionada al comienzo de la aplicación.
|
|
*/
|
|
private void bt_zonas_Click(object sender, EventArgs e)
|
|
{
|
|
string text_sal;
|
|
Hide();//esconde el dialogo
|
|
if (limp.selec_polig("Seleccionar capa de zonas", this.Handle.ToInt32(), out text_sal, out limp.geom_zonas))
|
|
{
|
|
label_zon.Text = text_sal;
|
|
limp.text_zon = text_sal;
|
|
}
|
|
else
|
|
{
|
|
label_zon.Text = limp.text_selec_zonas;
|
|
limp.text_zon = "";
|
|
}
|
|
Show();
|
|
}
|
|
|
|
/**
|
|
* Para añadir una capa de instalaciones, en el cálculo de la sectorización.
|
|
* De modo que se conozca la ubicación de la instalación a la que tendrán que ir los camiones a descargar.
|
|
*/
|
|
private void bt_instalaciones_Click(object sender, EventArgs e)
|
|
{
|
|
string text_sal;
|
|
Hide();//esconde el dialogo
|
|
if (limp.selec_instal("Seleccionar capa de instalaciones de salida/llegada", this.Handle.ToInt32(), out text_sal,
|
|
out limp.coords_instala[0], out limp.coords_instala[1]))
|
|
instal_sel.Text = text_sal;
|
|
else
|
|
instal_sel.Text = limp.text_selec_instal;
|
|
Show();
|
|
}
|
|
|
|
/*
|
|
* Una vez se ha realizado la sectorización se recibe el shapefile y, si fuera necesario, se modifica la sectorizacion.
|
|
* Una vez esté todo al gusto del usuario se realiza la planificación de la ruta.
|
|
*/
|
|
private void bt_planifica_Click(object sender, EventArgs e)
|
|
{
|
|
Hide();
|
|
|
|
if (!ejecuta((int)Ejecuta.ModosEjec.Planif))
|
|
{
|
|
MessageBox.Show("Error al comenzar la ejecución: " + err_str, "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
OliviaGlob.borra_files();
|
|
Show();
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Comienza la ejecución, secto o planif
|
|
*/
|
|
private bool ejecuta(int modo)
|
|
{
|
|
ProgresoInic pro_inic = null;
|
|
try
|
|
{
|
|
err_str = "";
|
|
OliviaGlob.gdb_limp.err_st = "";
|
|
|
|
button_eje.Enabled = bt_planifica.Enabled = false;
|
|
|
|
//lee el dialogo de limpieza para recoger los parámetros que intervienen en el cálculo de la planificación
|
|
if (!lee())
|
|
{
|
|
return false;
|
|
}
|
|
|
|
pro_inic = new ProgresoInic();
|
|
pro_inic.Show();
|
|
|
|
EjecutaLimp eje_limp = new EjecutaLimp();
|
|
if (!eje_limp.ejec(limp, modo))
|
|
{
|
|
pro_inic.Close();
|
|
err_str = eje_limp.err_str;
|
|
return false;
|
|
}
|
|
pro_inic.Close();
|
|
return true;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
if (pro_inic != null)
|
|
pro_inic.Close();
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
button_eje.Enabled = bt_planifica.Enabled = true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Permite seleccionar el cálculo autmático de sectores en función de la zona de trabajo, teniendo en cuenta las jornadas de trabajo marcadas
|
|
*/
|
|
private void checkBox_sector_autom_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
numericUpDown_sectores.Enabled = checkBox_ajust_sec.Enabled = !checkBox_sector_autom.Checked;
|
|
}
|
|
|
|
/*revisar borrar
|
|
* private void LimpiezaDlg_VisibleChanged(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (OliviaGlob.estado == TiposEstado.Inicio)
|
|
{
|
|
groupBox_edits.Enabled = true;
|
|
bt_planifica.Enabled = false;
|
|
button_eje.Enabled = true;
|
|
checkBox_aislados.Enabled = true;
|
|
Show();
|
|
}
|
|
else if (OliviaGlob.estado == TiposEstado.PreparadoPlanif ||
|
|
OliviaGlob.estado == TiposEstado.FinPlanif)
|
|
{
|
|
groupBox_edits.Enabled = false;
|
|
bt_planifica.Enabled = true;
|
|
button_eje.Enabled = false;
|
|
checkBox_aislados.Enabled = false;
|
|
Show();
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show("Error al mostrar la ventana de Limpieza", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
}*/
|
|
|
|
/*
|
|
* Al pulsar en el check box de tener en cuenta un umbral de llenado para el vaciado de las papeleras
|
|
*/
|
|
private void checkBox_papelera_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (checkBox_papelera.Checked == true)
|
|
{
|
|
label_umbral_recog.Visible = true;
|
|
tbox_umbral_recog.Visible = true;
|
|
tbox_umbral_recog.Text = limp.umbral_basura.ToString();
|
|
limp.umbral_reco_conten = false;
|
|
}
|
|
else
|
|
{
|
|
limp.umbral_reco_conten = false;
|
|
label_umbral_recog.Visible = false;
|
|
tbox_umbral_recog.Visible = false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Cuando se picnha en el botón de ayuda se abre el manual de Olivia
|
|
*/
|
|
private void btn_help_Click(object sender, EventArgs e)
|
|
{
|
|
string[] archivos;
|
|
|
|
try
|
|
{
|
|
archivos = Directory.GetFiles(OliviaGlob.Paths.PathWork, OliviaGlob.manual + ".pdf");
|
|
if (archivos.Length <= 0)
|
|
MessageBox.Show("No se encuentra el archivo " + OliviaGlob.manual + ".pdf en la ubicación " + OliviaGlob.Paths.PathWork, "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
foreach (string f in archivos)
|
|
{
|
|
Process.Start(f);
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show("Error al abrir el manual de ayuda " + OliviaGlob.manual + ".pdf", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
}
|
|
|
|
private void button_capa_limp_Click(object sender, EventArgs e)
|
|
{
|
|
string path_limp;
|
|
|
|
//se despliega el dialogo para seleccionar ua capa de la que se recogerán los datos.
|
|
path_limp = FunGDB.selec_ftcls("Seleccionar capa de limpieza", this.Handle.ToInt32());
|
|
|
|
if (path_limp != null)
|
|
{
|
|
OliviaGlob.gdb_limp.path_class = path_limp;
|
|
if (OliviaGlob.gdb_limp.comprueba_campos_limp(limp))
|
|
{
|
|
label_capa_limp.Text = System.IO.Path.GetFileNameWithoutExtension(path_limp);
|
|
amb_tra_gdb = OliviaGlob.gdb_limp.lee_amb_gdb(limp);
|
|
checkedListBox_amb.pon_ambs_gdb(amb_tra_gdb);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Error en la capa " + path_limp + " " + limp.err_st, "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
label_capa_limp.Text = limp.text_capa_limp;
|
|
OliviaGlob.gdb_limp.path_class = null;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
label_capa_limp.Text = limp.text_capa_limp;
|
|
OliviaGlob.gdb_limp.path_class = null;
|
|
}
|
|
comboBox_tto.SelectedIndex = -1;
|
|
OliviaGlob.gdb_limp.path_import = null;
|
|
}
|
|
|
|
private void button_edit_camp_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
LimpCampos camps = new LimpCampos(limp);
|
|
if (camps.ShowDialog() == DialogResult.OK)
|
|
{
|
|
if (OliviaGlob.gdb_limp.comprueba_campos_limp(limp))
|
|
{
|
|
amb_tra_gdb = OliviaGlob.gdb_limp.lee_amb_gdb(limp);
|
|
checkedListBox_amb.pon_ambs_gdb(amb_tra_gdb);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(limp.err_st, "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
comboBox_tto.SelectedIndex = -1;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show("Error al editar los campos de la capa de recogida de residuos", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
}
|
|
|
|
private void LimpiezaDlg_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
if (this.WindowState == FormWindowState.Normal)
|
|
Properties.Settings.Default.LimpDlg_Loc = this.Location;
|
|
else
|
|
Properties.Settings.Default.LimpDlg_Loc = this.RestoreBounds.Location;
|
|
|
|
Properties.Settings.Default.Save();
|
|
}
|
|
|
|
private void LimpiezaDlg_Load(object sender, EventArgs e)
|
|
{
|
|
this.Location = Properties.Settings.Default.LimpDlg_Loc;
|
|
}
|
|
}
|
|
}
|