Exemplo n.º 1
0
        /// <summary>
        /// ログテーラーウィンドウの作成
        /// </summary>
        /// <param name="tailer"></param>
        /// <returns></returns>
        LogTailerWindow _CreateLogTailerWindow( Tailer tailer, FontFamily fontFamily, double fontSize )
        {
            var	logTailerWindow	= new LogTailerWindow( tailer, fontFamily, fontSize )
            {
                FontFamily	= fontFamily,
                FontSize	= fontSize,
            };
            logTailerWindow.Closing += _LogTailerWindow_Closing;

            // ユーザー設定の適用
            {
                // ユーザー設定ファイル名の取得
                var	userSettingFilePath		= _GetUserSettingFilePath( tailer );

                // ユーザー設定の読み込み
                var	userSetting	= DataSettingLoader.LoadSetting<UserSetting>( userSettingFilePath );
                if( userSetting != null )
                {
                    // 適用
                    logTailerWindow.Left		= userSetting.ViewSetting.WindowLocation.X;
                    logTailerWindow.Top			= userSetting.ViewSetting.WindowLocation.Y;
                    logTailerWindow.Height		= userSetting.ViewSetting.WindowSize.Height;
                    logTailerWindow.Width		= userSetting.ViewSetting.WindowSize.Width;
                    logTailerWindow.WindowState	= userSetting.ViewSetting.WindowState;
                }
            }

            var	windowLayoutWatcher	= new WindowLayoutWatcher( logTailerWindow );

            // ログテーラーウィンドウとそのレイアウト監視をセットで記憶する
            m_logTailerWindowMap.Add( logTailerWindow, windowLayoutWatcher );

            return	logTailerWindow;
        }
Exemplo n.º 2
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="tailer"></param>
        public LogTailerWindow( Tailer tailer, FontFamily fontFamily, double fontSize )
        {
            InitializeComponent();

            Tailer	= tailer;

            // タイトルバー
            Title	= string.Format( "LogTailer - {0}",tailer.Name );

            // シャッターの設定
            {
                // タイトル
                m_title.Text	= tailer.Name;

                // バージョン番号
                var cetExecutingAssembly	= System.Reflection.Assembly.GetExecutingAssembly();
                var	varsion	= cetExecutingAssembly.GetName().Version;
                m_version.Text	= string.Format( "ver {0}.{1}", varsion.Major, varsion.Minor );
            }

            // コピーコマンド
            this.CommandBindings.Add( new CommandBinding( ApplicationCommands.Copy, _CopyExecuted, _CanCopyExecute ) );

            // LogListBox の設定
            {
            //				ScrollViewer.SetIsDeferredScrollingEnabled( m_listbox, true );		// スクロール中は描画を更新しない
            //				ScrollViewer.SetCanContentScroll( m_listbox, false );				// 仮想化OFF
            //				VirtualizingPanel.SetScrollUnit( m_logListBox, ScrollUnit.Pixel );	// ピクセル単位のスクロール or 行単位のスクロール
            }

            // Data と ListBox をバインド
            {
                var	binding	= new Binding()
                {
                    Mode		= BindingMode.OneWay,
                    Source		= m_viewSource,
                };
                m_viewSource.Source		= m_data;
                m_viewSource.Filter		+= m_viewSource_Filter;
                m_logListBox.SetBinding( ListBox.DataContextProperty, binding );
            }

            // ログファイルリーダー
            m_logReader	= new LogFileReader()
            {
                FilePath	= Tailer.FilePath,
                Encoding	= Tailer.Encoding,
            };

            // ログファイルの監視
            m_logWatcher	= new LogFileSystemWatcher()
            {
                FilePath		= Tailer.FilePath,
                UpdatePeriod	= Tailer.UpdatePeriod,
            };
            m_logWatcher.LogFileChanged += _logWatcher_LogFileChanged;
            //			m_logWatcher.Start();		// 表示状態の変更により開始される

            m_filterTextBox.FilterChanged += m_filterTextBox_FilterChanged;

            // ログテキストブロックのフォント設定を保存する
            {
                var	dummy			= new LineListBoxItem( null );
                m_logFontFamily		= fontFamily;
                m_logTypeface		= new Typeface( fontFamily, dummy.FontStyle, dummy.FontWeight, dummy.FontStretch );
                m_logFontSize		= fontSize;
                m_logForeground		= dummy.Foreground;
            }

            // ハイパーリンクの設定
            if( string.IsNullOrEmpty( tailer.LinkName ) ||
                string.IsNullOrEmpty( tailer.LinkUri ) )
            {
                m_linkTextBlock.Visibility	= Visibility.Hidden;
            }
            else
            {
                var	hyperlink	= new Hyperlink()
                {
                    NavigateUri	= new Uri( tailer.LinkUri ),
                };
                hyperlink.Inlines.Add( new Run( tailer.LinkName ) );
                hyperlink.Click += hyperlink_Click;

                m_linkTextBlock.Inlines.Clear();
                m_linkTextBlock.Inlines.Add( hyperlink );
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// ユーザー設定ファイル名の取得
 /// </summary>
 /// <param name="tailer"></param>
 /// <returns></returns>
 string _GetUserSettingFilePath( Tailer tailer )
 {
     var	LocalApplicationData	= Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData );
     var	fileName					= string.Format( "{0}.xml", tailer.Name );
     var	userSettingFilePath		= Path.Combine( LocalApplicationData, "LogTailer", "UserSettings", Path.GetFileNameWithoutExtension( m_commandLine.SettingFilePath ), fileName );
     return	userSettingFilePath;
 }