1 /******************************************************************************
2 *
3 *  NSSDC/CDF	                                    Header file for CDFedit.
4 *
5 *  Version 1.4b, 17-Nov-97, Hughes STX.
6 *
7 *  Modification history:
8 *
9 *   V1.0  24-Jan-94, J Love     Original version.
10 *   V1.0a 30-Mar-94, J Love     Solaris using Gnu C compiler.
11 *   V1.1  15-Dec-94, J Love     CDF V2.5.
12 *   V1.2  23-Jan-95, J Love     IRIX 6.x (64-bit).
13 *   V1.3   3-Apr-95, J Love     POSIX.
14 *   V1.3a 20-Jul-95, J Love     CDFexport-related changes.
15 *   V1.4  30-Sep-96, J Love     CDF V2.6.
16 *   V1.4a 21-Feb-97, J Love	Removed RICE.
17 *   V1.4b 17-Nov-97, J Love	Windows NT/Visual C++.
18 *
19 ******************************************************************************/
20 
21 #if !defined(CDFEDITh_INCLUDEd__)
22 #define CDFEDITh_INCLUDEd__
23 
24 /******************************************************************************
25 * Include files.
26 ******************************************************************************/
27 
28 #include "widgets.h"
29 
30 #if defined(mac)
31 #  include "cdfedit.rh"
32 #endif
33 
34 /******************************************************************************
35 * Settings.
36 ******************************************************************************/
37 
38 #define MAXREC_LIMIT	0
39 
40 /******************************************************************************
41 * Constants.
42 ******************************************************************************/
43 
44 #define ONLINE_HELP_WIDTH               78      /* Doesn't include borders. */
45 
46 #define CDFs_NAME_LEN                   53
47 #define MAIN_MENU_1st_THIRD_LEN         20
48 #define MAIN_MENU_2nd_THIRD_LEN         47
49 #define VAR_MORE_MENU_1st_HALF_LEN      34
50 #define VARNAME_FIELD_LEN               16
51 #define ATTRNAME_FIELD_LEN              16
52 #define ATTRNAME_bFIELD_LEN             40	/* Browsing. */
53 #define ATTRNAME_eFIELD_LEN             44	/* Editing. */
54 #define DATASPEC_FIELD_LEN              9
55 #define DIMENSIONS_FIELD_LEN            16
56 #define VARIANCES_FIELD_LEN             7
57 #define ENTRYNUM_FIELD_LEN              6
58 #define gAttrENTRYVALUE_FIELD_LEN       44
59 #define vAttrENTRYVALUE_FIELD_LEN       34
60 #define varENTRYVALUE_FIELD_LEN         51
61 
62 #define VARNAME_FIELD_BLANKS            1
63 #define DIMENSIONS_FIELD_BLANKS         1
64 #define VARIANCES_FIELD_BLANKS          1
65 #define ATTRNAME_FIELD_BLANKS           1
66 #define ENTRYNUM_FIELD_BLANKS           1
67 #define DATASPEC_FIELD_BLANKS           1
68 
69 #define MAX_RECORD_NUMBER_LEN           15
70 #define MAX_DIMENSION_INDEX_LEN         15
71 #define MAX_NUMELEMS_LEN                15
72 #define MAX_ENTRYNUM_LEN                15
73 #define MAX_DIMENSIONALITY_LEN          50
74 #define MAX_ENTRYSTRING_LEN             1000
75 #define MAX_VARIANCES_LEN               (1 + 1 + CDF_MAX_DIMS)
76 
77 #define DELIMed_ATTR_NAME_LEN           (1 + CDF_ATTR_NAME_LEN256 + 1)
78 #define DELIMed_VAR_NAME_LEN            (1 + CDF_VAR_NAME_LEN256 + 1)
79 
80 #define ENTRYNUM_FIELD_LENx             6
81 #define ENTRYNUM_FIELD_BLANKSx          1
82 #define VARNAME_FIELD_LENx              16
83 #define VARNAME_FIELD_BLANKSx           1
84 #define DATASPEC_FIELD_LENx             9
85 #define DATASPEC_FIELD_BLANKSx          1
86 #define gAttrENTRYVALUE_FIELD_LENx      61
87 #define vAttrENTRYVALUE_FIELD_LENx      51
88 #define ENTRIES_COLUMNx                 69
89 
90 #define MANY_VARs                       30
91 #define MANY_ENTRYs                     30
92 #define MANY_ATTRs_AND_ENTRYs           150
93 
94 #define FORCDF                          1
95 #define FORzVAR                         2
96 #define FORrVAR                         3
97 
98 #define NO_DATATYPE                     (-1)
99 #define nCOMPRESSIONs                   5
100 
101 #define MAX_ILHFILE_LEN			12	/* 8.3 because of DOS. */
102 
103 /******************************************************************************
104 * Item constants.
105 ******************************************************************************/
106 
107 #define EDITzVarsIN             0
108 #define EDITrVarsIN             3
109 #define EDITgAttrsIN            5
110 #define EDITvAttrsIN            7
111 #define CHANGEcompressionIN     1
112 #define CHANGEchecksumIN        2
113 #define CHANGEencodingIN        4
114 #define CHANGEmajorityIN        6
115 #define CHANGEformatIN          8
116 
117 #define BROWSEinOFFSET          9
118 #define BROWSEzVarsIN           (0 + BROWSEinOFFSET)
119 #define BROWSErVarsIN           (1 + BROWSEinOFFSET)
120 #define BROWSEgAttrsIN          (2 + BROWSEinOFFSET)
121 #define BROWSEvAttrsIN          (3 + BROWSEinOFFSET)
122 
123 #define VIEWorMODIFYpadIN       0
124 #define MODIFYblockingIN        1
125 #define MODIFYsparsenessIN      2
126 #define ALLOCATErecordsIN       3
127 #define INITIALrecordsIN        4
128 #define MODIFYcompressionIN     5
129 #define DELETErecordsIN		6
130 
131 #define NOcompressionIN		0
132 #define RLE0compressionIN	1
133 #define HUFF0compressionIN	2
134 #define AHUFF0compressionIN	3
135 #define GZIPcompressionIN	4
136 /* #define ZLIB0compressionIN      5 */
137 
138 /******************************************************************************
139 * QOP constants.
140 ******************************************************************************/
141 
142 #define CDFSPECparm             0
143 
144 #define BROWSEqual              0
145 #define NOBROWSEqual            1
146 #define ZMODEqual               2
147 #define FORMATqual              3
148 #define NOFORMATqual            4
149 #define PROMPTqual              5
150 #define NOPROMPTqual            6
151 #define REPORTqual              7
152 #define NEG2POSFP0qual          8
153 #define NONEG2POSFP0qual        9
154 #define CACHEqual               10
155 #define STATSqual               11
156 #define NOSTATSqual             12
157 #define gWITHqual               13
158 #define NOgWITHqual             14
159 #define vWITHqual               15
160 #define NOvWITHqual             16
161 #define ABOUTqual		17
162 
163 /******************************************************************************
164 * Help Identifiers.
165 ******************************************************************************/
166 
167 #define CDFShelpID              0
168 #define CDFhelpID               1
169 #define GATTRShelpID            2
170 #define VATTRShelpID            3
171 #define ENTRIEShelpID           4
172 #define ZVARShelpID             5
173 #define RVARShelpID             6
174 #define CDFNAMEhelpID           7
175 #define RDIMhelpID              8
176 #define FORMAThelpID            9
177 #define ENCODINGhelpID          10
178 #define MAJORITYhelpID          11
179 #define SPEChelpID              12
180 #define DELETECDFhelpID         13
181 #define CREATECDFhelpID         14
182 #define ATTRRENAMEhelpID        15
183 #define VARRENAMEhelpID         16
184 #define ENTRYDATATYPEhelpID     17
185 #define ENTRYVALUEhelpID        18
186 #define ENTRYNUMBERhelpID       19
187 #define VARSELECThelpID         20
188 #define VARNUMELEMShelpID       21
189 #define VARVARYShelpID          22
190 #define RECNUMBERhelpID         23
191 #define DIMINDEXhelpID          24
192 #define VARVALUEhelpID          25
193 #define VARVALUEShelpID         26
194 #define VARMOREhelpID           27
195 #define PADVALUEhelpID          28
196 #define INITIALRECShelpID       29
197 #define EXTENDRECShelpID        30
198 #define VARNAMEhelpID           31
199 #define ATTRNAMEhelpID          32
200 #define ZDIMhelpID              33
201 #define VARDATATYPEhelpID       34
202 #define DELETEATTRhelpID        35
203 #define DELETEENTRYhelpID       36
204 #define DELETEVARhelpID         37
205 #define ALLOCATERECShelpID      38
206 #define GATTRShelpIDx           39
207 #define VATTRShelpIDx           40
208 #define GATTRENTRIEShelpIDx     41
209 #define VATTRENTRIEShelpIDx     42
210 #define CDFCOMPRESSIONhelpID    43
211 #define VARCOMPRESSIONhelpID    44
212 #define SPARSENESShelpID	45
213 #define TEXTENTRIEShelpID	46
214 #define MOREHELPhelpID		47
215 #define GZIPhelpID		48
216 #define DELETERECShelpID	49
217 #define CREATECDFV23helpID      50
218 #define CHECKSUMhelpID          51
219 #define OLHhelpID               99
220 
221 /******************************************************************************
222 * DataType ItemWindow macros.
223 ******************************************************************************/
224 
225 #define DTiwSYMBOLS \
226 "CDF_CHAR   CDF_INT1   CDF_INT2   CDF_INT4   CDF_REAL4  CDF_REAL8   CDF_EPOCH", \
227 "CDF_UCHAR  CDF_UINT1  CDF_UINT2  CDF_UINT4  CDF_FLOAT  CDF_DOUBLE  CDF_BYTE", \
228 "CDF_EPOCH16"
229 
230 #define DTiwLINEnS      0,0,0,0,0,0,0,1,1,1,1,1,1,1,2
231 #define DTiwCOLs        0,11,22,33,44,55,67,0,11,22,33,44,55,67,0
232 #define DTiwLENs        8,8,8,8,9,9,9,9,9,9,9,9,10,8,11
233 
234 /******************************************************************************
235 * Global variables.
236 ******************************************************************************/
237 
238 #if defined(CDFEDIT)
239 Logical report[3];              /* TRUE if a particular type of status code
240 				   (error/warning/info) should be reported. */
241 Logical dumpStatistics;         /* TRUE if caching statistics should be
242 				   displayed when the CDF is closed. */
243 Logical gAttrsAndEntries;       /* TRUE if the entries should be displayed
244 				   with gAttributes.  FALSE if there should
245 				   be a separate menu for each gAttribute's
246 				   entries. */
247 Logical vAttrsAndEntries;       /* TRUE if the entries should be displayed
248 				   with vAttributes.  FALSE if there should
249 				   be a separate menu for each vAttribute's
250 				   entries. */
251 char ilhFile[MAX_ILHFILE_LEN+1];/* Name of the inline help file. */
252 char olhFile[] = "cdfedit.olh"; /* Name of the command line help file. */
253 Logical browseOnly;             /* TRUE if the CDF is being browsed. */
254 Logical compressed;             /* TRUE if the currently open CDF is
255 				   compressed. */
256 #else
257 extern Logical report[3];
258 extern Logical dumpStatistics;
259 extern Logical gAttrsAndEntries;
260 extern Logical vAttrsAndEntries;
261 extern char ilhFile[MAX_ILHFILE_LEN+1];
262 extern char olhFile[];
263 extern Logical browseOnly;
264 extern Logical compressed;
265 #endif
266 
267 /******************************************************************************
268 * Function prototypes.
269 ******************************************************************************/
270 
271 Logical EditCDFs PROTOARGs((int argC, char *argV[]));
272 Logical EditCDF PROTOARGs((
273   char *CDFname, Logical useFormat, long workingCache, long stageCache,
274   long compressCache, long zMode, Logical negToPosFp0
275 ));
276 Logical EditCDFx PROTOARGs((
277   char *CDFname, Logical useFormat, long workingCache, long stageCache,
278   long compressCache, long zMode, Logical negToPosFp0, Logical *closed
279 ));
280 Logical EditCDFsMenu PROTOARGs((
281   char *CDFspec, Logical negToPosFp0, Logical useFormat, long zMode,
282   long workingCache, long stageCache, long compressCache
283 ));
284 Logical EditAttrs PROTOARGs((Logical, char *));
285 Logical EditAttrsX PROTOARGs((Logical, char *));
286 Logical EditAttrEntriesX PROTOARGs((Logical G, long attrN, long nAttrs));
287 Logical EditVars PROTOARGs((Logical, char *, Logical));
288 Logical EditVarValues PROTOARGs((Logical, long, long, Logical, Logical *));
289 Logical EditVarEntries PROTOARGs((Logical, long, long));
290 Logical EditVarMore PROTOARGs((Logical, long, Logical, Logical *, long));
291 Logical EditEntry PROTOARGs((long attrN, long entryN, int entryType,
292 			     Logical newDataSpec, Logical *changed));
293 void BuildCDFsMenu PROTOARGs((char *, int *, char ***, char ***,
294 			      struct ItemWindowStruct *));
295 Logical BuildCDFmenu PROTOARGs((char *, struct ItemWindowStruct *));
296 Logical BuildVarMenu PROTOARGs((Logical, char *, struct ItemWindowStruct *));
297 Logical BuildVarEntryMenu PROTOARGs((Logical, long, long *, long **,
298 				     Logical **, struct ItemWindowStruct *));
299 Logical BuildVarMoreMenu PROTOARGs((
300   Logical, long, struct ItemWindowStruct *, Logical, Logical
301 ));
302 Logical BuildAttrMenu PROTOARGs((Logical G, char *CDFname, long *nAttrs,
303 				 long **attrNs, long **nEntries,
304 				 long ***entryNs,struct ItemWindowStruct *IW));
305 Logical BuildAttrMenuX PROTOARGs((Logical G, char *CDFname, long *nAttrs,
306 				  long *nAttrsOfScope, long **attrNs,
307 				  struct ItemWindowStruct *IW));
308 Logical BuildAttrEntriesMenuX PROTOARGs((Logical G, long attrN, long *nEntries,
309 					 long **entryNs, int **entryTypes,
310 					 struct ItemWindowStruct *IW));
311 Logical BuildVarValueLine PROTOARGs((Logical, long, long, long, long *,
312 				     long *, long, long, void *, char *,
313 				     char *, int *, int *, int *, int,
314 				     char *, Logical *));
315 Logical BuildTextEditEntriesMenu PROTOARGs((
316   long attrN, struct EditWindowStruct *EW, Logical *allCharacter
317 ));
318 void FreeVarEntryMenu PROTOARGs((long *, Logical *,
319 				 struct ItemWindowStruct *));
320 void FreeAttrMenu PROTOARGs((long nAttrs, long *attrNs, long *nEntries,
321 			     long **entryNs, struct ItemWindowStruct *IW));
322 void FreeAttrMenuX PROTOARGs((long *attrNs, struct ItemWindowStruct *IW));
323 void FreeAttrEntriesMenuX PROTOARGs((long *entryNs, int *entryTypes,
324 				     struct ItemWindowStruct *IW));
325 void FreeCDFsMenu PROTOARGs((char **, char **, struct ItemWindowStruct *));
326 Logical CreateCDF PROTOARGs((
327   char *CDFdir, char *CDFname, long zMode, Logical useFormat,
328   Logical negToPosFp0, long workingCache, long stageCache, long compressCache,
329   struct ItemWindowStruct *IWcdfs
330 ));
331 Logical CreateEntry PROTOARGs((Logical, long, Logical *));
332 Logical CreateVar PROTOARGs((Logical, Logical *));
333 Logical EntryExists PROTOARGs((long, long, int, Logical *));
334 Logical SpecificationPrompt PROTOARGs((
335   char CDFspec[DU_MAX_PATH_LEN+1], Logical useFormat, Logical negToPosFp0,
336   long zMode, long workingCache, long stageCache, long compressCache
337 ));
338 Logical TryToEditCDF PROTOARGs((
339   char *CDFspec, Logical negToPosFp0, Logical useFormat, long zMode,
340   long workingCache, long stageCache, long compressCache
341 ));
342 Logical PromptForSpec PROTOARGs((char CDFspec[DU_MAX_PATH_LEN+1]));
343 Logical ReportStatus PROTOARGs((CDFstatus status, Logical center));
344 void CDFstatusWindow PROTOARGs((CDFstatus status, Logical center));
345 void ProblemWindow PROTOARGs((char *message, Logical center));
346 void MessageWindow VARPROTOARGs((char **lineS, ...));
347 Logical ConfirmWindow PROTOARGs((int, int, char *, char *, Logical, int));
348 Logical ConfirmWindow2 PROTOARGs((int, int, char *, char *, Logical, int));
349 void InitializeScreen PROTOARGs((void));
350 void CleanupScreen PROTOARGs((void));
351 Logical EnterIW PROTOARGs((struct ItemWindowStruct *IW, int helpId));
352 Logical EnterPW PROTOARGs((struct PromptWindowStruct *PW, int helpId));
353 int IndexInList PROTOARGs((char *match, int nItems, char **items));
354 int DataTypeItemN PROTOARGs((long dataType));
355 void ShowFullName PROTOARGs((char *name, Logical attr));
356 Logical SelectFormat PROTOARGs((void));
357 Logical SelectEncoding PROTOARGs((void));
358 Logical SelectMajority PROTOARGs((void));
359 Logical SelectCompression PROTOARGs((int what, int row, Logical *changed));
360 Logical SelectSparseness PROTOARGs((Logical zVar, Logical *changed));
361 Logical SelectDataSpec PROTOARGs((
362   long *dataType, long *numElems, char *label
363 ));
364 Logical SelectNumElems PROTOARGs((
365   long dataType, long *numElems, char *label
366 ));
367 Logical SelectChecksum PROTOARGs((void));
368 Logical UpdateTextEditEntries PROTOARGs((
369   long attrN, struct EditWindowStruct *EW
370 ));
371 Logical TextEditEntries PROTOARGs((long attrN));
372 CDFstatus CheckLFS PROTOARGs((char *name, Logical *isLFS, char *fullName
373 ));
374 
375 #if defined(mac)
376 Logical EditQOPs PROTOARGs((int *argC, char **argV[]));
377 #endif
378 
379 /*****************************************************************************/
380 
381 #endif
382