#!/usr/bin/perl

BEGIN {
my $tkProg_Root   = $ENV{'tkProg_Root'};
my $tklib_Root    = $ENV{'tklib_Root'};
my $tklib_path    = "$tklib_Root/Perl/lib";
my $tkprog_X_path = $ENV{'tkprog_X_path'};

print("\n");
print("TkPlot2.pl dirs\n");
print("tkProg_Root: $tkProg_Root\n");
print("tklib_path: $tklib_path\n");
print("tkprog_X_path: $tkprog_X_path\n");
}

use lib $tklib_path;
use lib "$tkprog_X_path/TkPlot2";
use lib "$tkprog_X_path/TkPlot2/lib";
use lib "$tkprog_X_path/TkPlot2/dlib";

use strict;
#use warnings;
use utf8;

use ProgVars;
use TkPlotApp2;

#use encoding 'utf8';
#binmode(STDERR,'encoding(ja_JP.SJIS)');

#===============================================
# Applicationクラス作製
#===============================================
my $App = new TkPlotApp2;
exit if($App->Initialize() < 0);

#==========================================
# コマンドラインオプション読み込み
#==========================================
$App->AddArgument("--IniFile",           "--IniFile: Specify IniFile path",                        '');
$App->AddArgument("--style",             "--style: Set style for specific data",                   '');
$App->AddArgument("--NoAutoLoadModules", "--NoAutoLoadModules=[0|1]: Suppress autoload modulesa",   0);
$App->AddArgument("--LoadModule",        "--LoadModule=ModulePath: Load module ModulePath specified by relative path", '');
$App->AddArgument("--WorkDir",           "--WorkDir=Dir: Read 'Dir' directory (ignore --ReadPrev", '');
$App->AddArgument("--ReadPrev",          "--ReadPrev   : Read previous Working Direcotry",          1);
$App->AddArgument("--FilePathPane",      "--FilePathPane=[TkPlot|Conventional]",             'TkPlot');
$App->AddArgument("--vertical",          "--vertial    : Align panes vertically",                   0);
$App->AddArgument("--help",              "--help       : Show this help",                          '');
#ここでは、引数エラーがあっても無視する。
#引数エラーはあとでチェック
$App->ReadArgs(0);
#exit 1 if($App->ReadArgs(0) != 1);
my $Args = $App->Args();

#===============================================
# 環境に合わせて変える必要がある
#===============================================
my $BaseDir =($App->OS() eq 'linux')? "$ENV{HOME}/bin" : "D:\\Programs\\Perl\\TkPlot2";

# 実行プログラム名（デフォルトでは$0から取得）
my $ProgramPath = $App->SpeculateProgramPath($0, $BaseDir);
print "Program Path: $ProgramPath\n";
my $Program = $App->Program();

my $Style = $Args->GetGetArg('style');
my $AppName  = ($Style =~ /(Plot|View)/i)? $Style : "${Style}Plot";
$App->SetAppName($AppName);
#$App->SetAppName($Program);
$App->SetVersion("Ver 0.1");
$App->SetTitle("${Style}Plot 2010/pl");

#最後の引数を1にすると、IniFileが存在しないと強制終了する
my $IniFilePath = ($Args->GetGetArg('IniFile'))? Deps::ReplaceFileName($ProgramPath, $Args->GetGetArg('IniFile')) : $ProgramPath;
print "Ini: $IniFilePath\n";
my $IniFile     = $App->OpenIniFile($IniFilePath, 1);
$IniFilePath = $App->IniFile()->IniFile();
print "IniFile Path: $IniFilePath\n";
my $RootDir     = $IniFile->MyDir();
print "Root Dir: $RootDir\n";

if($App->OS() eq 'MSWin32' and !$App->Debug()) {
#$App->FreeWin32Console();
}

#==========================================
# Iniファイル読み込み
#==========================================
$App->ConfigureIniFileVariables();

#==========================================
# メイン
#==========================================
my $ModulePath = Utils::MakePath($RootDir, ['dlib', "$Style.pm"], '/', 0);
$ModulePath =~ s/\\/\//g;
require $ModulePath;
no strict;
my $mw = new $Style($App);
use strict;
$mw->ConfigureIniFileVariables();
$App->CreateWindow($mw);
$mw->MainLoop();

exit;

#===============================================
# スクリプト終了
#===============================================
