public ImportInfoProxy(IRemoteUrl ui)
        {
            _ui = ui;

            _imgBytes = imageToBytes(Resources.DefaultThumbnail);
            if (!string.IsNullOrWhiteSpace(ui.LocalPath))
            {
                _proxy = new VideoDataInfoProxy();
                _proxy.TreeNodesReceived += proxy_TreeNodesReceived;
                _proxy.MessageReceived   += proxy_MessageReceived;
                _proxy.UpdateSource(new VideoDataSource()
                {
                    SrcType         = SourceType.Local,
                    LocalSourcePath = ui.LocalPath
                });
                try
                {
                    _proxy.GetVideoTreeNodesAsync();
                }
                catch (Exception ex)
                {
                    Logger.Default.Error("获取视频信息失败!", ex);
                    string msg = "获取视频信息失败!\n" + ex.Message;
                    DialogUtil.ShowError(msg);
                }
            }
            else
            {
                buildNodeRoot(ui.VideoInfos);
            }
        }
Beispiel #2
0
        /// <summary>
        /// ログインデータからログインを行います。
        /// 自動ログイン時などに使われます。
        /// </summary>
        private void ExecuteLogin(object sender, ExecutedRoutedEventArgs e)
        {
            if (this.model == null)
            {
                return;
            }

            try
            {
                // ログイン処理を行い、必要ならダイアログを表示します。
                var loginData = LoginInternal();
                if (loginData != null)
                {
                    if (IsShowMessageDialog)
                    {
                        DialogUtil.Show(
                            "ログインできました。ヽ( *^∇^*)ノ*:・'゚☆",
                            "OK",
                            MessageBoxButton.OK);
                    }

                    DialogResult = true;
                }
                else
                {
                    DialogUtil.ShowError(
                        "ログインできませんでした。( ´ω`)");
                }
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "ログインに失敗しました。( ´ω`)");
            }
        }
Beispiel #3
0
        private static void ExecuteRedoContinue(object sender, ExecutedRelayEventArgs e)
        {
            var element = e.Parameter as GLShogiElement;

            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            try
            {
                var autoPlay = new DefaultAutoPlay(
                    element.BoardModel, true, AutoPlayType.Redo)
                {
                    IsUseEffect = false,
                };

                //TODO element.StartAutoPlay(autoPlay);
            }
            catch (Exception ex)
            {
                Util.ThrowIfFatal(ex);
                DialogUtil.ShowError(
                    "局面を連続して進めることに失敗しました ( ̄ω ̄;)");
            }
        }
Beispiel #4
0
        /// <summary>
        /// 棋譜ファイルの書き込みを行います。
        /// </summary>
        public static void SaveKif(ShogiUIElement3D control, TextWriter writer)
        {
            try
            {
                if (control == null || writer == null)
                {
                    return;
                }

                //var manager = model.MoveManager;
                //var root = manager.CreateVariationNode(control.Board);

                var headers = new Dictionary <string, string>();
                headers["先手"] = control.BlackPlayerName;
                headers["後手"] = control.WhitePlayerName;

                //var kifu = new KifuObject(headers, null);
                //KifuWriter.Save(writer, kifu);
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "棋譜ファイルの出力に失敗しました( ̄ω ̄;)");
            }
        }
Beispiel #5
0
        /// <summary>
        /// 接続処理
        /// </summary>
        private void ConnectButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!this.nicoClient.IsLogin)
                {
                    MessageBox.Show(
                        "ログインしていません。",
                        "エラー",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                    return;
                }

                this.commentClient.Connect(
                    LiveUrl,
                    this.nicoClient.CookieContainer);
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "放送への接続に失敗しました。");
                return;
            }
        }
Beispiel #6
0
        /// <summary>
        /// 棋譜ファイルを保存します。
        /// </summary>
        private static void ExecuteSaveKifFile(ShogiUIElement3D control)
        {
            try
            {
                var dialog = new SaveFileDialog()
                {
                    AddExtension     = true,
                    CheckFileExists  = false,
                    OverwritePrompt  = true,
                    CreatePrompt     = false,
                    Title            = "棋譜ファイルの選択",
                    RestoreDirectory = false,
                    Filter           = "Kif Files(*.kif)|*.kif|All files (*.*)|*.*",
                    FilterIndex      = 0,
                };
                var result = dialog.ShowDialog();
                if (result == null || !result.Value)
                {
                    return;
                }

                using (var writer = new StreamWriter(dialog.FileName, false,
                                                     KifuObject.DefaultEncoding))
                {
                    SaveKif(control, writer);
                }
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "棋譜ファイルの保存に失敗しました( ̄ω ̄;)");
            }
        }
Beispiel #7
0
        /// <summary>
        /// 棋譜ファイルを読み込みます。
        /// </summary>
        private static void ExecuteLoadKifFile(ShogiUIElement3D control)
        {
            try
            {
                var dialog = new OpenFileDialog()
                {
                    DefaultExt       = ".kif",
                    Title            = "棋譜ファイルの選択",
                    Multiselect      = false,
                    RestoreDirectory = false,
                    Filter           = "Kif Files(*.kif,*.ki2)|*.kif;*.ki2|All files (*.*)|*.*",
                    FilterIndex      = 0,
                };
                var result = dialog.ShowDialog();
                if (result == null || !result.Value)
                {
                    return;
                }

                using (var reader = new StreamReader(dialog.FileName,
                                                     KifuObject.DefaultEncoding))
                {
                    LoadKif(control, reader);
                }
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "棋譜ファイルの読み込みに失敗しました。( ̄ω ̄;)");
            }
        }
Beispiel #8
0
        /// <summary>
        /// 放送に接続します。
        /// </summary>
        private void ConnectButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!this.nicoClient.IsLogin)
                {
                    MessageBox.Show(
                        "ログインしていません。",
                        "エラー",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                    return;
                }

                /*Live.LiveInfo.Create(
                 *  "lv203771397",
                 *  this.nicoClient.CookieContainer);*/

                this.commentClient.Connect(
                    LiveUrl,
                    this.nicoClient.CookieContainer);
                this.commentClient.StartReceiveMessage(1000);
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "放送への接続に失敗しました。");
                return;
            }

            DialogUtil.Show(
                "接続に成功しました。",
                "OK",
                MessageBoxButton.OK);
        }
 public void Download(string path, bool showTip)
 {
     if (!string.IsNullOrWhiteSpace(path) && !Downloading)
     {
         string subPath  = $"Time_{DataInfoModel.Begin:yyyyMMddHHmm}_{DataInfoModel.End:yyyyMMddHHmm}";
         string downPath = Path.Combine(path, subPath);
         DownloadToPath(downPath);
     }
     else
     {
         DialogUtil.ShowError("无效的下载路径。");
     }
 }
 private void sendData(int code, byte[] data)
 {
     try
     {
         Client.Send(code, data);
     }
     catch (Exception ex)
     {
         Logger.Default.Error("发送数据失败!", ex);
         string msg = "发送数据失败!\n" + ex.Message;
         DialogUtil.ShowError(msg);
     }
 }
Beispiel #11
0
        /// <summary>
        /// OK
        /// </summary>
        private void ExecuteOK(object sender, ExecutedRoutedEventArgs e)
        {
            try
            {
                //this.control.Connect();

                DialogResult = false;
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "評価値サーバーへの接続に失敗しました。");
            }
        }
 public VideoStreamProxy()
 {
     Client.ReceiveCompleted += onReceived;
     try
     {
         EnsureStart();
     }
     catch (Exception ex)
     {
         Logger.Default.Error("尝试连接下载服务失败!", ex);
         string msg = "尝试连接下载服务失败!\n" + ex.Message;
         DialogUtil.ShowError(msg);
     }
 }
Beispiel #13
0
        /// <summary>
        /// 盤面を反転します。
        /// </summary>
        private static void ExecuteSetReverseBoard(ShogiUIElement3D control, ExecutedRoutedEventArgs e)
        {
            try
            {
                var isWhite = (bool)e.Parameter;
                var side    = (isWhite ? BWType.White : BWType.Black);

                control.ViewSide = side;
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "盤面の反転に失敗しました( ̄ω ̄;)");
            }
        }
Beispiel #14
0
        /// <summary>
        /// 並列化サーバーへ接続します。
        /// </summary>
        public static void ExecuteConnect()
        {
            var bonanza = Global.Bonanza;

            if (bonanza == null)
            {
                return;
            }

            var model = Global.MainViewModel;

            if (model == null)
            {
                return;
            }

            if (!NameRegex.IsMatch(model.Name))
            {
                DialogUtil.ShowError(
                    "名前には英数字とアンダーバーしか使えません (-o-;)");
                return;
            }

            if (model.Name == "unknown")
            {
                DialogUtil.ShowError(
                    "名前を'unknown'にすることはできません (-o-;)");
                return;
            }

            try
            {
                // 並列化サーバーへの接続コマンドを発行します。
                bonanza.Connect(
                    Global.ServerAddress,
                    Global.ServerPort,
                    model.Name,
                    model.ThreadNum,
                    model.HashMemSize,
                    -1,
                    true); //!Global.IsPublished);
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "並列化サーバーへの接続に失敗しました。");
            }
        }
Beispiel #15
0
        private static void ExecuteGotoLastState(GLShogiElement element)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            try
            {
                element.Board.RedoAll();
            }
            catch (Exception ex)
            {
                Util.ThrowIfFatal(ex);
                DialogUtil.ShowError(
                    "局面を最終局面にできませんでした ( ̄ω ̄;)");
            }
        }
Beispiel #16
0
        private static void ExecuteUndo(GLShogiElement element)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            try
            {
                element.Board.Undo();
            }
            catch (Exception ex)
            {
                Util.ThrowIfFatal(ex);
                DialogUtil.ShowError(ex,
                                     "指し手をⅰ手戻すことができませんでした ( ̄ω ̄;)");
            }
        }
 public void UpdateSource(VideoDataSource src)
 {
     _diProxy.UpdateSource(src);
     if (src.SrcType == SourceType.Local)
     {
         try
         {
             _diProxy.GetVideoTreeNodesAsync();
         }
         catch (Exception ex)
         {
             Logger.Default.Error("刷新本地数据源视频录像信息失败!", ex);
             string msg = "刷新本地数据源视频录像信息失败!\n" + ex.Message;
             DialogUtil.ShowError(msg);
             return;
         }
     }
     RefreshVideoDataSummary();
 }
 private void btnOk_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         IRemoteUrl ui = RemoteUrl.Parse(txtUrl.Text.Trim()) as IRemoteUrl;
         if (ui == null)
         {
             DialogUtil.ShowWarning("不支持导入数据源格式。");
             return;
         }
         ImportUrl         = ui;
         this.DialogResult = true;
         this.Close();
     }
     catch (Exception ex)
     {
         Common.Log.Logger.Default.Error(ex);
         DialogUtil.ShowError(ex.Message);
     }
 }
Beispiel #19
0
        private static void ExecuteGotoLastState(object sender, ExecutedRelayEventArgs e)
        {
            var element = e.Parameter as GLShogiElement;

            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            try
            {
                element.Board.RedoAll();
            }
            catch (Exception ex)
            {
                Util.ThrowIfFatal(ex);
                DialogUtil.ShowError(
                    "局面を最終局面にできませんでした ( ̄ω ̄;)");
            }
        }
Beispiel #20
0
        private static void ExecuteUndo(object sender, ExecutedRelayEventArgs e)
        {
            var element = e.Parameter as GLShogiElement;

            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            try
            {
                element.BoardModel.Undo();
            }
            catch (Exception ex)
            {
                Util.ThrowIfFatal(ex);
                DialogUtil.ShowError(ex,
                                     "指し手をⅰ手戻すことができませんでした ( ̄ω ̄;)");
            }
        }
Beispiel #21
0
        /// <summary>
        /// 生放送に接続します。
        /// </summary>
        private static void ExecuteConnect(object sender, ExecutedRoutedEventArgs e)
        {
            try
            {
                var data = (NicoLiveCommandData)e.Parameter;

                data.CommentClient.Connect(
                    data.LiveUrl,
                    data.NicoClient.CookieContainer);

                data.CommentClient.StartReceiveMessage(-1);
            }
            catch (Exception ex)
            {
                Util.ThrowIfFatal(ex);

                DialogUtil.ShowError(ex,
                                     "生放送への接続に失敗しました。");
            }
        }
Beispiel #22
0
        /// <summary>
        /// 棋譜ファイルの読み込みを行います。
        /// </summary>
        public static void LoadKif(ShogiUIElement3D control, TextReader reader)
        {
            try
            {
                if (reader == null)
                {
                    return;
                }

                // ファイルを読み込み局面を作成します。
                var file  = KifuReader.Load(reader);
                var board = file.CreateBoard();

                control.Board = board;
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "棋譜ファイルの読み込みに失敗しました( ̄ω ̄;)");
            }
        }
Beispiel #23
0
        /// <summary>
        /// 更新情報の確認やダイアログの表示などを行います。
        /// </summary>
        public void CheckToUpdate(TimeSpan timeout)
        {
            if (this.updateWindow != null || this.progressWindow != null)
            {
                // すでに確認用のウィンドウが起動しています。
                return;
            }

            if (!this.updater.LatestVersionEvent.WaitOne(timeout))
            {
                DialogUtil.ShowError(
                    string.Format(
                        "更新情報の確認ができません(T¬T){0}{0}" +
                        "少し時間をおいてから、もう一度試してみて下さい。",
                        Environment.NewLine));
                return;
            }

            var latestVersion = this.updater.LatestVersion;

            if (latestVersion == null)
            {
                DialogUtil.Show("更新はありません d(-_☆)", "確認", MessageBoxButton.OK);
                return;
            }

            // ファイルのダウンロード中なら
            if (!this.updater.DownloadDoneEvent.WaitOne(0))
            {
                ShowProgress();
            }
            else
            {
                if (ConfirmUpdate(true))
                {
                    ExecuteUpdate();
                }
            }
        }
 public void UpdateSource(IUrl ui)
 {
     GlobalDataSource = null;
     SourceIndex++;
     DestoryProxy();
     if (ui is ILocalUrl)
     {
         InfoManager = new LocalInfoProxy(ui.LocalPath);
     }
     else if (ui is IRemoteUrl)
     {
         InfoManager = new ImportInfoProxy(ui as IRemoteUrl);
     }
     else
     {
         Common.Log.Logger.Default.Trace("未找到正确的URL配置");
         DialogUtil.ShowError("未找到正确的URL配置");
         return;
     }
     InfoManager.LocalSourceInfoReceived += InfoManager_NodeUpdated;
     onDataSourceChanged();
 }
Beispiel #25
0
        /// <summary>
        /// 詰将棋サーバーへ接続します。
        /// </summary>
        public static void ExecuteConnect()
        {
            var bonanza = Global.Bonanza;

            if (bonanza == null)
            {
                return;
            }

            var model = Global.MainViewModel;

            if (model == null)
            {
                return;
            }

            if (!NameRegex.IsMatch(model.Name))
            {
                DialogUtil.ShowError(
                    "名前には英数字とアンダーバーしか使えません (-o-;)");
                return;
            }

            try
            {
                // 並列化サーバーへの接続コマンドを発行します。
                bonanza.ConnectToDfpn(
                    "garnet-alice.net",
                    4085,
                    model.Name,
                    model.ThreadNum,
                    model.HashMemSize);
            }
            catch (Exception ex)
            {
                DialogUtil.ShowError(ex,
                                     "詰将棋サーバーへの接続に失敗しました。");
            }
        }
Beispiel #26
0
 public LocalInfoProxy(string localPath)
 {
     _src = new VideoDataSource()
     {
         SrcType         = SourceType.Local,
         LocalSourcePath = localPath
     };
     _imgBytes = imageToBytes(Resources.DefaultThumbnail);
     _proxy    = new VideoDataInfoProxy();
     _proxy.TreeNodesReceived += proxy_TreeNodesReceived;
     _proxy.MessageReceived   += proxy_MessageReceived;
     _proxy.UpdateSource(_src);
     try
     {
         _proxy.GetVideoTreeNodesAsync();
     }
     catch (Exception e)
     {
         Logger.Default.Error("加载本地视频信息失败!", e);
         string msg = "加载本地视频信息失败!\n" + e.Message;
         DialogUtil.ShowError(msg);
     }
 }
Beispiel #27
0
        /// <summary>
        /// 指し手を連続して戻します。
        /// </summary>
        public static void ExecuteUndoContinue(GLShogiElement element)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            try
            {
                var autoPlay = new DefaultAutoPlay(
                    element.BoardModel, true, AutoPlayType.Undo)
                {
                    IsUseEffect = false,
                };
                //TODO element.StartAutoPlay(autoPlay);
            }
            catch (Exception ex)
            {
                Util.ThrowIfFatal(ex);
                DialogUtil.ShowError(
                    "指し手を連続して戻すことに失敗しました ( ̄ω ̄;)");
            }
        }
Beispiel #28
0
        void updater_DownloadDone(object sender, DownloadDoneEventArgs e)
        {
            DownloadError = e.Error;

            if (e.IsCancelled)
            {
                return;
            }

            if (e.Error != null)
            {
                WPFUtil.UIProcess(() =>
                                  DialogUtil.ShowError("更新ファイルのダウンロードに失敗しました。"));
                return;
            }

            WPFUtil.UIProcess(() =>
            {
                if (!this.updater.CanExecutePack())
                {
                    // 更新できません><
                    return;
                }

                if (this.progressWindow != null)
                {
                    this.progressWindow.Close();
                    this.progressWindow = null;
                }

                if (ConfirmUpdate(true))
                {
                    ExecuteUpdate();
                }
            });
            e.IsUpdate = false;
        }
 private void RefreshVideoDataSummary()
 {
     if (SearchTimePeriod == null || !_diProxy.SourceValid)
     {
         return;
     }
     try
     {
         foreach (SearchNodeHistoryViewModel vm in ResultsSource.Source as List <SearchNodeHistoryViewModel> )
         {
             if (vm.IsUnfoldVideo)
             {
                 List <VideoInfo> viList = new List <VideoInfo>();
                 var nodes = vm.VideoChildren.Source as List <VideoThumbnailsViewModel>;
                 foreach (CctvNode cn in vm.Node.Children)
                 {
                     if (cn.Type == CctvNode.NodeType.Video)
                     {
                         var pNode = nodes.Find(n => n.ID == cn.ID);
                         if (pNode != null)
                         {
                             viList.Add(new VideoInfo(cn.ID, pNode.StreamId));
                             pNode.VideoDataInfo.UpdateTimePacket(SearchTimePeriod.BeginTime, SearchTimePeriod.EndTime);
                         }
                     }
                 }
                 _diProxy.GetVideoDataInfoAsync(viList.ToArray(), SearchTimePeriod.BeginTime, SearchTimePeriod.EndTime);
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Default.Error("刷新视频录像信息失败!", ex);
         string msg = "刷新视频录像信息失败!\n" + ex.Message;
         DialogUtil.ShowError(msg);
     }
 }
Beispiel #30
0
        /// <summary>
        /// 色選択を行います。
        /// </summary>
        private void SelectColor(object sender, ExecuteRelayEventArgs e)
        {
            try
            {
                var dialog = new ColorDialog
                {
                    SelectedColor = Color,
                };

                // 色選択ダイアログを出します。
                var result = dialog.ShowDialogCenterMouse();
                if (result == true)
                {
                    Color = dialog.SelectedColor;
                }
            }
            catch (Exception ex)
            {
                Util.ThrowIfFatal(ex);

                DialogUtil.ShowError(ex,
                                     "色の選択に失敗しました (ToT)");
            }
        }