!! Copyright (C) Stichting Deltares, 2005-2017. !! !! This file is part of iMOD. !! !! This program is free software: you can redistribute it and/or modify !! it under the terms of the GNU General Public License as published by !! the Free Software Foundation, either version 3 of the License, or !! (at your option) any later version. !! !! This program is distributed in the hope that it will be useful, !! but WITHOUT ANY WARRANTY; without even the implied warranty of !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the !! GNU General Public License for more details. !! !! You should have received a copy of the GNU General Public License !! along with this program. If not, see . !! !! Contact: imod.support@deltares.nl !! Stichting Deltares !! P.O. Box 177 !! 2600 MH Delft, The Netherlands. !! MODULE MOD_3D_SETTINGS USE WINTERACTER USE RESOURCE USE MODPLOT, ONLY : MP USE MOD_UTL, ONLY : UTL_MESSAGEHANDLE,UTL_WSELECTFILE USE MOD_3D_PAR USE MOD_3D_DISPLAY, ONLY : IMOD3D_DISPLAY,IMOD3D_RESET_TO_INIT,IMOD3D_LIGHT,IMOD3D_SETTINGSPUT_INDPOS USE MOD_3D_SELECT, ONLY : IMOD3D_SELECTOBJECT USE MOD_3D_ENGINE USE MOD_3D_UTL, ONLY : IMOD3D_BMP,IMOD3D_CLOSE USE MOD_3D_PROCESS USE MOD_IPF_PAR, ONLY : NIPF,NLITHO USE MOD_IPFGETVALUE_COLOURS, ONLY : IPFGETVALUE_PLOTCOLOURS,IPFGETVALUE_OPENSAVECOLOURS,IPFGETVALUE_GETCOLOURS USE MOD_IPF_LABEL, ONLY : IMOD3D_LABELS USE MOD_SOLID_PAR, ONLY : SPF,NSPF USE MOD_PLINES_TRACE, ONLY : TRACEIREV,TRACE_3D_STARTPOINTS,TRACE_3D_STARTPOINTS_SHOW,TRACE_3D_COMPUTE_STOP, & TRACE_3D_RESET,TRACE_AL_SPR,TRACE_DEAL_SPR,TRACE_3D_STARTPOINTS_MAIN,TRACE_3D_STARTPOINTS_RESET USE MOD_PLINES_PAR, ONLY : PL,SP,ISNK,FRAC,NLAY TYPE(WIN_MESSAGE),PRIVATE :: MESSAGE INTEGER,PRIVATE :: ITYPE CONTAINS !###====================================================================== SUBROUTINE IMOD3D_SETTINGSINIT() !###====================================================================== IMPLICIT NONE INTEGER :: ILEG CALL WINDOWSELECT(IWIN) !## set tab initial- settings (always possible, other depend on existence and availability of point within window) CALL WDIALOGSELECT(ID_D3DSETTINGS); CALL WDIALOGSETTAB(IDF_TAB1,ID_D3DSETTINGS_TAB5) !## idf active IF(NIDFLIST.GT.0)THEN CALL WDIALOGSETTAB(IDF_TAB1,ID_D3DSETTINGS_TAB1) CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB1) CALL WDIALOGPUTIMAGE(ID_PROPERTIES,ID_ICONPROPERTIES,1) CALL WDIALOGPUTMENU(IDF_MENU1,IDFPLOT%DISP_ALIAS,DISP_NIDFLIST,IDFPLOT%DISP_ISEL) CALL WDIALOGPUTIMAGE(IDF_COLOUR1,ID_ICONLEGEND) CALL WDIALOGPUTTRACKBAR(IDF_TRACKBAR2,0) ELSE CALL WDIALOGSELECT(ID_D3DSETTINGS) CALL WDIALOGTABSTATE(IDF_TAB1,ID_D3DSETTINGS_TAB1,0) ENDIF !## ipf active IF(NIPF.GT.0)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB2) CALL WDIALOGPUTIMAGE(ID_PROPERTIES,ID_ICONPROPERTIES,1) CALL WDIALOGPUTIMAGE(ID_SELECTION,ID_ICONGLASSES,1) CALL WDIALOGPUTMENU(IDF_MENU1,IPFPLOT%FNAME,NIPF,IPFPLOT%ISEL) CALL WDIALOGPUTIMAGE(ID_OPEN,ID_ICONOPEN) CALL WDIALOGPUTIMAGE(ID_SAVEAS,ID_ICONSAVEAS) CALL WDIALOGPUTIMAGE(ID_REDRAW,ID_ICONREDRAW) CALL WDIALOGPUTIMAGE(IDF_COLOUR1,ID_ICONLEGEND) CALL WDIALOGPUTINTEGER(IDF_INTEGER1,WRGB(255,255,255)) ILEG=IPFPLOT(1)%ILEGDLF; CALL IPFGETVALUE_PLOTCOLOURS(ID_D3DSETTINGS_TAB2,ILEG) CALL WDIALOGPUTOPTION(IDF_MENU2,ILEG) CALL WDIALOGSELECT(ID_D3DSETTINGS) IF(NIDFLIST.EQ.0)CALL WDIALOGSETTAB(IDF_TAB1,ID_D3DSETTINGS_TAB2) IPFPLOT%IPLOTLABELS=0 ELSE CALL WDIALOGSELECT(ID_D3DSETTINGS) CALL WDIALOGTABSTATE(IDF_TAB1,ID_D3DSETTINGS_TAB2,0) ENDIF !## iff active IF(NIFFLIST.GT.0)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB3) CALL WDIALOGPUTMENU(IDF_MENU1,IFFPLOT%FNAME,NIFFLIST,IFFPLOT%ISEL) CALL WDIALOGPUTIMAGE(IDF_COLOUR1,ID_ICONLEGEND) CALL WDIALOGSELECT(ID_D3DSETTINGS) IF(NIDFLIST+NIPF.EQ.0)CALL WDIALOGSETTAB(IDF_TAB1,ID_D3DSETTINGS_TAB3) ELSE CALL WDIALOGSELECT(ID_D3DSETTINGS) CALL WDIALOGTABSTATE(IDF_TAB1,ID_D3DSETTINGS_TAB3,0) ENDIF !## solid active IF(ISOLID_3D.GT.0.AND.NSPF.GT.0)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB6) CALL WDIALOGPUTMENU(IDF_MENU1,SPF%FNAME,NSPF,SOLPLOT%ISEL) CALL WDIALOGSELECT(ID_D3DSETTINGS) IF(NIDFLIST+NIPF+NIFFLIST.EQ.0)CALL WDIALOGSETTAB(IDF_TAB1,ID_D3DSETTINGS_TAB6) ELSE CALL WDIALOGSELECT(ID_D3DSETTINGS) CALL WDIALOGTABSTATE(IDF_TAB1,ID_D3DSETTINGS_TAB6,0) ENDIF CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) CALL WDIALOGPUTMENU(IDF_MENU1,CLPPLOT%FNAME,NCLPLIST,CLPPLOT%ISEL) CALL WDIALOGPUTIMAGE(IDF_COLOUR1,ID_ICONLEGEND) !## interactive pathlines active IF(IPATHLINE_3D.GT.0)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS) CALL WDIALOGSETTAB(IDF_TAB1,ID_D3DSETTINGS_TAB8) CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB8) CALL WDIALOGPUTIMAGE(ID_LOCATE,ID_ICONPIPET,1) CALL WDIALOGPUTIMAGE(ID_ADD,ID_ICONPLUS,1) CALL WDIALOGPUTIMAGE(ID_SHOW,ID_ICONGLASSES,1) CALL WDIALOGPUTIMAGE(ID_NEW,ID_ICONNEW,1) CALL WDIALOGPUTIMAGE(ID_COLOUR,ID_ICONLEGEND,1) CALL WDIALOGPUTIMAGE(ID_OPENXYZ,ID_ICONOPEN,1) CALL WDIALOGPUTIMAGE(ID_PROP1,ID_ICONPROPERTIES,1) CALL WDIALOGPUTIMAGE(ID_PROP2,ID_ICONPROPERTIES,1) CALL WDIALOGPUTIMAGE(ID_PROP3,ID_ICONPROPERTIES,1) CALL WDIALOGPUTIMAGE(ID_PROP5,ID_ICONPROPERTIES,1) CALL WDIALOGPUTIMAGE(ID_PROP6,ID_ICONPROPERTIES,1) IF(ALLOCATED(IDFPLOT))THEN CALL WDIALOGPUTMENU(IDF_MENU1,IDFPLOT%DISP_ALIAS,DISP_NIDFLIST,1) CALL IMOD3D_SETTINGSMAIN_FIELDSPL_GRAY(0,1,0,0,0) !##initial field state radio buttons ELSE CALL WDIALOGFIELDSTATE(IDF_RADIO6,2) CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO11) !## layers CALL IMOD3D_SETTINGSMAIN_FIELDSPL_GRAY(0,0,0,1,0) !##initial field state radio buttons ENDIF CALL WDIALOGFIELDSTATE(ID_START,1) CALL WDIALOGFIELDSTATE(ID_STOP,0) CALL WDIALOGPUTINTEGER(IDF_INTEGER11,0) !## number of groups CALL WDIALOGFIELDSTATE(IDF_INTEGER11,2) !## change fieldstate to "only read" CALL WDIALOGPUTINTEGER(IDF_INTEGER5,0) !## number of particles CALL WDIALOGFIELDSTATE(IDF_INTEGER5,2) !## change fieldstate to "only read" CALL WDIALOGPUTOPTION(IDF_MENU3,ISNK+1) !## set spinner steps CALL WDIALOGSPINNERSTEP(IDF_REAL8,0.05,0.1) !## fraction CALL WDIALOGSPINNERSTEP(IDF_REAL4,10.0,100.0) !## total year CALL WDIALOGSPINNERSTEP(IDF_REAL5,0.1,1.0) !## travelsteps (year) CALL WDIALOGSPINNERSTEP(IDF_INTEGER4,1,2) !## tail length CALL WDIALOGSPINNERSTEP(IDF_REAL6,0.1,1.0) !## repeat frequency CALL WDIALOGPUTREAL(IDF_REAL8,FRAC) IF(ISNK.EQ.2)CALL WDIALOGFIELDSTATE(IDF_REAL6,1) CALL WDIALOGSELECT(ID_D3DSETTINGS_IDF) CALL WDIALOGRANGEINTEGER(IDF_INTEGER2,1,NLAY) !## deactivate horizontal synchronisation CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB5) CALL WDIALOGPUTCHECKBOX(IDF_CHECK6,0) CALL WDIALOGFIELDSTATE(IDF_CHECK6,0) ELSE CALL WDIALOGSELECT(ID_D3DSETTINGS) CALL WDIALOGTABSTATE(IDF_TAB1,ID_D3DSETTINGS_TAB8,0) ENDIF IF(NGENLIST.GT.0)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB4) CALL WDIALOGPUTMENU(IDF_MENU1,GENPLOT%FNAME,NGENLIST,GENPLOT%ISEL) CALL WDIALOGPUTIMAGE(IDF_COLOUR1,ID_ICONLEGEND) CALL WDIALOGSELECT(ID_D3DSETTINGS) IF(NIDFLIST+NIPF+NIFFLIST+ISOLID_3D.EQ.0)CALL WDIALOGSETTAB(IDF_TAB1,ID_D3DSETTINGS_TAB4) ELSE CALL WDIALOGSELECT(ID_D3DSETTINGS) CALL WDIALOGTABSTATE(IDF_TAB1,ID_D3DSETTINGS_TAB4,0) ENDIF CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB5) CALL WDIALOGPUTIMAGE(IDF_COLOUR1,ID_ICONLEGEND) CALL WDIALOGPUTIMAGE(IDF_COLOUR2,ID_ICONLEGEND) CALL WDIALOGPUTIMAGE(IDF_COLOUR3,ID_ICONLEGEND) CALL WDIALOGPUTIMAGE(IDF_COLOUR4,ID_ICONLEGEND) IF(NIDFLIST.GT.0)THEN CALL WDIALOGPUTMENU(IDF_MENU1,IDFPLOT%DISP_ALIAS,DISP_NIDFLIST,1) ELSE CALL WDIALOGFIELDSTATE(IDF_RADIO3,3) CALL WDIALOGFIELDSTATE(IDF_MENU1,3) ENDIF IF(IACTBITMAP.EQ.0)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO5) !## no IF(IACTBITMAP.EQ.1)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO3) !## idf IF(IACTBITMAP.EQ.2)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO4) !## horizontally IF(IACTBITMAP.EQ.2)THEN CALL WDIALOGFIELDSTATE(IDF_TRACKBAR1,1) CALL WDIALOGFIELDSTATE(IDF_LABEL10,1) CALL WDIALOGFIELDSTATE(IDF_LABEL11,1) ELSE CALL WDIALOGFIELDSTATE(IDF_TRACKBAR1,0) CALL WDIALOGFIELDSTATE(IDF_LABEL10,0) CALL WDIALOGFIELDSTATE(IDF_LABEL11,0) ENDIF CALL WDIALOGRANGETRACKBAR(IDF_TRACKBAR1,0,100,25) !## show bitmap slightly above the bottom initially CALL WDIALOGPUTTRACKBAR(IDF_TRACKBAR1,99) CALL WDIALOGPUTTRACKBAR(IDF_TRACKBAR7,10) CALL WDIALOGRANGETRACKBAR(IDF_TRACKBAR1,1,180,30) CALL WDIALOGFIELDSTATE(IDF_TRACKBAR6,MIN(1,IACTBITMAP)) CALL WDIALOGFIELDSTATE(IDF_LABEL12,MIN(1,IACTBITMAP)) CALL WDIALOGFIELDSTATE(IDF_LABEL5,MIN(1,IACTBITMAP)) CALL WDIALOGFIELDSTATE(IDF_LABEL9,MIN(1,IACTBITMAP)) CALL WDIALOGPUTTRACKBAR(IDF_TRACKBAR6,ITRANSPARANCYBITMAP) CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB9) CALL WDIALOGPUTIMAGE(ID_SELECT,ID_ICONSELECTPOINT,1) CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB1); CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB2) CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB3); CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB4) CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB5); CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB6) CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB7); CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB9) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB1); CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB3); CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB4) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB5); CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB6) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB7) END SUBROUTINE IMOD3D_SETTINGSINIT !###====================================================================== SUBROUTINE IMOD3D_SETTINGSMAIN(ITYPE,MESSAGE) !###====================================================================== IMPLICIT NONE INTEGER,INTENT(IN) :: ITYPE TYPE(WIN_MESSAGE),INTENT(IN) :: MESSAGE INTEGER :: IIPF,IROW,ICOL,IRGB,I,J,ILEG,PL_ITYPE,DID TYPE(WIN_MESSAGE) :: PL_MESSAGE REAL :: ANGLE,X,Y,Z,D CHARACTER(LEN=256) :: FNAME CALL WDIALOGSELECT(MESSAGE%WIN) SELECT CASE (MESSAGE%WIN) !## main dialog CASE (ID_D3DSETTINGS) SELECT CASE (ITYPE) CASE (KEYDOWN) IF(WALK_MODE.EQ.0)THEN CALL IMOD3D_PROCESSKEYS(MESSAGE%VALUE1) ELSE CALL IMOD3D_PROCESSKEYS_WALK(MESSAGE%VALUE1) ENDIF CASE (MOUSEBUTDOWN,MOUSEBUTUP) CALL IMOD3D_PROCESSMOUSEBUTTON(ITYPE,MESSAGE%VALUE1,MESSAGE%X,MESSAGE%Y) CASE (MOUSEMOVE) IF(WALK_MODE.EQ.0)THEN CALL IMOD3D_PROCESSMOUSEMOVE(MESSAGE%X,MESSAGE%Y) ELSE CALL IMOD3D_PROCESSMOUSEMOVE_WALK(MESSAGE%X,MESSAGE%Y) ENDIF CASE (EXPOSE) CALL IMOD3D_DISPLAY(1) CASE (RESIZE) CALL IMOD3D_PROCESSRESIZE(MESSAGE%VALUE1,MESSAGE%VALUE2) END SELECT !## idf-dialog CASE (ID_D3DSETTINGS_TAB1) SELECT CASE (ITYPE) CASE (FIELDCHANGED) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_MENU1) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB1) !## rescale vertical if desired CALL IMOD3D_SETTINGS_VERTICALAXES() CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB1) !## remove clipping planes for up/down CALL IMOD3D_DELETECLIPPLANE('UP'); CALL IMOD3D_DELETECLIPPLANE('DOWN') !## add/refresh clipping planes for up/down CALL IMOD3D_CLP_ADD( 0.0_GLDOUBLE,0.0_GLDOUBLE,-1.0_GLDOUBLE, 0.0_GLDOUBLE,0.0_GLDOUBLE,TOP%Z,'UP') CALL IMOD3D_CLP_ADD( 0.0_GLDOUBLE,0.0_GLDOUBLE, 1.0_GLDOUBLE, 0.0_GLDOUBLE,0.0_GLDOUBLE,BOT%Z,'DOWN') CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) CALL WDIALOGPUTMENU(IDF_MENU1,CLPPLOT%FNAME,NCLPLIST,CLPPLOT%ISEL) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF CASE (IDF_CHECK3,IDF_CHECK2,IDF_TRACKBAR1) !## shading/plotlegend/transparancy IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB1,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB1) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF !## (a) colouring according a single colour (b) legend colouring CASE (IDF_RADIO1,IDF_RADIO2) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB1,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB1) CALL UTL_MESSAGEHANDLE(0) !## recompute current idf IF(.NOT.IMOD3D_REDRAWIDF(0))THEN; ENDIF IF(.NOT.IMOD3D_REDRAWIDF(1))THEN; ENDIF CALL UTL_MESSAGEHANDLE(1) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF !## wireframe,colouring,stacked idf CASE (IDF_RADIO3,IDF_RADIO4,IDF_RADIO5,IDF_TRACKBAR2) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB1,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB1) CALL IMOD3D_DISPLAY(1) ENDIF END SELECT CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_COLOUR1) CALL IMOD3D_SETTINGSCOLOUR(MESSAGE%VALUE1,ID_D3DSETTINGS_TAB1) CASE (ID_PROPERTIES) !## refresh if needed ... IF(IMOD3D_SETTINGS_IDF(1))THEN CALL IMOD3D_SETTINGS_IDF_ALIAS() IDFPLOT%ISEL=1 CALL UTL_MESSAGEHANDLE(0) !## recompute current idf IF(.NOT.IMOD3D_REDRAWIDF(0))THEN; ENDIF IF(.NOT.IMOD3D_REDRAWIDF(1))THEN; ENDIF CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB1,MESSAGE%VALUE2) CALL UTL_MESSAGEHANDLE(1) CALL IMOD3D_SETUPDISPLAY_MISC(.TRUE.) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF END SELECT END SELECT !## ipf-dialog CASE (ID_D3DSETTINGS_TAB2) SELECT CASE (ITYPE) CASE (FIELDCHANGED) SELECT CASE (MESSAGE%VALUE2) !## from field - store result first, before overwrite it CASE (IDF_MENU1,IDF_MENU2,IDF_GRID1) IF(MESSAGE%VALUE1.NE.MESSAGE%VALUE2)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB2) CALL WDIALOGGETMENU(IDF_MENU1,IPFPLOT%ISEL) IF(SUM(IPFPLOT%ISEL).EQ.1)THEN DO IIPF=1,SIZE(IPFPLOT); IF(IPFPLOT(IIPF)%ISEL.EQ.1)EXIT; ENDDO CALL WDIALOGGETMENU(IDF_MENU2,ILEG) CALL IPFGETVALUE_GETCOLOURS(ID_D3DSETTINGS_TAB2,ILEG) ENDIF ENDIF END SELECT SELECT CASE (MESSAGE%VALUE1) !## change in menu field CASE (IDF_MENU1) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN !## plot new legend CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB2) CALL WDIALOGGETMENU(IDF_MENU1,IPFPLOT%ISEL) IF(SUM(IPFPLOT%ISEL).EQ.1)THEN DO IIPF=1,SIZE(IPFPLOT); IF(IPFPLOT(IIPF)%ISEL.EQ.1)EXIT; ENDDO CALL WDIALOGGETMENU(IDF_MENU2,ILEG) ILEG=IPFPLOT(IIPF)%ILEGDLF CALL WDIALOGFIELDSTATE(IDF_MENU2,1) CALL WDIALOGPUTOPTION(IDF_MENU2,ILEG) CALL IPFGETVALUE_PLOTCOLOURS(ID_D3DSETTINGS_TAB2,ILEG) ELSE CALL WDIALOGFIELDSTATE(IDF_MENU2,0) ENDIF CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB2) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF CASE (IDF_MENU2) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN !## plot new legend CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB2) CALL WDIALOGGETMENU(IDF_MENU1,IPFPLOT%ISEL) IF(SUM(IPFPLOT%ISEL).EQ.1)THEN DO IIPF=1,SIZE(IPFPLOT); IF(IPFPLOT(IIPF)%ISEL.EQ.1)EXIT; ENDDO CALL WDIALOGGETMENU(IDF_MENU2,ILEG) IPFPLOT(IIPF)%ILEGDLF=ILEG CALL IPFGETVALUE_PLOTCOLOURS(ID_D3DSETTINGS_TAB2,ILEG) ENDIF CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF CASE (IDF_CHECK1,IDF_CHECK2) !## labeling/plotlegend IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB2,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB2) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF ! CASE (IDF_CHECK2) !## plotlegend ! IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN ! CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB2,MESSAGE%VALUE2) ! CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB2) ! CALL IMOD3D_LEGEND_MAIN() ! CALL IMOD3D_DISPLAY(1) ! ENDIF CASE (IDF_GRID1) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB2) CALL WDIALOGGETMENU(IDF_MENU2,ILEG) CALL WGRIDPOS(MESSAGE%Y,ICOL,IROW) IF(ICOL.EQ.2)THEN IF(MESSAGE%Y.NE.MESSAGE%X)THEN IRGB=BH(ILEG,IROW)%LITHOCLR CALL WSELECTCOLOUR(IRGB) IF(WINFODIALOG(4).EQ.1)THEN CALL WGRIDPUTCELLINTEGER(IDF_GRID1,2,IROW,IRGB) CALL IPFGETVALUE_GETCOLOURS(ID_D3DSETTINGS_TAB2,ILEG) CALL IPFGETVALUE_PLOTCOLOURS(ID_D3DSETTINGS_TAB2,ILEG) !## force another cell after colour selection CALL WGRIDSETCELL(IDF_GRID1,1,IROW) ENDIF ENDIF ENDIF ENDIF END SELECT CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (ID_PROPERTIES) DO IIPF=1,NIPF; IF(IPFPLOT(IIPF)%ISEL.EQ.1)EXIT; ENDDO !## refresh if needed ... CALL IMOD3D_LABELS(IIPF,IPFPLOT(IIPF)%IPLOT) !## fill display with drills IF(.NOT.IMOD3D_IPF())THEN; ENDIF !# refresh image and labels CALL IMOD3D_IPF_LABELS() CALL IMOD3D_IPF_SELECTION(IIPF) CALL IMOD3D_DISPLAY(1) CASE (ID_SELECTION) !## refresh if needed ... DO IIPF=1,NIPF; IF(IPFPLOT(IIPF)%ISEL.EQ.1)EXIT; ENDDO IF(IMOD3D_SETTINGS_IPF(IIPF))CALL IMOD3D_DISPLAY(1) CASE (IDF_COLOUR1) CALL IMOD3D_SETTINGSCOLOUR(MESSAGE%VALUE1,ID_D3DSETTINGS_TAB2) !## reload *.dlf file CASE (ID_OPEN) CALL WDIALOGGETMENU(IDF_MENU2,ILEG) CALL IPFGETVALUE_OPENSAVECOLOURS('',MESSAGE%VALUE1,ID_D3DSETTINGS_TAB2,ILEG) CALL UTL_MESSAGEHANDLE(0); IF(.NOT.IMOD3D_IPF())THEN; ENDIF; CALL UTL_MESSAGEHANDLE(1) DO IIPF=1,NIPF; IF(IPFPLOT(IIPF)%ISEL.EQ.1)EXIT; ENDDO; CALL IMOD3D_IPF_SELECTION(IIPF) CALL IMOD3D_IPF_LABELS() CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) !## save *.dlf file CASE (ID_SAVEAS) CALL WDIALOGGETMENU(IDF_MENU2,ILEG) CALL IPFGETVALUE_OPENSAVECOLOURS('',MESSAGE%VALUE1,ID_D3DSETTINGS_TAB2,ILEG) !## redraw canvas based upon updates of colouring information CASE (ID_REDRAW) CALL IPFGETVALUE_GETCOLOURS(ID_D3DSETTINGS_TAB2,ILEG) CALL UTL_MESSAGEHANDLE(0); IF(.NOT.IMOD3D_IPF())THEN; ENDIF; CALL UTL_MESSAGEHANDLE(1) DO IIPF=1,NIPF; IF(IPFPLOT(IIPF)%ISEL.EQ.1)EXIT; ENDDO; CALL IMOD3D_IPF_SELECTION(IIPF) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) END SELECT END SELECT !## iff-dialog CASE (ID_D3DSETTINGS_TAB3) SELECT CASE (ITYPE) CASE (FIELDCHANGED) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_MENU1) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB3) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB3) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF CASE (IDF_CHECK1) !## plotlegend IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB3,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB3) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF CASE (IDF_INTEGER2) CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB3,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSMENU() CALL IMOD3D_DISPLAY(1) CASE (IDF_RADIO1,IDF_RADIO2) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB3,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB3) CALL UTL_MESSAGEHANDLE(0) !## recompute current idf IF(.NOT.IMOD3D_REDRAWIFF())THEN ENDIF CALL UTL_MESSAGEHANDLE(1) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) ENDIF END SELECT CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_COLOUR1) CALL IMOD3D_SETTINGSCOLOUR(MESSAGE%VALUE1,ID_D3DSETTINGS_TAB3) END SELECT END SELECT !## sol-dialog CASE (ID_D3DSETTINGS_TAB6) SELECT CASE (ITYPE) CASE (FIELDCHANGED) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_MENU1) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB6) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB6) CALL IMOD3D_DISPLAY(1) ENDIF CASE (IDF_CHECK2,IDF_TRACKBAR1) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB6,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB6) CALL IMOD3D_DISPLAY(1) ENDIF CASE (IDF_CHECK3) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB6,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB6) CALL UTL_MESSAGEHANDLE(0) IF(.NOT.IMOD3D_SOL())THEN; ENDIF CALL IMOD3D_DISPLAY(1) CALL UTL_MESSAGEHANDLE(1) ENDIF END SELECT CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_COLOUR1) CALL IMOD3D_SETTINGSCOLOUR(MESSAGE%VALUE1,ID_D3DSETTINGS_TAB6) END SELECT END SELECT !## clipplanes-dialog CASE (ID_D3DSETTINGS_TAB7) SELECT CASE (ITYPE) CASE (FIELDCHANGED) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_MENU1) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB7) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB7) CALL IMOD3D_DISPLAY(1) ENDIF CASE (IDF_INTEGER2) CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB7,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSMENU() CALL IMOD3D_DISPLAY(1) END SELECT CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_COLOUR1) CALL IMOD3D_SETTINGSCOLOUR(MESSAGE%VALUE1,ID_D3DSETTINGS_TAB7) ! CASE (ID_NEW) ! CALL IMOD3D_CLP_ADD(0.0_GLDOUBLE,0.0_GLDOUBLE,0.0_GLDOUBLE,0.0_GLDOUBLE,0.0_GLDOUBLE,0.0_GLDOUBLE,'') ! CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB7) ! CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB7) ! CALL IMOD3D_DISPLAY(1) ! CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) ! IF(NCLPLIST-2.GE.SIZE(CLPPLOT))CALL WDIALOGFIELDSTATE(ID_NEW,0) ! CASE (ID_DELETE) ! CALL IMOD3D_DELETECLIPPLANE('') END SELECT END SELECT !## gen-dialog CASE (ID_D3DSETTINGS_TAB4) SELECT CASE (ITYPE) CASE (FIELDCHANGED) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_MENU1) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB4) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB4) CALL IMOD3D_DISPLAY(1) ENDIF CASE (IDF_INTEGER2,IDF_TRACKBAR1) CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB4,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSMENU() CALL IMOD3D_DISPLAY(1) END SELECT CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_COLOUR1) CALL IMOD3D_SETTINGSCOLOUR(MESSAGE%VALUE1,ID_D3DSETTINGS_TAB4) END SELECT END SELECT !## misc-dialog CASE (ID_D3DSETTINGS_TAB5) SELECT CASE (ITYPE) CASE (FIELDCHANGED) SELECT CASE (MESSAGE%VALUE2) CASE (IDF_CHECK6) CALL WDIALOGGETCHECKBOX(IDF_CHECK6,I) IF(I.EQ.1)CALL IMOD3D_DISPLAY_UPDATE(MPW%XMIN,MPW%YMIN,MPW%XMAX,MPW%YMAX) CASE (IDF_CHECK1,IDF_CHECK2,IDF_CHECK5,IDF_CHECK7) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB5,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB5) CALL IMOD3D_DISPLAY(1) ENDIF !## show bitmap currently shown !## change position of bitmap CASE (IDF_TRACKBAR1,IDF_TRACKBAR6) IF(.NOT.IMOD3D_BMP())THEN; ENDIF CALL IMOD3D_DISPLAY(1) !## fovy (view-angle) CASE (IDF_TRACKBAR7) CALL WDIALOGGETTRACKBAR(IDF_TRACKBAR7,I) FOVY=I CALL GLMATRIXMODE(GL_PROJECTION); CALL GLLOADIDENTITY() CALL GLUPERSPECTIVE(FOVY,RAT,ZNEAR,ZFAR) !## angle(fovy), aspect (ratio:w/h), near () and far() CALL IMOD3D_SETLOOKAT_LOOKFROM() CALL IMOD3D_RESET_TO_INIT() CALL IMOD3D_DISPLAY(1) !## display background image CASE (IDF_RADIO3,IDF_RADIO4,IDF_RADIO5) IF(MESSAGE%VALUE1.EQ.MESSAGE%VALUE2)THEN CALL IMOD3D_SETTINGSGET(ID_D3DSETTINGS_TAB5,MESSAGE%VALUE2) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB5) IF(.NOT.IMOD3D_BMP())THEN; ENDIF CALL IMOD3D_DISPLAY(1) ENDIF !## light CASE (IDF_TRACKBAR2,IDF_TRACKBAR3,IDF_TRACKBAR4) CALL IMOD3D_LIGHT() CALL IMOD3D_DISPLAY(1) !## light position CASE (IDF_TRACKBAR5) CALL WDIALOGGETTRACKBAR(IDF_TRACKBAR5,I) ANGLE=360.0/(2.0*PI) X=COS(REAL(I)/ANGLE) Y=SIN(REAL(I)/ANGLE) Z=1.0 D=SQRT(X**2.0+Y**2.0+Z**2.0) X=X/D; Y=Y/D; Z=Z/D D=SQRT(X**2.0+Y**2.0+Z**2.0) POS(1)=-1.0*X POS(2)=-1.0*Y POS(3)=-1.0*Z CALL IMOD3D_DISPLAY(1) END SELECT CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (IDF_COLOUR1,IDF_COLOUR2,IDF_COLOUR3,IDF_COLOUR4) CALL IMOD3D_SETTINGSCOLOUR(MESSAGE%VALUE1,ID_D3DSETTINGS_TAB5) CASE (ID_ZSCALE) CALL IMOD3D_SETTINGS_VERTICALAXES() CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB5) ! CALL WDIALOGGETCHECKBOX(IDF_CHECK7,I) !## remove clipping planes for up/down CALL IMOD3D_DELETECLIPPLANE('UP'); CALL IMOD3D_DELETECLIPPLANE('DOWN') !## add/refresh clipping planes for up/down CALL IMOD3D_CLP_ADD( 0.0_GLDOUBLE,0.0_GLDOUBLE,-1.0_GLDOUBLE, 0.0_GLDOUBLE,0.0_GLDOUBLE,TOP%Z,'UP') CALL IMOD3D_CLP_ADD( 0.0_GLDOUBLE,0.0_GLDOUBLE, 1.0_GLDOUBLE, 0.0_GLDOUBLE,0.0_GLDOUBLE,BOT%Z,'DOWN') ! CALL IMOD3D_CLP_ADD( 1.0_GLDOUBLE,0.0_GLDOUBLE, 0.0_GLDOUBLE,-4.0_GLDOUBLE,0.0_GLDOUBLE,0.0_GLDOUBLE,'West') ! CALL IMOD3D_CLP_ADD(-1.0_GLDOUBLE,0.0_GLDOUBLE, 0.0_GLDOUBLE, 4.0_GLDOUBLE,0.0_GLDOUBLE,0.0_GLDOUBLE,'East') ! CALL IMOD3D_CLP_ADD( 1.0_GLDOUBLE,0.0_GLDOUBLE, 0.0_GLDOUBLE,-4.0_GLDOUBLE,0.0_GLDOUBLE,0.0_GLDOUBLE,'North') ! CALL IMOD3D_CLP_ADD(-1.0_GLDOUBLE,0.0_GLDOUBLE, 0.0_GLDOUBLE, 4.0_GLDOUBLE,0.0_GLDOUBLE,0.0_GLDOUBLE,'South') CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) CALL WDIALOGPUTMENU(IDF_MENU1,CLPPLOT%FNAME,NCLPLIST,CLPPLOT%ISEL) CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB7) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB7) CALL IMOD3D_DISPLAY(1) CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) ! CASE (ID_ZSCALE2) ! CALL IMOD3D_HORIZONTALAXES() ! CALL IMOD3D_DISPLAY(1) ! CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) END SELECT END SELECT !## pathline-dialog CASE (ID_D3DSETTINGS_TAB8) SELECT CASE (ITYPE) CASE (FIELDCHANGED) CALL IMOD3D_SETTINGSMAIN_FIELDSPL(MESSAGE) CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) !## location CASE (ID_PROP4) CALL TRACE_3D_STARTPOINTS_MAIN(); CALL TRACE_3D_STARTPOINTS_SHOW(); CALL IMOD3D_DISPLAY(1) !## location CASE (ID_PROP1,ID_PROP2,ID_PROP3,ID_PROP5,ID_PROP6) IF(MESSAGE%VALUE1.EQ.ID_PROP1)CALL WDIALOGSELECT(ID_D3DSETTINGS_LOCATION) IF(MESSAGE%VALUE1.EQ.ID_PROP2)THEN CALL WDIALOGGETMENU(IDF_MENU2,I); CALL WDIALOGGETREAL(IDF_REAL10,X) CALL WDIALOGSELECT(ID_D3DSETTINGS_SINKS) CALL WDIALOGPUTOPTION(IDF_MENU2,I); CALL WDIALOGPUTREAL(IDF_REAL10,X) CALL WDIALOGGETMENU(IDF_MENU2,I); J=1; IF(I.EQ.1)J=0 CALL WDIALOGFIELDSTATE(IDF_MENU3,I); CALL WDIALOGFIELDSTATE(IDF_REAL11,I) ENDIF IF(MESSAGE%VALUE1.EQ.ID_PROP3)CALL WDIALOGSELECT(ID_D3DSETTINGS_LAYER) IF(MESSAGE%VALUE1.EQ.ID_PROP5)CALL WDIALOGSELECT(ID_D3DSETTINGS_IDF) IF(MESSAGE%VALUE1.EQ.ID_PROP6)CALL WDIALOGSELECT(ID_D3DSETTINGS_IDF) DID=WINFODIALOG(CURRENTDIALOG) CALL WDIALOGSHOW(-1,-1,0,3) DO CALL WMESSAGE(PL_ITYPE,PL_MESSAGE) SELECT CASE (PL_ITYPE) CASE (FIELDCHANGED) SELECT CASE (PL_MESSAGE%VALUE2) CASE (IDF_MENU4) CALL WDIALOGGETMENU(IDF_MENU4,I); J=1; IF(I.EQ.1)J=0 CALL WDIALOGFIELDSTATE(IDF_MENU3,I); CALL WDIALOGFIELDSTATE(IDF_REAL11,I) END SELECT CASE (EXPOSE) CALL IMOD3D_DISPLAY(1) CASE (PUSHBUTTON) SELECT CASE (PL_MESSAGE%VALUE1) CASE (IDOK,IDCANCEL) IF(MESSAGE%VALUE1.EQ.ID_PROP2)THEN CALL WDIALOGGETMENU(IDF_MENU2,I); CALL WDIALOGGETREAL(IDF_REAL10,X) CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB8) CALL WDIALOGPUTOPTION(IDF_MENU2,I); CALL WDIALOGPUTREAL(IDF_REAL10,X) ENDIF EXIT END SELECT END SELECT ENDDO CALL WDIALOGSELECT(DID); CALL WDIALOGHIDE(); CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB8) CASE (ID_OPENXYZ) IF(.NOT.UTL_WSELECTFILE('iMOD Map (*.ipf,*.idf)|*.ipf;*.idf|',& LOADDIALOG+MUSTEXIST+PROMPTON+DIRCHANGE+APPENDEXT,FNAME,'Load iMOD Map (*.ipf;*.idf)'))RETURN CALL WDIALOGPUTSTRING(IDF_STRING2,TRIM(FNAME)) !## start new CASE (ID_NEW) CALL TRACE_3D_STARTPOINTS_RESET() IF(TRACE_3D_RESET(0))THEN; ENDIF CALL TRACE_3D_STARTPOINTS_SHOW() CALL IMOD3D_DISPLAY(1) !## add starting point to the list CASE (ID_ADD) CALL TRACE_3D_STARTPOINTS(); CALL TRACE_3D_STARTPOINTS_SHOW(); CALL IMOD3D_DISPLAY(1) !## change colour CASE (ID_COLOUR) IRGB=PL%SPCOLOR; CALL WSELECTCOLOUR(IRGB); IF(WINFODIALOG(4).EQ.1)PL%SPCOLOR=IRGB; CALL WDIALOGCOLOUR(IDF_LABEL17,IRGB,IRGB) CASE (ID_START) IF(PL%IRUN.EQ.0)THEN IF(TRACE_3D_RESET(1))THEN !## set the startpoints CALL TRACE_AL_SPR() CALL WDIALOGFIELDSTATE(ID_STOP,1) CALL WDIALOGPUTSTRING(ID_START,'Pause'); PL%IRUN=1 CALL WDIALOGFIELDSTATE(IDF_RADIO1,0); CALL WDIALOGFIELDSTATE(IDF_RADIO2,0) CALL WDIALOGFIELDSTATE(ID_NEW,0); CALL WDIALOGFIELDSTATE(ID_ADD,0) CALL WDIALOGFIELDSTATE(IDF_INTEGER4,2) ENDIF ELSEIF(PL%IRUN.EQ.1)THEN CALL WDIALOGPUTSTRING(ID_START,'Continue'); PL%IRUN=-1 ELSEIF(PL%IRUN.EQ.-1)THEN CALL WDIALOGPUTSTRING(ID_START,'Pause'); PL%IRUN=1 ENDIF CASE (ID_STOP) CALL TRACE_3D_COMPUTE_STOP() END SELECT END SELECT !## identify-dialog CASE (ID_D3DSETTINGS_TAB9) SELECT CASE (ITYPE) CASE (FIELDCHANGED) SELECT CASE (MESSAGE%VALUE2) END SELECT CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (ID_SELECT) CALL IMOD3D_SELECTOBJECT() END SELECT END SELECT END SELECT END SUBROUTINE IMOD3D_SETTINGSMAIN !###====================================================================== SUBROUTINE IMOD3D_SETTINGSMAIN_FIELDSPL(MESSAGE) !###====================================================================== IMPLICIT NONE TYPE(WIN_MESSAGE),INTENT(IN) :: MESSAGE INTEGER :: I SELECT CASE (MESSAGE%VALUE2) CASE (IDF_CHECK7) CALL WDIALOGGETCHECKBOX(IDF_CHECK7,I) I=ABS(I-1); CALL WDIALOGFIELDSTATE(IDF_CHECK8,I) CASE (IDF_CHECK8) CALL WDIALOGGETCHECKBOX(IDF_CHECK8,I) CALL WDIALOGFIELDSTATE(IDF_REAL6,I) I=ABS(I-1); CALL WDIALOGFIELDSTATE(IDF_CHECK7,I) CASE (IDF_CHECK6) CALL WDIALOGGETCHECKBOX(IDF_CHECK6,I) CALL WDIALOGFIELDSTATE(IDF_MENU4,I) CASE (IDF_MENU3) CALL WDIALOGGETMENU(IDF_MENU3,I) IF(I.NE.3)THEN CALL WDIALOGFIELDSTATE(IDF_REAL8,2) ELSE CALL WDIALOGFIELDSTATE(IDF_REAL8,1) ENDIF CASE (ID_SHOW) CALL WDIALOGGETCHECKBOX(ID_SHOW,PL%IPLOTSP); CALL IMOD3D_DISPLAY(1) CASE (IDF_RADIO1,IDF_RADIO2) !## switch IF(MESSAGE%VALUE1.NE.MESSAGE%VALUE2)THEN PL%IREV=ABS(PL%IREV-1) !## equal particle direction SP%IREV=PL%IREV CALL TRACEIREV() ENDIF CASE (IDF_RADIO5) !# Area CALL IMOD3D_SETTINGSMAIN_FIELDSPL_GRAY(1,0,0,0,0) CASE (IDF_RADIO6) !# IDF CALL IMOD3D_SETTINGSMAIN_FIELDSPL_GRAY(0,1,0,0,0) CASE (IDF_RADIO7) !# Sink CALL IMOD3D_SETTINGSMAIN_FIELDSPL_GRAY(0,0,1,0,0) CASE (IDF_RADIO8) !# File CALL IMOD3D_SETTINGSMAIN_FIELDSPL_GRAY(0,0,0,1,0) CASE (IDF_RADIO11) !# Layer CALL IMOD3D_SETTINGSMAIN_FIELDSPL_GRAY(0,0,0,0,1) END SELECT END SUBROUTINE IMOD3D_SETTINGSMAIN_FIELDSPL !###====================================================================== SUBROUTINE IMOD3D_SETTINGSMAIN_FIELDSPL_GRAY(J,K,L,M,N) !###====================================================================== IMPLICIT NONE INTEGER,INTENT(IN) :: J,K,L,M,N CALL WDIALOGFIELDSTATE(ID_LOCATE,J) CALL WDIALOGFIELDSTATE(ID_PROP1,J) CALL WDIALOGFIELDSTATE(IDF_MENU1,K) CALL WDIALOGFIELDSTATE(ID_PROP5,K) CALL WDIALOGFIELDSTATE(IDF_CHECK5,L) CALL WDIALOGFIELDSTATE(IDF_MENU2,L) CALL WDIALOGFIELDSTATE(IDF_REAL10,L) CALL WDIALOGFIELDSTATE(ID_PROP2,L) CALL WDIALOGFIELDSTATE(IDF_STRING2,M) CALL WDIALOGFIELDSTATE(ID_OPENXYZ,M) CALL WDIALOGFIELDSTATE(ID_PROP6,M) CALL WDIALOGFIELDSTATE(IDF_RADIO12,N) CALL WDIALOGFIELDSTATE(IDF_RADIO13,N) CALL WDIALOGFIELDSTATE(IDF_RADIO14,N) CALL WDIALOGFIELDSTATE(IDF_RADIO15,N) CALL WDIALOGFIELDSTATE(IDF_RADIO16,N) CALL WDIALOGFIELDSTATE(ID_PROP3,N) END SUBROUTINE IMOD3D_SETTINGSMAIN_FIELDSPL_GRAY !###====================================================================== SUBROUTINE IMOD3D_DELETECLIPPLANE(CLIPNAME) !###====================================================================== IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: CLIPNAME INTEGER :: I CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) IF(LEN_TRIM(CLIPNAME).EQ.0)THEN DO I=1,SIZE(CLPPLOT); IF(CLPPLOT(I)%ISEL.EQ.1)EXIT; ENDDO ELSE DO I=1,SIZE(CLPPLOT); IF(TRIM(CLPPLOT(I)%FNAME).EQ.TRIM(CLIPNAME))EXIT; ENDDO ENDIF IF(I.GT.SIZE(CLPPLOT))RETURN CLPPLOT(I:SIZE(CLPPLOT)-1)=CLPPLOT(I+1:SIZE(CLPPLOT)); NCLPLIST=NCLPLIST-1 ! CALL WDIALOGPUTMENU(IDF_MENU1,CLPPLOT%FNAME,NCLPLIST,CLPPLOT%ISEL) ! IF(NCLPLIST-2.LT.SIZE(CLPPLOT))CALL WDIALOGFIELDSTATE(ID_NEW,1) ! IF(NCLPLIST.LE.0)CALL WDIALOGFIELDSTATE(ID_DELETE,0) END SUBROUTINE IMOD3D_DELETECLIPPLANE !###====================================================================== SUBROUTINE IMOD3D_SETTINGS_VERTICALAXES() !###====================================================================== IMPLICIT NONE INTEGER :: I,J REAL :: Z1,Z2 LOGICAL :: LADJTB REAL(KIND=GLDOUBLE) :: TB,BB !## not adjusted top/bottom LADJTB=.FALSE.; TB=TOP%Z; BB=BOT%Z CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB5) !## minimal z values given CALL WDIALOGGETCHECKBOX(IDF_CHECK7,I) IF(I.EQ.1)THEN CALL WDIALOGGETREAL(IDF_REAL1,Z1); CALL WDIALOGGETREAL(IDF_REAL2,Z2) IF(Z1.LE.Z2)THEN CALL WMESSAGEBOX(OKONLY,EXCLAMATIONICON,COMMONOK,'Whenever you give a minimal/maximal z-value, make'//CHAR(13)// & 'sure the minimal z value is less than the maximal value','Error') ELSE TOP%Z=Z1; BOT%Z=Z2 ENDIF ELSE !## recompute based upon selected IDF files CALL WDIALOGGETCHECKBOX(IDF_CHECK4,I) IF(I.EQ.1)THEN BOT%Z= 1.0E10_GLFLOAT; TOP%Z=-1.0E10_GLFLOAT !## get new top/bottom z values DO I=1,DISP_NIDFLIST J=IDFPLOT(I)%DISP_ILIST IF(IDFPLOT(J)%ISEL.EQ.1)THEN IF(IDFPLOT(J)%ZMIN.NE.IDFPLOT(J)%ZMAX)THEN BOT%Z=MIN(BOT%Z,IDFPLOT(J)%ZMIN); TOP%Z=MAX(TOP%Z,IDFPLOT(J)%ZMAX) ENDIF ENDIF END DO ELSE BOT%Z=1.0E10_GLFLOAT; TOP%Z=-1.0E10_GLFLOAT !## get new top/bottom z values DO I=1,DISP_NIDFLIST; J=IDFPLOT(I)%DISP_ILIST IF(IDFPLOT(J)%ZMIN.LE.IDFPLOT(J)%ZMAX)THEN BOT%Z=MIN(BOT%Z,IDFPLOT(J)%ZMIN); TOP%Z=MAX(TOP%Z,IDFPLOT(J)%ZMAX) ENDIF END DO ENDIF Z1=TOP%Z; Z2=BOT%Z; CALL WDIALOGPUTREAL(IDF_REAL1,Z1); CALL WDIALOGPUTREAL(IDF_REAL2,Z2) ENDIF LADJTB=(TB.NE.TOP%Z.OR.BB.NE.BOT%Z) !## reconstruct environment CALL IMOD3D_SETUPDISPLAY_MISC(LADJTB) END SUBROUTINE IMOD3D_SETTINGS_VERTICALAXES !###====================================================================== SUBROUTINE IMOD3D_DISPLAY_UPDATE(XMIN,YMIN,XMAX,YMAX) !###====================================================================== IMPLICIT NONE REAL,INTENT(IN) :: XMIN,YMIN,XMAX,YMAX INTEGER :: I CALL WINDOWSELECT(0); IF(WMENUGETSTATE(ID_3DTOOL,2).EQ.0)RETURN !## do synchronize 2d plane CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB5); CALL WDIALOGGETCHECKBOX(IDF_CHECK6,I) IF(I.EQ.0)RETURN XYZAXES(1)=4.0_GLFLOAT XYZAXES(2)=4.0_GLFLOAT XYZAXES(3)=2.0_GLFLOAT BOT%X=XMIN; BOT%Y=YMIN; TOP%X=XMAX; TOP%Y=YMAX IF(.NOT.IMOD3D_SETTINGS_UPDATE_DISPLAY())THEN CALL IMOD3D_CLOSE() ELSE IREADBMP=0; IF(.NOT.IMOD3D_BMP())THEN; ENDIF CALL IMOD3D_DISPLAY(1) ENDIF END SUBROUTINE IMOD3D_DISPLAY_UPDATE !###====================================================================== LOGICAL FUNCTION IMOD3D_SETTINGS_UPDATE_DISPLAY() !###====================================================================== IMPLICIT NONE REAL :: DXY IMOD3D_SETTINGS_UPDATE_DISPLAY=.FALSE. !## turn all message off CALL UTL_MESSAGEHANDLE(0) DXY=(TOP%Y-BOT%Y)/(TOP%X-BOT%X) IF(DXY.GT.1.0)THEN XYZAXES(1)=XYZAXES(1)/DXY ELSE XYZAXES(2)=XYZAXES(2)*DXY ENDIF !## set mid-location of view MIDPOS%X=(TOP%X+BOT%X)/2.0_GLDOUBLE MIDPOS%Y=(TOP%Y+BOT%Y)/2.0_GLDOUBLE !## dividing for opengl coordinate system VIEWDX=(TOP%X-BOT%X)/2.0_GLFLOAT/XYZAXES(1); VIEWDY=(TOP%Y-BOT%Y)/2.0_GLFLOAT/XYZAXES(2) !## neccessary for axeslabels XSCALE_FACTOR= INIT_XSCALE_FACTOR YSCALE_FACTOR= INIT_YSCALE_FACTOR ZSCALE_FACTOR= INIT_ZSCALE_FACTOR !## fill display with idf's !## draw planes/cubes/voxels IF(IMOD3D_REDRAWIDF(0))THEN; ENDIF !## draw vectors IF(IMOD3D_REDRAWIDF(1))THEN; ENDIF !## fill display with drills IF(.NOT.IMOD3D_IPF())THEN; ENDIF !# refresh image and labels CALL IMOD3D_IPF_LABELS() !## recompute current idf IF(.NOT.IMOD3D_REDRAWIFF())RETURN !## construct miscellaneous features CALL IMOD3D_SETUPDISPLAY_MISC(.TRUE.) !## reset viewing properties and draw image CALL IMOD3D_RESET_TO_INIT() !## turn all message on CALL UTL_MESSAGEHANDLE(1) CALL IMOD3D_ERROR('IMOD3D_SETUPDISPLAY') IMOD3D_SETTINGS_UPDATE_DISPLAY=.TRUE. END FUNCTION IMOD3D_SETTINGS_UPDATE_DISPLAY !###====================================================================== SUBROUTINE IMOD3D_SETTINGSCOLOUR(ID,ITAB) !###====================================================================== IMPLICIT NONE INTEGER,INTENT(IN) :: ID,ITAB INTEGER :: I,IRGB CALL WDIALOGSELECT(ITAB) SELECT CASE (ITAB) !## idf CASE (ID_D3DSETTINGS_TAB1) CALL WDIALOGGETMENU(IDF_MENU1,IDFPLOT%DISP_ISEL) IDFPLOT%ISEL=0; DO I=1,DISP_NIDFLIST; IF(IDFPLOT(I)%DISP_ISEL.EQ.1)IDFPLOT(IDFPLOT(I)%DISP_ILIST)%ISEL=1; ENDDO IF(SUM(IDFPLOT(1:NIDFLIST)%ISEL).EQ.0)RETURN CALL WDIALOGGETINTEGER(IDF_INTEGER1,IRGB) CALL WSELECTCOLOUR(IRGB); IF(WINFODIALOG(4).NE.1)RETURN DO I=1,NIDFLIST; IF(IDFPLOT(I)%ISEL.EQ.1)IDFPLOT(I)%ICOLOR=IRGB; ENDDO !## ipf CASE (ID_D3DSETTINGS_TAB2) CALL WDIALOGGETINTEGER(IDF_INTEGER1,IRGB) CALL WSELECTCOLOUR(IRGB); IF(WINFODIALOG(4).NE.1)RETURN LCOLOR=IRGB !## iff CASE (ID_D3DSETTINGS_TAB3) CALL WDIALOGGETMENU(IDF_MENU1,IFFPLOT%ISEL) IF(SUM(IFFPLOT(1:NIFFLIST)%ISEL).EQ.0)RETURN CALL WDIALOGGETINTEGER(IDF_INTEGER1,IRGB) CALL WSELECTCOLOUR(IRGB); IF(WINFODIALOG(4).NE.1)RETURN DO I=1,NIFFLIST; IF(IFFPLOT(I)%ISEL.EQ.1)MP(IFFPLOT(I)%IPLOT)%SCOLOR=IRGB; END DO !## sol CASE (ID_D3DSETTINGS_TAB6) !## gen CASE (ID_D3DSETTINGS_TAB4) CALL WDIALOGGETMENU(IDF_MENU1,GENPLOT%ISEL) IF(SUM(GENPLOT(1:NGENLIST)%ISEL).EQ.0)RETURN CALL WDIALOGGETINTEGER(IDF_INTEGER1,IRGB) CALL WSELECTCOLOUR(IRGB); IF(WINFODIALOG(4).NE.1)RETURN DO I=1,NGENLIST; IF(GENPLOT(I)%ISEL.EQ.1)GENPLOT(I)%ICOLOR=IRGB; ENDDO !## clipplanes CASE (ID_D3DSETTINGS_TAB7) CALL WDIALOGGETMENU(IDF_MENU1,CLPPLOT%ISEL) IF(SUM(CLPPLOT(1:NCLPLIST)%ISEL).EQ.0)RETURN DO I=1,NCLPLIST; IF(CLPPLOT(I)%ISEL.EQ.1)EXIT; END DO CALL WDIALOGGETINTEGER(IDF_INTEGER1,IRGB) CALL WSELECTCOLOUR(IRGB); IF(WINFODIALOG(4).NE.1)RETURN CLPPLOT(I)%ICOLOR=IRGB !## misc CASE (ID_D3DSETTINGS_TAB5) IF(ID.EQ.IDF_COLOUR1)CALL WDIALOGGETINTEGER(IDF_INTEGER1,IRGB) IF(ID.EQ.IDF_COLOUR2)CALL WDIALOGGETINTEGER(IDF_INTEGER2,IRGB) IF(ID.EQ.IDF_COLOUR3)CALL WDIALOGGETINTEGER(IDF_INTEGER3,IRGB) IF(ID.EQ.IDF_COLOUR4)CALL WDIALOGGETINTEGER(IDF_INTEGER4,IRGB) CALL WSELECTCOLOUR(IRGB) IF(WINFODIALOG(4).NE.1)RETURN IF(ID.EQ.IDF_COLOUR1)BCOLOR=IRGB IF(ID.EQ.IDF_COLOUR3)ACOLOR=IRGB IF(ID.EQ.IDF_COLOUR2)OCOLOR=IRGB IF(ID.EQ.IDF_COLOUR4)BGCOLOR=IRGB END SELECT CALL IMOD3D_SETTINGSPUT(ITAB) CALL IMOD3D_SETTINGSFIELDS(ITAB) CALL IMOD3D_LEGEND_MAIN() CALL IMOD3D_DISPLAY(1) END SUBROUTINE IMOD3D_SETTINGSCOLOUR !###====================================================================== SUBROUTINE IMOD3D_SETTINGSALL(ID,IOPT) !###====================================================================== IMPLICIT NONE INTEGER,INTENT(IN) :: ID,IOPT INTEGER :: I DO I=1,NIDFLIST SELECT CASE (ID) CASE (ID_3DVIEW_SOLID) IDFPLOT(I)%IFILL=1 CASE (ID_3DVIEW_WIREFRAME) IDFPLOT(I)%IFILL=2 CASE (ID_3DVIEW_SOLIDWIREFRAME) IDFPLOT(I)%IFILL=3 CASE (ID_3DVIEW_SHADES_ON,ID_3DVIEW_SHADES_OFF) IDFPLOT(I)%ISHADED=IOPT CASE (ID_3DVIEW_SINGLECOLOUR) IDFPLOT(I)%ILEG=1 CASE (ID_3DVIEW_LEGENDCOLOUR) IDFPLOT(I)%ILEG=2 CASE (ID_3DVIEW_LEGEND) IDFPLOT(I)%IPLOTLEGEND=IOPT END SELECT END DO IF(ID.EQ.ID_3DVIEW_AXES_ON) IAXES=IOPT IF(ID.EQ.ID_3DVIEW_AXES_OFF)IAXES=IOPT IF(ID.EQ.ID_3DVIEW_ORIENTATION_ON) IORIENT=IOPT IF(ID.EQ.ID_3DVIEW_ORIENTATION_OFF)IORIENT=IOPT !## put adjustments on dialog CALL IMOD3D_SETTINGSPUT(ID_D3DSETTINGS_TAB1) CALL IMOD3D_SETTINGSFIELDS(ID_D3DSETTINGS_TAB1) END SUBROUTINE IMOD3D_SETTINGSALL !###====================================================================== SUBROUTINE IMOD3D_SETTINGSPUT(ID) !###====================================================================== IMPLICIT NONE INTEGER,INTENT(IN) :: ID INTEGER :: I !## setting tab1 IF(NIDFLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB1)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB1) CALL WDIALOGGETMENU(IDF_MENU1,IDFPLOT%DISP_ISEL) IDFPLOT%ISEL=0; DO I=1,DISP_NIDFLIST; IF(IDFPLOT(I)%DISP_ISEL.EQ.1)IDFPLOT(IDFPLOT(I)%DISP_ILIST)%ISEL=1; ENDDO IF(SUM(IDFPLOT(1:NIDFLIST)%ISEL).GT.0)THEN DO I=1,NIDFLIST IF(IDFPLOT(I)%ISEL.EQ.1)THEN IF(IDFPLOT(I)%IFILL.EQ.1)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO3) !## colouring IF(IDFPLOT(I)%IFILL.EQ.2)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO4) !## fishnet IF(IDFPLOT(I)%IFILL.EQ.3)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO5) !## colouring+fishnet CALL WDIALOGPUTCHECKBOX(IDF_CHECK3,IDFPLOT(I)%ISHADED) CALL WDIALOGPUTCHECKBOX(IDF_CHECK2,IDFPLOT(I)%IPLOTLEGEND) CALL WDIALOGPUTINTEGER(IDF_INTEGER1,IDFPLOT(I)%ICOLOR) IF(IDFPLOT(I)%ILEG.EQ.1)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO1) !## 1=one color IF(IDFPLOT(I)%ILEG.EQ.2)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO2) !## 2=legend CALL WDIALOGPUTTRACKBAR(IDF_TRACKBAR1,IDFPLOT(I)%ITRANSPARANCY) CALL WDIALOGPUTTRACKBAR(IDF_TRACKBAR2,IDFPLOT(I)%ISTACKED) EXIT ENDIF ENDDO ENDIF ENDIF !## setting tab2 IF(NIPF.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB2)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB2) CALL WDIALOGGETMENU(IDF_MENU1,IPFPLOT%ISEL) DO I=1,SIZE(IPFPLOT) IF(IPFPLOT(I)%ISEL.EQ.1)THEN CALL WDIALOGPUTCHECKBOX(IDF_CHECK2,IPFPLOT(I)%IPLOTLEGEND) CALL WDIALOGPUTINTEGER(IDF_INTEGER1,LCOLOR) CALL WDIALOGPUTCHECKBOX(IDF_CHECK1,IPFPLOT(I)%IPLOTLABELS) EXIT ENDIF ENDDO ENDIF !## setting tab3 IF(NIFFLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB3)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB3) CALL WDIALOGGETMENU(IDF_MENU1,IFFPLOT%ISEL) IF(SUM(IFFPLOT(1:NIFFLIST)%ISEL).GT.0)THEN DO I=1,NIFFLIST IF(IFFPLOT(I)%ISEL.EQ.1)THEN IF(MP(IFFPLOT(I)%IPLOT)%ILEG.EQ.0)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO1) !## 1=one color IF(MP(IFFPLOT(I)%IPLOT)%ILEG.EQ.1)CALL WDIALOGPUTRADIOBUTTON(IDF_RADIO2) !## 2=legend CALL WDIALOGPUTCHECKBOX(IDF_CHECK1,IFFPLOT(I)%IPLOTLEGEND) CALL WDIALOGPUTINTEGER(IDF_INTEGER1,MP(IFFPLOT(I)%IPLOT)%SCOLOR) CALL WDIALOGPUTINTEGER(IDF_INTEGER2,IFFPLOT(I)%ITHICKNESS) EXIT ENDIF ENDDO ENDIF ENDIF !## setting tab6 IF(NSOLLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB6)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB6) CALL WDIALOGGETMENU(IDF_MENU1,SOLPLOT%ISEL) IF(SUM(SOLPLOT(1:NSOLLIST)%ISEL).GT.0)THEN DO I=1,NSOLLIST IF(SOLPLOT(I)%ISEL.EQ.1)THEN CALL WDIALOGPUTTRACKBAR(IDF_TRACKBAR1,SOLPLOT(I)%IBLEND) !## blending percentage CALL WDIALOGPUTCHECKBOX(IDF_CHECK2,SOLPLOT(I)%IBITMAP) !## show bitmaps CALL WDIALOGPUTCHECKBOX(IDF_CHECK3,SOLPLOT(I)%IINTERFACE) !## show interface EXIT ENDIF ENDDO ENDIF ENDIF !## setting tab4 IF(NGENLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB4)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB4) CALL WDIALOGGETMENU(IDF_MENU1,GENPLOT%ISEL) IF(SUM(GENPLOT(1:NGENLIST)%ISEL).GT.0)THEN DO I=1,NGENLIST IF(GENPLOT(I)%ISEL.EQ.1)THEN CALL WDIALOGPUTINTEGER(IDF_INTEGER1,GENPLOT(I)%ICOLOR) CALL WDIALOGPUTINTEGER(IDF_INTEGER2,GENPLOT(I)%ITHICKNESS) CALL WDIALOGPUTTRACKBAR(IDF_TRACKBAR1,GENPLOT(I)%ITRANSPARANCY) EXIT ENDIF ENDDO ENDIF ENDIF !## setting tab7 IF(ID.EQ.ID_D3DSETTINGS_TAB7)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) CALL WDIALOGGETMENU(IDF_MENU1,CLPPLOT%ISEL) IF(SUM(CLPPLOT(1:NCLPLIST)%ISEL).GT.0)THEN DO I=1,NCLPLIST IF(CLPPLOT(I)%ISEL.EQ.1)THEN CALL WDIALOGPUTINTEGER(IDF_INTEGER1,CLPPLOT(I)%ICOLOR) CALL WDIALOGPUTINTEGER(IDF_INTEGER2,CLPPLOT(I)%ITHICKNESS) EXIT ENDIF ENDDO ENDIF ENDIF !## setting tab5 IF(ID.EQ.ID_D3DSETTINGS_TAB5)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB5) CALL WDIALOGPUTCHECKBOX(IDF_CHECK1,IBNDBOX) CALL WDIALOGPUTCHECKBOX(IDF_CHECK5,IAXES) CALL WDIALOGPUTCHECKBOX(IDF_CHECK2,IORIENT) CALL WDIALOGPUTINTEGER(IDF_INTEGER1,BCOLOR) CALL WDIALOGPUTINTEGER(IDF_INTEGER2,OCOLOR) CALL WDIALOGPUTINTEGER(IDF_INTEGER3,ACOLOR) CALL WDIALOGPUTINTEGER(IDF_INTEGER4,BGCOLOR) CALL IMOD3D_SETTINGSPUT_INDPOS() ENDIF !## setting tab9 IF(ID.EQ.ID_D3DSETTINGS_TAB9)THEN !## disable tab IF(NIPFLIST.EQ.0)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS) CALL WDIALOGTABSTATE(IDF_TAB1,ID_D3DSETTINGS_TAB9,0) ELSE CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB9) CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB9_TAB1) IF(NIDFLIST.GT.0)THEN CALL WGRIDROWS(IDF_GRID1,NIDFLIST) CALL WGRIDPUTSTRING(IDF_GRID1,1,IDFPLOT%ALIAS,NIDFLIST) ALLOCATE(NANSTRING(NIDFLIST)) NANSTRING='NaN' CALL WGRIDPUTSTRING(IDF_GRID1,2,NANSTRING,NIDFLIST) ELSE CALL WDIALOGFIELDSTATE(IDF_GRID1,3) ENDIF ENDIF ENDIF END SUBROUTINE IMOD3D_SETTINGSPUT !###====================================================================== SUBROUTINE IMOD3D_SETTINGSGET(ID,JD) !###====================================================================== IMPLICIT NONE INTEGER,INTENT(IN) :: ID,JD INTEGER :: I,K !## setting tab1 IF(NIDFLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB1)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB1) CALL WDIALOGGETMENU(IDF_MENU1,IDFPLOT%DISP_ISEL) IDFPLOT%ISEL=0; DO I=1,DISP_NIDFLIST; IF(IDFPLOT(I)%DISP_ISEL.EQ.1)IDFPLOT(IDFPLOT(I)%DISP_ILIST)%ISEL=1; ENDDO IF(SUM(IDFPLOT(1:NIDFLIST)%ISEL).GT.0)THEN K=0 DO I=1,NIDFLIST IF(IDFPLOT(I)%ISEL.EQ.1)THEN K=K+1 IF(JD.EQ.IDF_RADIO3.OR.JD.EQ.IDF_RADIO4.OR.JD.EQ.IDF_RADIO5)CALL WDIALOGGETRADIOBUTTON(IDF_RADIO3,IDFPLOT(I)%IFILL) !## colouring !## get only the first ... IF(K.EQ.1.AND.JD.EQ.IDF_INTEGER1)CALL WDIALOGGETINTEGER(IDF_INTEGER1,IDFPLOT(I)%ICOLOR) !## default colour IF(JD.EQ.IDF_RADIO1.OR.JD.EQ.IDF_RADIO2)CALL WDIALOGGETRADIOBUTTON(IDF_RADIO1,IDFPLOT(I)%ILEG) !## 1=one color,2=legend colour IF(JD.EQ.IDF_CHECK3)CALL WDIALOGGETCHECKBOX(IDF_CHECK3,IDFPLOT(I)%ISHADED) !## shade IF(JD.EQ.IDF_CHECK2)CALL WDIALOGGETCHECKBOX(IDF_CHECK2,IDFPLOT(I)%IPLOTLEGEND) !## plotlegend IF(JD.EQ.IDF_TRACKBAR1)CALL WDIALOGGETTRACKBAR(IDF_TRACKBAR1,IDFPLOT(I)%ITRANSPARANCY) !## transparancy value IF(JD.EQ.IDF_TRACKBAR2)CALL WDIALOGGETTRACKBAR(IDF_TRACKBAR2,IDFPLOT(I)%ISTACKED) !## stacked idf-files ENDIF END DO ENDIF ENDIF !## setting tab2 IF(NIPF.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB2)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB2) CALL WDIALOGGETMENU(IDF_MENU1,IPFPLOT%ISEL) DO I=1,SIZE(IPFPLOT); IF(IPFPLOT(I)%ISEL.EQ.1)THEN IF(JD.EQ.IDF_CHECK2)CALL WDIALOGGETCHECKBOX(IDF_CHECK2,IPFPLOT(I)%IPLOTLEGEND) !## plotlegend IF(JD.EQ.IDF_CHECK1)CALL WDIALOGGETCHECKBOX(IDF_CHECK1,IPFPLOT(I)%IPLOTLABELS) !## label ipf ENDIF; ENDDO IF(JD.EQ.IDF_INTEGER1)CALL WDIALOGGETINTEGER(IDF_INTEGER1,LCOLOR) ENDIF !## setting tab3 IF(NIFFLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB3)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB3) CALL WDIALOGGETMENU(IDF_MENU1,IFFPLOT%ISEL) IF(SUM(IFFPLOT(1:NIFFLIST)%ISEL).GT.0)THEN DO I=1,NIFFLIST; IF(IFFPLOT(I)%ISEL.EQ.1)EXIT; END DO IF(JD.EQ.IDF_RADIO1.OR.JD.EQ.IDF_RADIO2)THEN CALL WDIALOGGETRADIOBUTTON(IDF_RADIO1,MP(IFFPLOT(I)%IPLOT)%ILEG) !## 1=one color,2=legend colour MP(IFFPLOT(I)%IPLOT)%ILEG=MP(IFFPLOT(I)%IPLOT)%ILEG-1 ENDIF IF(JD.EQ.IDF_CHECK1) CALL WDIALOGGETCHECKBOX(IDF_CHECK1,IFFPLOT(I)%IPLOTLEGEND) !## plotlegend IF(JD.EQ.IDF_INTEGER1)CALL WDIALOGGETINTEGER(IDF_INTEGER1,MP(IFFPLOT(I)%IPLOT)%SCOLOR) IF(JD.EQ.IDF_INTEGER2)CALL WDIALOGGETINTEGER(IDF_INTEGER2,IFFPLOT(I)%ITHICKNESS) ENDIF ENDIF !## setting tab6 IF(NSOLLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB6)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB6) CALL WDIALOGGETMENU(IDF_MENU1,SOLPLOT%ISEL) IF(SUM(SOLPLOT(1:NSOLLIST)%ISEL).GT.0)THEN DO I=1,NSOLLIST; IF(SOLPLOT(I)%ISEL.EQ.1)THEN IF(JD.EQ.IDF_TRACKBAR1)CALL WDIALOGGETTRACKBAR(IDF_TRACKBAR1,SOLPLOT(I)%IBLEND) !## blending percentage IF(JD.EQ.IDF_CHECK2)CALL WDIALOGGETCHECKBOX(IDF_CHECK2,SOLPLOT(I)%IBITMAP) !## showing bitmaps IF(JD.EQ.IDF_CHECK3)CALL WDIALOGGETCHECKBOX(IDF_CHECK3,SOLPLOT(I)%IINTERFACE) !## show interfaces ENDIF; END DO ENDIF ENDIF !## setting tab4 IF(NGENLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB4)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB4) CALL WDIALOGGETMENU(IDF_MENU1,GENPLOT%ISEL) IF(SUM(GENPLOT(1:NGENLIST)%ISEL).GT.0)THEN DO I=1,NGENLIST; IF(GENPLOT(I)%ISEL.EQ.1)EXIT; END DO IF(JD.EQ.IDF_INTEGER1)CALL WDIALOGGETINTEGER(IDF_INTEGER1,GENPLOT(I)%ICOLOR) IF(JD.EQ.IDF_INTEGER2)CALL WDIALOGGETINTEGER(IDF_INTEGER2,GENPLOT(I)%ITHICKNESS) CALL WDIALOGGETTRACKBAR(IDF_TRACKBAR1,GENPLOT(I)%ITRANSPARANCY) ENDIF ENDIF !## setting tab7 IF(ID.EQ.ID_D3DSETTINGS_TAB7)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) CALL WDIALOGGETMENU(IDF_MENU1,CLPPLOT%ISEL) IF(SUM(CLPPLOT(1:NCLPLIST)%ISEL).GT.0)THEN DO I=1,NCLPLIST; IF(CLPPLOT(I)%ISEL.EQ.1)EXIT; END DO IF(JD.EQ.IDF_INTEGER1)CALL WDIALOGGETINTEGER(IDF_INTEGER1,CLPPLOT(I)%ICOLOR) IF(JD.EQ.IDF_INTEGER2)CALL WDIALOGGETINTEGER(IDF_INTEGER2,CLPPLOT(I)%ITHICKNESS) ENDIF ENDIF !## setting tab5 IF(ID.EQ.ID_D3DSETTINGS_TAB5)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB5) IF(JD.EQ.IDF_CHECK1) CALL WDIALOGGETCHECKBOX(IDF_CHECK1,IBNDBOX) IF(JD.EQ.IDF_CHECK5) CALL WDIALOGGETCHECKBOX(IDF_CHECK5,IAXES) IF(JD.EQ.IDF_CHECK2) CALL WDIALOGGETCHECKBOX(IDF_CHECK2,IORIENT) IF(JD.EQ.IDF_INTEGER1)CALL WDIALOGGETINTEGER(IDF_INTEGER1,BCOLOR) IF(JD.EQ.IDF_INTEGER2)CALL WDIALOGGETINTEGER(IDF_INTEGER2,OCOLOR) IF(JD.EQ.IDF_INTEGER3)CALL WDIALOGGETINTEGER(IDF_INTEGER3,ACOLOR) IF(JD.EQ.IDF_INTEGER4)CALL WDIALOGGETINTEGER(IDF_INTEGER4,BGCOLOR) IF(JD.EQ.IDF_RADIO5.OR.JD.EQ.IDF_RADIO3.OR.JD.EQ.IDF_RADIO4)THEN CALL WDIALOGGETRADIOBUTTON(IDF_RADIO5,IACTBITMAP); IACTBITMAP=IACTBITMAP-1 IF(IACTBITMAP.EQ.2)THEN CALL WDIALOGFIELDSTATE(IDF_TRACKBAR1,1) CALL WDIALOGFIELDSTATE(IDF_LABEL10,1) CALL WDIALOGFIELDSTATE(IDF_LABEL11,1) ELSE CALL WDIALOGFIELDSTATE(IDF_TRACKBAR1,0) CALL WDIALOGFIELDSTATE(IDF_LABEL10,0) CALL WDIALOGFIELDSTATE(IDF_LABEL11,0) ENDIF CALL WDIALOGFIELDSTATE(IDF_TRACKBAR6,MIN(1,IACTBITMAP)) CALL WDIALOGFIELDSTATE(IDF_LABEL12,MIN(1,IACTBITMAP)) CALL WDIALOGFIELDSTATE(IDF_LABEL5,MIN(1,IACTBITMAP)) CALL WDIALOGFIELDSTATE(IDF_LABEL9,MIN(1,IACTBITMAP)) ENDIF IF(JD.EQ.IDF_TRACKBAR6)CALL WDIALOGGETTRACKBAR(IDF_TRACKBAR6,ITRANSPARANCYBITMAP) ! IF(JD.EQ.IDF_CHECK7)THEN ! CALL WDIALOGGETCHECKBOX(IDF_CHECK7,I) ! IF(I.EQ.0)THEN ! CALL IMOD3D_DELETECLIPPLANE('UP'); CALL IMOD3D_DELETECLIPPLANE('DOWN') ! ENDIF ! ENDIF ENDIF END SUBROUTINE IMOD3D_SETTINGSGET !###====================================================================== SUBROUTINE IMOD3D_SETTINGSMENU() !###====================================================================== IMPLICIT NONE INTEGER :: I,ION,ILG CALL WINDOWSELECT(IWIN) !## check menu-items if all selected/non-selected IF(NIDFLIST.GT.0)THEN ION =0; ILG=0 DO I=1,NIDFLIST IF(IDFPLOT(I)%ISHADED.EQ.1)ION=1 IF(IDFPLOT(I)%IPLOTLEGEND.EQ.1)ILG=1 ENDDO CALL WMENUSETSTATE(ID_3DVIEW_SHADES_OFF,ITEMCHECKED,0) CALL WMENUSETSTATE(ID_3DVIEW_SHADES_ON,ITEMCHECKED,0) IF(ION.EQ.0)CALL WMENUSETSTATE(ID_3DVIEW_SHADES_OFF,ITEMCHECKED,1) IF(ION.EQ.1)CALL WMENUSETSTATE(ID_3DVIEW_SHADES_ON ,ITEMCHECKED,1) CALL WMENUSETSTATE(ID_3DVIEW_LEGEND,ITEMCHECKED,ILG) ELSE CALL WMENUSETSTATE(ID_3DVIEW_SOLID,ITEMENABLED,0) CALL WMENUSETSTATE(ID_3DVIEW_WIREFRAME,ITEMENABLED,0) CALL WMENUSETSTATE(ID_3DVIEW_SOLIDWIREFRAME,ITEMENABLED,0) CALL WMENUSETSTATE(ID_3DVIEW_SHADES,ITEMENABLED,0) ENDIF CALL WMENUSETSTATE(ID_3DVIEW_AXES_ON,ITEMCHECKED,0) CALL WMENUSETSTATE(ID_3DVIEW_AXES_OFF,ITEMCHECKED,0) IF(IAXES.EQ.0)CALL WMENUSETSTATE(ID_3DVIEW_AXES_OFF,ITEMCHECKED,1) IF(IAXES.EQ.1)CALL WMENUSETSTATE(ID_3DVIEW_AXES_ON,ITEMCHECKED,1) CALL WMENUSETSTATE(ID_3DVIEW_ORIENTATION_ON,ITEMCHECKED,0) CALL WMENUSETSTATE(ID_3DVIEW_ORIENTATION_OFF,ITEMCHECKED,0) IF(IORIENT.EQ.0)CALL WMENUSETSTATE(ID_3DVIEW_ORIENTATION_OFF,ITEMCHECKED,1) IF(IORIENT.EQ.1)CALL WMENUSETSTATE(ID_3DVIEW_ORIENTATION_ON,ITEMCHECKED,1) END SUBROUTINE IMOD3D_SETTINGSMENU !###====================================================================== SUBROUTINE IMOD3D_SETTINGSFIELDS(ID) !###====================================================================== IMPLICIT NONE INTEGER,INTENT(IN) :: ID INTEGER :: I,J IF(NIDFLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB1)THEN !## setting tab1 CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB1) CALL WDIALOGGETMENU(IDF_MENU1,IDFPLOT%DISP_ISEL) IDFPLOT%ISEL=0; DO I=1,DISP_NIDFLIST; IF(IDFPLOT(I)%DISP_ISEL.EQ.1)IDFPLOT(IDFPLOT(I)%DISP_ILIST)%ISEL=1; ENDDO J=0 !## at least one selected IF(SUM(IDFPLOT(1:NIDFLIST)%ISEL).GT.0)J=1 CALL WDIALOGFIELDSTATE(IDF_GROUP1,J); CALL WDIALOGFIELDSTATE(IDF_GROUP2,J) CALL WDIALOGFIELDSTATE(IDF_RADIO1,J); CALL WDIALOGFIELDSTATE(IDF_RADIO2,J) CALL WDIALOGFIELDSTATE(IDF_RADIO3,J); CALL WDIALOGFIELDSTATE(IDF_RADIO4,J) CALL WDIALOGFIELDSTATE(IDF_RADIO5,J); CALL WDIALOGFIELDSTATE(IDF_TRACKBAR1,J) CALL WDIALOGFIELDSTATE(IDF_LABEL4,J); CALL WDIALOGFIELDSTATE(IDF_LABEL5,J) CALL WDIALOGFIELDSTATE(IDF_LABEL9,J); CALL WDIALOGFIELDSTATE(IDF_TRACKBAR2,J) CALL WDIALOGFIELDSTATE(IDF_LABEL6,J) IF(J.EQ.1)THEN CALL WDIALOGFIELDSTATE(IDF_RADIO3,J) CALL WDIALOGGETRADIOBUTTON(IDF_RADIO3,I) IF(I.EQ.3)I=1; CALL WDIALOGFIELDSTATE(IDF_CHECK3,I) !## shading CALL WDIALOGGETRADIOBUTTON(IDF_RADIO1,I) CALL WDIALOGFIELDSTATE(IDF_INTEGER1,I) CALL WDIALOGFIELDSTATE(IDF_COLOUR1,I) CALL WDIALOGGETINTEGER(IDF_INTEGER1,I) CALL WDIALOGCOLOUR(IDF_INTEGER1,I,I) ! IF(SUM(IDFPLOT(1:NIDFLIST)%ISEL).GT.1)J=3 ! IF(J.EQ.3)CALL WDIALOGPUTSTRING(IDF_LABEL1,'Apply to all selected IDF files') ELSE CALL WDIALOGFIELDSTATE(IDF_CHECK3,J) !## shading CALL WDIALOGFIELDSTATE(IDF_INTEGER1,J) CALL WDIALOGFIELDSTATE(IDF_COLOUR1,J) ! CALL WDIALOGFIELDSTATE(IDF_LABEL1,3) ENDIF ENDIF !## setting tab2 IF(NIPF.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB2)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB2) CALL WDIALOGGETMENU(IDF_MENU1,IPFPLOT%ISEL) CALL WDIALOGFIELDSTATE(ID_PROPERTIES,MAX(0,MIN(1,SUM(IPFPLOT%ISEL)))) CALL WDIALOGGETCHECKBOX(IDF_CHECK1,I) CALL WDIALOGFIELDSTATE(IDF_COLOUR1,I) CALL WDIALOGCOLOUR(IDF_INTEGER1,LCOLOR,LCOLOR) ENDIF !## setting tab3 IF(NIFFLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB3)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB3) CALL WDIALOGGETMENU(IDF_MENU1,IFFPLOT%ISEL) J=0 IF(SUM(IFFPLOT(1:NIFFLIST)%ISEL).EQ.1)J=1 CALL WDIALOGFIELDSTATE(IDF_GROUP2,J) CALL WDIALOGFIELDSTATE(IDF_RADIO1,J) CALL WDIALOGFIELDSTATE(IDF_RADIO2,J) CALL WDIALOGFIELDSTATE(IDF_LABEL1,J) CALL WDIALOGFIELDSTATE(IDF_INTEGER2,J) CALL WDIALOGGETRADIOBUTTON(IDF_RADIO1,I) I=ABS(I-2) I=MIN(I,J) CALL WDIALOGFIELDSTATE(IDF_INTEGER1,I) CALL WDIALOGFIELDSTATE(IDF_COLOUR1,I) CALL WDIALOGGETINTEGER(IDF_INTEGER1,I) CALL WDIALOGCOLOUR(IDF_INTEGER1,I,I) ENDIF !## setting tab6 IF(NSOLLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB6)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB6) CALL WDIALOGGETMENU(IDF_MENU1,SOLPLOT%ISEL) ENDIF !## setting tab4 IF(NGENLIST.GT.0.AND.ID.EQ.ID_D3DSETTINGS_TAB4)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB4) CALL WDIALOGGETMENU(IDF_MENU1,GENPLOT%ISEL) J=0 IF(SUM(GENPLOT(1:NGENLIST)%ISEL).EQ.1)J=1 CALL WDIALOGFIELDSTATE(IDF_LABEL1,J) CALL WDIALOGFIELDSTATE(IDF_LABEL2,J) CALL WDIALOGFIELDSTATE(IDF_INTEGER2,J) CALL WDIALOGFIELDSTATE(IDF_INTEGER1,J) CALL WDIALOGFIELDSTATE(IDF_COLOUR1,J) CALL WDIALOGGETINTEGER(IDF_INTEGER1,I) CALL WDIALOGCOLOUR(IDF_INTEGER1,I,I) ENDIF !## setting tab7 IF(ID.EQ.ID_D3DSETTINGS_TAB7)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB7) CALL WDIALOGGETMENU(IDF_MENU1,CLPPLOT%ISEL) J=0 IF(SUM(CLPPLOT(1:NCLPLIST)%ISEL).EQ.1)J=1 CALL WDIALOGFIELDSTATE(IDF_LABEL1,J) CALL WDIALOGFIELDSTATE(IDF_LABEL2,J) CALL WDIALOGFIELDSTATE(IDF_INTEGER2,J) CALL WDIALOGFIELDSTATE(IDF_INTEGER1,J) CALL WDIALOGFIELDSTATE(IDF_COLOUR1,J) CALL WDIALOGGETINTEGER(IDF_INTEGER1,I) CALL WDIALOGCOLOUR(IDF_INTEGER1,I,I) ENDIF !## setting tab5 IF(ID.EQ.ID_D3DSETTINGS_TAB5)THEN CALL WDIALOGSELECT(ID_D3DSETTINGS_TAB5) !## draw bounding box CALL WDIALOGGETCHECKBOX(IDF_CHECK1,I) CALL WDIALOGFIELDSTATE(IDF_COLOUR1,I) CALL WDIALOGCOLOUR(IDF_INTEGER1,BCOLOR,BCOLOR) !## draw axes CALL WDIALOGGETCHECKBOX(IDF_CHECK5,I) CALL WDIALOGFIELDSTATE(IDF_COLOUR3,I) CALL WDIALOGCOLOUR(IDF_INTEGER3,ACOLOR,ACOLOR) !## draw orientation box CALL WDIALOGGETCHECKBOX(IDF_CHECK2,I) CALL WDIALOGFIELDSTATE(IDF_COLOUR2,I) CALL WDIALOGCOLOUR(IDF_INTEGER2,OCOLOR,OCOLOR) CALL WDIALOGCOLOUR(IDF_INTEGER4,BGCOLOR,BGCOLOR) !## display current window CALL WDIALOGGETRADIOBUTTON(IDF_RADIO5,I) J=0; IF(I.EQ.2)J=1; CALL WDIALOGFIELDSTATE(IDF_MENU1,J) J=0; IF(I.EQ.3)J=1; CALL WDIALOGFIELDSTATE(IDF_TRACKBAR1,J) CALL WDIALOGGETCHECKBOX(IDF_CHECK7,I) CALL WDIALOGFIELDSTATE(IDF_REAL1,I) CALL WDIALOGFIELDSTATE(IDF_REAL2,I) CALL WDIALOGFIELDSTATE(ID_ZSCALE,I) ENDIF CALL IMOD3D_SETTINGSMENU() END SUBROUTINE IMOD3D_SETTINGSFIELDS END MODULE MOD_3D_SETTINGS