/// <summary> /// Metodo principal del programa, es el que ejecuta todo. /// </summary> /// <param name="create">Indica si se debe intancias el factory, se pasa false si ya hay uno definido.</param> public static Int RunApp(bool create) { // cargamos los datos guardados antes de cualquier cosa RestorePreferences(); // debemos crear la app? esta propiedad siempre es true cuando el punto de inicio es este programa, si el punto de inicio es Windows.exe esto sera false. if (create) { var ec = CreateFactory(); //si el codigo es diferente de 0 lo devolvemos. if (ec != 0) { return(ec); } } try { //creamos la aplicacion; App = Factory.CreateApp(); } catch (Exception #if DEBUG e #endif ) { #if DEBUG Cons.TraceError(e.Message); #else // En Gtk puede ocurrir un error si no se encuentra gtk+ instalado en el sistema en cuyo caso terminamos la ejecución del programa con codigo de error. if (Factory is LinuxFactory) { Cons.Error = "No ha sido posible crear la aplicación debido a que GTK+ no se encuentra instalado en el sistema. Use -c para usar la app en modo consola."; } else // esto no deberia ocurrir jamas? { Cons.Error = "Ha ocurrido un error inesperado en la ejecución del programa"; } #endif return(0x1); } //creamos la ventana/dialogo de inicio de sesion; var login = Factory.CreateLoginWindow(null, OnUserLogin); App.AddWindow(login); login?.Show(); // cargamos permisos de administrador LoadAdmin(); //corremos la app var exitcode = (App?.StartApp()).GetValueOrDefault(1); //cuando todo termina guardamos los datos. SavePreferences(); return(exitcode); }
/// <summary> /// Callback que debe ser ejecutado luego de que el usuario se loguee /// </summary> public static void OnUserLogin() { IWindow win = null; if (DomiciliosApp.ClienteActual is Comprador) { win = Factory.CreateCompWindow(); } else if (DomiciliosApp.ClienteActual is Vendedor) { win = Factory.CreateVendWindow(); } else { // WTF? Environment.Exit(1); } App.AddWindow(win); win.Show(); }