You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
959 lines
31 KiB
Fortran
959 lines
31 KiB
Fortran
!IPK LAST UPDATE JUN 15 2020 FIXUP TO READ OLD FORMAT GEO
|
|
!IPK LAST UPDATE SEP 23 2015 ADD MORE INFO ON FRAME
|
|
!
|
|
PROGRAM NEWRMAGEN
|
|
!
|
|
! Use of the module is compulsory
|
|
!
|
|
USE WINTERACTER
|
|
USE DFLIB
|
|
!
|
|
IMPLICIT NONE
|
|
!
|
|
! Define some parameters to match those in the resource file
|
|
!
|
|
include 'd.inc'
|
|
INCLUDE 'TXFRM.COM'
|
|
|
|
REAL HSIZE,scratio
|
|
COMMON /SSIZE/ HSIZE
|
|
|
|
!
|
|
INTEGER :: IBASEV =40042
|
|
INTEGER :: I,IRES,N2,M2,ID1,ID2
|
|
INTEGER :: ITYPE, IX, IY, IWIDTH, IHEIGHT, KEY,IYES
|
|
INTEGER :: MOUSEX, MOUSEY, MBUTTON, ITIME, IWINDOW
|
|
INTEGER :: IDFIELDOLD, IDFIELDNEW, IDBUTN, IDFIELD,TOOLID(4)
|
|
INTEGER :: LNNAM,K,LMPNAM,IMP,IIN,MENUS,IOT,IOT1,impf,IGFG,ITRIAN,INFO(3)
|
|
INTEGER , DIMENSION(5) :: WIDSTAT
|
|
INTEGER*2 :: N1,STATUS,lnnnam,iswtfl,n
|
|
CHARACTER(LEN=255) :: FNAME,FNAMD,FILTER
|
|
CHARACTER(LEN=3) :: SUB,SUB1
|
|
CHARACTER(LEN=4) :: SUB2
|
|
CHARACTER(LEN=1000) :: HEADR
|
|
INTEGER ,EXTERNAL :: LENSTR
|
|
LOGICAL :: OPENED,exists
|
|
LOGICAL(4) :: statud
|
|
REAL :: XX1,XX2,XX3,XX4,XX5,XX6
|
|
INTEGER :: iw,ih,ihandle,ient,IHAND1,IHAND2,IXPM,IYPX,IXPX,IYPM
|
|
common /hands/ iw,ih,ihandle,IHAND1,IHAND2,IXPM,IYPX,IXPX,IYPM
|
|
|
|
|
|
INTEGER ISCRWID,ISCRHGT
|
|
|
|
TYPE(WIN_STYLE) :: WINDOW
|
|
TYPE(WIN_MESSAGE) :: MESSAGE
|
|
TYPE (WIN_FONT) :: FONT
|
|
|
|
! Define a common block with background file names
|
|
|
|
INCLUDE 'BFILES.I90'
|
|
|
|
!
|
|
! Get initial directory and add help name
|
|
|
|
fname = FILE$CURDRIVE
|
|
IRES=GETDRIVEDIRQQ (fname)
|
|
! lnnnam=windowstringlength(fname)
|
|
lnnnam=lenstr(fname)
|
|
direct=fname(1:lnnnam)//'\doc\rmagen83d.htm'
|
|
|
|
! write(128,*) fname,lnnnam,direct
|
|
|
|
!
|
|
!
|
|
! Initialise WiSK
|
|
!
|
|
CALL WInitialise()
|
|
!
|
|
! Create a root window with :
|
|
! - System menu
|
|
! - Minimise button
|
|
! - Maximise button
|
|
!
|
|
! WINDOW%FLAGS = SysMenuOn + MinButton + MaxButton + StatusBar
|
|
|
|
ISCRWID = WInfoScreen(1) ! Get screen width
|
|
ISCRHGT = WInfoScreen(2) ! Get screen height
|
|
scratio=float(iscrwid)/float(iscrhgt)
|
|
HSIZE=scratio*8.
|
|
|
|
!
|
|
! Centre the window on the screen at 80% of screen size
|
|
!
|
|
WINDOW%X = -1
|
|
WINDOW%Y = -1
|
|
WINDOW%WIDTH = 0
|
|
WINDOW%HEIGHT = 0
|
|
!
|
|
! Identify the menu to be attached to the window
|
|
! and specify the initial window title
|
|
!
|
|
! WINDOW%MENUID = IDR_MENU1
|
|
! WINDOW%TITLE = 'RMAGEN'
|
|
!
|
|
! Now open the root window
|
|
!
|
|
CALL WindowOpen(FLAGS =SysMenuOn+MinButton+MaxButton+StatusBar, &
|
|
MENUID=IDR_MENU1, &
|
|
TOOLID=(/0,ID_TOOLBAR1,0,0/), &
|
|
TITLE ='RMAGEN')
|
|
! CALL WindowOpen(WINDOW,TITLE ='RMAGEN') ! Open root window
|
|
|
|
!
|
|
! Add a toolbar
|
|
!
|
|
! CALL WMenuToolbar(ID_TOOLBAR1)
|
|
!
|
|
! Main message loop
|
|
!
|
|
! initialise palette
|
|
!
|
|
CALL IGrPaletteInit
|
|
!
|
|
! set fill style to solid
|
|
!
|
|
CALL IGrFillPattern(Solid)
|
|
|
|
FONT%IBCOL = TextWhite
|
|
CALL WindowFont(FONT)
|
|
! CALL WindowClear(RGB=RGB_yellow) ! clear window to yellow
|
|
! IRGB = WRGB(220,220,220)
|
|
! IRGB = WRGB(191,191,191)
|
|
IRGB = WRGB(227,227,227)
|
|
CALL WindowClear(rgb=irgb) ! clear to yellow
|
|
|
|
WIDSTAT(1) = 1000
|
|
WIDSTAT(2) = 2000
|
|
WIDSTAT(3) = 1500
|
|
WIDSTAT(4) = 1000
|
|
WIDSTAT(5) = 2500
|
|
CALL WindowStatusBarParts(5, WIDSTAT)
|
|
CALL WindowOutStatusBar(1, ' X and Y location')
|
|
CALL WindowOutStatusBar(4, ' Active File Name')
|
|
CALL IgrUnits(0.,0.,HSIZE,8.0)
|
|
|
|
! IF(ISW .EQ. 1) THEN
|
|
! CALL WMessageEnable(MouseMove , Enabled)
|
|
! MENUS=-3
|
|
! CALL RMAGEN(MENUS,IMP,IIN,1,IOT,IOT1,IGFG)
|
|
! ENDIF
|
|
|
|
|
|
! CALL WMenuSetState(ID_NETWD,ItemChecked,1)
|
|
! DO I=1,12
|
|
! CALL WMenuSetState(IBASEV+I,ItemChecked,1)
|
|
! ENDDO
|
|
|
|
IDDSW=-1
|
|
IHANDLE=0
|
|
IHAND1=0
|
|
IHAND2=0
|
|
N2=0
|
|
M2=0
|
|
TXSCAL = 1.
|
|
XS=0.
|
|
YS=0.
|
|
NBKFL=0
|
|
IRDONE=-1
|
|
DO I=1,10
|
|
ISWBKFL(I)=0
|
|
ENDDO
|
|
IACTVFIL=0
|
|
ITOTFIL=0
|
|
IOT=0
|
|
IOT1=0
|
|
IMP=0
|
|
|
|
CALL INITSIZ(IIN,N2,M2,0)
|
|
|
|
CALL WMenuSetState(ID_loadrm1,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_sbin,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_crsf,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_savcrs,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_LAYFL,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM13,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM14,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM18,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM15,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM16,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ICOPY,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_Clip,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM24,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_MMAP,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_MAPM,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_NETWORK,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_NODE,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ELTS,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ORDR,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_CCLN,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_CONTR,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_CSEC,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_CSEC1,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM20,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM26,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ZOOM,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_DRAW,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_UNDOM,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_NMAP,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_CDATA,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM56,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_SECGRP,ItemEnabled,0)
|
|
|
|
iswtfl=0
|
|
N1=1
|
|
|
|
CALL GETARG(N1,FNAME,STATUS)
|
|
if(status .ne. -1 ) then
|
|
|
|
CALL SHORTNAME(FNAME,FNAMEDISP)
|
|
do n=status,1,-1
|
|
if(fname(n:n) .eq. '\') then
|
|
lnnnam=n-1
|
|
go to 99
|
|
endif
|
|
enddo
|
|
99 continue
|
|
if(lnnnam .gt. 0) then
|
|
fnamd=fname(1:lnnnam)
|
|
statud = CHANGEDIRQQ(fnamd)
|
|
endif
|
|
iswtfl=1
|
|
CALL IlowerCase(FNAME)
|
|
CALL GETSUB(FNAME,SUB)
|
|
|
|
ITRIAN=0
|
|
IF(SUB .EQ. 'geo') then
|
|
IIN=12
|
|
OPEN(IIN ,FILE=FNAME,STATUS='OLD',form='binary',ACTION='READ')
|
|
FNAMKEP=FNAME
|
|
READ(IIN) HEADR
|
|
READ(IIN) N2,M2
|
|
REWIND (IIN)
|
|
|
|
ELSEIF(SUB .EQ. 'gfg') then
|
|
IIN = 10
|
|
IGFG=1
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
OPEN(10,FILE=FNAME,STATUS='OLD',ACTION='READ')
|
|
ELSEIF(SUB .EQ. '2dm') then
|
|
IIN = 10
|
|
IGFG=3
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
OPEN(10,FILE=FNAME,STATUS='OLD',ACTION='READ')
|
|
ELSEIF(SUB .EQ. 'rst') then
|
|
IIN=11
|
|
OPEN(IIN ,FILE=FNAME,STATUS='OLD',FORM='UNFORMATTED')
|
|
! OPEN(IIN,FILE=FNAME,STATUS='OLD',FORM ='BINARY',action='read')
|
|
IGFG=0
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
ELSEIF(SUB .EQ. 'bin') then
|
|
IIN=12
|
|
OPEN(IIN ,FILE=FNAME,STATUS='OLD',FORM='UNFORMATTED')
|
|
IGFG=2
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
ELSEIF(SUB .EQ. 'ele') then
|
|
IIN=10
|
|
OPEN(IIN ,FILE=FNAME,STATUS='OLD',ACTION='READ')
|
|
ITRIAN=1
|
|
IGFG=0
|
|
FNAMKEP=FNAME
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,N2,M2)
|
|
ELSEIF(SUB .EQ. 'map') then
|
|
IMP=9
|
|
OPEN(9,FILE=FNAME,STATUS='OLD',action='read')
|
|
ELSEIF(SUB .EQ. 'asc' .or. SUB .EQ. 'grd') then
|
|
IMP=94
|
|
OPEN(94,FILE=FNAME,STATUS='OLD',action='read')
|
|
ELSEIF(SUB .EQ. 'shp') then
|
|
IMP=113
|
|
OPEN(113,FILE=FNAME,STATUS='OLD',FORM ='BINARY',action='read')
|
|
sub='dbf'
|
|
call addsub(fname,sub)
|
|
OPEN(114,FILE=FNAME,STATUS='OLD',FORM ='BINARY',action='read')
|
|
ELSE
|
|
IIN = 10
|
|
IGFG=0
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
OPEN(10,FILE=FNAME,STATUS='OLD',ACTION='READ')
|
|
ENDIF
|
|
IF(IMP .EQ. 0) THEN
|
|
IACTVFIL=1
|
|
ITOTFIL=1
|
|
FNAMEOUT(1)=FNAME
|
|
ENDIF
|
|
CALL WMenuSetState(ID_loadrm1,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_sbin,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_crsf,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_savcrs,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_LAYFL,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM13,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM14,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM18,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM15,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM16,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ICOPY,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_Clip,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM24,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_MMAP,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_MAPM,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_NETWORK,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_NODE,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ELTS,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ORDR,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CCLN,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CONTR,ItemEnabled,1)
|
|
! CALL WMenuSetState(ID_CSEC,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_CSEC1,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM20,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM26,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ZOOM,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_DRAW,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_UNDOM,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_NMAP,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CDATA,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM56,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_RESETLIM,ItemEnabled,0)
|
|
CALL WMessageEnable(MouseMove , Enabled)
|
|
|
|
IF(IMP .GT. 0) THEN
|
|
MENUS=-2
|
|
CALL INITSIZ(IIN,N2,M2,1)
|
|
go to 500
|
|
ENDIF
|
|
|
|
CALL WMessageBox(YesNo,QuestionIcon,CommonOK,'Do you wish to load '//&
|
|
CHAR(13)//'a map file?' ,&
|
|
'Map File Input?')
|
|
!
|
|
! If answer 'No' skip out
|
|
!
|
|
IMP=0
|
|
IF (WInfoDialog(4) .NE. 2) then
|
|
|
|
fname=' '
|
|
CALL WSelectFile(ID_STRING1,PromptOn,FNAME,'Load Map File')
|
|
|
|
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
|
|
|
|
CALL IlowerCase(FNAME)
|
|
CALL GETSUB(FNAME,SUB)
|
|
|
|
IF(SUB .EQ. 'map') then
|
|
IMP=9
|
|
OPEN(9,FILE=FNAME,STATUS='OLD',action='read')
|
|
ELSEIF(SUB .EQ. 'asc' .or. SUB .EQ. 'grd') then
|
|
IMP=94
|
|
OPEN(94,FILE=FNAME,STATUS='OLD',action='read')
|
|
ELSEIF(SUB .EQ. 'mpb') then
|
|
imp=92
|
|
OPEN(IMP ,FILE=FNAME,STATUS='OLD',form='unformatted',action='read')
|
|
ELSEIF(SUB .EQ. 'mbb') then
|
|
imp=92
|
|
OPEN(IMP ,FILE=FNAME,STATUS='OLD',form='binary',action='read')
|
|
ELSEIF(SUB .EQ. 'rm1') then
|
|
imp=13
|
|
OPEN(IMP ,FILE=FNAME,STATUS='OLD',action='read')
|
|
ELSEIF(SUB .EQ. 'shp') then
|
|
IMP=113
|
|
OPEN(113,FILE=FNAME,STATUS='OLD',FORM ='BINARY',action='read')
|
|
SUB='DBF'
|
|
CALL ADDSUB(FNAME,SUB)
|
|
OPEN(114,FILE=FNAME,STATUS='OLD',FORM ='BINARY',action='read')
|
|
ENDIF
|
|
ENDIF
|
|
END IF
|
|
MENUS=-2
|
|
CALL INITSIZ(IIN,N2,M2,1)
|
|
|
|
go to 500
|
|
endif
|
|
|
|
|
|
|
|
DO WHILE (.TRUE.) ! Loop until user terminates
|
|
|
|
100 continue
|
|
CALL WMessage(ITYPE, MESSAGE)
|
|
SELECT CASE (ITYPE)
|
|
CASE (KeyDown) ! Key pressed
|
|
KEY = MESSAGE%VALUE1
|
|
MOUSEX = MESSAGE%X
|
|
MOUSEY = MESSAGE%Y
|
|
CASE (MenuSelect) ! Menu item selected
|
|
SELECT CASE (MESSAGE%VALUE1)
|
|
! CASE (ID_FILE) ! File option selected
|
|
CASE (ID_RESETLIM)
|
|
CALL RESETSIZ
|
|
|
|
CASE (ID_ITEM11) ! New option
|
|
IMP=0
|
|
IIN=0
|
|
CALL INITSIZ(IIN,N2,M2,1)
|
|
CALL WMenuSetState(ID_loadrm1,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_sbin,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_crsf,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_savcrs,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_LAYFL,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM13,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM14,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM18,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM15,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM16,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ICOPY,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_Clip,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM24,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_MMAP,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_MAPM,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_NETWORK,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_NODE,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ELTS,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ORDR,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CCLN,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CONTR,ItemEnabled,1)
|
|
! CALL WMenuSetState(ID_CSEC,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_CSEC1,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM20,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM26,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ZOOM,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_DRAW,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_UNDOM,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_NMAP,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CDATA,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM56,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_RESETLIM,ItemEnabled,0)
|
|
CALL WMessageEnable(MouseMove , Enabled)
|
|
|
|
|
|
MENUS=-2
|
|
EXIT
|
|
CASE (ID_ITEM12) ! Open option
|
|
IMP=0
|
|
IIN=0
|
|
if(iswtfl .eq. 1) go to 200
|
|
fname=' '
|
|
FILTER ="Network Files|*.rm1;*.geo;*.gfg;*.bin;*.ele;*.2dm|Rm1 file -- *.rm1|*.rm1|Geo file -- *.geo|*.geo|GFGEN file -- *.gfg|*.gfg|GFGEN bin file -- *.bin|*.bin|Rst file -- *.rst|*.rst|ele file -- *.ele|*.ele|MESH2D file -- *.2dm|*.2dm|All files|All files|*.*|"
|
|
CALL WSelectFile(FILTER,PromptOn+DirChange,FNAME,'Load Network File')
|
|
|
|
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
|
|
GO TO 200
|
|
ELSE
|
|
GO TO 250
|
|
ENDIF
|
|
200 CONTINUE
|
|
CALL IlowerCase(FNAME)
|
|
CALL GETSUB(FNAME,SUB)
|
|
|
|
IF(SUB .EQ. 'geo') then
|
|
IIN=12
|
|
OPEN(IIN ,FILE=FNAME,STATUS='OLD',form='binary',ACTION='READ')
|
|
FNAMKEP=FNAME
|
|
READ(IIN) HEADR
|
|
!IPK JUN20 ALLOOW FOR OLD FORMAT GEO
|
|
IF(HEADR(1:6) .NE. 'RMAGEN') THEN
|
|
CLOSE (IIN)
|
|
OPEN(IIN ,FILE=FNAME,STATUS='OLD',form='unformatted',ACTION='READ')
|
|
ENDIF
|
|
READ(IIN) N2,M2
|
|
|
|
|
|
REWIND (IIN)
|
|
|
|
ITRIAN=0
|
|
ELSEIF(SUB .EQ. 'gfg') then
|
|
IIN = 10
|
|
IGFG=1
|
|
OPEN(10,FILE=FNAME,STATUS='OLD',ACTION='READ')
|
|
ITRIAN=0
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
ELSEIF(SUB .EQ. '2dm') then
|
|
IIN = 10
|
|
IGFG=3
|
|
OPEN(10,FILE=FNAME,STATUS='OLD',ACTION='READ')
|
|
ITRIAN=0
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
ELSEIF(SUB .EQ. '2dm') then
|
|
IIN = 10
|
|
IGFG=3
|
|
OPEN(10,FILE=FNAME,STATUS='OLD',ACTION='READ')
|
|
ITRIAN=0
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
ELSEIF(SUB .EQ. 'bin') then
|
|
IIN=12
|
|
OPEN(IIN ,FILE=FNAME,STATUS='OLD',FORM='UNFORMATTED')
|
|
IGFG=2
|
|
ITRIAN=0
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
ELSEIF(SUB .EQ. 'rst') then
|
|
IIN=11
|
|
OPEN(IIN ,FILE=FNAME,STATUS='OLD',FORM='UNFORMATTED')
|
|
! OPEN(IIN,FILE=FNAME,STATUS='OLD',FORM ='BINARY')
|
|
IGFG=0
|
|
ITRIAN=0
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
ELSEIF(SUB .EQ. 'ele') then
|
|
IIN=10
|
|
OPEN(IIN ,FILE=FNAME,STATUS='OLD',ACTION='READ')
|
|
ITRIAN=1
|
|
IGFG=0
|
|
FNAMKEP=FNAME
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,N2,M2)
|
|
ELSE
|
|
IIN = 10
|
|
IGFG=0
|
|
OPEN(10,FILE=FNAME,STATUS='OLD',ACTION='READ')
|
|
ITRIAN=0
|
|
CALL SETGFGTRIAN(IGFG,ITRIAN,ID1,ID2)
|
|
ENDIF
|
|
IACTVFIL=1
|
|
ITOTFIL=1
|
|
FNAMEOUT(1)=FNAME
|
|
CALL SHORTNAME(FNAME,FNAMEDISP)
|
|
250 CONTINUE
|
|
fname=' '
|
|
filter="Map files -- *.map, *.grd |*.map;*.grd|Bin Map file -- *.mpb|*.mpb|Bin Map file (no head) -- *.mbb|*.mbb|RM1 file (as map) -- *.rm1|*.rm1|ESRI ASC file -- *.asc|*.asc|SURFER GRD file -- *.grd|*.grd|ESRI SHP file -- *.shp|*.shp|"
|
|
CALL WSelectFile(filter,PromptOn,FNAME,'Load Map File')
|
|
|
|
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
|
|
|
|
CALL IlowerCase(FNAME)
|
|
CALL GETSUB(FNAME,SUB)
|
|
|
|
IF(SUB .EQ. 'map') then
|
|
IMP=9
|
|
OPEN(9,FILE=FNAME,STATUS='OLD',action='read')
|
|
ELSEIF(SUB .EQ. 'asc' .or. SUB .EQ. 'grd') then
|
|
IMP=94
|
|
OPEN(94,FILE=FNAME,STATUS='OLD',action='read')
|
|
ELSEIF(SUB .EQ. 'shp') then
|
|
IMP=113
|
|
OPEN(113,FILE=FNAME,STATUS='OLD',FORM ='BINARY',action='read')
|
|
SUB='DBF'
|
|
CALL ADDSUB(FNAME,SUB)
|
|
OPEN(114,FILE=FNAME,STATUS='OLD',FORM ='BINARY',action='read')
|
|
ELSEIF(SUB .EQ. 'mpb') then
|
|
imp=92
|
|
OPEN(IMP ,FILE=FNAME,STATUS='OLD',form='unformatted',action='read')
|
|
ELSEIF(SUB .EQ. 'mbb') then
|
|
imp=92
|
|
OPEN(IMP ,FILE=FNAME,STATUS='OLD',form='binary',action='read')
|
|
ELSEIF(SUB .EQ. 'rm1') then
|
|
imp=13
|
|
OPEN(IMP ,FILE=FNAME,STATUS='OLD',action='read')
|
|
ENDIF
|
|
ENDIF
|
|
CALL WMenuSetState(ID_loadrm1,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_sbin,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_crsf,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_savcrs,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_LAYFL,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM13,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM14,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM18,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM15,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM16,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ICOPY,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_Clip,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM24,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_MMAP,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_MAPM,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_NETWORK,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_NODE,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ELTS,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ORDR,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CCLN,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CONTR,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CSEC1,ItemEnabled,1)
|
|
! CALL WMenuSetState(ID_CSEC,ItemEnabled,0)
|
|
CALL WMenuSetState(ID_ITEM20,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM26,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ZOOM,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_DRAW,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_UNDOM,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_NMAP,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_CDATA,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_ITEM56,ItemEnabled,1)
|
|
CALL WMenuSetState(ID_RESETLIM,ItemEnabled,0)
|
|
CALL WMessageEnable(MouseMove , Enabled)
|
|
|
|
|
|
MENUS=-2
|
|
CALL INITSIZ(IIN,N2,M2,1)
|
|
EXIT
|
|
CASE (ID_ITEM13) ! Save option
|
|
WRITE(90,*) 'NWRM ITEM13'
|
|
INQUIRE(20, OPENED=OPENED)
|
|
if(.not. opened) then
|
|
FILTER ="Network Files|*.rm1;*.gfg;*.ele|Rm1 file -- *.rm1|*.rm1|GFGEN file -- *.gfg|*.gfg|ele file -- *.ele|*.ele|All files|*.*|"
|
|
|
|
CALL WSelectFile(FILTER,SaveDialog+PromptOn,FNAME,'Save Network File')
|
|
|
|
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
|
|
|
|
SUB='rm1'
|
|
CALL ADDSUB(FNAME,SUB)
|
|
|
|
WRITE(90,*) 'IN ITEM13-NEW',IOT
|
|
WRITE(90,'(A)') FNAME,SUB
|
|
IOT = 20
|
|
OPEN(IOT,FILE=FNAME,STATUS='UNKNOWN',ACTION='READWRITE')
|
|
|
|
call wrtout(1)
|
|
ENDIF
|
|
else
|
|
call wrtout(1)
|
|
endif
|
|
|
|
CASE (ID_ITEM14) ! Save option
|
|
WRITE(90,*) 'NWRM ITEM14'
|
|
|
|
INQUIRE(22, OPENED=OPENED)
|
|
if(.not. opened) then
|
|
CALL WSelectFile(ID_STRING4,SaveDialog+PromptOn,FNAME,'Save Network File')
|
|
|
|
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
|
|
|
|
SUB='geo'
|
|
CALL ADDSUB(FNAME,SUB)
|
|
|
|
WRITE(90,*) 'IN ITEM14-NEW',IOT1
|
|
WRITE(90,'(A)') FNAME,SUB
|
|
IOT1=22
|
|
OPEN(IOT1 ,FILE=FNAME,STATUS='UNKNOWN',form='binary',ACTION='READWRITE')
|
|
call wrtout(2)
|
|
ENDIF
|
|
else
|
|
call wrtout(2)
|
|
endif
|
|
|
|
CASE (ID_ITEM18) ! Save As option
|
|
|
|
CALL WSelectFile(ID_STRING5,SaveDialog+PromptOn,FNAME,'Save Bin Map File')
|
|
|
|
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
|
|
|
|
SUB='mpb'
|
|
CALL ADDSUB(FNAME,SUB)
|
|
impf=93
|
|
OPEN(IMPF ,FILE=fname,STATUS='unknown',form='unformatted',ACTION='READWRITE')
|
|
|
|
call wrtmap(1)
|
|
|
|
ENDIF
|
|
|
|
CASE (ID_ITEM15) ! Save As option
|
|
|
|
CALL WSelectFile(ID_STRING3,SaveDialog+PromptOn,FNAME,'Save Network File')
|
|
|
|
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
|
|
|
|
SUB='rm1'
|
|
CALL ADDSUB(FNAME,SUB)
|
|
|
|
IOT = 20
|
|
OPEN(IOT,FILE=FNAME,STATUS='UNKNOWN',ACTION='READWRITE')
|
|
call wrtout(1)
|
|
ENDIF
|
|
|
|
CASE (ID_ITEM16) ! Save As option
|
|
|
|
CALL WSelectFile(ID_STRING4,SaveDialog+PromptOn,FNAME,'Save Network File')
|
|
|
|
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
|
|
|
|
SUB='geo'
|
|
CALL ADDSUB(FNAME,SUB)
|
|
|
|
IOT1 = 22
|
|
OPEN(IOT1 ,FILE=FNAME,STATUS='UNKNOWN',form='binary',ACTION='READWRITE')
|
|
call wrtout(2)
|
|
ENDIF
|
|
|
|
CASE (ID_BKF) ! Read background option
|
|
|
|
fname=' '
|
|
FILTER ="Background File|*.wmf;*.bmp;*.pcx;*.png;*.cgm;*.pic;*.jpg|wmf file -- *.wmf|*.wmf|bmp file -- *.bmp|*.bmp|pcx file -- *.pcx|*.pcx|png file -- *.png|*.png|jpeg file -- *.jpg|*.jpg|cgm file -- *.cgm|*.cgm|pic file -- *.pic|*.pic|"
|
|
CALL WSelectFile(FILTER,PromptOn+DirChange,FNAME,'Load Background file')
|
|
|
|
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
|
|
|
|
CALL IlowerCase(FNAME)
|
|
CALL GETSUB(FNAME,SUB)
|
|
NBKFL=NBKFL+1
|
|
BFNAME(NBKFL)=FNAME
|
|
SUB1=SUB
|
|
IF(SUB .EQ. 'bmp') then
|
|
ISWBKFL(NBKFL) = 2
|
|
ELSEIF(SUB .EQ. 'pcx') then
|
|
ISWBKFL(NBKFL) = 2
|
|
ELSEIF(SUB .EQ. 'png' .or. sub .eq. 'jpg') then
|
|
ISWBKFL(NBKFL) = 2
|
|
ELSE
|
|
ISWBKFL(NBKFL)=1
|
|
ENDIF
|
|
SUB='ORG'
|
|
CALL ADDSUB(FNAME,SUB)
|
|
BFNAMR(NBKFL)=FNAME
|
|
INQUIRE (FILE = fname, EXIST = exists)
|
|
IF (.NOT. exists) THEN
|
|
IF(SUB1 .EQ. 'PNG' .or. SUB1 .EQ. 'png') SUB2='PNGW'
|
|
IF(SUB1 .EQ. 'JPG' .or. SUB1 .EQ. 'jpg') SUB2='JPGW'
|
|
CALL ADDSUB(FNAME,SUB2)
|
|
BFNAMR(NBKFL)=FNAME
|
|
INQUIRE (FILE = fname, EXIST = exists)
|
|
IF (.NOT. exists) THEN
|
|
IF(SUB2 .EQ. 'JPGW') THEN
|
|
SUB1='JGW'
|
|
CALL ADDSUB(FNAME,SUB1)
|
|
BFNAMR(NBKFL)=FNAME
|
|
ENDIF
|
|
ENDIF
|
|
INQUIRE (FILE = fname, EXIST = exists)
|
|
IF (.NOT. exists) THEN
|
|
CALL WMessageBox(YesNo,QuestionIcon,CommonOK,'Location file does not exist!!'//CHAR(13)// &
|
|
'Do you wish to create file and view image','Looking for location file')
|
|
! If answer 'Yes' set ifrmel to 0
|
|
!
|
|
IF (WInfoDialog(4) .ne. 2) then
|
|
OPEN(104,FILE=FNAME,STATUS ='NEW', FORM ='FORMATTED')
|
|
BFMINMAX(NBKFL,1) = - XS
|
|
BFMINMAX(NBKFL,2) = - YS
|
|
BFMINMAX(NBKFL,3) = HSIZE*TXSCAL - XS
|
|
BFMINMAX(NBKFL,4) = 7.50*TXSCAL - YS
|
|
WRITE(104,'(4G16.8)') (BFMINMAX(NBKFL,I),I=1,4)
|
|
CLOSE(104)
|
|
|
|
EXIT
|
|
ELSE
|
|
NBKFL=NBKFL-1
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
! yes
|
|
OPEN(104,FILE=FNAME,STATUS ='OLD', FORM ='FORMATTED')
|
|
READ(104,'(G16.8)') XX1
|
|
READ(104,'(G16.8)') XX2
|
|
READ(104,'(G16.8)') XX3
|
|
READ(104,'(G16.8)') XX4
|
|
READ(104,'(G16.8)') XX5
|
|
READ(104,'(G16.8)') XX6
|
|
CLOSE(104)
|
|
call IGrFileInfo(BFNAME(NBKFL),INFO,3)
|
|
|
|
BFMINMAX(NBKFL,1) = XX5
|
|
BFMINMAX(NBKFL,2) = XX6+INFO(3)*XX4
|
|
BFMINMAX(NBKFL,3) = XX5+INFO(2)*XX1
|
|
BFMINMAX(NBKFL,4) = XX6
|
|
|
|
CLOSE(104)
|
|
GO TO 125
|
|
ENDIF
|
|
|
|
OPEN(104,FILE=FNAME,STATUS ='OLD', FORM ='FORMATTED')
|
|
READ(104,'(4G16.8)') (BFMINMAX(NBKFL,I),I=1,4)
|
|
CLOSE(104)
|
|
125 CONTINUE
|
|
ENDIF
|
|
|
|
CASE (ID_ITEM24) ! Print option is selected
|
|
CALL WHardcopyOptions(3)
|
|
!
|
|
! If the user clicked OK on page setup dialog then output the contents
|
|
! of the subroutine DOPLOT to the selected printer
|
|
!
|
|
IF (WinfoDialog(ExitButtonCommon).EQ.CommonOK) THEN
|
|
CALL IGrInit('HP') ! hardcopy only output
|
|
CALL IGrFillPattern(Solid)
|
|
|
|
CALL IgrUnits(0.,0.,HSIZE,7.5)
|
|
CALL IGrHardcopy(' ') ! Start print manager
|
|
call clscrn
|
|
CALL PLOTOT(0) ! plot graph
|
|
call rblack
|
|
CALL IGrRectangle(0.,0.,HSIZE,7.5)
|
|
|
|
CALL IGrHardcopy('S') ! Send data to the printer
|
|
CALL IGrInit('P') ! Turn graphics back on
|
|
CALL IGrFillPattern(Solid)
|
|
|
|
CALL IgrUnits(0.,0.,HSIZE,8.0)
|
|
CALL PLOTOT(0)
|
|
CALL HEDR
|
|
call rblack
|
|
CALL IGrRectangle(0.,0.,HSIZE,7.5)
|
|
END IF
|
|
|
|
CASE (ID_ITEM19) ! Demo option
|
|
MENUS=-1
|
|
IMP=0
|
|
IIN=0
|
|
EXIT
|
|
CASE (ID_ITEM17) ! Exit option
|
|
call rquit(iyes)
|
|
if(iyes .ne. 1) go to 100
|
|
MENUS=0
|
|
EXIT
|
|
CASE (ID_EXIT) ! Exit program (menu option)
|
|
call rquit(iyes)
|
|
if(iyes .ne. 1) go to 100
|
|
MENUS=0
|
|
EXIT
|
|
CASE (ID_NODE)
|
|
MENUS=2
|
|
EXIT
|
|
CASE (ID_ELTS)
|
|
MENUS=1
|
|
EXIT
|
|
CASE (ID_ORDR)
|
|
MENUS=3
|
|
EXIT
|
|
CASE (ID_CCLN)
|
|
MENUS=6
|
|
EXIT
|
|
CASE (ID_CSEC)
|
|
MENUS=7
|
|
EXIT
|
|
CASE (ID_ZOOM)
|
|
MENUS=8
|
|
EXIT
|
|
CASE (ID_DRAW)
|
|
MENUS=9
|
|
EXIT
|
|
|
|
CASE (ID_HELP1)
|
|
call helps(0)
|
|
go to 100
|
|
|
|
CASE (ID_HELP2)
|
|
call RMINFO
|
|
go to 100
|
|
|
|
CASE (ID_ITEM20)
|
|
CALL GDIST
|
|
CYCLE
|
|
|
|
CASE (ID_ITEM22)
|
|
CALL SELNODE(0)
|
|
CYCLE
|
|
|
|
CASE (ID_ALLNODES)
|
|
CALL SELNODE(1)
|
|
CYCLE
|
|
|
|
CASE (ID_UNUSNODES)
|
|
CALL SELNODE(2)
|
|
CYCLE
|
|
|
|
CASE (ID_ITEM23)
|
|
CALL SELELT(0)
|
|
CYCLE
|
|
END SELECT
|
|
CASE (PushButton) ! Dialog button pressed
|
|
IDBUTN = MESSAGE%VALUE1
|
|
IDFIELD = MESSAGE%VALUE2
|
|
CASE (MouseButDown,MouseButUp) ! Mouse button down/up
|
|
MBUTTON = MESSAGE%VALUE1
|
|
ITIME = MESSAGE%VALUE2
|
|
MOUSEX = MESSAGE%X
|
|
MOUSEY = MESSAGE%Y
|
|
CASE (MouseMove) ! Mouse moved
|
|
ITIME = MESSAGE%VALUE2
|
|
MOUSEX = MESSAGE%X
|
|
MOUSEY = MESSAGE%Y
|
|
CASE (Expose) ! Window partly/wholly exposed
|
|
IX = MESSAGE%X
|
|
IY = MESSAGE%Y
|
|
IWIDTH = MESSAGE%VALUE1
|
|
IHEIGHT = MESSAGE%VALUE2
|
|
CASE (Resize) ! Window resized
|
|
IWIDTH = MESSAGE%VALUE1
|
|
IHEIGHT = MESSAGE%VALUE2
|
|
CASE (CloseRequest) ! Close window (e.g. Alt/F4)
|
|
IWINDOW = MESSAGE%WIN
|
|
call rquit(iyes)
|
|
if(iyes .ne. 1) go to 100
|
|
menus=0
|
|
exit
|
|
! IF (IWINDOW.EQ.0) EXIT ! Root window : exit program
|
|
! CALL WindowCloseChild(IWINDOW)
|
|
CASE (FieldChanged) ! Field change in modeless dialog
|
|
IDFIELDOLD = MESSAGE%VALUE1
|
|
IDFIELDNEW = MESSAGE%VALUE2
|
|
END SELECT
|
|
END DO
|
|
|
|
500 continue
|
|
IF(MENUS .NE. 0) THEN
|
|
CALL RMAGEN(MENUS,IMP,IIN,0,IOT,IOT1,IGFG,ITRIAN,N2,M2)
|
|
ENDIF
|
|
close(90)
|
|
CALL WindowClose ! Remove program window
|
|
stop
|
|
!! CALL WindowClose ! Remove program window
|
|
END PROGRAM NEWRMAGEN
|
|
|
|
SUBROUTINE GETSUB(FNAME,SUB)
|
|
CHARACTER(LEN=255) :: FNAME
|
|
CHARACTER(LEN=3) :: SUB
|
|
INTEGER ,EXTERNAL :: LENSTR
|
|
INTEGER :: LNNAM,K
|
|
|
|
LNNAM=LENSTR(FNAME)
|
|
SUB=' '
|
|
DO K=LNNAM,1,-1
|
|
IF(FNAME(K:K) .EQ. '.') THEN
|
|
IF(LNNAM .GT. K+2) THEN
|
|
SUB=FNAME(K+1:K+3)
|
|
ELSE
|
|
SUB=' '
|
|
ENDIF
|
|
GO TO 110
|
|
ENDIF
|
|
ENDDO
|
|
110 CONTINUE
|
|
RETURN
|
|
END
|
|
|
|
SUBROUTINE ADDSUB(FNAME,SUB)
|
|
CHARACTER(LEN=255) :: FNAME
|
|
CHARACTER(LEN=*) :: SUB
|
|
INTEGER ,EXTERNAL :: LENSTR
|
|
INTEGER :: LNNAM,K,LMPNAM
|
|
|
|
LNNAM=LENSTR(FNAME)
|
|
DO K=LNNAM,1,-1
|
|
IF(FNAME(K:K) .EQ. '.') THEN
|
|
lmpnam=k
|
|
FNAME=FNAME(1:LMPNAM)//SUB
|
|
GO TO 110
|
|
ENDIF
|
|
ENDDO
|
|
FNAME=FNAME(1:LNNAM)//'.'//SUB
|
|
110 CONTINUE
|
|
RETURN
|
|
END
|
|
|
|
SUBROUTINE SHORTNAME(FNAMELL,FNAMES)
|
|
CHARACTER(LEN=255) :: FNAMELL
|
|
CHARACTER(LEN=48) :: FNAMES
|
|
INTEGER ,EXTERNAL :: LENSTR
|
|
INTEGER :: LNNAM,K,KSTART,KEND
|
|
|
|
LNNAM=LENSTR(FNAMELL)
|
|
DO K=1,48
|
|
FNAMES(K:K)=' '
|
|
ENDDO
|
|
KSTART=1
|
|
DO K=LNNAM,1,-1
|
|
IF(FNAMELL(K:K) .EQ. '\') THEN
|
|
KSTART=K+1
|
|
GO TO 200
|
|
ENDIF
|
|
ENDDO
|
|
200 KEND=LNNAM-KSTART+1
|
|
IF(KEND .GT. 48) KEND=48
|
|
|
|
FNAMES(1:KEND)=FNAMELL(KSTART:KSTART+KEND-1)
|
|
RETURN
|
|
END
|
|
|