private static SolidColorBrush ConvertToColor(string text)
        {
            SolidColorBrush fallback = new SolidColorBrush(Colors.Black);

            if (string.IsNullOrEmpty(text))
                return fallback;

            if (!text.StartsWith("#"))
                text = "#" + text;

            SolidColorBrush brush = null;

            var converter = new BrushConverter();
            if (converter.CanConvertFrom(typeof (string)))
            {
                try
                {
                    brush = (SolidColorBrush)converter.ConvertFrom(text);
                } 
                catch (Exception e)
                {
                    ILogger Logger = ParagonLogManager.GetLogger();
                    Logger.Error("error ConvertFrom when converting color:" + text + ", exception: " + e.ToString());

                    // fallback in case of exception
                    brush = fallback;
                }
            }

            if (brush == null)
                brush = fallback;

            return brush;
        }
示例#2
0
        public static int Main(string[] args)
        {
            InitLogging(args);
            var logger = ParagonLogManager.GetLogger();
            var procId = Process.GetCurrentProcess().Id;

            logger.Info("Render process {0} starting", procId);

            try
            {
                if (!ExitWhenParentProcessExits())
                {
                    logger.Warn("Unable to monitor parent process for exit");
                }

                CefRuntime.Load();
                CefRuntime.ExecuteProcess(new CefMainArgs(args), new CefRenderApplication(), IntPtr.Zero);
            }
            catch (Exception ex)
            {
                logger.Error("Fatal error in render process {0} : {1}, StackTrace = {2}", procId, ex.Message, ex.StackTrace);
                return(1);
            }

            logger.Info("Render process {0} stopping.", procId);
            return(0);
        }
 public WebApplication(
     IApplicationMetadata metadata,
     int startupTimeout,
     IApplicationPackage package,
     Dictionary <string, object> args,
     // ReSharper disable once ParameterTypeCanBeEnumerable.Local
     IParagonPlugin[] kernelPlugins,
     Func <ICefWebBrowser> newBrowser,
     Func <IApplicationWindowEx> newAppWindow,
     Func <IApplicationWindowManagerEx> newWindowManager)
 {
     Logger                  = ParagonLogManager.GetLogger();
     Metadata                = metadata;
     Package                 = package;
     Args                    = args;
     Plugins                 = new List <IParagonPlugin>(kernelPlugins);
     _createNewWindow        = newAppWindow;
     _createNewBrowser       = newBrowser;
     _createWindowManager    = newWindowManager;
     _eventPageLaunchTimeout = TimeSpan.FromSeconds(startupTimeout);
     _renderPlugins          = new RenderSidePluginData()
     {
         PackagePath = Package != null ? Package.PackageFilePath : string.Empty, Plugins = new List <ApplicationPlugin>()
     };
     SystemEvents.SessionEnding             += OnSessionEnding;
     ParagonRuntime.RenderProcessInitialize += OnRenderProcessInitialize;
 }
        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            var logger = ParagonLogManager.GetLogger();

            logger.Error(string.Format("An unhandled domain exception has occurred: {0}", e.ExceptionObject ?? string.Empty));

            var errMessage = "A fatal error has occurred.";

            if (_appManager != null && _appManager.AllApplicaions != null)
            {
                var apps = _appManager.AllApplicaions.Select(app => app.Name).ToArray();
                if (apps.Length > 0)
                {
                    errMessage += "\n\nThe following applications will be closed: \n    " + string.Join(", ", apps);
                }
            }

            errMessage += "\n\nPlease contact Technology Client Services if you require assistance.\n";
            MessageBox.Show(errMessage, "Unhandled Exception", MessageBoxButton.OK);
        }