/// <summary> /// Inicializa una nueva instancia de la clase <see cref="App"/>. /// </summary> public App() : base() { Tabalim = new TabalimApp(); Tabalim.DataLoaded = () => { App.Current.MainWindow.Visibility = Visibility.Visible; }; }
public static void CloneCurrentTablero(this TabalimApp app, Tablero tablero, Action <Object> tableroAddedTask = null) { List <Componente> components; List <Circuito> circuits; var copy = TabalimApp.CurrentTablero.Clone(out components, out circuits); SQLiteWrapper tr = new SQLiteWrapper(TabalimApp.AppDBPath) { TransactionTask = (SQLite_Connector conn, object input) => { Object[] data = input as Object[]; Tablero tab = (Tablero)data[0]; List <Componente> cmps = (List <Componente>)data[1]; List <Circuito> ctos = (List <Circuito>)data[2]; tab.NombreTablero = String.Format("Tablero {0:000}", TabalimApp.CurrentProject.Tableros.Count + 1); tab.Description = "Sin descripción"; Boolean flag = false; flag = tab.Create(conn, null); if (flag) { tab.Id = (int)conn.SelectValue <long>(TABLE_TABLERO.SelectLastId(tab.PrimaryKey)); //Se se insertan los circuitos ctos.ForEach(x => x.GetLastId <Circuito>(conn, tab)); //Se insertan los componentes cmps.ForEach(cmp => cmp.GetLastId <Componente>(conn, ctos.FirstOrDefault(cto => cto.ToString() == cmp.CircuitoName))); tab.LoadComponentesAndCircuits(conn); return(new Object[] { true, tab }); } else { return new Object[] { false, tab } }; }, TaskCompleted = (Object qResult) => { var result = (Object[])qResult; Boolean flag = (Boolean)result[0]; Tablero newTab = (Tablero)result[1]; if (flag && newTab != null) { app.Tableros.Add(newTab); TabalimApp.CurrentTablero = newTab; if (!TabalimApp.CurrentProject.Tableros.ContainsKey(newTab.Id)) { TabalimApp.CurrentProject.Tableros.Add(newTab.Id, newTab); } tableroAddedTask?.Invoke(tablero); } } }; tr.Run(new Object[] { copy, components, circuits }); }
/// <summary> /// Exporta el proyecto actual /// </summary> /// <param name="window">La ventana del proyecto actual.</param> /// <param name="updateTask">The update task.</param> public static async void ImportProject(this MetroWindow window, TabalimApp app, Action <Boolean> importEnded) { var controller = await window.ShowProgressAsync("Abriendo por favor espere...", "Abriendo proyecto de Alimentadores"); controller.SetCancelable(false); controller.SetIndeterminate(); app.ImportProjectTr(((async(object result) => { Object[] rData = result as Object[]; Boolean succed = (Boolean)rData[0]; String msg = (string)rData[1]; await window.ShowMessageAsync(succed ? "Tablero Cargado" : "Error", msg); await controller.CloseAsync(); if (succed && importEnded != null) { importEnded(succed); } }))); }
/// <summary> /// Crea un nuevo tablero y lo guarda en la aplicación /// </summary> /// <param name="app">La aplicación</param> /// <param name="tablero">El tablero a insertar</param> public static void CreateTableroTr(this TabalimApp app, Tablero tablero, Action <Object> tableroAddedTask = null) { tablero.CreateTableroTr( (Object qResult) => { var result = (Object[])qResult; Tablero tab = (Tablero)result[1]; if ((Boolean)result[0] && tab != null) { app.Tableros.Add(tab); TabalimApp.CurrentTablero = tab; if (!TabalimApp.CurrentProject.Tableros.ContainsKey(tab.Id)) { TabalimApp.CurrentProject.Tableros.Add(tab.Id, tab); } tableroAddedTask?.Invoke(tablero); } }); }
public static void CreateAlimentadorTr(this TabalimApp app, AlimInput input, Destination destination, Action <Object, int> alimoAddedTask = null) { input.CreateAlimentadorTr( (Object qResult) => { var result = (Object[])qResult; AlimInput alim = (AlimInput)result[1]; //Si se agregá el tablero alimentador if ((Boolean)result[0] && alim != null) { switch (alim.End.Id) { case 0: //Tablero solo insertar la conexión Tablero tab = destination.Cargas.FirstOrDefault(); if (tab != null) { CreateAlimentadorDestinationTr(alim.Id, tab.Id, 1, alimoAddedTask); } break; case 1: //Un solo motor case 3: //Varios motores CreateMotorAndDestinations(alim.Id, destination.Motors, alimoAddedTask); break; case 2: //Un solo motor y otras cargas case 4: //Varios motores y otras cargas CreateMotorAndCargasAndDestinations(alim.Id, destination.Cargas, destination.Motors, alimoAddedTask); break; default: //Capacitor Transformador o sub-alimentador CreateExtraDataAndDestinations(alim.Id, destination.ExtraData, alimoAddedTask); break; } } }); }
/// <summary> /// Define la transacción que realizá la importación del proyecto /// </summary> /// <param name="project">El proyecto a importar.</param> /// <param name="task_completed">La tarea a ejecutar una vez que se termine de guardar.</param> public static void ImportProjectTr(this TabalimApp app, Action <Object> task_completed) { ImportTablero(TabalimApp.CurrentProject, TabalimApp.AppDBPath, task_completed); }