dtcalc: change from obsoleted MAXFLOAT to FLT_MAX from std C
[oweals/cde.git] / cde / lib / DtWidget / Editor.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: Editor.h /main/3 1995/10/26 09:32:07 rswiston $ */
24 /*
25  *  (c) Copyright 1993, 1994 Hewlett-Packard Company
26  *  (c) Copyright 1993, 1994 International Business Machines Corp.
27  *  (c) Copyright 1993, 1994 Sun Microsystems, Inc.
28  *  (c) Copyright 1993, 1994 Novell, Inc.
29  */
30
31 #ifndef _Dt_Editor_h
32 #define _Dt_Editor_h
33
34 #include <Xm/Xm.h>
35
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39
40
41 /*
42  * Constants
43  */
44
45 /* Sources of Help requests */
46 /* Used with XmNhelpCallback */
47
48 #define DtEDITOR_HELP_EDIT_WINDOW               1
49 #define DtEDITOR_HELP_STATUS_LINE               2
50 #define DtEDITOR_HELP_STATUS_CURRENT_LINE       3
51 #define DtEDITOR_HELP_STATUS_TOTAL_LINES        4
52 #define DtEDITOR_HELP_STATUS_MESSAGE            5
53 #define DtEDITOR_HELP_STATUS_OVERSTRIKE         6
54 #define DtEDITOR_HELP_FORMAT_DIALOG             7
55 #define DtEDITOR_HELP_FORMAT_LEFT_MARGIN        8
56 #define DtEDITOR_HELP_FORMAT_RIGHT_MARGIN       9
57 #define DtEDITOR_HELP_FORMAT_ALIGNMENT          10
58 #define DtEDITOR_HELP_CHANGE_DIALOG             11
59 #define DtEDITOR_HELP_CHANGE_FIND               12
60 #define DtEDITOR_HELP_CHANGE_CHANGE             13
61 #define DtEDITOR_HELP_SPELL_DIALOG              14
62 #define DtEDITOR_HELP_SPELL_MISSPELLED_WORDS    15
63 #define DtEDITOR_HELP_SPELL_CHANGE              16
64
65 /* Specifies the last line in the edit area */
66 /* Used with DtEditorGoToLine */
67 #define DtEDITOR_LAST_LINE              -999
68
69 /* Resource constants */
70
71 #ifndef DtNautoShowCursorPosition
72 #define DtNautoShowCursorPosition       XmNautoShowCursorPosition
73 #endif
74 #ifndef DtCAutoShowCursorPosition
75 #define DtCAutoShowCursorPosition       XmCAutoShowCursorPosition
76 #endif
77 #ifndef DtNblinkRate
78 #define DtNblinkRate                    XmNblinkRate
79 #endif
80 #ifndef DtCBlinkRate
81 #define DtCBlinkRate                    XmCBlinkRate
82 #endif
83 #ifndef DtNbuttonFontList  
84 #define DtNbuttonFontList               XmNbuttonFontList
85 #endif
86 #ifndef DtCFontList 
87 #define DtCFontList                     XmCFontList
88 #endif
89 #ifndef DtNcenterToggleLabel
90 #define DtNcenterToggleLabel            "centerToggleLabel"
91 #endif
92 #ifndef DtCCenterToggleLabel
93 #define DtCCenterToggleLabel            "CenterToggleLabel"
94 #endif
95 #ifndef DtNchangeAllButtonLabel
96 #define DtNchangeAllButtonLabel         "changeAllButtonLabel"
97 #endif
98 #ifndef DtCChangeAllButtonLabel
99 #define DtCChangeAllButtonLabel         "ChangeAllButtonLabel"
100 #endif
101 #ifndef DtNchangeButtonLabel
102 #define DtNchangeButtonLabel            "changeButtonLabel"
103 #endif
104 #ifndef DtCChangeButtonLabel
105 #define DtCChangeButtonLabel            "ChangeButtonLabel"
106 #endif
107 #ifndef DtNchangeFieldLabel
108 #define DtNchangeFieldLabel             "changeFieldLabel"
109 #endif
110 #ifndef DtCChangeFieldLabel
111 #define DtCChangeFieldLabel             "ChangeFieldLabel"
112 #endif
113 #ifndef DtNcolumns
114 #define DtNcolumns                      XmNcolumns
115 #endif
116 #ifndef DtCColumns
117 #define DtCColumns                      XmCColumns
118 #endif
119 #ifndef DtNcurrentLineLabel
120 #define DtNcurrentLineLabel             "currentLineLabel"
121 #endif
122 #ifndef DtCCurrentLineLabel
123 #define DtCCurrentLineLabel             "CurrentLineLabel"
124 #endif
125 #ifndef DtNcursorPosition
126 #define DtNcursorPosition               XmNcursorPosition
127 #endif
128 #ifndef DtCCursorPosition
129 #define DtCCursorPosition               XmCCursorPosition
130 #endif
131 #ifndef DtNcursorPositionVisible
132 #define DtNcursorPositionVisible        XmNcursorPositionVisible
133 #endif
134 #ifndef DtCCursorPositionVisible
135 #define DtCCursorPositionVisible        XmCCursorPositionVisible
136 #endif
137 #ifndef DtNdialogTitle
138 #define DtNdialogTitle                  "dialogTitle"
139 #endif
140 #ifndef DtCDialogTitle
141 #define DtCDialogTitle                  XmCDialogTitle
142 #endif
143 #ifndef DtNeditable  
144 #define DtNeditable                     XmNeditable
145 #endif
146 #ifndef DtCEditable 
147 #define DtCEditable                     XmCEditable
148 #endif
149 #ifndef DtNfindButtonLabel
150 #define DtNfindButtonLabel              "findButtonLabel"
151 #endif
152 #ifndef DtCFindButtonLabel
153 #define DtCFindButtonLabel              "FindButtonLabel"
154 #endif
155 #ifndef DtNfindChangeDialogTitle
156 #define DtNfindChangeDialogTitle        "findChangeDialogTitle"
157 #endif
158 #ifndef DtCFindChangeDialogTitle
159 #define DtCFindChangeDialogTitle        "FindChangeDialogTitle"
160 #endif
161 #ifndef DtNfindFieldLabel
162 #define DtNfindFieldLabel               "findFieldLabel"
163 #endif
164 #ifndef DtCFindFieldLabel
165 #define DtCFindFieldLabel               "FindFieldLabel"
166 #endif
167 #ifndef DtNformatAllButtonLabel
168 #define DtNformatAllButtonLabel         "formatAllButtonLabel"
169 #endif
170 #ifndef DtCFormatAllButtonLabel
171 #define DtCFormatAllButtonLabel         "FormatAllButtonLabel"
172 #endif
173 #ifndef DtNformatParagraphButtonLabel
174 #define DtNformatParagraphButtonLabel   "formatParagraphButtonLabel"
175 #endif
176 #ifndef DtCFormatParagraphButtonLabel
177 #define DtCFormatParagraphButtonLabel   "FormatParagraphButtonLabel"
178 #endif
179 #ifndef DtNformatSettingsDialogTitle
180 #define DtNformatSettingsDialogTitle    "formatSettingsDialogTitle"
181 #endif
182 #ifndef DtCFormatSettingsDialogTitle
183 #define DtCFormatSettingsDialogTitle    "FormatSettingsDialogTitle"
184 #endif
185 #ifndef DtNinformationDialogTitle
186 #define DtNinformationDialogTitle       "informationDialogTitle"
187 #endif
188 #ifndef DtCInformationDialogTitle
189 #define DtCInformationDialogTitle       "InformationDialogTitle"
190 #endif
191 #ifndef DtNinsertLabel
192 #define DtNinsertLabel                  "insertLabel"
193 #endif
194 #ifndef DtCInsertLabel 
195 #define DtCInsertLabel                  "InsertLabel"
196 #endif
197 #ifndef DtNjustifyToggleLabel
198 #define DtNjustifyToggleLabel           "justifyToggleLabel"
199 #endif
200 #ifndef DtCJustifyToggleLabel
201 #define DtCJustifyToggleLabel           "JustifyToggleLabel"
202 #endif
203 #ifndef DtNlabelFontList  
204 #define DtNlabelFontList                XmNlabelFontList
205 #endif
206 #ifndef DtNleftAlignToggleLabel
207 #define DtNleftAlignToggleLabel         "leftAlignToggleLabel"
208 #endif
209 #ifndef DtCLeftAlignToggleLabel 
210 #define DtCLeftAlignToggleLabel         "LeftAlignToggleLabel"
211 #endif
212 #ifndef DtNleftMarginFieldLabel
213 #define DtNleftMarginFieldLabel         "leftMarginFieldLabel"
214 #endif
215 #ifndef DtCLeftMarginFieldLabel 
216 #define DtCLeftMarginFieldLabel         "LeftMarginFieldLabel"
217 #endif
218 #ifndef DtNmaxLength  
219 #define DtNmaxLength                    XmNmaxLength
220 #endif
221 #ifndef DtCMaxLength  
222 #define DtCMaxLength                    XmCMaxLength
223 #endif
224 #ifndef DtNmisspelledListLabel
225 #define DtNmisspelledListLabel          "misspelledListLabel"
226 #endif
227 #ifndef DtCMisspelledListLabel 
228 #define DtCMisspelledListLabel          "MisspelledListLabel"
229 #endif
230 #ifndef DtNoverstrike 
231 #define DtNoverstrike                   "overstrike"
232 #endif
233 #ifndef DtCOverstrike
234 #define DtCOverstrike                   "Overstrike"
235 #endif
236 #ifndef DtNoverstrikeLabel
237 #define DtNoverstrikeLabel              "overstrikeLabel"
238 #endif
239 #ifndef DtCOverstrikeLabel 
240 #define DtCOverstrikeLabel              "OverstrikeLabel"
241 #endif
242 #ifndef DtNrightAlignToggleLabel
243 #define DtNrightAlignToggleLabel        "rightAlignToggleLabel"
244 #endif
245 #ifndef DtCRightAlignToggleLabel 
246 #define DtCRightAlignToggleLabel        "RightAlignToggleLabel"
247 #endif
248 #ifndef DtNrightMarginFieldLabel
249 #define DtNrightMarginFieldLabel        "rightMarginFieldLabel"
250 #endif
251 #ifndef DtCRightMarginFieldLabel 
252 #define DtCRightMarginFieldLabel        "RightMarginFieldLabel"
253 #endif
254 #ifndef DtNrows 
255 #define DtNrows                         XmNrows
256 #endif
257 #ifndef DtCRows
258 #define DtCRows                         XmCRows
259 #endif
260 #ifndef DtNscrollHorizontal 
261 #define DtNscrollHorizontal             XmNscrollHorizontal
262 #endif
263 #ifndef DtCScroll
264 #define DtCScroll                       XmCScroll
265 #endif
266 #ifndef DtNscrollLeftSide 
267 #define DtNscrollLeftSide               XmNscrollLeftSide
268 #endif
269 #ifndef DtCScrollSide
270 #define DtCScrollSide                   XmCScrollSide
271 #endif
272 #ifndef DtNscrollTopSide 
273 #define DtNscrollTopSide                XmNscrollTopSide
274 #endif
275 #ifndef DtNscrollVertical 
276 #define DtNscrollVertical               XmNscrollVertical
277 #endif
278 #ifndef DtNshowStatusLine
279 #define DtNshowStatusLine               "showStatusLine"
280 #endif
281 #ifndef DtCShowStatusLine
282 #define DtCShowStatusLine               "ShowStatusLine"
283 #endif
284 #ifndef DtNspellDialogTitle
285 #define DtNspellDialogTitle             "spellDialogTitle"
286 #endif
287 #ifndef DtCSpellDialogTitle
288 #define DtCSpellDialogTitle             "SpellDialogTitle"
289 #endif
290 #ifndef DtNspellFilter
291 #define DtNspellFilter                  "spellFilter"
292 #endif
293 #ifndef DtCSpellFilter
294 #define DtCSpellFilter                  "SpellFilter"
295 #endif
296 #ifndef DtNtextBackground 
297 #define DtNtextBackground               "textBackground"
298 #endif
299 #ifndef DtCBackground 
300 #define DtCBackground                   XmCBackground
301 #endif
302 #ifndef DtNtextDeselectCallback 
303 #define DtNtextDeselectCallback         "textDeselectCallback"
304 #endif
305 #ifndef DtNtextFontList  
306 #define DtNtextFontList                 XmNtextFontList
307 #endif
308 #ifndef DtNtextForeground 
309 #define DtNtextForeground               "textForeground"
310 #endif
311 #ifndef DtCForeground 
312 #define DtCForeground                   XmCForeground
313 #endif
314 #ifndef DtNtextSelectCallback 
315 #define DtNtextSelectCallback           "textSelectCallback"
316 #endif
317 #ifndef DtNtextTranslations 
318 #define DtNtextTranslations             XmNtextTranslations
319 #endif
320 #ifndef DtCTranslations 
321 #define DtCTranslations                 XmCTranslations
322 #endif
323 #ifndef DtCCallback 
324 #define DtCCallback                     XmCCallback
325 #endif
326 #ifndef DtNtopCharacter 
327 #define DtNtopCharacter                 XmNtopCharacter
328 #endif
329 #ifndef DtCTopCharacter  
330 #define DtCTopCharacter                 XmCTopCharacter
331 #endif
332 #ifndef DtNtotalLineCountLabel
333 #define DtNtotalLineCountLabel          "totalLineCountLabel"
334 #endif
335 #ifndef DtCTotalLineCountLabel 
336 #define DtCTotalLineCountLabel          "TotalLineCountLabel"
337 #endif
338 #ifndef DtNwordWrap 
339 #define DtNwordWrap                     XmNwordWrap
340 #endif
341 #ifndef DtCWordWrap  
342 #define DtCWordWrap                     XmCWordWrap
343 #endif
344
345 #ifndef DtEditorHelpCallbackStruct
346 #define DtEditorHelpCallbackStruct XmAnyCallbackStruct 
347 #endif
348 #ifndef DtEditorSelectCallbackStruct 
349 #define DtEditorSelectCallbackStruct    XmAnyCallbackStruct
350 #endif
351 #ifndef DtEditorDeselectCallbackStruct 
352 #define DtEditorDeselectCallbackStruct  XmAnyCallbackStruct
353 #endif
354
355
356 /* Used with DtEditorChange() */
357
358 enum {
359         DtEDITOR_CURRENT_SELECTION,
360         DtEDITOR_NEXT_OCCURRENCE,
361         DtEDITOR_ALL_OCCURRENCES 
362 };
363
364 /* Used with DtEditorFormat() */
365
366 enum {
367         DtEDITOR_FORMAT_ALL,
368         DtEDITOR_FORMAT_PARAGRAPH
369 };
370
371 enum {
372         DtEDITOR_ALIGN_CENTER,
373         DtEDITOR_ALIGN_JUSTIFY,
374         DtEDITOR_ALIGN_LEFT,
375         DtEDITOR_ALIGN_RIGHT
376 };
377
378 /* Used with DtNtextSelectCallback */
379 enum {
380         DtEDITOR_TEXT_SELECT,
381         DtEDITOR_TEXT_DESELECT
382 };
383
384 /*
385  * Types
386  */
387
388 typedef enum _DtEditorErrorCode{
389         DtEDITOR_NO_ERRORS,
390         DtEDITOR_INVALID_TYPE,
391         DtEDITOR_INVALID_RANGE,
392         DtEDITOR_NULL_ITEM,
393         DtEDITOR_ILLEGAL_SIZE,
394         DtEDITOR_SPELL_FILTER_FAILED,
395         DtEDITOR_NO_TMP_FILE,
396         DtEDITOR_INVALID_FILENAME,
397         DtEDITOR_NONEXISTENT_FILE,
398         DtEDITOR_UNREADABLE_FILE,
399         DtEDITOR_READ_ONLY_FILE,
400         DtEDITOR_NO_FILE_ACCESS,
401         DtEDITOR_DIRECTORY,
402         DtEDITOR_CHAR_SPECIAL_FILE,
403         DtEDITOR_BLOCK_MODE_FILE,
404         DtEDITOR_UNWRITABLE_FILE,
405         DtEDITOR_WRITABLE_FILE,
406         DtEDITOR_SAVE_FAILED,
407         DtEDITOR_INSUFFICIENT_MEMORY,
408         DtEDITOR_NULLS_REMOVED
409 } DtEditorErrorCode;
410
411
412 /* Used with DtEditorChange() to specify Find and Change To strings */
413
414 typedef struct _DtEditorChangeValues {
415         char *find;
416         char *changeTo;
417 } DtEditorChangeValues;
418
419 /* Used with DtEditorFormat() to specify left margin, right margin *
420  * and justification styles.                                       */
421
422 typedef struct _DtEditorFormatSettings {
423         int             leftMargin;
424         int             rightMargin;
425         unsigned int    alignment;
426 } DtEditorFormatSettings;
427
428 /* Types used to tag data to/from the editor widget */
429
430 typedef enum _DtEditorDataFormat{
431         DtEDITOR_TEXT,
432         DtEDITOR_WCHAR,
433         DtEDITOR_DATA
434 } DtEditorDataFormat;
435
436
437 /* Types used to pass data to/from the editor widget */
438
439 typedef struct _DtEditor_DataObj {
440         unsigned int    length;
441         void            *buf;
442 } DtEditor_DataObj;
443
444 typedef struct _DtEditorContentRec {
445         DtEditorDataFormat type;
446         union   {
447                  char     *string;
448                  wchar_t  *wchar;
449                  DtEditor_DataObj       data;
450         } value;
451 } DtEditorContentRec;
452
453
454 /* Widget class and instance */
455
456 typedef struct  _DtEditorClassRec       *DtEditorClass;
457 typedef struct  _DtEditorRec            *DtEditorWidget;
458
459
460 /*
461  * Data
462  */
463
464 /* Widget class */
465
466 externalref     WidgetClass             dtEditorWidgetClass;
467
468
469 /*
470  * Functions
471  */
472
473 extern Widget DtCreateEditor(
474                 Widget          parent,
475                 char            *name,
476                 ArgList         arglist,
477                 Cardinal        argcount);
478
479 extern DtEditorErrorCode DtEditorAppend(
480                 Widget          widget,
481                 DtEditorContentRec *data);
482
483 extern DtEditorErrorCode DtEditorAppendFromFile(
484                 Widget          widget,
485                 char            *fileName);
486
487 extern Boolean DtEditorChange(
488                 Widget                  widget,
489                 DtEditorChangeValues    *findChangeStrings,
490                 unsigned int            instanceToChange);
491
492 extern Boolean DtEditorCheckForUnsavedChanges(
493                 Widget          widget);
494
495 extern Boolean DtEditorClearSelection(
496                 Widget          widget);
497
498 extern Boolean DtEditorCopyToClipboard(
499                 Widget          widget);
500
501 extern Boolean DtEditorCutToClipboard(
502                 Widget          widget);
503
504 extern Boolean DtEditorDeleteSelection(
505                 Widget          widget);
506
507 extern Boolean DtEditorDeselect(
508                 Widget          widget);
509
510 extern void DtEditorDisableRedisplay(
511                 Widget          widget);
512
513 extern void DtEditorEnableRedisplay(
514                 Widget          widget);
515
516 extern Boolean DtEditorFind(
517                 Widget          widget,
518                 char *  find);
519
520 extern DtEditorErrorCode DtEditorFormat(
521                 Widget          widget,
522                 DtEditorFormatSettings  *formatSettings,
523                 unsigned int    amountToFormat); 
524
525 extern DtEditorErrorCode DtEditorGetContents(
526                 Widget          widget,
527                 DtEditorContentRec *data,
528                 Boolean         hardCarriageReturns,
529                 Boolean         markContentsAsSaved);
530
531 extern XmTextPosition DtEditorGetInsertionPosition(
532                 Widget          widget);
533
534 extern XmTextPosition DtEditorGetLastPosition(
535                 Widget          widget);
536
537 extern Widget DtEditorGetMessageTextFieldID(
538                 Widget          widget);
539
540 extern void DtEditorGetSizeHints(
541                 Widget          widget,
542                 XSizeHints      *pHints);
543
544 extern void DtEditorGoToLine(
545                 Widget          widget,
546                 int     lineNumber);
547
548 extern DtEditorErrorCode DtEditorInsert(
549                 Widget          widget,
550                 DtEditorContentRec *data);
551
552 extern DtEditorErrorCode DtEditorInsertFromFile(
553                 Widget          widget,
554                 char            *fileName);
555
556 extern void DtEditorInvokeFindChangeDialog(
557                 Widget          widget);
558
559 extern void DtEditorInvokeFormatDialog(
560                 Widget          widget);
561
562 extern DtEditorErrorCode DtEditorInvokeSpellDialog(
563                 Widget          widget);
564
565 extern Boolean DtEditorPasteFromClipboard(
566                 Widget          widget);
567
568 extern DtEditorErrorCode DtEditorReplace(
569                 Widget                  widget,
570                 XmTextPosition          startPos,
571                 XmTextPosition          endPos,
572                 DtEditorContentRec      *data);
573
574 extern DtEditorErrorCode DtEditorReplaceFromFile(
575                 Widget                  widget,
576                 XmTextPosition          startPos,
577                 XmTextPosition          endPos,
578                 char                    *fileName);
579
580 extern void DtEditorReset(
581                 Widget          widget);
582
583 extern DtEditorErrorCode DtEditorSaveContentsToFile(
584                 Widget          widget,
585                 char            *fileName,
586                 Boolean         overwriteIfExists,
587                 Boolean         hardCarriageReturns,
588                 Boolean         markContentsAsSaved);
589
590 extern Boolean DtEditorSelectAll(
591                 Widget          widget);
592
593 extern DtEditorErrorCode DtEditorSetContents(
594                 Widget          widget,
595                 DtEditorContentRec *data);
596
597 extern DtEditorErrorCode DtEditorSetContentsFromFile(
598                 Widget          widget,
599                 char            *fileName);
600
601 extern void DtEditorSetInsertionPosition(
602                 Widget          widget,
603                 XmTextPosition  position);
604
605 extern void DtEditorTraverseToEditor(
606                 Widget          widget);
607
608 extern Boolean DtEditorUndoEdit(
609                 Widget          widget);
610
611
612 #ifdef __cplusplus
613 }
614 #endif
615
616 #endif /* _Dt_Editor_h */