예제 #1
0
 public SeattleUVolunteerSource(
     IBrowserProvider browserProvider,
     IOptions <SeattleUVolunteerOptions> options)
 {
     _browserProvider = browserProvider;
     _options         = options.Value;
 }
예제 #2
0
 public PdfService(
     IBrowserProvider browserProvider,
     IOptions <PdfSettings> options,
     ILogger <PdfService> logger)
 {
     _browserProvider = browserProvider;
     _config          = options.Value;
     _logger          = logger;
 }
예제 #3
0
        public BrowserElement(BrowserSelector selector)
        {
            InitializeComponent();

            _browserProvider = selector.SelectedBrowser;

            DataContext = _browser = _browserProvider.CreateBrowser();
            _browser?.Navigate(selector.DefaultUrl.Value);

            Application.Current.Exit += OnApplicationExit;
        }
        public BrowserWrapper(string rpUri)
        {
            r_BrowserProviders = new List<IBrowserProvider>();
            var rBrowserPath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Browsers");
            foreach (var rBrowser in Directory.EnumerateFiles(rBrowserPath, "*.dll"))
            {
                FileSystem.Unblock(rBrowser);

                var rAssembly = Assembly.LoadFile(rBrowser);
                var rTypes = rAssembly.GetTypes().Where(r => r.GetInterface(typeof(IBrowserProvider).FullName) != null);
                foreach (var rType in rTypes)
                {
                    r_BrowserProviders.Add((IBrowserProvider)rAssembly.CreateInstance(rType.FullName));
                }
            }

            BridgeReady = new ManualResetEventSlim(false);

            InitializeComponent();

            r_Uri = rpUri;
            r_Zoom = 1.0;

            Bridge = new Bridge<IBrowserWrapper, IBrowserHost>(this, r_Uri + "Browser", "Browser");
            Bridge.Connect(r_Uri + "BrowserHost");
            BridgeReady.Set();

            r_BrowserProvider = r_BrowserProviders.First();
            Container.Content = Browser = r_BrowserProvider.GetBrowser();

            var rParameters = new HwndSourceParameters(string.Format("Dentan.Browser({0})", r_BrowserProvider.BrowserName)) { WindowStyle = 0 };
            r_HwndSource = new HwndSource(rParameters) { SizeToContent = SizeToContent.Manual };
            r_HwndSource.CompositionTarget.BackgroundColor = Color.FromRgb(0x59, 0x59, 0x59);

            NativeMethods.User32.SetWindowLongPtr(r_HwndSource.Handle, NativeConstants.GetWindowLong.GWL_STYLE,
                (IntPtr)(NativeEnums.WindowStyle.WS_CHILD | NativeEnums.WindowStyle.WS_CLIPCHILDREN));
            NativeMethods.User32.SetWindowPos(r_HwndSource.Handle, IntPtr.Zero, 0, 0, 0, 0,
                NativeEnums.SetWindowPosition.SWP_FRAMECHANGED | NativeEnums.SetWindowPosition.SWP_NOMOVE | NativeEnums.SetWindowPosition.SWP_NOSIZE | NativeEnums.SetWindowPosition.SWP_NOZORDER);

            r_HwndSource.RootVisual = this;

            Bridge.Proxy.Attach(r_HwndSource.Handle);

            Browser.FlashExtracted += UpdateSize;
        }
예제 #5
0
        void LoadBrowser(string rpLayoutEngine)
        {
            if (!r_BrowsersDirectory.Exists)
            {
                throw new DirectoryNotFoundException(r_BrowsersDirectory.FullName);
            }

            foreach (var rFile in r_BrowsersDirectory.EnumerateFiles("*.dll", SearchOption.AllDirectories))
            {
                FileSystem.Unblock(rFile.FullName);
            }

            var rInfos = r_BrowsersDirectory.EnumerateFiles("*.json").Select(r =>
            {
                using (var rReader = new JsonTextReader(File.OpenText(r.FullName)))
                    return(JObject.Load(rReader).ToObject <LayoutEngineInfo>());
            }).ToArray();
            var rInfo = rInfos.SingleOrDefault(r => r.Name == rpLayoutEngine);

            if (rInfo == null)
            {
                throw new Exception($"Assigned layout engine not found.{Environment.NewLine}Current layout engine: {rpLayoutEngine}{Environment.NewLine}Installed layout engine(s):{Environment.NewLine}{rInfos.Select(r => r.Name).Join(Environment.NewLine)}");
            }

            if (rInfo.Dependencies != null)
            {
                r_LayoutEngineDependencies = rInfo.Dependencies.ToHybridDictionary(r => r.AssemblyName, r => r.Path);
            }

            var rAssembly = Assembly.LoadFile(Path.Combine(r_BrowsersDirectory.FullName, rInfo.EntryFile));
            var rType     = rAssembly.GetTypes().Where(r => r.GetInterface(typeof(IBrowserProvider).FullName) != null).FirstOrDefault();

            if (rType == null)
            {
                throw new Exception($"IBrowserProvider not found in {rAssembly.FullName}.");
            }

            r_BrowserProvider = (IBrowserProvider)rAssembly.CreateInstance(rType.FullName);
        }
예제 #6
0
        public BrowserElement(BrowserSelector selector, LayoutSetting layoutSetting)
        {
            InitializeComponent();

            _browserProvider      = selector.SelectedBrowser;
            ActualContent.Content = DataContext = _browser = _browserProvider?.CreateBrowser();

            if (_browser is null)
            {
                Visibility = Visibility.Collapsed;
            }
            else
            {
                _browser.LockGame = true;
                _browser.Navigate(selector.Settings.DefaultUrl.Value);

                layoutSetting.LayoutScale.ValueChanged  += _ => UpdateScale();
                layoutSetting.BrowserScale.ValueChanged += _ => UpdateScale();
                Loaded += (s, e) => UpdateScale();

                this.layoutSetting = layoutSetting;
            }
            Application.Current.Exit += OnApplicationExit;
        }
예제 #7
0
 public MassWASource(IBrowserProvider browserProvider)
 {
     _browserProvider = browserProvider;
 }
        void LoadBrowser(string rpLayoutEngine)
        {
            if (!r_BrowsersDirectory.Exists)
                throw new DirectoryNotFoundException(r_BrowsersDirectory.FullName);

            foreach (var rFile in r_BrowsersDirectory.EnumerateFiles("*.dll", SearchOption.AllDirectories))
                FileSystem.Unblock(rFile.FullName);

            var rInfos = r_BrowsersDirectory.EnumerateFiles("*.json").Select(r =>
            {
                using (var rReader = new JsonTextReader(File.OpenText(r.FullName)))
                    return JObject.Load(rReader).ToObject<LayoutEngineInfo>();
            }).ToArray();
            var rInfo = rInfos.SingleOrDefault(r => r.Name == rpLayoutEngine);

            if (rInfo == null)
                throw new Exception($"Assigned layout engine not found.{Environment.NewLine}Current layout engine: {rpLayoutEngine}{Environment.NewLine}Installed layout engine(s):{Environment.NewLine}{rInfos.Select(r => r.Name).Join(Environment.NewLine)}");

            if (rInfo.Dependencies != null)
                r_LayoutEngineDependencies = rInfo.Dependencies.ToHybridDictionary(r => r.AssemblyName, r => r.Path);

            var rAssembly = Assembly.LoadFile(Path.Combine(r_BrowsersDirectory.FullName, rInfo.EntryFile));
            var rType = rAssembly.GetTypes().Where(r => r.GetInterface(typeof(IBrowserProvider).FullName) != null).FirstOrDefault();

            if (rType == null)
                throw new Exception($"IBrowserProvider not found in {rAssembly.FullName}.");

            r_BrowserProvider = (IBrowserProvider)rAssembly.CreateInstance(rType.FullName);
        }
        void LoadBrowser(string rpLayoutEngine)
        {
            if (!r_BrowsersDirectory.Exists)
                throw new Exception();

            foreach (var rFile in r_BrowsersDirectory.EnumerateFiles("*.dll", SearchOption.AllDirectories))
                FileSystem.Unblock(rFile.FullName);

            var rInfo = r_BrowsersDirectory.EnumerateFiles("*.json").Select(r =>
            {
                using (var rReader = new JsonTextReader(File.OpenText(r.FullName)))
                    return JObject.Load(rReader).ToObject<LayoutEngineInfo>();
            }).SingleOrDefault(r => r.Name == rpLayoutEngine);

            if (rInfo == null)
                throw new Exception();

            if (rInfo.Dependencies != null)
                r_LayoutEngineDependencies = rInfo.Dependencies.ToDictionary(r => r.AssemblyName, r => r.Path);

            var rAssembly = Assembly.LoadFile(Path.Combine(r_BrowsersDirectory.FullName, rInfo.EntryFile));
            var rType = rAssembly.GetTypes().Where(r => r.GetInterface(typeof(IBrowserProvider).FullName) != null).FirstOrDefault();

            if (rType == null)
                throw new Exception();

            r_BrowserProvider = (IBrowserProvider)rAssembly.CreateInstance(rType.FullName);
        }