/// #NAME#: #DESCRIPTION# public void f_ce9567d0_f165_45e0_844a_a2881290bfeb() { //INI CODE PRCGUID: ce9567d0-f165-45e0-844a-a2881290bfeb ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); CProgram currProg = new CProgram(sys, App_globals, CVentanaProgramas.Namespace_programa_activo.ToString()); ((JArray)currProg.Logic)[CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex].Remove(); currProg.Save(); //END CODE PRCGUID: ce9567d0-f165-45e0-844a-a2881290bfeb }
/// #NAME#: #DESCRIPTION# public void f_Guardar_proceso_activo() { //INI CODE PRCGUID: Guardar proceso activo ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); ARQODE_UI.GestorProcesos.CFormProcesoActivo CFormProcesoActivo = new ARQODE_UI.GestorProcesos.CFormProcesoActivo(vm); // cargar fichero de programa CProgram cprog = new CProgram(sys, App_globals, CVentanaProgramas.Namespace_programa_activo.ToString()); if ((CVentanaProgramas.ListaProcesos.RowCount > 0) && (CVentanaProgramas.ListaProcesos.SelectedCells.Count > 0)) { JToken JProc = (cprog.Logic as JArray)[int.Parse(CFormProcesoActivo.Fila_activa.ToString())]; // Guardar descripción JProc["Description"] = CFormProcesoActivo.TBDescription.Text; // Guardar entradas JProc["Inputs"] = new JObject(); for (int i = 0; i < CFormProcesoActivo.LInputs.RowCount; i++) { if ((CFormProcesoActivo.LInputs[0, i].Value != null) && (CFormProcesoActivo.LInputs[1, i].Value != null) && (CFormProcesoActivo.LInputs[0, i].Value.ToString() != "")) { JProc["Inputs"][CFormProcesoActivo.LInputs[0, i].Value.ToString()] = CFormProcesoActivo.LInputs[1, i].Value.ToString(); } } // Guardar salidas JProc["Outputs"] = new JObject(); for (int i = 0; i < CFormProcesoActivo.LOutputs.RowCount; i++) { if ((CFormProcesoActivo.LOutputs[0, i].Value != null) && (CFormProcesoActivo.LOutputs[1, i].Value != null) && (CFormProcesoActivo.LOutputs[0, i].Value.ToString() != "")) { JProc["Outputs"][CFormProcesoActivo.LOutputs[0, i].Value.ToString()] = CFormProcesoActivo.LOutputs[1, i].Value.ToString(); } } JProc["Configuration"] = new JObject(); // Guardar configuration for (int i = 0; i < CFormProcesoActivo.LConfig.RowCount; i++) { if ((CFormProcesoActivo.LConfig[0, i].Value != null) && (CFormProcesoActivo.LConfig[1, i].Value != null) && (CFormProcesoActivo.LConfig[0, i].Value.ToString() != "")) { JProc["Configuration"][CFormProcesoActivo.LConfig[0, i].Value.ToString()] = CFormProcesoActivo.LConfig[1, i].Value.ToString(); } } cprog.Save(); } //END CODE PRCGUID: Guardar proceso activo }
/// <summary> /// Launch task or single thread program /// </summary> /// <param name="eDesc"></param> public object LaunchProgram(CEventDesc eDesc, object program_vars) { bool queued = CProgram.CheckQueuedFlag(eDesc.Program); if ((logic == null) || (!queued)) { // Init program if (Program != null) { sprogram.Push(Program); } Program = new CProgram(sys, sys.Globals, eDesc.Program, program_vars); vm.Cancel_events = true; Program.ExecuteProcess += Program_ExecuteProcess; // Run program if not queued or logic is null if (!Program.hasErrors()) { // Init logic process executor if (logic != null) { slogic.Push(logic); } logic = new CLogic(sys, vm, eDesc); // Run program sync or async if (Program.Parallel_execution) { LaunchTask(eDesc); } else { RunProgram(); } logic = (slogic.Count > 0) ? (CLogic)slogic.Pop() : null; } program_vars = Program.vars; Program.ProgramClose(); vm.Cancel_events = false; Program = (sprogram.Count > 0) ? (CProgram)sprogram.Pop() : null; } else if ((logic != null) && (queued)) { // push program in queue sevent_desc.Push(eDesc); } return(program_vars); }
/// #NAME#: #DESCRIPTION# public void f_acbc65a0_6f4f_4d0b_aad9_e7c24e7241a1() { //INI CODE PRCGUID: acbc65a0-6f4f-4d0b-aad9-e7c24e7241a1 ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); ARQODE_UI.GestorProcesos.CFormProcesoActivo CFormProcesoActivo = new ARQODE_UI.GestorProcesos.CFormProcesoActivo(vm); CProgram curr_prog = new CProgram(sys, App_globals, CFormProcesoActivo.Namespace_programa_activo.ToString()); String var = CFormProcesoActivo.LB_ProgramVars.SelectedItem.ToString(); curr_prog.vars.Remove(var); curr_prog.Variables.RemoveAt(curr_prog.Variables.ToList().IndexOf(var)); curr_prog.Save(); CFormProcesoActivo.LB_ProgramVars.Items.Remove(var); //END CODE PRCGUID: acbc65a0-6f4f-4d0b-aad9-e7c24e7241a1 }
/// #NAME#: #DESCRIPTION# public void f_57c58cbe_c7d5_4437_b06c_85232bda9804() { //INI CODE PRCGUID: 57c58cbe-c7d5-4437-b06c-85232bda9804 ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); if (CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex > 0) { CProgram currProg = new CProgram(sys, App_globals, CVentanaProgramas.Namespace_programa_activo.ToString()); JToken proc_active = ((JArray)currProg.Logic)[CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex]; ((JArray)currProg.Logic).Insert(CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex - 1, proc_active); proc_active.Remove(); currProg.Save(); } //END CODE PRCGUID: 57c58cbe-c7d5-4437-b06c-85232bda9804 }
/// #NAME#: #DESCRIPTION# public void f_3343e203_c0a9_4a7c_9792_f3cb5411ff44() { //INI CODE PRCGUID: 3343e203-c0a9-4a7c-9792-f3cb5411ff44 ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); if (CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex < CVentanaProgramas.ListaProcesos.RowCount - 1) { int ri = CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex; CProgram currProg = new CProgram(sys, App_globals, CVentanaProgramas.Namespace_programa_activo.ToString()); JToken proc_active = ((JArray)currProg.Logic)[ri]; ((JArray)currProg.Logic).Insert(ri + 2, proc_active); ((JArray)currProg.Logic)[ri].Remove(); currProg.Save(); } //END CODE PRCGUID: 3343e203-c0a9-4a7c-9792-f3cb5411ff44 }
/// #NAME#: #DESCRIPTION# public void f_Editar_codigo() { //INI CODE PRCGUID: Editar código CProgram CurrentProg = null; ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); if ((CVentanaProgramas.ListaProcesos.Rows.Count > 0) && (CVentanaProgramas.ListaProcesos.SelectedCells.Count > 0) && (CVentanaProgramas.ListaProcesos.SelectedCells[0].ColumnIndex == 0)) { int ri = CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex; int ci = CVentanaProgramas.ListaProcesos.SelectedCells[0].ColumnIndex; String edit_code_value = (bool.Parse(CVentanaProgramas.ListaProcesos[ci, ri].Value.ToString())) ? "0" : "1"; String p_guid = CVentanaProgramas.ListaProcesos[1, ri].Value.ToString(); TreeNode N_ProgramaActivo = CVentanaProgramas.ArbolProgramas.SelectedNode; CurrentProg = new CProgram(sys, App_globals, N_ProgramaActivo.FullPath.Replace(dPROGRAM.FOLDER + "\\", "").Replace(".json", "").Replace("\\", ".")); if (p_guid != "Call") { if (!CurrentProg.SetProcess_Edit_Code(p_guid, edit_code_value)) { MessageBox.Show("Seleccciona en el arbol de programas el programa correspondiente al proceso: " + p_guid); } else { CVentanaProgramas.ListaProcesos[ci, ri].Selected = false; CVentanaProgramas.ListaProcesos[1, ri].Selected = true; } } else { MessageBox.Show("No se puede editar el código de una función 'Call', sólo procesos."); CVentanaProgramas.ListaProcesos.Rows[ri].Cells[ci].Value = false; } // cambiar la celda activa para que el evento cellcontentchanged no de problemas CVentanaProgramas.ListaProcesos[1, CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex].Selected = true; } //END CODE PRCGUID: Editar código }
/// #NAME#: #DESCRIPTION# public void f_b8c926b9_1f1f_4575_b0d6_abafca3997d9() { //INI CODE PRCGUID: b8c926b9-1f1f-4575-b0d6-abafca3997d9 ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); ARQODE_UI.ARQODE_UI.CInputDialog CInputDialog = new ARQODE_UI.ARQODE_UI.CInputDialog(vm); CInputDialog.InputDialog.AcceptButton = CInputDialog.BAceptar; CInputDialog.InputDialog.CancelButton = CInputDialog.BCancelar; CInputDialog.InputDialog.Text = "Variables de programa"; CInputDialog.Label1.Text = "Nueva variable de programa"; vm.Cancel_events = false; if (CInputDialog.InputDialog.ShowDialog() == DialogResult.OK) { String nueva_var = CInputDialog.textBox1.Text.Trim(); if (nueva_var != "") { ARQODE_UI.GestorProcesos.CFormProcesoActivo CFormProcesoActivo = new ARQODE_UI.GestorProcesos.CFormProcesoActivo(vm); String Programa_activo = CFormProcesoActivo.Namespace_programa_activo.ToString(); CProgram curr_prog = new CProgram(sys, App_globals, Programa_activo); if (!curr_prog.Variables.Contains(nueva_var)) { curr_prog.Variables.Add(nueva_var); curr_prog.Save(); CFormProcesoActivo.LB_ProgramVars.Items.Add(nueva_var); } else { MessageBox.Show("La variable ya existe en el programa"); } } } //END CODE PRCGUID: b8c926b9-1f1f-4575-b0d6-abafca3997d9 }
/// #NAME#: #DESCRIPTION# public void f_Cargar_subprogramas() { //INI CODE PRCGUID: Cargar subprogramas ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); TreeNode ActiveNode = CVentanaProgramas.ArbolProgramas.SelectedNode; int row_index = 0; int col_index = 0; if ((ActiveNode != null) && (ActiveNode.Text.EndsWith(".json"))) { CProgram CurrentProg = new CProgram(sys, App_globals, ActiveNode.FullPath.Replace(dPROGRAM.FOLDER + "\\", "").Replace(".json", "").Replace("\\", ".")); CVentanaProgramas.Namespace_programa_activo = CurrentProg.Program_namespace; #region Guardar namespace actual en histórico DataTable dt = null; if (CVentanaProgramas.Historico_de_programas == null) { dt = new DataTable(); dt.Columns.Add("Path"); dt.Columns.Add("Program name"); CVentanaProgramas.Historico_de_programas = dt; } else { dt = (DataTable)CVentanaProgramas.Historico_de_programas; } if (!((dt.Rows.Count > 0) && (dt.Rows[0][0].ToString() == CurrentProg.Program_namespace))) { DataRow dr = dt.NewRow(); dr[0] = dPROGRAM.FOLDER + "." + CurrentProg.Program_namespace; dr[1] = CurrentProg.Program_namespace; dt.Rows.InsertAt(dr, 0); } Outputs("Histórico de programas", dt); #endregion if (CurrentProg.Logic != null) { if ((CVentanaProgramas.ListaProcesos.RowCount > 0) && (CVentanaProgramas.ListaProcesos.SelectedCells.Count > 0)) { row_index = CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex; col_index = CVentanaProgramas.ListaProcesos.SelectedCells[0].ColumnIndex; } JArray JProcess_array = new JArray(); foreach (JObject prc_node in CurrentProg.Logic) { if (prc_node.Count > 0) { TProcess CurrentProc = new TProcess(sys, App_globals, prc_node); JObject JRow = new JObject(); JRow.Add("Editor", CurrentProc.Edit_code == "1"); JRow.Add("Guid", CurrentProc.Guid.ToString()); String Name = (CurrentProc.Name != null) ? CurrentProc.Name.ToString() : CurrentProc.Guid.ToString(); JRow.Add("Name", Name); if (Name.EndsWith("Call")) { String call_at_end = ""; if (CurrentProc.Configuration["program"].ToString().StartsWith("&")) { call_at_end = "(Execute at end). "; } JRow.Add("Description", call_at_end + CurrentProc.Configuration["program"].ToString()); } else { JRow.Add("Description", (CurrentProc.Description != null) ? CurrentProc.Description.ToString() : ""); } JProcess_array.Add(JRow); } } CVentanaProgramas.Procesos_programa_activo = CurrentProg.Logic; DataGridViewCheckBoxColumn c1 = new DataGridViewCheckBoxColumn() { ValueType = typeof(bool), Name = "Editor" }; DataGridViewTextBoxColumn c2 = new DataGridViewTextBoxColumn(); c2.ValueType = typeof(string); c2.Name = "Guid"; DataGridViewTextBoxColumn c3 = new DataGridViewTextBoxColumn(); c3.ValueType = typeof(string); c3.Name = "Name"; DataGridViewTextBoxColumn c4 = new DataGridViewTextBoxColumn(); c4.ValueType = typeof(string); c4.Name = "Description"; CVentanaProgramas.ListaProcesos.Columns.Clear(); CVentanaProgramas.ListaProcesos.Columns.Add(c1); CVentanaProgramas.ListaProcesos.Columns.Add(c2); CVentanaProgramas.ListaProcesos.Columns.Add(c3); CVentanaProgramas.ListaProcesos.Columns.Add(c4); CVentanaProgramas.ListaProcesos.DataSource = null; CVentanaProgramas.ListaProcesos.Rows.Clear(); foreach (JToken Jpro in JProcess_array) { CVentanaProgramas.ListaProcesos.Rows.Add(Jpro["Editor"], Jpro["Guid"], Jpro["Name"], Jpro["Description"]); } CVentanaProgramas.ListaProcesos.AllowUserToAddRows = false; CVentanaProgramas.ListaProcesos.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; if (CVentanaProgramas.ListaProcesos.RowCount > 0) { if ((CVentanaProgramas.ListaProcesos.Rows.Count > row_index) && (CVentanaProgramas.ListaProcesos.Columns.Count > col_index)) { CVentanaProgramas.ListaProcesos[col_index, row_index].Selected = true; CVentanaProgramas.ListaProcesos[0, 0].Selected = false; } } CVentanaProgramas.ListaProcesos.Columns[0].Width = 40; CVentanaProgramas.ListaProcesos.Columns[1].Width = 200; } else { MessageBox.Show("El programa seleccionado contiene errores, revisar formato del json."); } } else { CVentanaProgramas.ListaProcesos.Rows.Clear(); } //END CODE PRCGUID: Cargar subprogramas }
/// #NAME#: #DESCRIPTION# public void f_Cargar_proceso_activo() { //INI CODE PRCGUID: Cargar proceso activo ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); ARQODE_UI.GestorProcesos.CFormProcesoActivo CFormProcesoActivo = new ARQODE_UI.GestorProcesos.CFormProcesoActivo(vm); if ((CVentanaProgramas.Namespace_programa_activo != null) && (CVentanaProgramas.ListaProcesos.Rows.Count > 0)) { ARQODE_UI.GestorProcesos.CVentanaProcesos CVentanaProcesos = new ARQODE_UI.GestorProcesos.CVentanaProcesos(vm); if (CVentanaProcesos.PProcessPanel.Controls.Count == 0) { CVentanaProcesos.PProcessPanel.Controls.Add(CFormProcesoActivo.FormProcesoActivo); } CFormProcesoActivo.FormProcesoActivo.Dock = DockStyle.Fill; // Variables de vistas CFormProcesoActivo.TV_ViewsVars.Nodes.Clear(); TreeNode tn_views = (TreeNode)CVentanaProgramas.Cargar_arbol_recursivo.Crear_arbol_desde_carpeta(App_globals.AppDataSection(dPATH.VIEWS).FullName, "base_control.json"); List <TreeNode> NodosHoja = (List <TreeNode>)CVentanaProgramas.Cargar_arbol_recursivo.Crear_lista_de_nodos_hoja_del_arbol(tn_views); foreach (TreeNode node in tn_views.Nodes) { CFormProcesoActivo.TV_ViewsVars.Nodes.Add(node); } foreach (TreeNode nodo in NodosHoja) { JSonFile JView = new JSonFile(Path.Combine( App_globals.AppDataSection(dPATH.VIEWS).FullName, nodo.FullPath)); if (JView.jActiveObj["Variables"] != null) { foreach (JValue var in JView.jActiveObj["Variables"] as JArray) { nodo.Nodes.Add(var.Value.ToString()); } } } // Variables de programa CFormProcesoActivo.LB_ProgramVars.Items.Clear(); CProgram Curr_prog = new CProgram(sys, App_globals, CVentanaProgramas.Namespace_programa_activo.ToString()); foreach (String var in Curr_prog.vars.Keys) { CFormProcesoActivo.LB_ProgramVars.Items.Add(var); } // Variables globals CFormProcesoActivo.TV_GlobalsVars.Nodes.Clear(); foreach (JToken JGlob in App_globals.Globals) { TreeNode tn = new TreeNode(((JProperty)JGlob).Name); if (((JProperty)JGlob).Value is JObject) { JObject JChildGlobs = (JObject)((JProperty)JGlob).Value; foreach (JProperty JChildGlob in JChildGlobs.Properties()) { TreeNode tn1 = new TreeNode(JChildGlob.Name); tn.Nodes.Add(tn1); } } CFormProcesoActivo.TV_GlobalsVars.Nodes.Add(tn); } // Datos del proceso JToken JProgram_logic = (JToken)CVentanaProgramas.Procesos_programa_activo; if (JProgram_logic != null) { if ((CVentanaProgramas.ListaProcesos.SelectedCells.Count > 0) || (CVentanaProgramas.ListaProcesos.Rows.Count > 0)) { int rowIndex = (CVentanaProgramas.ListaProcesos.SelectedCells.Count > 0) ? CVentanaProgramas.ListaProcesos.SelectedCells[0].RowIndex : 0; String PGuid = CVentanaProgramas.ListaProcesos[1, rowIndex].Value.ToString(); JToken JProc = (JProgram_logic as JArray)[rowIndex]; // Eliminar el proceso si está vacío if (JProc.Count() == 0) { JProc.Remove(); JProc = (JProgram_logic as JArray)[rowIndex]; } // Guardar proceso activo Outputs("Proceso de programa activo", JProc); CFormProcesoActivo.Fila_activa = rowIndex; CFormProcesoActivo.Active_process = JProc; CFormProcesoActivo.Namespace_programa_activo = CVentanaProgramas.Namespace_programa_activo; CFormProcesoActivo.LName.Text = (JProc["Name"] != null) ? JProc["Name"].ToString() : JProc["Guid"].ToString(); CFormProcesoActivo.TBDescription.Text = (JProc["Description"] != null) ? JProc["Description"].ToString() : ""; // inputs System.Data.DataTable dti = new System.Data.DataTable(); dti.Columns.Add("Input"); dti.Columns.Add("Value"); foreach (JProperty JInput in JProc["Inputs"]) { dti.Rows.Add(new String[] { JInput.Name, JInput.Value.ToString() }); } CFormProcesoActivo.LInputs.DataSource = dti; // Outputs System.Data.DataTable dto = new System.Data.DataTable(); dto.Columns.Add("Output"); dto.Columns.Add("Value"); foreach (JProperty JOutputs in JProc["Outputs"]) { dto.Rows.Add(new String[] { JOutputs.Name, JOutputs.Value.ToString() }); } CFormProcesoActivo.LOutputs.DataSource = dto; // Configuration if (JProc["Configuration"] != null) { System.Data.DataTable dtc = new System.Data.DataTable(); dtc.Columns.Add("Configuration"); dtc.Columns.Add("Value"); foreach (JProperty JConfig in JProc["Configuration"]) { dtc.Rows.Add(new String[] { JConfig.Name, JConfig.Value.ToString() }); } CFormProcesoActivo.LConfig.DataSource = dtc; } } else { CFormProcesoActivo.Active_process = null; CFormProcesoActivo.LName.Text = ""; CFormProcesoActivo.TBDescription.Text = ""; CFormProcesoActivo.LInputs.DataSource = null; CFormProcesoActivo.LOutputs.DataSource = null; CFormProcesoActivo.LConfig.DataSource = null; Outputs("Proceso de programa activo", null); } } CVentanaProcesos.tabProcesos.SelectedIndex = 1; } else { CFormProcesoActivo.Active_process = null; CFormProcesoActivo.LName.Text = ""; CFormProcesoActivo.TBDescription.Text = ""; CFormProcesoActivo.LInputs.DataSource = null; CFormProcesoActivo.LOutputs.DataSource = null; CFormProcesoActivo.LConfig.DataSource = null; Outputs("Proceso de programa activo", null); } //END CODE PRCGUID: Cargar proceso activo }
/// #NAME#: #DESCRIPTION# public void f_17250dd1_6cd2_4b1b_a7cd_58ec52297bb8() { //INI CODE PRCGUID: 17250dd1-6cd2-4b1b-a7cd-58ec52297bb8 String fichero_de_salida = Input_str("Fichero de salida"); if (fichero_de_salida != "") { // current program ARQODE_UI.GestorProgramas.CVentanaProgramas CVentanaProgramas = new ARQODE_UI.GestorProgramas.CVentanaProgramas(vm); String ns_programa = CVentanaProgramas.Namespace_programa_activo.ToString(); // program stack for recursive exploration Stack <KeyValuePair <int, CProgram> > s_prog = new Stack <KeyValuePair <int, CProgram> >(); // Progs and procs dictionarys Dictionary <String, JToken> exp_programs = new Dictionary <string, JToken>(); Dictionary <String, JToken> exp_processes = new Dictionary <String, JToken>(); CProgram cprog = new CProgram(sys, App_globals, ns_programa); while ((ns_programa != "") || (s_prog.Count > 0)) { int i = 0; // Restore program from stack if (cprog == null) { KeyValuePair <int, CProgram> k_prog = s_prog.Pop(); i = k_prog.Key; cprog = k_prog.Value; } int n_prcs = ((JArray)cprog.Logic).Count; bool force_exit = false; // Save program and inner processes while ((!force_exit) && (i < n_prcs)) { TProcess proc = new TProcess(sys, App_globals, (JObject)((JArray)cprog.Logic).ElementAt(i)); if (!exp_programs.ContainsKey(cprog.Program_namespace)) { // add program only once exp_programs.Add(cprog.Program_namespace, cprog.get_json.DeepClone()); } i++; if (proc.Guid == "Call") { // Add current program to stack and atach the new one for explore recursively s_prog.Push(new KeyValuePair <int, CProgram>(i, cprog)); cprog = new CProgram(sys, App_globals, proc.Configuration["program"].ToString()); ns_programa = cprog.Program_namespace; force_exit = true; } else if (!exp_processes.ContainsKey(proc.Guid)) { // add process only once exp_processes.Add(proc.Guid, proc.get_json.DeepClone()); } } if ((i == n_prcs) && (!force_exit)) { // set null program only if previous bucle ends cprog = null; ns_programa = ""; } } #region Create zip Ionic.Zip.ZipFile exp_file = null; if (File.Exists(fichero_de_salida)) { exp_file = Ionic.Zip.ZipFile.Read(fichero_de_salida); } else { exp_file = new Ionic.Zip.ZipFile(fichero_de_salida); } #region add programs & ns conversions to zip file String entry_path = ""; String base_file_path = ""; JArray jConversion = new JArray(); if (exp_file.ContainsEntry(dEXPORTCODE.STR_IMPORT_CONVS)) { Ionic.Zip.ZipEntry ze = exp_file.Entries.Where(entry => entry.FileName == dEXPORTCODE.STR_IMPORT_CONVS).FirstOrDefault(); MemoryStream ms = new MemoryStream(); ze.Extract(ms); byte[] entry_data = ms.ToArray(); String file_content = System.Text.Encoding.Default.GetString(entry_data); ms.Close(); jConversion = JArray.Parse(file_content); } foreach (String sprog in exp_programs.Keys) { base_file_path = escape_sc(sprog); // Conversions String new_ns = dPROGRAM.FOLDER + "\\Imports\\" + base_file_path; JObject jconv = new JObject(new JProperty(sprog, new_ns)); jConversion.Add(jconv); // Add program entry_path = dPROGRAM.FOLDER + "\\Imports\\" + base_file_path + ".json"; if (!exp_file.ContainsEntry(entry_path)) { exp_file.AddEntry(entry_path, System.Text.UTF8Encoding.UTF8.GetBytes(exp_programs[sprog].ToString())); } } if (exp_file.ContainsEntry(dEXPORTCODE.STR_IMPORT_CONVS)) { exp_file.UpdateEntry(dEXPORTCODE.STR_IMPORT_CONVS, jConversion.ToString()); } else { exp_file.AddEntry(dEXPORTCODE.STR_IMPORT_CONVS, jConversion.ToString()); } #endregion #region Create processes file JSonFile jfTemplate = new JSonFile(Globals.AppDataSection(dPATH.PROCESSES), dGLOBALS.PROCESS_TEMPLATE.Replace(".json", "")); foreach (JToken jproc in exp_processes.Values) { ((JArray)jfTemplate.get(dPROCESS.PROCESSES)).Add(jproc); } #endregion #region add processes file base_file_path = escape_sc(CVentanaProgramas.Namespace_programa_activo.ToString()); entry_path = dPROCESS.FOLDER + "\\Imports\\" + base_file_path + ".json"; if (!exp_file.ContainsEntry(entry_path)) { exp_file.AddEntry(entry_path, System.Text.UTF8Encoding.UTF8.GetBytes(jfTemplate.jActiveObj.ToString())); } #endregion exp_file.Save(); #endregion MessageBox.Show(String.Format("Program exported {0}", CVentanaProgramas.Namespace_programa_activo.ToString())); } //END CODE PRCGUID: 17250dd1-6cd2-4b1b-a7cd-58ec52297bb8 }