! Copyright (C) TOYODA Eizi, 2000.  All rights reserved.
! クイックビューア

! データを溜め込むための枠と図をひとつづつ用意する。
! コマンドライン引数をひとつひとつ変数として開いて、
!    図形変数ならばそのまま (it) を枠に投入し、
!    データ変数ならば標準作図を行ったもの (it) を図に投入し、
!    変数ではなくオプション指定形ならば it、標準図、標準枠の順に
!    オプションとして与えることを試みる。
! コマンドライン引数がなければデータ変数 "" を開いて図に投入する
! 図に何か投入されていれば枠に投入する
! 枠を表示する

program gtview
    use gtool
    use dcl, only: DclSetParm
    implicit none
    type(VSTRING):: argument, optname, optvalue
    type(VSTRING):: figure_title
    type(GT_OBJECT):: it
    type(GT_FIGURE):: fig
    type(GT_FRAME):: frame
    type(GT_DEVICE):: dev
    integer:: i
    logical:: arg_given = .FALSE.
    logical:: save_mode = .FALSE.
    logical:: disp_mode = .TRUE.
    logical:: err
continue
    figure_title = ""
    call Open(frame)
    call Open(fig)
    call Open(it)
    do, i = 1, GtArgCount()
        call GtArgGet(i, argument)
        if (GtOptionForm(argument, optname, optvalue)) then
            if (optname == 'wsn') then
                gtdev_wsn_default = stoi(optvalue)
            else if (optname == '-save') then
                save_mode = .TRUE.
            else if (optname == '-batch') then
                disp_mode = .FALSE.
                save_mode = .TRUE.
            else if (optname == '-nowait') then
                call SWLSTX('LWAIT', .FALSE.)
                call SWLSTX('LALT', .TRUE.)
            else if (optname == "title") then
                figure_title = optvalue
            else
                call Option(it, vchar(optname, len(optname)), &
                    & vchar(optvalue, len(optvalue)), err=err)
                if (err) call put_line("option " // argument // " ignored")
            endif
        else
            if (arg_given) then
!                if (type(it) == "") then
                    call Bind(fig, it)
!                else
!                    call Bind(frame, it)
!                endif
            endif
            arg_given = .TRUE.
            call Load(it, argument)
        endif
    enddo
    if (.not. arg_given) then
        argument = ""
        call Load(it, argument)
    endif
    call Bind(fig, it)
    if (figure_title /= "") fig%title = figure_title
    ! いよいよ figure の利用
    if (disp_mode) then
        call Open(dev)
        call Display(dev, fig)
    endif
    if (save_mode) call Save(fig)
    call Close(fig)
    if (disp_mode) call Close(dev)
end program

