private void btnEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                if (DialogResult.Yes == MessageBox.Show("¿Esta seguro de eliminar el perfil de configuracion actual?", "Eliminar Perfil", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1))
                {
                    //cambiamos el cursor a waiting
                    Cursor.Current = Cursors.WaitCursor;

                    string xmlPath = ConfigurationManager.AppSettings["xmlDbPath"];
                    XMLdb x = new XMLdb(xmlPath);

                    //traemos la config seleccionada
                    XML_Config configActual = (XML_Config)cmbConfiguracion.SelectedItem;

                    //eliminamos la config
                    x.EliminarConfiguracion(configActual);

                    //cambiamos el cursor al normal
                    Cursor.Current = Cursors.Default;

                    MessageBox.Show("Perfil eliminado correctamente", "Eliminar Perfil", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //cargamos nuevamente el formulario
                    FrmConfiguracion_Load(this, null);

                }

            }
            catch (Exception ex)
            {
                //cambiamos el cursor al normal
                Cursor.Current = Cursors.Default;

                MessageBox.Show("Se ha producido un error:" + ex.Message, "Eliminar Perfil", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void GrabaConfiguracionGeneral()
        {
            try
            {
                //cambiamos el cursor a waiting
                Cursor.Current = Cursors.WaitCursor;
                //culture que usamos para mostrar los campos y recuperarlos en pantalla
                CultureInfo cultAR = new CultureInfo("es-AR");

                string xmlPath = ConfigurationManager.AppSettings["xmlDbPath"];
                XMLdb x = new XMLdb(xmlPath);
                bool actualiza = false;

                //vemos si es actualizacion o alta
                XML_Config config;
                if (!cmbConfiguracion.Visible)
                {//es alta
                    config = new XML_Config();

                    //cargamos la descripcion del nuevo perfil
                    config.Descripcion = txtNombrePerfil.Text.Trim();

                    // el siguiente id de la lista de configuraciones
                    List<XML_Config> configuraciones = (List<XML_Config>)cmbConfiguracion.DataSource;
                    int maxId = 0;
                    foreach (XML_Config configuracion in configuraciones)
                    {
                        if (configuracion.Id > maxId)
                        {
                            maxId = configuracion.Id;
                        }
                    }

                    config.Id = maxId + 1;
                }
                else
                {//es actualizacion
                    config = (XML_Config)cmbConfiguracion.SelectedItem;
                    actualiza = true;
                }

                //cargamos los nuevos valores
                config.PuertoCom = portComboBox.Text;
                config.MaxX = float.Parse(txtMaxX.Text, cultAR);
                config.MaxY = float.Parse(txtMaxY.Text, cultAR);
                config.MaxZ = float.Parse(txtMaxZ.Text, cultAR);
                config.LargoSeccion = decimal.Parse(txtLargoSeccion.Text, cultAR);
                config.VelocidadMovimiento = decimal.Parse(txtVelocMov.Text, cultAR);
                config.AltoAscenso = float.Parse(txtAltura.Text, cultAR);
                config.GradosPasoX = decimal.Parse(txtGradosX.Text, cultAR);
                config.GradosPasoY = decimal.Parse(txtGradosY.Text, cultAR);
                config.GradosPasoZ = decimal.Parse(txtGradosZ.Text, cultAR);
                config.TamVueltaX = decimal.Parse(txtVueltasX.Text, cultAR);
                config.TamVueltaY = decimal.Parse(txtVueltasY.Text, cultAR);
                config.TamVueltaZ = decimal.Parse(txtVueltasZ.Text, cultAR);

                if (rbtAbsoluta.Checked)
                    config.TipoProg = "abs";
                if (rbtRelativa.Checked)
                    config.TipoProg = "rel";

                if (rbtMM.Checked)
                    config.UnidadMedida = "mm";
                if (rbtPULG.Checked)
                    config.UnidadMedida = "pulg";

                //grabamos la configuracion general
                x.GrabaConfiguracion(config);

                if (actualiza)
                    MessageBox.Show("La configuración ha sido actualizada correctamete", "Configuración - Actualización", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                    MessageBox.Show("La configuración ha sido dado de alta correctamete", "Configuración - Alta", MessageBoxButtons.OK, MessageBoxIcon.Information);

                //this.Hide();

                this.cmbConfiguracion.SelectedValueChanged -= new System.EventHandler(this.cmbConfiguracion_SelectedValueChanged);

                lblNombre.Visible = false;
                txtNombrePerfil.Visible = false;
                lblConfig.Visible = true;
                cmbConfiguracion.Visible = true;

                //lblConfigs.Enabled = true;
                //btnAltaConfigMatMot.Enabled = true;
                //grdConfigMatMot.Enabled = true;

                //grabamos en la configuracion que esta es la ultima configuracion seleccionada
                //ConfigurationManager.AppSettings["idLastConfig"]=config.Id.ToString();

                //Configuration appconfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                //appconfig.AppSettings.Settings["idLastConfig"].Value = config.Id.ToString();
                //appconfig.Save(ConfigurationSaveMode.Modified, true);
                //ConfigurationManager.RefreshSection("appSettings");
                x.GrabaConfiguracionGral((new XML_Gral(config.Id)));
                //CargaConfiguracionGeneral();

                //cambiamos el cursor al normal
                Cursor.Current = Cursors.Default;

            }
            catch (Exception ex)
            {
                //cambiamos el cursor al normal
                Cursor.Current = Cursors.Default;

                throw (ex);
                //MessageBox.Show("Se ha producido un error: " + ex.Message, "Alta Configuracion", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void CargaConfiguracionGeneral()
        {
            //cargar configuraciones
            string xmlPath = ConfigurationManager.AppSettings["xmlDbPath"];

            XMLdb x = new XMLdb(xmlPath);
            List<XML_Config> configs = x.LeeConfiguracion();

            //ActualizaDescripcionesMatMot(configs);
            this.cmbConfiguracion.SelectedValueChanged -= new System.EventHandler(this.cmbConfiguracion_SelectedValueChanged);

            cmbConfiguracion.DataSource = configs;
            cmbConfiguracion.DisplayMember = "Descripcion";
            cmbConfiguracion.ValueMember = "Id";

            cmbConfiguracion.Refresh();

            this.cmbConfiguracion.SelectedValueChanged += new System.EventHandler(this.cmbConfiguracion_SelectedValueChanged);

            //seleccionamos la ultima configuracion
            //string ultConfigId = ConfigurationManager.AppSettings["idLastConfig"];
            string ultConfigId = x.LeeConfiguracionGral().IdLastConfig.ToString();
            cmbConfiguracion.SelectedValue = Convert.ToInt32(ultConfigId);
            cmbConfiguracion_SelectedValueChanged(this, null);
        }