Пример #1
0
 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();
 }
Пример #2
0
 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;
 }
Пример #3
0
        //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);
                }
            });
        }