#======================================================== # TkPlotWindow #======================================================== package TkPlotWindow; use MyTk::MyMainWindow; @ISA = qw(MyMainWindow); use strict; use Jcode; use Tk; use Tk::Balloon; use MyTk::Dialog; use MyTk::MyFrame; use MyTk::MyLabel; use MyTk::MyEntry; use MyTk::MyListbox; use MyTk::MyBrowseEntry; use MyTk::MyText; use MyTk::MyButton; use MyTk::MyMenubutton; use MyTk::MyCanvas; use MyTk::MyAdjuster; use MyTk::GraphFrameArray; use Sci::GeneralFileFormat; #============================================================ # 変数等取得関数 #============================================================ # TkData sub TkData { return shift->App()->TkData(); } sub SetTkData { my ($this,$d)=@_; return shift->App()->SetTkData($d); } # TkPlotModuleクラスから変更できるフレームウィジェット sub DataClassFrame { return shift->{'DataClassFrame'}; } sub Canvas { my ($this, $canvas) = @_; return $canvas if($canvas); return $this->{GraphCanvas}; } sub GetGraphFrameArray { my ($this) = @_; my $App = $this->App(); return $App->TkData()->GetGraphFrameArray() if($App->TkData()); return shift->{GraphFrameArray}; } sub GetGraphFrame { my ($this, $idx) = @_; $idx = 0 unless($idx); my $GraphFrameArray = $this->GetGraphFrameArray(); my $GraphFrame = $GraphFrameArray->GetGraphFrame($idx); return $GraphFrame; } sub SectionListBox { return shift->{'SectionListbox'}; } sub FileContentTextBox { return shift->{'FileContentText'}; } sub ShowMousePosition { return shift->App()->{'ShowMousePosition'}; } sub SetShowMousePosition { my ($this,$f)=@_; return $this->App()->{'ShowMousePosition'} = $f; } #============================================================ # コンストラクタ、デストラクタ #============================================================ sub new { my $class = shift; my $self = MyMainWindow->new(@_); my $this = bless $self, $class; $this->protocol('WM_DELETE_WINDOW' => sub { $this->Close(0); }); ## $this->bind(, ## sub { &Close(1) if(Ev{'K'} eq 'Escape'); print Ev{'K'} . "\n"; } ); return $this; } sub DESTROY { my $this = shift; # $this->SUPER::DESTROY(@_); } #============================================================ # 継承クラスで定義しなおす関数 #  以下、TkData()から呼び返される設定関数の頭にはInitがついている。 #  そうでない関数は、TkAppplicationあるいはTkWindowから呼び出される #============================================================ #TkApplicationからCreateMenuが呼び出される。 sub CreateMenu { return shift->App()->TkData()->CreateMenu(); } sub InitCreateMenu { return shift->App()->TkData()->InitCreateMenu(); } sub CreateWidgets { return shift->App()->TkData()->CreateWidgets(); } sub InitCreateWidgets { return shift->TkData()->InitCreateWidgets(); } sub InitCreateStatusBar { my ($this,$position)=@_; return $this->CreateStatusBar($position); } sub InitCreateToolBar { my ($this,$position) = @_; return $this->TkData()->InitCreateToolBar($position); } sub InitCreateSelectFilePane { return shift->TkData()->InitCreateSelectFilePane(); } sub InitCreateFileContentPane { return shift->TkData()->InitCreateFileContentPane(); } sub RefreshCanvas { my ($this,$f) = @_; return $this->TkData()->RefleshCanvas($f); } sub RefleshCanvas { my ($this,$f) = @_; return $this->RefreshCanvas($f); } sub InitCreateCanvasPane { return shift->TkData()->InitCreateCanvasPane(); } sub InitWindowPosition { my ($this,$geo)=@_; return $this->TkData()->InitWindowPosition($geo); } sub InitConfigureInitialBind { return shift->TkData()->InitConfigureInitialBind(); } sub InitWindow { return shift->TkData()->InitWindow(); } sub CreateSectionListBox() { return shift->TkData()->CreateSectionListBox(); } sub CreateFileContentTextBox() { return shift->TkData()->CreateFileContentTextBox(); } #=================================================== # bindされた関数 # 一般関数 #=================================================== sub Redraw { return shift->TkData()->Redraw(); } sub Draw { my ($this,$keyword)=@_; $this->TkData()->Draw($this->Canvas(), $keyword); } sub ReadFile { my ($this,$path)=@_; return $this->TkData()->ReadFile($path); } sub UpdateGraphFramePosition { return shift->TkData()->UpdateGraphFramePosition(); } sub GetFilePathFromFileListbox { return shift->TkData()->GetFilePathFromFileListbox(); } sub ChooseFile { my ($this, $widget, $DefPath) = @_; return $this->TkData()->ChooseFile($widget, $DefPath); } sub SelChangeFileListBox { my ($listbox, $this, $buttonstate) = @_; my $path = $this->GetFilePathFromFileListbox(); return undef unless($path); return $this->ReadFile($path); } sub SelChangeSectionListBox { my ($listbox, $this) = @_; my $lbox = $this->mw()->{SectionListbox}; return undef unless($lbox); my $sel = $lbox->get('active'); $this->Draw($this->Canvas(), $sel); } sub SavePSFile { my ($this, $canvas, $DefPath) = @_; return $this->TkData()->SavePSFile($canvas, $DefPath); } sub SaveCSVFile { my ($this, $DefPath) = @_; return $this->TkData()->SaveCSVFile($DefPath); } sub SelectFileContentFont { my ($this, $widget, $VarName) = @_; return $this->TkData()->SelectFileContentFont($widget, $VarName); } sub SelectCanvasFont { my ($this, $widget, $VarName) = @_; return $this->TkData()->SelectCanvasFont($widget, $VarName); } 1;