00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068 #include "GreyLab.h"
00069
00070 #include <fstream>
00071 #include <iostream>
00072 #include <ctime>
00073
00074 #include "icons.h"
00075
00076
00077
00078
00079 #define FLIP_BUTTON "±"
00080
00081
00082
00083 FXDEFMAP(GreyLabWindow) GreyLabWindowMap[]={
00084 FXMAPFUNCS(SEL_COMMAND, GreyLabWindow::ID_KEYWORD, GreyLabWindow::ID_KEYWORD+36, GreyLabWindow::cmdKeyword),
00085 FXMAPFUNCS(SEL_COMMAND, GreyLabWindow::ID_GS_STOREDLABEL, GreyLabWindow::ID_GS_STOREDLABEL+NUM_STORED_LABELS-1, GreyLabWindow::cmdUseStoredLabels),
00086 FXMAPFUNCS(SEL_COMMAND, GreyLabWindow::ID_LS_STOREDLABEL, GreyLabWindow::ID_LS_STOREDLABEL+NUM_STORED_LABELS-1, GreyLabWindow::cmdUseStoredLabels),
00087 FXMAPFUNCS(SEL_COMMAND, GreyLabWindow::ID_HM_STOREDLABEL, GreyLabWindow::ID_HM_STOREDLABEL+NUM_STORED_LABELS-1, GreyLabWindow::cmdUseStoredLabels),
00088
00089 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_PANEL, GreyLabWindow::cmdPanel),
00090 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LOADPROJ, GreyLabWindow::cmdLoadProject),
00091 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LOADPROJPLOT, GreyLabWindow::cmdLoadProjectPlot),
00092 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_SAVEPROJ, GreyLabWindow::cmdSaveProject),
00093 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_BROWSE, GreyLabWindow::cmdLoadBrowse),
00094 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LOAD, GreyLabWindow::cmdLoad),
00095 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LOADMETHOD, GreyLabWindow::cmdLoadMethod),
00096 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_ACORNEXPORT, GreyLabWindow::cmdAcornExport),
00097 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_TEXTFONT, GreyLabWindow::cmdSelectTextFont),
00098 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_SYMFONT, GreyLabWindow::cmdSelectSymbolFont),
00099 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_NUMFONT, GreyLabWindow::cmdSelectNumberFont),
00100 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_AAMETHOD, GreyLabWindow::cmdBuildFont),
00101 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_DRAWMODEOFF, GreyLabWindow::cmdDrawModeOff),
00102 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_ALL_REDRAW, GreyLabWindow::cmdAllRedraw),
00103
00104 FXMAPFUNC(SEL_SELECTED, GreyLabWindow::ID_SD_SWEEPS, GreyLabWindow::cmdSDSelectSweeps),
00105 FXMAPFUNC(SEL_DESELECTED, GreyLabWindow::ID_SD_SWEEPS, GreyLabWindow::cmdSDSelectSweeps),
00106 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_SD_SWEEPS, GreyLabWindow::cmdSDSelectSweeps),
00107
00108 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_DA_YSDCHANGE, GreyLabWindow::cmdDAysdChange),
00109 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_DA_YSDCHANGE, GreyLabWindow::cmdDAysdChange),
00110 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_DA_RANGE, GreyLabWindow::cmdDARangeChange),
00111 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_DA_SWEEPCHANGE, GreyLabWindow::cmdDASweepChange),
00112 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_DA_AUTOX, GreyLabWindow::cmdDAAutoTarget),
00113 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_DA_XRANGE, GreyLabWindow::cmdDAXChange),
00114 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_DA_SSELECT, GreyLabWindow::cmdDASSelect),
00115 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_DA_XPARSE, GreyLabWindow::cmdDAParse),
00116 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_DA_YPARSE, GreyLabWindow::cmdDAParse),
00117 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_DA_ZPARSE, GreyLabWindow::cmdDAParse),
00118 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_DA_PROCESS, GreyLabWindow::cmdDAProcess),
00119 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_DA_EXPORT, GreyLabWindow::cmdDAExport),
00120
00121 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_FLIPX, GreyLabWindow::cmdGSFlipX),
00122 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_FLIPY, GreyLabWindow::cmdGSFlipY),
00123 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_SYMMETRICZ, GreyLabWindow::cmdGSSymmetricZ),
00124 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_GS_DIALZ, GreyLabWindow::cmdGSDialZ),
00125 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_DIALZ, GreyLabWindow::cmdGSDialZ),
00126 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_AUTORANGE, GreyLabWindow::cmdGSAutoRange),
00127 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_ZROUND, GreyLabWindow::cmdGSSetZRange),
00128 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_SAVELABELS, GreyLabWindow::cmdSaveLabels),
00129
00130 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_DRAW, GreyLabWindow::cmdGSDrawPalette),
00131 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_ZOOMBACK, GreyLabWindow::cmdGSZoomBack),
00132 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_LOADGRAD, GreyLabWindow::cmdGSLoadGrad),
00133 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_SAVEGRAD, GreyLabWindow::cmdGSSaveGrad),
00134 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_RECALCREQ, GreyLabWindow::cmdGSRecalcReq),
00135 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_PLANE, GreyLabWindow::cmdGSPlane),
00136 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_CLEARPLANE, GreyLabWindow::cmdGSRemovePlane),
00137 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_EXPORT, GreyLabWindow::cmdGSExport),
00138 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_REDRAW, GreyLabWindow::cmdGSRedraw),
00139 FXMAPFUNC(SEL_LEFTBUTTONRELEASE, GreyLabWindow::ID_GS_GRAD, GreyLabWindow::cmdGSRedraw),
00140 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_GS_GRAD, GreyLabWindow::cmdGSGradient),
00141 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_GRADIENT, GreyLabWindow::cmdGSEditGradient),
00142 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_BROWSE, GreyLabWindow::cmdGSBrowse),
00143 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_SAVE, GreyLabWindow::cmdGSSave),
00144 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_GS_HIRES, GreyLabWindow::cmdGSHiresSave),
00145
00146 FXMAPFUNC(SEL_LEFTBUTTONPRESS, LineWinDialog::ID_LS_ZOOM, GreyLabWindow::cmdLSZoom),
00147 FXMAPFUNC(SEL_LEFTBUTTONRELEASE, LineWinDialog::ID_LS_ZOOM, GreyLabWindow::cmdLSZoom),
00148 FXMAPFUNC(SEL_MOTION, LineWinDialog::ID_LS_ZOOM, GreyLabWindow::cmdLSZoom),
00149 FXMAPFUNC(SEL_LEFTBUTTONPRESS, DataWinDialog::ID_LS_SELREQ, GreyLabWindow::cmdLSSelectReq),
00150 FXMAPFUNC(SEL_LEFTBUTTONRELEASE, DataWinDialog::ID_LS_SELREQ, GreyLabWindow::cmdLSSelectReq),
00151 FXMAPFUNC(SEL_RIGHTBUTTONPRESS, DataWinDialog::ID_LS_SELREQ, GreyLabWindow::cmdLSSelectReq),
00152 FXMAPFUNC(SEL_RIGHTBUTTONRELEASE, DataWinDialog::ID_LS_SELREQ, GreyLabWindow::cmdLSSelectReq),
00153 FXMAPFUNC(SEL_MOTION, DataWinDialog::ID_LS_SELREQ, GreyLabWindow::cmdLSSelectReq),
00154 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_DRAW, GreyLabWindow::cmdLSDrawPalette),
00155 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_ZOOMBACK, GreyLabWindow::cmdLSZoomBack),
00156 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_SAVELABELS, GreyLabWindow::cmdSaveLabels),
00157 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_COPYPARAMS, GreyLabWindow::cmdLSCopyParams),
00158 FXMAPFUNC(SEL_SELECTED, GreyLabWindow::ID_LS_SELECTTRACE, GreyLabWindow::cmdLSSelectTrace),
00159 FXMAPFUNC(SEL_DOUBLECLICKED, GreyLabWindow::ID_LS_SELECTTRACE, GreyLabWindow::cmdLSSelectTrace),
00160 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_NEWTRACE, GreyLabWindow::cmdLSNewTrace),
00161 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_TRACEUP, GreyLabWindow::cmdLSUpTrace),
00162 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_TRACEDOWN, GreyLabWindow::cmdLSDownTrace),
00163 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_PLOTFLIP, GreyLabWindow::cmdLSFlipTrace),
00164 FXMAPFUNC(SEL_DOUBLECLICKED, GreyLabWindow::ID_LS_TRACEADDCOL, GreyLabWindow::cmdLSAddColourTrace),
00165 FXMAPFUNC(SEL_DOUBLECLICKED, GreyLabWindow::ID_LS_TRACEREMOVECOL, GreyLabWindow::cmdLSRemoveColourTrace),
00166 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_TRACEUPCOL, GreyLabWindow::cmdLSUpColourTrace),
00167 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_TRACEDOWNCOL, GreyLabWindow::cmdLSDownColourTrace),
00168 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_UPDATETRACE, GreyLabWindow::cmdLSUpdateTrace),
00169 FXMAPFUNC(SEL_CHANGED, GreyLabWindow::ID_LS_UPDATETRACE, GreyLabWindow::cmdLSUpdateTrace),
00170 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_DRAWMODE, GreyLabWindow::cmdLSDrawMode),
00171 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_EXPORT, GreyLabWindow::cmdLSExport),
00172 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_REDRAW, GreyLabWindow::cmdLSRedraw),
00173 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_BROWSE, GreyLabWindow::cmdLSBrowse),
00174 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_SAVE, GreyLabWindow::cmdLSSave),
00175 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_LS_HIRES, GreyLabWindow::cmdLSHiresSave),
00176
00177 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_FLIPX, GreyLabWindow::cmdHMFlipX),
00178 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_FLIPY, GreyLabWindow::cmdHMFlipY),
00179 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_SAVELABELS, GreyLabWindow::cmdSaveLabels),
00180 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_COPYPARAMS, GreyLabWindow::cmdHMCopyParams),
00181 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_MOTIONSEL, GreyLabWindow::cmdHMMotionChange),
00182 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_DRAWMODE, GreyLabWindow::cmdHMDrawMode),
00183 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_RECALCREQ, GreyLabWindow::cmdHMRecalcReq),
00184 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_REDRAW, GreyLabWindow::cmdHMRedraw),
00185 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_BROWSE, GreyLabWindow::cmdHMBrowse),
00186 FXMAPFUNC(SEL_COMMAND, GreyLabWindow::ID_HM_SAVE, GreyLabWindow::cmdHMSave)
00187 };
00188
00189
00190 FXIMPLEMENT(GreyLabWindow,FXMainWindow,GreyLabWindowMap,ARRAYNUMBER(GreyLabWindowMap))
00191
00192
00193
00194
00195
00196
00197
00198 GreyLabWindow::GreyLabWindow(FXApp *a) : FXMainWindow(a, FXStringFormat("GreyLab %d.%d.%d", MAJORV, MINORV, BUILDV), (FXIcon*)(new FXGIFIcon(a, ic_greylab32, 0, IMAGE_OPAQUE)), (FXIcon*)(new FXGIFIcon(a, ic_greylab16, 0, IMAGE_OPAQUE)), DECOR_BORDER|DECOR_CLOSE|DECOR_TITLE|DECOR_MENU|DECOR_MINIMIZE)
00199 {
00200 keysMenupane = new FXMenuPane(this);
00201 new FXMenuCommand(keysMenupane, "$dir$ - Parent directory", NULL, this, ID_KEYWORD+0);
00202 new FXMenuCommand(keysMenupane, "$file$ - Data file name", NULL, this, ID_KEYWORD+1);
00203 new FXMenuCommand(keysMenupane, "$name$ - File name (no ext)", NULL, this, ID_KEYWORD+29);
00204 new FXMenuCommand(keysMenupane, "$fsize$ - Data file size", NULL, this, ID_KEYWORD+32);
00205 new FXMenuCommand(keysMenupane, "$fdate$ - Data file date", NULL, this, ID_KEYWORD+33);
00206 new FXMenuCommand(keysMenupane, "$sfdate$ - Data file short date", NULL, this, ID_KEYWORD+34);
00207 new FXMenuCommand(keysMenupane, "$date$ - Today's date", NULL, this, ID_KEYWORD+2);
00208 new FXMenuCommand(keysMenupane, "$sdate$ - Today's short date", NULL, this, ID_KEYWORD+3);
00209 new FXMenuCommand(keysMenupane, "$nsweeps$ - Number of sweeps", NULL, this, ID_KEYWORD+4);
00210 new FXMenuCommand(keysMenupane, "$nsd$ - Number of SD items", NULL, this, ID_KEYWORD+5);
00211 new FXMenuCommand(keysMenupane, "$colsw$ - Columns per sweep", NULL, this, ID_KEYWORD+6);
00212 new FXMenuCommand(keysMenupane, "$npoints$ - Number of data points", NULL, this, ID_KEYWORD+7);
00213 new FXMenuCommand(keysMenupane, "$xmin$ - X minimum", NULL, this, ID_KEYWORD+8);
00214 new FXMenuCommand(keysMenupane, "$xmax$ - X maximum", NULL, this, ID_KEYWORD+9);
00215 new FXMenuCommand(keysMenupane, "$xwin$ - X sample window", NULL, this, ID_KEYWORD+10);
00216 new FXMenuCommand(keysMenupane, "$ymin$ - Y minimum", NULL, this, ID_KEYWORD+11);
00217 new FXMenuCommand(keysMenupane, "$ymax$ - Y maximum", NULL, this, ID_KEYWORD+12);
00218 new FXMenuCommand(keysMenupane, "$ysd$ - Y SD name", NULL, this, ID_KEYWORD+13);
00219 new FXMenuCommand(keysMenupane, "$ysdch$ - Y SD channel", NULL, this, ID_KEYWORD+36);
00220 new FXMenuCommand(keysMenupane, "$ss$ - Start sweep", NULL, this, ID_KEYWORD+14);
00221 new FXMenuCommand(keysMenupane, "$es$ - End sweep", NULL, this, ID_KEYWORD+15);
00222 new FXMenuCommand(keysMenupane, "$stride$ - Sweep stride", NULL, this, ID_KEYWORD+16);
00223 new FXMenuCommand(keysMenupane, "$xcol$ - X column name", NULL, this, ID_KEYWORD+17);
00224 new FXMenuCommand(keysMenupane, "$zcol$ - Z column name", NULL, this, ID_KEYWORD+18);
00225 new FXMenuCommand(keysMenupane, "$xfunc$ - X function", NULL, this, ID_KEYWORD+19);
00226 new FXMenuCommand(keysMenupane, "$yfunc$ - Y function", NULL, this, ID_KEYWORD+20);
00227 new FXMenuCommand(keysMenupane, "$zfunc$ - Z function", NULL, this, ID_KEYWORD+21);
00228 new FXMenuCommand(keysMenupane, "$diff$ - Differentiation info", NULL, this, ID_KEYWORD+22);
00229 new FXMenuCommand(keysMenupane, "$int$ - Integration info", NULL, this, ID_KEYWORD+23);
00230 new FXMenuCommand(keysMenupane, "$scatter$ - Scatter column name", NULL, this, ID_KEYWORD+24);
00231 new FXMenuCommand(keysMenupane, "$interp$ - Interpolation info", NULL, this, ID_KEYWORD+25);
00232 new FXMenuCommand(keysMenupane, "$gamma$ - Gamma correction", NULL, this, ID_KEYWORD+26);
00233 new FXMenuCommand(keysMenupane, "$sd(0,0)$ - SD value", NULL, this, ID_KEYWORD+27);
00234 new FXMenuCommand(keysMenupane, "$sssd(0)$ - Start sweep SD value", NULL, this, ID_KEYWORD+28);
00235 new FXMenuCommand(keysMenupane, "$plane$ - Subtraction plane", NULL, this, ID_KEYWORD+30);
00236 new FXMenuCommand(keysMenupane, "$cmap$ - Colourmap name", NULL, this, ID_KEYWORD+31);
00237 new FXMenuCommand(keysMenupane, "$ctour$ - Contour spacing", NULL, this, ID_KEYWORD+35);
00238
00239 int i;
00240 gslabelsMenupane = new FXMenuPane(this);
00241 for (i = 0; i < NUM_STORED_LABELS; ++i)
00242 gslabelsMenucommand[i] = new FXMenuCommand(gslabelsMenupane, "____________|____________|________|________|________", NULL, this, ID_GS_STOREDLABEL+i);
00243 lslabelsMenupane = new FXMenuPane(this);
00244 for (i = 0; i < NUM_STORED_LABELS; ++i)
00245 lslabelsMenucommand[i] = new FXMenuCommand(lslabelsMenupane, "____________|____________|________|________", NULL, this, ID_LS_STOREDLABEL+i);
00246 hmlabelsMenupane = new FXMenuPane(this);
00247 for (i = 0; i < NUM_STORED_LABELS; ++i)
00248 hmlabelsMenucommand[i] = new FXMenuCommand(hmlabelsMenupane, "____________|____________|________|________|________", NULL, this, ID_HM_STOREDLABEL+i);
00249
00250
00251 FXVerticalFrame *contentsFrame = new FXVerticalFrame(this, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
00252 contentsTabbook = new FXTabBook(contentsFrame, this, ID_PANEL, PACK_UNIFORM_WIDTH|PACK_UNIFORM_HEIGHT|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT);
00253
00254
00255
00256 mainTab = new FXTabItem(contentsTabbook, "&Main", NULL);
00257 FXVerticalFrame *maintabFrame = new FXVerticalFrame(contentsTabbook, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_THICK|FRAME_RAISED);
00258
00259 FXGroupBox *projectGroupbox = new FXGroupBox(maintabFrame, "Project", GROUPBOX_TITLE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X);
00260 FXHorizontalFrame *projectFrame = new FXHorizontalFrame(projectGroupbox, LAYOUT_CENTER_Y|LAYOUT_FILL_X|FRAME_NONE);
00261 new FXButton(projectFrame, "Load Project", NULL, this, ID_LOADPROJ, FRAME_RAISED|LAYOUT_CENTER_Y|LAYOUT_LEFT);
00262 new FXButton(projectFrame, "Load Project and Replot", NULL, this, ID_LOADPROJPLOT, FRAME_RAISED|LAYOUT_CENTER_Y|LAYOUT_LEFT);
00263 new FXButton(projectFrame, "Save Project", NULL, this, ID_SAVEPROJ, FRAME_RAISED|LAYOUT_CENTER_Y|LAYOUT_LEFT);
00264 graphsetCheckbutton = new FXCheckButton(projectFrame, "Ignore graph settings", NULL, 0, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_CENTER_Y, 0, 0, 0, 0, 0, 0, 0, 0);
00265
00266
00267 FXGroupBox *filesGroupbox = new FXGroupBox(maintabFrame, "File", GROUPBOX_TITLE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X);
00268 FXVerticalFrame* filesFrame = new FXVerticalFrame(filesGroupbox, LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
00269 FXHorizontalFrame *filemainFrame = new FXHorizontalFrame(filesFrame, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT);
00270 new FXLabel(filemainFrame, "Input:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00271 pathTextfield = new FXTextField(filemainFrame, 10, NULL, 0, FRAME_SUNKEN|LAYOUT_FILL_X);
00272 browseButton = new FXButton(filemainFrame, "...", NULL, this, ID_BROWSE, FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT);
00273 new FXButton(filemainFrame, " &Load ", NULL, this, ID_LOAD, FRAME_RAISED|LAYOUT_RIGHT|ICON_BEFORE_TEXT);
00274 FXGroupBox *sdmethodGroupbox = new FXGroupBox(filesFrame, "Load Method", FRAME_GROOVE|LAYOUT_FILL_Y|LAYOUT_FILL_X|LAYOUT_CENTER_Y);
00275 sdasciiRadiobutton = new FXRadioButton(sdmethodGroupbox, "LabVIEW/Origin CryoMeas datafile with SD", this, ID_LOADMETHOD, CHECKBUTTON_NORMAL);
00276
00277
00278 sdacornRadiobutton = new FXRadioButton(sdmethodGroupbox, "Acorn CryoMeas datafile", this, ID_LOADMETHOD, CHECKBUTTON_NORMAL);
00279 sdsmartRadiobutton = new FXRadioButton(sdmethodGroupbox, "Intelligently load tab separated data file", this, ID_LOADMETHOD, CHECKBUTTON_NORMAL);
00280 FXHorizontalFrame *smartFrame = new FXHorizontalFrame(sdmethodGroupbox, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT, 0, 0, 0, 0, 30, 0, 0, 0);
00281 new FXLabel(smartFrame, "Use row ", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00282 smarttitlesTextfield = new FXTextField(smartFrame, 3, NULL, 0, FRAME_SUNKEN);
00283 new FXLabel(smartFrame, " for column headers and skip ", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00284 smartdataTextfield = new FXTextField(smartFrame, 3, NULL, 0, FRAME_SUNKEN);
00285 new FXLabel(smartFrame, " rows before data", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00286 sddumbRadiobutton = new FXRadioButton(sdmethodGroupbox, "Manually specify all parameters", this, ID_LOADMETHOD, CHECKBUTTON_NORMAL);
00287 FXHorizontalFrame *dumbFrame = new FXHorizontalFrame(sdmethodGroupbox, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT, 0, 0, 0, 0, 30, 0, 0, 0);
00288 new FXLabel(dumbFrame, "Data starts at row ", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00289 dumbdataTextfield = new FXTextField(dumbFrame, 3, NULL, 0, FRAME_SUNKEN);
00290 new FXLabel(dumbFrame, " and there are ", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00291 dumbcolsperTextfield = new FXTextField(dumbFrame, 3, NULL, 0, FRAME_SUNKEN);
00292 new FXLabel(dumbFrame, " columns per sweep", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00293 sdmatrixRadiobutton = new FXRadioButton(sdmethodGroupbox, "Data matrix", this, ID_LOADMETHOD, CHECKBUTTON_NORMAL);
00294 FXHorizontalFrame *matrixFrame = new FXHorizontalFrame(sdmethodGroupbox, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT, 0, 0, 0, 0, 30, 0, 0, 0);
00295 new FXLabel(matrixFrame, "Matrix starts at row ", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00296 matrixdataTextfield = new FXTextField(matrixFrame, 3, NULL, 0, FRAME_SUNKEN);
00297 FXHorizontalFrame *miscFrame = new FXHorizontalFrame(filesGroupbox, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT);
00298 new FXButton(miscFrame, "Load data and export as Acorn LabAssist text file", NULL, this, ID_ACORNEXPORT, FRAME_RAISED|LAYOUT_RIGHT);
00299 new FXLabel(miscFrame, "Separator", NULL, LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0);
00300 separatorTextfield = new FXTextField(miscFrame, 3, NULL, 0, FRAME_SUNKEN);
00301
00302 FXGroupBox *coloursGroupbox = new FXGroupBox(maintabFrame, "Colours", GROUPBOX_TITLE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X);
00303 FXHorizontalFrame *clipFrame = new FXHorizontalFrame(coloursGroupbox, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE);
00304 new FXLabel(clipFrame, "Low clip colour:", NULL, LAYOUT_SIDE_TOP|LAYOUT_LEFT|PACK_UNIFORM_WIDTH|LAYOUT_LEFT);
00305 lcolColourwell = new FXColorWell(clipFrame, FXRGB(0,0,128), this, ID_ALL_REDRAW, LAYOUT_SIDE_TOP|COLORWELL_OPAQUEONLY|LAYOUT_FIX_WIDTH|LAYOUT_LEFT, 0, 0, 50, 0);
00306 new FXLabel(clipFrame, "High clip colour:", NULL, LAYOUT_SIDE_TOP|LAYOUT_LEFT|PACK_UNIFORM_WIDTH|LAYOUT_LEFT);
00307 hcolColourwell = new FXColorWell(clipFrame, FXRGB(255,200,200), this, ID_ALL_REDRAW, LAYOUT_SIDE_TOP|COLORWELL_OPAQUEONLY|LAYOUT_FIX_WIDTH|LAYOUT_LEFT, 0, 0, 50, 0);
00308 new FXLabel(clipFrame, "Missing data colour:", NULL, LAYOUT_SIDE_TOP|LAYOUT_LEFT|PACK_UNIFORM_WIDTH|LAYOUT_LEFT);
00309 nodataColourwell = new FXColorWell(clipFrame, FXRGB(255,200,0), this, ID_ALL_REDRAW, LAYOUT_SIDE_TOP|COLORWELL_OPAQUEONLY|LAYOUT_FIX_WIDTH|LAYOUT_LEFT, 0, 0, 50, 0);
00310
00311 FXGroupBox *fontGroupbox = new FXGroupBox(maintabFrame, "Font", GROUPBOX_TITLE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X);
00312 FXHorizontalFrame *textfontmainFrame = new FXHorizontalFrame(fontGroupbox, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT);
00313 new FXLabel(textfontmainFrame, "Text font:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00314 textfontTextfield = new FXTextField(textfontmainFrame, 10, NULL, 0, FRAME_SUNKEN|LAYOUT_FILL_X|TEXTFIELD_READONLY|TEXTFIELD_AUTOGRAY);
00315 new FXButton(textfontmainFrame, "Select", NULL, this, ID_TEXTFONT, FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT);
00316 FXHorizontalFrame *symfontmainFrame = new FXHorizontalFrame(fontGroupbox, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT);
00317 new FXLabel(symfontmainFrame, "Symbol font:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00318 symfontTextfield = new FXTextField(symfontmainFrame, 10, NULL, 0, FRAME_SUNKEN|LAYOUT_FILL_X|TEXTFIELD_READONLY|TEXTFIELD_AUTOGRAY);
00319 new FXButton(symfontmainFrame, "Select", NULL, this, ID_SYMFONT, FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT);
00320 FXHorizontalFrame *numfontmainFrame = new FXHorizontalFrame(fontGroupbox, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT);
00321 new FXLabel(numfontmainFrame, "Number font size multiplier:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00322 numfontTextfield = new FXTextField(numfontmainFrame, 5, this, ID_NUMFONT, FRAME_SUNKEN|TEXTFIELD_REAL|LAYOUT_CENTER_Y);
00323 FXGroupBox *fontaaGroupbox = new FXGroupBox(fontGroupbox, "Font antialiasing", FRAME_GROOVE|LAYOUT_FILL_Y|LAYOUT_CENTER_Y);
00324 aaresredRadiobutton = new FXRadioButton(fontaaGroupbox, "Resolution reduction (best quality - averages double resolution font)", this, ID_AAMETHOD, CHECKBUTTON_NORMAL);
00325 aagaussianRadiobutton = new FXRadioButton(fontaaGroupbox, "Gaussian (for systems with limited font scaling)", this, ID_AAMETHOD, CHECKBUTTON_NORMAL);
00326 fontaaGroupbox->hide();
00327
00328
00329
00330 sdTab = new FXTabItem(contentsTabbook, "&Hdr", NULL);
00331 FXVerticalFrame* hdtabFrame = new FXVerticalFrame(contentsTabbook, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_THICK|FRAME_RAISED);
00332 hdText = new FXText(hdtabFrame, NULL, 0, FRAME_SUNKEN|LAYOUT_FILL_X|TEXT_READONLY|TEXT_SHOWACTIVE|LAYOUT_FILL_Y);
00333
00334
00335
00336 sdTab = new FXTabItem(contentsTabbook, "&SD", NULL);
00337 FXVerticalFrame* sdtabFrame = new FXVerticalFrame(contentsTabbook, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_THICK|FRAME_RAISED);
00338
00339 FXGroupBox *sdinfoGroupbox = new FXGroupBox(sdtabFrame, "SD Information", FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_SIDE_TOP);
00340 FXHorizontalFrame *sdinfoFrame = new FXHorizontalFrame(sdinfoGroupbox, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00341 FXVerticalFrame *sd1Frame = new FXVerticalFrame(sdinfoFrame, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 10, 20);
00342 FXVerticalFrame *sd2Frame = new FXVerticalFrame(sdinfoFrame, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 20, 10);
00343 FXHorizontalFrame *sdnsweepsFrame = new FXHorizontalFrame(sd1Frame, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00344 new FXLabel(sdnsweepsFrame, "Number of sweeps:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00345 sdnsweepsTextfield = new FXTextField(sdnsweepsFrame, 10, NULL, 0, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT);
00346 FXHorizontalFrame *sdncolsFrame = new FXHorizontalFrame(sd2Frame, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00347 new FXLabel(sdncolsFrame, "Columns per sweep:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00348 sdncolsTextfield = new FXTextField(sdncolsFrame, 10, NULL, 0, TEXTFIELD_INTEGER|FRAME_SUNKEN|LAYOUT_RIGHT);
00349 FXHorizontalFrame *sdnsdFrame = new FXHorizontalFrame(sd1Frame, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00350 new FXLabel(sdnsdFrame, "Number of SD items:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00351 sdnsdTextfield = new FXTextField(sdnsdFrame, 10, NULL, 0, TEXTFIELD_INTEGER|FRAME_SUNKEN|LAYOUT_RIGHT);
00352 FXHorizontalFrame *sdnptsFrame = new FXHorizontalFrame(sd2Frame, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00353 new FXLabel(sdnptsFrame, "Number of points:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00354 sdnptsTextfield = new FXTextField(sdnptsFrame, 10, NULL, 0, TEXTFIELD_INTEGER|FRAME_SUNKEN|LAYOUT_RIGHT);
00355
00356 sdIconlist = new FXIconList(sdtabFrame, this, ID_SD_SWEEPS, ICONLIST_EXTENDEDSELECT|ICONLIST_AUTOSIZE|ICONLIST_DETAILED|FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y);
00357
00358
00359
00360 analysisTab = new FXTabItem(contentsTabbook, "&Data", NULL);
00361 FXVerticalFrame* databFrame = new FXVerticalFrame(contentsTabbook, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_THICK|FRAME_RAISED);
00362
00363 FXGroupBox *dasettingsGroupbox = new FXGroupBox(databFrame, "Data Selection", FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_SIDE_TOP);
00364 FXHorizontalFrame *dasettingsFrame = new FXHorizontalFrame(dasettingsGroupbox, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00365 FXVerticalFrame *da1Frame = new FXVerticalFrame(dasettingsFrame, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0);
00366 FXVerticalFrame *da2Frame = new FXVerticalFrame(dasettingsFrame, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0);
00367 FXVerticalFrame *da3Frame = new FXVerticalFrame(dasettingsFrame, LAYOUT_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y|PACK_UNIFORM_HEIGHT|FRAME_NONE, 0, 0, 0, 0);
00368 FXHorizontalFrame *daxcolFrame = new FXHorizontalFrame(da1Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00369 new FXLabel(daxcolFrame, "X column:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00370 daxcolListbox = new FXListBox(daxcolFrame, this, ID_DA_XRANGE, FRAME_SUNKEN|LISTBOX_NORMAL|LAYOUT_RIGHT, 0, 0, 0, 0);
00371 FXHorizontalFrame *dazcolFrame = new FXHorizontalFrame(da2Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00372 new FXLabel(dazcolFrame, "Z column:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00373 dazcolListbox = new FXListBox(dazcolFrame, NULL, 0, FRAME_SUNKEN|LISTBOX_NORMAL|LAYOUT_RIGHT, 0, 0, 0, 0);
00374 FXHorizontalFrame *dasselectFrame = new FXHorizontalFrame(da3Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00375 dasweepselectCheckbutton = new FXCheckButton(dasselectFrame, "Select sweeps from table", this, ID_DA_SSELECT, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00376 FXHorizontalFrame *dassweepFrame = new FXHorizontalFrame(da1Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00377 new FXLabel(dassweepFrame, "Start sweep:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00378 dassweepTextfield = new FXTextField(dassweepFrame, 5, this, ID_DA_SWEEPCHANGE, TEXTFIELD_INTEGER|FRAME_SUNKEN|LAYOUT_RIGHT);
00379 FXHorizontalFrame *daesweepFrame = new FXHorizontalFrame(da2Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00380 new FXLabel(daesweepFrame, "End sweep:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00381 daesweepTextfield = new FXTextField(daesweepFrame, 5, this, ID_DA_SWEEPCHANGE, TEXTFIELD_INTEGER|FRAME_SUNKEN|LAYOUT_RIGHT);
00382 FXHorizontalFrame *dastrideFrame = new FXHorizontalFrame(da3Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00383 new FXLabel(dastrideFrame, "Sweep stride:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00384 dastrideTextfield = new FXTextField(dastrideFrame, 5, this, ID_DA_XRANGE, TEXTFIELD_INTEGER|FRAME_SUNKEN|LAYOUT_RIGHT);
00385 FXHorizontalFrame *daxinminFrame = new FXHorizontalFrame(da1Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00386 new FXLabel(daxinminFrame, "X min:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00387 daxinminTextfield = new FXTextField(daxinminFrame, 10, this, ID_DA_RANGE, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT);
00388 FXHorizontalFrame *daxinmaxFrame = new FXHorizontalFrame(da2Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00389 new FXLabel(daxinmaxFrame, "X max:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00390 daxinmaxTextfield = new FXTextField(daxinmaxFrame, 10, this, ID_DA_RANGE, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT);
00391 FXHorizontalFrame *daxautoFrame = new FXHorizontalFrame(da3Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00392 daxautoCheckbutton = new FXCheckButton(daxautoFrame, "Auto target range", this, ID_DA_AUTOX, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00393
00394 FXGroupBox *daformulaGroupbox = new FXGroupBox(databFrame, "Data Transforms", FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_SIDE_TOP);
00395 FXHorizontalFrame *datargetFrame = new FXHorizontalFrame(daformulaGroupbox, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00396 FXVerticalFrame *daf1Frame = new FXVerticalFrame(datargetFrame, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0);
00397 FXVerticalFrame *daf2Frame = new FXVerticalFrame(datargetFrame, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0);
00398 FXVerticalFrame *daf3Frame = new FXVerticalFrame(datargetFrame, LAYOUT_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0);
00399 FXHorizontalFrame *daysdFrame = new FXHorizontalFrame(daf3Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00400 new FXLabel(daysdFrame, "Y SD:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00401 daysdListbox = new FXListBox(daysdFrame, this, ID_DA_YSDCHANGE, FRAME_SUNKEN|LISTBOX_NORMAL|LAYOUT_RIGHT, 0, 0, 0, 0);
00402 FXHorizontalFrame *dayminFrame = new FXHorizontalFrame(daf1Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00403 new FXLabel(dayminFrame, "Y min:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00404 dayminTextfield = new FXTextField(dayminFrame, 9, this, ID_DA_RANGE, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT);
00405 FXHorizontalFrame *daymaxFrame = new FXHorizontalFrame(daf2Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00406 new FXLabel(daymaxFrame, "Y max:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00407 daymaxTextfield = new FXTextField(daymaxFrame, 9, this, ID_DA_RANGE, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT);
00408 FXHorizontalFrame *daxtgtminFrame = new FXHorizontalFrame(daf1Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00409 new FXLabel(daxtgtminFrame, "X target min:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00410 daxtgtminTextfield = new FXTextField(daxtgtminFrame, 9, this, ID_DA_RANGE, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT);
00411 FXHorizontalFrame *daxtgtmaxFrame = new FXHorizontalFrame(daf2Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00412 new FXLabel(daxtgtmaxFrame, "X target max:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00413 daxtgtmaxTextfield = new FXTextField(daxtgtmaxFrame, 9, this, ID_DA_RANGE, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT);
00414 FXHorizontalFrame *daxtgtresFrame = new FXHorizontalFrame(daf3Frame, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00415 new FXLabel(daxtgtresFrame, "X sample window:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00416 daxtgtresTextfield = new FXTextField(daxtgtresFrame, 9, NULL, 0, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT);
00417 FXHorizontalFrame *dascatterFrame = new FXHorizontalFrame(daformulaGroupbox, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00418 dascatterCheckbutton = new FXCheckButton(dascatterFrame, "Plot colourscale as a scatter graph, Y column is:", this, ID_DA_YSDCHANGE, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_SIDE_TOP, 0, 0, 0, 0, 0, 0, 0, 0);
00419 dascatterListbox = new FXListBox(dascatterFrame, this, ID_DA_YSDCHANGE, FRAME_SUNKEN|LISTBOX_NORMAL|LAYOUT_LEFT, 0, 0, 0, 0);
00420 FXHorizontalFrame *daxformulaFrame = new FXHorizontalFrame(daformulaGroupbox, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00421 new FXLabel(daxformulaFrame, "X function:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00422 dastatusTextfield[0] = new FXTextField(daxformulaFrame, 20, NULL, 0, LAYOUT_FILL_X|TEXT_WORDWRAP|TEXTFIELD_READONLY, 0, 0, 0, 0);
00423 dafunctionText[0] = new FXText(daformulaGroupbox, this, ID_DA_XPARSE, FRAME_SUNKEN|LAYOUT_FILL_X|TEXT_WORDWRAP|LAYOUT_FIX_HEIGHT, 0, 0, 0, 35);
00424 FXHorizontalFrame *dayformulaFrame = new FXHorizontalFrame(daformulaGroupbox, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00425 new FXLabel(dayformulaFrame, "Y function:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00426 dastatusTextfield[1] = new FXTextField(dayformulaFrame, 20, NULL, 0, LAYOUT_FILL_X|TEXT_WORDWRAP|TEXTFIELD_READONLY, 0, 0, 0, 0);
00427 dafunctionText[1] = new FXText(daformulaGroupbox, this, ID_DA_YPARSE, FRAME_SUNKEN|LAYOUT_FILL_X|TEXT_WORDWRAP|LAYOUT_FIX_HEIGHT, 0, 0, 0, 35);
00428 FXHorizontalFrame *dazformulaFrame = new FXHorizontalFrame(daformulaGroupbox, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00429 new FXLabel(dazformulaFrame, "Z function:", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00430 dastatusTextfield[2] = new FXTextField(dazformulaFrame, 20, NULL, 0, LAYOUT_FILL_X|TEXT_WORDWRAP|TEXTFIELD_READONLY, 0, 0, 0, 0);
00431 dafunctionText[2] = new FXText(daformulaGroupbox, this, ID_DA_ZPARSE, FRAME_SUNKEN|LAYOUT_FILL_X|TEXT_WORDWRAP|LAYOUT_FIX_HEIGHT, 0, 0, 0, 35);
00432
00433 FXGroupBox *dadiffGroupbox = new FXGroupBox(databFrame, "Differentiation", FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_SIDE_TOP);
00434 FXHorizontalFrame *dadiffFrame = new FXHorizontalFrame(dadiffGroupbox, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00435 dadiffCheckbutton = new FXCheckButton(dadiffFrame, "Differentiate along ", NULL, 0, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_SIDE_TOP, 0, 0, 0, 0, 0, 0, 0, 0);
00436
00437 dadiffPopup = new FXPopup(this);
00438 new FXOption(dadiffPopup, " X", NULL, NULL, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT);
00439 new FXOption(dadiffPopup, " Y", NULL, NULL, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT);
00440 new FXOption(dadiffPopup, " XY", NULL, NULL, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT);
00441 dadiffOptionmenu = new FXOptionMenu(dadiffFrame, dadiffPopup, LAYOUT_CENTER_Y|FRAME_RAISED|JUSTIFY_HZ_APART|ICON_AFTER_TEXT);
00442 daorderCheckbutton = new FXCheckButton(dadiffFrame, "Do integration first )", NULL, 0, CHECKBUTTON_NORMAL|LAYOUT_RIGHT|LAYOUT_SIDE_TOP, 0, 0, 0, 0, 0, 0, 0, 0);
00443 new FXLabel(dadiffFrame, "(", NULL, LAYOUT_RIGHT, 0, 0, 0, 0, 0, 0, 0);
00444 FXGroupBox *daintGroupbox = new FXGroupBox(databFrame, "Integration", FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_SIDE_TOP);
00445 FXHorizontalFrame *daintFrame = new FXHorizontalFrame(daintGroupbox, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_HEIGHT|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0);
00446 daintCheckbutton = new FXCheckButton(daintFrame, "Integrate along ", NULL, 0, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_SIDE_TOP, 0, 0, 0, 0, 0, 0, 0, 0);
00447 daintTogglebutton = new FXToggleButton(daintFrame, " Y ", " X ", NULL, NULL, NULL, 0, LAYOUT_LEFT|FRAME_SUNKEN);
00448 new FXLabel(daintFrame, " and set X/Y value ", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00449 daintzeroTextfield = new FXTextField(daintFrame, 8, NULL, 0, LAYOUT_LEFT|FRAME_SUNKEN, 0, 0, 0, 0);
00450 new FXLabel(daintFrame, " as the origin", NULL, 0, 0, 0, 0, 0, 0, 0, 0);
00451
00452 FXHorizontalFrame *daprocessFrame = new FXHorizontalFrame(databFrame, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X);
00453 daprocessButton = new FXButton(daprocessFrame, " &Process ", NULL, this, ID_DA_PROCESS, FRAME_RAISED|LAYOUT_RIGHT|ICON_BEFORE_TEXT);
00454 FXHorizontalFrame *daexportFrame = new FXHorizontalFrame(databFrame, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X);
00455 new FXButton(daexportFrame, "&Export data", NULL, this, ID_DA_EXPORT, FRAME_RAISED|LAYOUT_RIGHT|ICON_BEFORE_TEXT);
00456 daexportallCheckbutton = new FXCheckButton(daexportFrame, "Export all columns", NULL, 0, CHECKBUTTON_NORMAL|LAYOUT_RIGHT|LAYOUT_CENTER_Y, 0, 0, 0, 0, 0, 0, 0, 0);
00457
00458
00459
00460 greyscaleTab = new FXTabItem(contentsTabbook, "&2D", NULL);
00461 FXVerticalFrame* gstabFrame = new FXVerticalFrame(contentsTabbook, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_THICK|FRAME_RAISED);
00462
00463
00464 FXGroupBox *gsaxesGroupbox = new FXGroupBox(gstabFrame, "Axes", GROUPBOX_TITLE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
00465 FXHorizontalFrame *gsparamstopFrame = new FXHorizontalFrame(gsaxesGroupbox, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00466 FXVerticalFrame *gsparamsmainFrame = new FXVerticalFrame(gsparamstopFrame, LAYOUT_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00467 FXHorizontalFrame *gsparamstitleFrame = new FXHorizontalFrame(gsparamsmainFrame, LAYOUT_TOP|LAYOUT_CENTER_X|LAYOUT_FILL_Y|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00468 gstitleCheckbutton = new FXCheckButton(gsparamstitleFrame, "", this, ID_GS_REDRAW, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00469 gstitleTextfield = new FXTextField(gsparamstitleFrame, 50, this, ID_GS_REDRAW, FRAME_SUNKEN|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00470 gstitlekeysMenubutton = new FXMenuButton(gsparamstitleFrame, "", NULL, keysMenupane, MENUBUTTON_ATTACH_CENTER|LAYOUT_FILL_Y|LAYOUT_LEFT|FRAME_RAISED);
00471 FXHorizontalFrame *gsparamssubtitleFrame = new FXHorizontalFrame(gsparamsmainFrame, LAYOUT_TOP|LAYOUT_CENTER_X|LAYOUT_FILL_Y|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0);
00472 gssubtitleCheckbutton = new FXCheckButton(gsparamssubtitleFrame, "", this, ID_GS_REDRAW, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00473 gssubtitleTextfield = new FXTextField(gsparamssubtitleFrame, 50, this, ID_GS_REDRAW, FRAME_SUNKEN|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00474 gssubtitlekeysMenubutton = new FXMenuButton(gsparamssubtitleFrame, "", NULL, keysMenupane, MENUBUTTON_ATTACH_CENTER|LAYOUT_FILL_Y|LAYOUT_LEFT|FRAME_RAISED);
00475 FXHorizontalFrame *gsparams1mainFrame = new FXHorizontalFrame(gsparamsmainFrame, LAYOUT_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00476 FXSpring *gsyparamsSpring = new FXSpring(gsparams1mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00477 FXVerticalFrame *gsyparamsFrame = new FXVerticalFrame(gsyparamsSpring, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_NONE|PACK_UNIFORM_HEIGHT, 0, 0, 0, 0);
00478 gsymaxTextfield = new FXTextField(gsyparamsFrame, 8, this, ID_GS_RECALCREQ, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT|LAYOUT_TOP);
00479 gsylabelTextfield = new FXTextField(gsyparamsFrame, 10, this, ID_GS_REDRAW, FRAME_SUNKEN|LAYOUT_RIGHT|LAYOUT_CENTER_Y);
00480 gsylabelrotCheckbutton = new FXCheckButton(gsyparamsFrame, "Rotate", this, ID_GS_REDRAW, CHECKBUTTON_NORMAL|LAYOUT_RIGHT|LAYOUT_CENTER_Y);
00481 FXHorizontalFrame *gsyminparamsFrame = new FXHorizontalFrame(gsyparamsFrame, FRAME_NONE|LAYOUT_RIGHT, 0, 0, 0, 0, 0, 0, 0, 0);
00482 new FXButton(gsyminparamsFrame, FLIP_BUTTON, NULL, this, ID_GS_FLIPY, FRAME_RAISED|LAYOUT_LEFT|ICON_BEFORE_TEXT);
00483 gsyminTextfield = new FXTextField(gsyminparamsFrame, 8, this, ID_GS_RECALCREQ, TEXTFIELD_REAL|FRAME_SUNKEN);
00484 FXSpring *gsdataparamsSpring = new FXSpring(gsparams1mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00485 FXVerticalFrame *gsdataFrame = new FXVerticalFrame(gsdataparamsSpring, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_LINE|PACK_UNIFORM_HEIGHT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00486 new FXButton(gsdataFrame, "Drawing", NULL, this, ID_GS_DRAW, FRAME_RAISED|LAYOUT_CENTER_X|LAYOUT_CENTER_Y|ICON_BEFORE_TEXT);
00487 FXSpring *gszparamsSpring = new FXSpring(gsparams1mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00488 FXHorizontalFrame *gszrampparamsFrame = new FXHorizontalFrame(gszparamsSpring, LAYOUT_FILL_Y|FRAME_NONE, 0, 0, 0, 0);
00489 FXVerticalFrame *gszrampFrame = new FXVerticalFrame(gszrampparamsFrame, LAYOUT_FILL_Y|LAYOUT_FIX_WIDTH|FRAME_LINE, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0);
00490 FXVerticalFrame *gszparamsFrame = new FXVerticalFrame(gszrampparamsFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00491 gszmaxTextfield = new FXTextField(gszparamsFrame, 8, this, ID_GS_REDRAW, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_LEFT|LAYOUT_TOP);
00492 gszlabelTextfield = new FXTextField(gszparamsFrame, 10, this, ID_GS_REDRAW, FRAME_SUNKEN|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00493 FXHorizontalFrame *gszlabelsparamsFrame = new FXHorizontalFrame(gszparamsFrame, LAYOUT_CENTER_Y|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00494 gszlabelMenupane = new FXMenuPane(this);
00495 gshidegradzlabelMenucheck = new FXMenuCheck(gszlabelMenupane, "Hide gradient", this, ID_GS_REDRAW);
00496 gshidescalezlabelMenucheck = new FXMenuCheck(gszlabelMenupane, "Hide scale", this, ID_GS_REDRAW);
00497 gshidelabelzlabelMenucheck = new FXMenuCheck(gszlabelMenupane, "Hide label", this, ID_GS_REDRAW);
00498 gszlabelrotMenucheck = new FXMenuCheck(gszlabelMenupane, "Rotate label", this, ID_GS_REDRAW);
00499 gszscaleshowendsMenucheck = new FXMenuCheck(gszlabelMenupane, "Display tick values", this, ID_GS_REDRAW);
00500 gszzoomscaleMenucheck = new FXMenuCheck(gszlabelMenupane, "Auto Z scale", NULL, 0);
00501 gszscaleroundMenucheck = new FXMenuCheck(gszlabelMenupane, "Round Z range", this, ID_GS_ZROUND);
00502 new FXMenuCommand(gszlabelMenupane, "Symmetrise Z", NULL, this, ID_GS_SYMMETRICZ);
00503 gszlabelMenubutton = new FXMenuButton(gszlabelsparamsFrame, "Options", NULL, gszlabelMenupane, MENUBUTTON_ATTACH_CENTER|LAYOUT_LEFT|LAYOUT_CENTER_Y|LAYOUT_FILL_Y|FRAME_SUNKEN|ICON_AFTER_TEXT);
00504 gszminTextfield = new FXTextField(gszparamsFrame, 8, this, ID_GS_REDRAW, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_LEFT|LAYOUT_BOTTOM);
00505
00506 FXHorizontalFrame *gsparams2mainFrame = new FXHorizontalFrame(gsparamsmainFrame, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00507 FXSpring *gsb1paramsSpring = new FXSpring(gsparams2mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00508 FXHorizontalFrame *gsaxislblFrame = new FXHorizontalFrame(gsb1paramsSpring, LAYOUT_BOTTOM|FRAME_NONE|LAYOUT_LEFT);
00509 new FXButton(gsaxislblFrame, "M+", NULL, this, ID_GS_SAVELABELS, FRAME_RAISED|LAYOUT_LEFT|ICON_BEFORE_TEXT);
00510 gsgraphlabelsMenubutton = new FXMenuButton(gsaxislblFrame, "MR", NULL, gslabelsMenupane, MENUBUTTON_ATTACH_CENTER|ICON_AFTER_TEXT|LAYOUT_LEFT|FRAME_RAISED);
00511 FXSpring *gsxparamsSpring = new FXSpring(gsparams2mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00512 FXVerticalFrame *gsbottomparamsFrame = new FXVerticalFrame(gsxparamsSpring, LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00513 FXHorizontalFrame *gsxparamsFrame = new FXHorizontalFrame(gsbottomparamsFrame, LAYOUT_FILL_X|FRAME_NONE);
00514 gsxminTextfield = new FXTextField(gsxparamsFrame, 8, this, ID_GS_RECALCREQ, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_LEFT|LAYOUT_TOP);
00515 gsxlabelTextfield = new FXTextField(gsxparamsFrame, 15, this, ID_GS_REDRAW, FRAME_SUNKEN|LAYOUT_CENTER_X|LAYOUT_TOP);
00516 new FXButton(gsxparamsFrame, FLIP_BUTTON, NULL, this, ID_GS_FLIPX, FRAME_RAISED|LAYOUT_TOP|LAYOUT_CENTER_X|ICON_BEFORE_TEXT);
00517 gsxmaxTextfield = new FXTextField(gsxparamsFrame, 8, this, ID_GS_RECALCREQ, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_RIGHT|LAYOUT_TOP);
00518 FXHorizontalFrame *gszoomparamsFrame = new FXHorizontalFrame(gsbottomparamsFrame, LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00519 new FXButton(gszoomparamsFrame, " Auto range ", NULL, this, ID_GS_AUTORANGE, FRAME_RAISED|LAYOUT_BOTTOM|LAYOUT_LEFT|ICON_BEFORE_TEXT);
00520 gszoombackButton = new FXButton(gszoomparamsFrame, " Zoom back ", NULL, this, ID_GS_ZOOMBACK, FRAME_RAISED|LAYOUT_BOTTOM|LAYOUT_LEFT|ICON_BEFORE_TEXT);
00521 gszoombackButton->disable();
00522 FXSpring *gsb2paramsSpring = new FXSpring(gsparams2mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00523
00524 FXHorizontalFrame *gsgammaparamsFrame = new FXHorizontalFrame(gsb2paramsSpring, FRAME_NONE|LAYOUT_BOTTOM|LAYOUT_RIGHT|LAYOUT_FILL_Y);
00525 gsgammaTextfield = new FXTextField(gsgammaparamsFrame, 5, this, ID_GS_REDRAW, TEXTFIELD_REAL|LAYOUT_BOTTOM|FRAME_SUNKEN|LAYOUT_RIGHT);
00526 new FXLabel(gsgammaparamsFrame, "G", NULL, LAYOUT_RIGHT|LAYOUT_BOTTOM);
00527 FXVerticalFrame *gsparamsdialsFrame = new FXVerticalFrame(gsparamstopFrame, LAYOUT_TOP|LAYOUT_FILL_Y|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00528 gszmaxSlider = new FXSlider(gsparamsdialsFrame, this, ID_GS_DIALZ, SLIDER_VERTICAL|LAYOUT_FILL_Y);
00529 gszmaxSlider->setRange(-200, 200);
00530 gszmaxSlider->setValue(0);
00531 gszmaxSlider->setIncrement(10);
00532
00533
00534
00535
00536
00537 gsrealtimeCheckbutton = new FXCheckButton(gsparamsdialsFrame, "", NULL, 0, CHECKBUTTON_NORMAL|LAYOUT_LEFT);
00538 gszminSlider = new FXSlider(gsparamsdialsFrame, this, ID_GS_DIALZ, SLIDER_VERTICAL|LAYOUT_FILL_Y);
00539 gszminSlider->setRange(-200, 200);
00540 gszminSlider->setValue(0);
00541 gszminSlider->setIncrement(10);
00542
00543
00544
00545
00546
00547
00548
00549 FXGroupBox *gsplotGroupbox = new FXGroupBox(gstabFrame, "Plot", GROUPBOX_TITLE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
00550 FXVerticalFrame *gsplotmainFrame = new FXVerticalFrame(gsplotGroupbox, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00551 FXHorizontalFrame *gsdataresFrame = new FXHorizontalFrame(gsplotmainFrame, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE);
00552 FXSpring *gsscaleSpring = new FXSpring(gsdataresFrame, LAYOUT_FILL_X, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00553 FXHorizontalFrame *gsscaleFrame = new FXHorizontalFrame(gsscaleSpring, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00554 new FXLabel(gsscaleFrame, "Image data size ", NULL);
00555 gsxresTextfield = new FXTextField(gsscaleFrame, 4, this, ID_GS_RECALCREQ, TEXTFIELD_INTEGER|FRAME_SUNKEN);
00556 new FXLabel(gsscaleFrame, " x ", NULL);
00557 gsyresTextfield = new FXTextField(gsscaleFrame, 4, this, ID_GS_RECALCREQ, TEXTFIELD_INTEGER|FRAME_SUNKEN);
00558 FXHorizontalFrame *gsinterpFrame = new FXHorizontalFrame(gsscaleSpring, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00559 new FXLabel(gsinterpFrame, "Interpolate along ", NULL);
00560 gsxinterpCheckbutton = new FXCheckButton(gsinterpFrame, "X", this, ID_GS_RECALCREQ, CHECKBUTTON_NORMAL|LAYOUT_LEFT);
00561 gsyinterpCheckbutton = new FXCheckButton(gsinterpFrame, "Y", this, ID_GS_RECALCREQ, CHECKBUTTON_NORMAL|LAYOUT_LEFT);
00562 FXSpring *gscontourSpring = new FXSpring(gsdataresFrame, LAYOUT_FILL_X, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00563 FXHorizontalFrame *gscontourFrame = new FXHorizontalFrame(gscontourSpring, LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00564 gscontourCheckbutton = new FXCheckButton(gscontourFrame, "Contour plot", this, ID_GS_REDRAW, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00565 gscontourcolColourwell = new FXColorWell(gscontourFrame, FXRGBA(0,0,0,64), this, ID_GS_REDRAW, LAYOUT_LEFT|LAYOUT_FIX_WIDTH|LAYOUT_CENTER_Y, 0, 0, 25, 0);
00566 gscontouraltCheckbutton = new FXCheckButton(gscontourFrame, "(Alternative style)", this, ID_GS_REDRAW, CHECKBUTTON_NORMAL|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00567 FXHorizontalFrame *gscontour2Frame = new FXHorizontalFrame(gscontourSpring, FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00568 new FXLabel(gscontour2Frame, "Contour spacing ", NULL);
00569 gscontourspaceTextfield = new FXTextField(gscontour2Frame, 8, this, ID_GS_REDRAW, TEXTFIELD_REAL|FRAME_SUNKEN|LAYOUT_LEFT|LAYOUT_CENTER_Y);
00570 FXHorizontalFrame *gsgridFrame = new FXHorizontalFrame(gsplotmainFrame, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00571 FXGroupBox *gsxgridGroupbox = new FXGroupBox(gsgridFrame, "X axis", GROUPBOX_TITLE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
00572 FXVerticalFrame *gsxgridFrame = new FXVerticalFrame(gsxgridGroupbox, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00573 FXHorizontalFrame *gsxmajorgridFrame = new FXHorizontalFrame(gsxgridFrame, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00574 new FXLabel(gsxmajorgridFrame, "Major tick: ", NULL);
00575 gsxmajortickTextfield = new FXTextField(gsxmajorgridFrame, 7, this, ID_GS_REDRAW, TEXTFIELD_REAL|FRAME_SUNKEN);
00576 gsxmajorcolColourwell = new FXColorWell(gsxmajorgridFrame, FXRGBA(0,0,0,128), this, ID_GS_REDRAW, LAYOUT_SIDE_TOP|LAYOUT_FIX_WIDTH|LAYOUT_RIGHT, 0, 0, 30, 0);
00577 gsxmajorgridCheckbutton = new FXCheckButton(gsxmajorgridFrame, "Plot grid", this, ID_GS_REDRAW, CHECKBUTTON_NORMAL|LAYOUT_RIGHT);
00578 FXHorizontalFrame *gsxminorgridFrame = new FXHorizontalFrame(gsxgridFrame, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00579 new FXLabel(gsxminorgridFrame, "Minor tick: ", NULL);
00580 gsxminortickTextfield = new FXTextField(gsxminorgridFrame, 7, this, ID_GS_REDRAW, TEXTFIELD_REAL|FRAME_SUNKEN);
00581 gsxminorcolColourwell = new FXColorWell(gsxminorgridFrame, FXRGBA(0,0,0,64), this, ID_GS_REDRAW, LAYOUT_SIDE_TOP|LAYOUT_FIX_WIDTH|LAYOUT_RIGHT, 0, 0, 30, 0);
00582 gsxminorgridCheckbutton = new FXCheckButton(gsxminorgridFrame, "Plot grid", this, ID_GS_REDRAW, CHECKBUTTON_NORMAL|LAYOUT_RIGHT);
00583 FXGroupBox *gsygridGroupbox = new FXGroupBox(gsgridFrame, "Y axis", GROUPBOX_TITLE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
00584 FXVerticalFrame *gsygridFrame = new FXVerticalFrame(gsygridGroupbox, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00585 FXHorizontalFrame *gsymajorgridFrame = new FXHorizontalFrame(gsygridFrame, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00586 new FXLabel(gsymajorgridFrame, "Major tick: ", NULL);
00587 gsymajortickTextfield = new FXTextField(gsymajorgridFrame, 7, this, ID_GS_REDRAW, TEXTFIELD_REAL|FRAME_SUNKEN);
00588 gsymajorcolColourwell = new FXColorWell(gsymajorgridFrame, FXRGBA(0,0,0,128), this, ID_GS_REDRAW, LAYOUT_SIDE_TOP|LAYOUT_FIX_WIDTH|LAYOUT_RIGHT, 0, 0, 30, 0);
00589 gsymajorgridCheckbutton = new FXCheckButton(gsymajorgridFrame, "Plot grid", this, ID_GS_REDRAW, CHECKBUTTON_NORMAL|LAYOUT_RIGHT);
00590 FXHorizontalFrame *gsyminorgridFrame = new FXHorizontalFrame(gsygridFrame, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00591 new FXLabel(gsyminorgridFrame, "Minor tick: ", NULL);
00592 gsyminortickTextfield = new FXTextField(gsyminorgridFrame, 7, this, ID_GS_REDRAW, TEXTFIELD_REAL|FRAME_SUNKEN);
00593 gsyminorcolColourwell = new FXColorWell(gsyminorgridFrame, FXRGBA(0,0,0,64), this, ID_GS_REDRAW, LAYOUT_SIDE_TOP|LAYOUT_FIX_WIDTH|LAYOUT_RIGHT, 0, 0, 30, 0);
00594 gsyminorgridCheckbutton = new FXCheckButton(gsyminorgridFrame, "Plot grid", this, ID_GS_REDRAW, CHECKBUTTON_NORMAL|LAYOUT_RIGHT);
00595
00596
00597 FXGroupBox *gradGroupbox = new FXGroupBox(gstabFrame, "Gradient", GROUPBOX_TITLE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X);
00598 FXHorizontalFrame *gradmainFrame = new FXHorizontalFrame(gradGroupbox, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
00599 zgradGradient = new FXGradientBar(gradmainFrame, this, ID_GS_GRAD, GRADIENTBAR_HORIZONTAL|GRADIENTBAR_CONTROLS_BOTTOM|FRAME_NONE|LAYOUT_FILL_X, 0, 0, 0, 0);
00600
00601 FXHorizontalFrame *gradops1mainFrame = new FXHorizontalFrame(gradGroupbox, LAYOUT_TOP|LAYOUT_CENTER_X|FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
00602 new FXLabel(gradops1mainFrame, "Blend:", NULL, LAYOUT_CENTER_Y, 0, 0, 0, 0, 0, 0, 0, 0);
00603 new FXRadioButton(gradops1mainFrame, "Linear", zgradGradient, FXGradientBar::ID_BLEND_LINEAR, LAYOUT_CENTER_Y|LAYOUT_CENTER_X|ICON_BEFORE_TEXT);
00604 new FXRadioButton(gradops1mainFrame, "Power law", zgradGradient, FXGradientBar::ID_BLEND_POWER, LAYOUT_CENTER_Y|LAYOUT_CENTER_X|ICON_BEFORE_TEXT);
00605 new FXRadioButton(gradops1mainFrame, "Sine", zgradGradient, FXGradientBar::ID_BLEND_SINE, LAYOUT_CENTER_Y|LAYOUT_CENTER_X|ICON_BEFORE_TEXT);
00606 new FXRadioButton(gradops1mainFrame, "Increasing", zgradGradient, FXGradientBar::ID_BLEND_INCREASING, LAYOUT_CENTER_Y|LAYOUT_CENTER_X|ICON_BEFORE_TEXT);
00607 new FXRadioButton(gradops1mainFrame, "Decreasing", zgradGrad