private void WebView_NavigationStarting(object sender, WebViewControlNavigationStartingEventArgs e) { Debug.WriteLine(callerName()); if (IsMain) { if (Keyboard.IsKeyDown(Key.LeftCtrl)) { RequestLoadInSubview.OnNext(e.Uri.ToString()); e.Cancel = true; return; } } if (!Keyboard.IsKeyDown(Key.LeftCtrl)) { var driver = DxxDriverManager.Instance.FindDriver(e.Uri.ToString()); if (driver != null) { var du = new DxxUrl(e.Uri, driver, driver.GetNameFromUri(e.Uri, "link"), ""); if (du.IsContainer || du.IsTarget) { if (IsMain) { MainViewBeginAutoDownload.OnNext(du); } DxxDriverManager.Instance.Download(e.Uri.ToString(), null, ""); e.Cancel = true; return; } } } LMonitor.Renew(); UpdateHistory(); }
private void WebView_NewWindowRequested(object sender, WebViewControlNewWindowRequestedEventArgs e) { Debug.WriteLine(callerName()); if (IsMain) { // Main View の場合は、サブビューに表示 RequestLoadInSubview.OnNext(e.Uri.ToString()); } else { // サブビューの場合は、自分自身に表示 Navigate(e.Uri.ToString()); } e.Handled = true; }
//private DxxUrl CreateDxxUrl() { // var driver = Driver.Value; // var uri = new Uri(Url.Value); // return new DxxUrl(uri, driver, driver.GetNameFromUri(uri, "link"), IsMain ? "from main" : "from sub"); //} private void InitializeCommands() { GoBackCommand.Subscribe(() => { GoBack(); }); GoForwardCommand.Subscribe(() => { GoForward(); }); ReloadCommand.Subscribe(() => { Reload(); }); StopCommand.Subscribe(() => { Stop(); }); BookmarkCommand.Subscribe((v) => { if (string.IsNullOrEmpty(v) || !v.StartsWith("http")) { IsBookmarked.Value = false; return; } if (IsBookmarked.Value) { Bookmarks.Value.AddBookmark("", v); } else { Bookmarks.Value.RemoveBookmark(v); Url.Value = v; } }); NavigateCommand.Subscribe((v) => { Navigate(v); }); ClearURLCommand.Subscribe((v) => { Url.Value = ""; }); AnalyzeCommand.Subscribe((v) => { if (v == null) { v = Url.Value; } var aw = new DxxAnalysisWindow(v); //aw.Owner = Owner; aw.Show(); }); CopyCommand.Subscribe((v) => { Clipboard.SetData(DataFormats.Text, v); }); DownloadCommand.Subscribe(() => { if (IsTarget.Value || IsContainer.Value) { DxxDriverManager.Instance.Download(Url.Value, null, ""); } }); ListingCommand.Subscribe(async() => { if (IsContainerList.Value) { var uri = new Uri(Url.Value); var dxxUrl = new DxxUrl(uri, Driver.Value, Driver.Value.GetNameFromUri(uri), ""); var targets = await Driver.Value.LinkExtractor.ExtractTargets(dxxUrl); if (targets != null && targets.Count > 0) { TargetList.Value = new ObservableCollection <DxxTargetInfo>(targets); } else { TargetList.Value?.Clear(); } } }); SetupDriverCommand.Subscribe(() => { DxxDriverManager.Instance.Setup(Driver.Value, Owner); }); FrameSelectCommand.Subscribe((v) => { if (IsMain) { RequestLoadInSubview.OnNext(v); } else { Navigate(v); } }); }