예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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();
        }