module caixas

! objetivo: gerenciar a entrada de dados e apresentacao dos
!           dos resultados através de caixas de diálogo

! data de criação:  28 Fev 02

! última alteração: 28 Fev 02

! autor: Carlos Henrique Marchi

! -----------------------------------------------

! inclusão de módulos próprios

use aleta
use data_hora

! -----------------------------------------------

! inclusão de módulos do Fortran90

use msflib  ! para o comando setexitqq

use msfwin  ! para o comando setwindowtext

use dialogm ! para usar caixas de diálogo

include 'resource.fd'

! -----------------------------------------------

! definição das variáveis

!implicit none

integer :: cc !  tipo de condição de contorno (adimensional)
integer :: n  !  número de pontos a calcular a temperatura

real*8  :: Tb !  temperatura da base da aleta (C)
real*8  :: Ti !  temperatura do fluido (C)
real*8  :: h  !  coeficiente de convecção (W/m2.C)
real*8  :: L  !  comprimento da aleta (m)
real*8  :: D  !  diâmetro da aleta (m)
real*8  :: k  !  condutividade térmica da aleta (W/m.C)
real*8  :: Tp !  temperatura na ponta da aleta para cc=3

logical dos

logical cc_1, cc_2, cc_3, cc_4

integer check1_int ! =1, mostra gráfico
integer check2_int ! =1, mostra listagem

logical dlg_log
integer dlg_int

character*256 text

!-------------------------------------------------

CONTAINS


!-------------------------------------------------

  subroutine caixa_principal

    type (dialog) menu

    dlg_log = dlginit (idd_dialog1,menu) ! inicializa o diálogo

    ! entrada de dados
    dlg_log = dlgsetsub(menu,IDC_BUTTON1_dados,caixa_dados)

    ! ajuda sobre o programa
    dlg_log = dlgsetsub(menu,IDC_BUTTON2_sobre,caixa_ajuda)

    ! executa cálculos
    dlg_log = dlgsetsub(menu,IDC_BUTTON3,execucao)

    dlg_int = dlgmodal(menu) ! mostra e ativa a caixa de diálogo  

    call dlguninit(menu) ! elimina a caixa de diálogo

  end subroutine caixa_principal
    


  subroutine caixa_dados

    type (dialog) dados

    logical check1_log, check2_log

    dlg_log = dlginit (idd_dialog3,dados)  ! inicializa o diálogo

    ! inicializa os check box
 
    if ( check1_int == 0 ) then
       check1_log = .false.
    else
       check1_log = .true.
    end if        

    if ( check2_int == 0 ) then
       check2_log = .false.
    else
       check2_log = .true.
    end if        

    ! seta os dados

    write(text,1) Tb
    dlg_log = dlgset(dados,IDC_EDIT1,trim(adjustl(text)))

    write(text,1) Ti
    dlg_log = dlgset(dados,IDC_EDIT2,trim(adjustl(text)))

    write(text,1) Tp
    dlg_log = dlgset(dados,IDC_EDIT3,trim(adjustl(text)))

    write(text,1) h
    dlg_log = dlgset(dados,IDC_EDIT4,trim(adjustl(text)))

    write(text,1) k
    dlg_log = dlgset(dados,IDC_EDIT5,trim(adjustl(text)))

    write(text,1) L
    dlg_log = dlgset(dados,IDC_EDIT6,trim(adjustl(text)))

    write(text,1) D
    dlg_log = dlgset(dados,IDC_EDIT7,trim(adjustl(text)))

    write(text,2) n
    dlg_log = dlgset(dados,IDC_EDIT8,trim(adjustl(text)))

    write(text,2) cc
    dlg_log = dlgset(dados,IDC_EDIT9,trim(adjustl(text)))

    1 format(1pe8.1)

    2 format(i3)

    ! seta os check box
    dlg_log = dlgset(dados,IDC_CHECK1,check1_log)
    dlg_log = dlgset(dados,IDC_CHECK2,check2_log)

    dlg_int = dlgmodal(dados)  ! mostra e ativa a caixa de diálogo

    dlg_log = dlgget(dados,IDC_EDIT1,text)
    read(text,*,iostat=dlg_int) Tb

    dlg_log = dlgget(dados,IDC_EDIT2,text)
    read(text,*,iostat=dlg_int) Ti

    dlg_log = dlgget(dados,IDC_EDIT3,text)
    read(text,*,iostat=dlg_int) Tp

    dlg_log = dlgget(dados,IDC_EDIT4,text)
    read(text,*,iostat=dlg_int) h 

    dlg_log = dlgget(dados,IDC_EDIT5,text)
    read(text,*,iostat=dlg_int) k 

    dlg_log = dlgget(dados,IDC_EDIT6,text)
    read(text,*,iostat=dlg_int) L 

    dlg_log = dlgget(dados,IDC_EDIT7,text)
    read(text,*,iostat=dlg_int) D 

    dlg_log = dlgget(dados,IDC_EDIT8,text)
    read(text,*,iostat=dlg_int) n 

    dlg_log = dlgget(dados,IDC_EDIT9,text)
    read(text,*,iostat=dlg_int) cc

    ! lê os radio button
    dlg_log=DLGGET(dados,IDC_RADIO1,cc_1)
    dlg_log=DLGGET(dados,IDC_RADIO2,cc_2)
    dlg_log=DLGGET(dados,IDC_RADIO3,cc_3)
    dlg_log=DLGGET(dados,IDC_RADIO4,cc_4)

    ! lê os check box
    dlg_log = dlgget(dados,IDC_CHECK1,check1_log)
    dlg_log = dlgget(dados,IDC_CHECK2,check2_log)

    if ( check1_log ) then
       check1_int = 1
    else
       check1_int = 0
    end if        

    if ( check2_log ) then
       check2_int = 1
    else
       check2_int = 0
    end if        

    call dlguninit(dados) ! elimina a caixa de diálogo

  end subroutine caixa_dados
    



  subroutine caixa_ajuda

    type (dialog) ajuda

    dlg_log = dlginit (idd_dialog2,ajuda)  ! inicializa o diálogo

    dlg_int = dlgmodal(ajuda) ! mostra e ativa a caixa de diálogo

    call dlguninit(ajuda) ! elimina a caixa de diálogo

  end subroutine caixa_ajuda



  subroutine ve_listagem

    logical dos
    
	dos = systemqq("notepad listagem.txt")

  end subroutine ve_listagem



  subroutine execucao

    if ( cc_1 ) cc = 1
    if ( cc_2 ) cc = 2
    if ( cc_3 ) cc = 3
    if ( cc_4 ) cc = 4

    call calculos ( cc, n, Tb, Ti, h, L, D, k, Tp )

    if ( check1_int == 1 ) then 
       call data_e_hora ( "campo_T.gnu" )
       dos = systemqq("Wgnuplot campo_T.gnu")
    end if

    if ( check2_int == 1 ) call ve_listagem

  end subroutine execucao



end module caixas
