Exemple #1
0
        /// <summary>
        /// アプリケーション
        /// </summary>
        public App()
        {
            // コマンドライン引数の解析
            m_commandLine	= LogTailerCommandLine.Analize( Environment.CommandLine );
            if( m_commandLine == null || m_commandLine.IsValid() == false )
            {
                // ファイルオープンダイアログで設定ファイルを選択する
                var	openFileDialog = new OpenFileDialog()
                {
                    InitialDirectory	= Path.Combine( Environment.CurrentDirectory, @"Settings" ),
                    FileName			= Path.Combine( Environment.CurrentDirectory, @"Settings\Sample.xml" ),
                    DefaultExt			= "*.xml",
                    Title				= "設定ファイルの読み込み"
                };

                if( openFileDialog.ShowDialog() == true )
                {
                    var	args		= string.Format( "exe {0}", openFileDialog.FileName );
                    m_commandLine	= LogTailerCommandLine.Analize( args );
                }
                else
                {
                    // 設定ファイルを指定しなかった場合は終了
                    return;
                }
            }

            // 設定の読み込み
            var	root	= DataSettingLoader.ProjectLoad( m_commandLine.SettingFilePath );
            if( root == null )
            {
                var	message	= string.Format( "設定ファイルの読み込みに失敗しました。\nFilePath={0}", m_commandLine.SettingFilePath );
                MessageBox.Show( message, "LogTailer" );

                Environment.Exit( 0 );
                return;
            }

            // 各ウィンドウの作成
            foreach( var tailer in root.Tailers )
            {
                var	logTailerWindow	= _CreateLogTailerWindow( tailer, root.FontFamily, root.FontSize );
                logTailerWindow.Show();
            }
        }
        /// <summary>
        /// 解析
        /// </summary>
        /// <param name="commandLine"></param>
        /// <returns></returns>
        public static LogTailerCommandLine Analize( string commandLine )
        {
            var	args	= commandLine.Split( ' ' );

            // 現状ではコマンドライン引数は自分のパスと設定ファイルパスの2つしかない
            if( args.Length != 2 )
            {
                return	null;
            }

            // 絶対パスに変換
            var	path	= args[ 1 ].Replace( "\"", "" );
            var	u1		= new Uri( Environment.CurrentDirectory + @"\" );
            var	u2		= new Uri( u1, path );
            var	filePah	= u2.LocalPath;

            var	result	= new LogTailerCommandLine()
            {
                SettingFilePath	= filePah,
            };

            return	result;
        }