2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
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)
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
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
23 /* $TOG: dtpad.h /main/20 1999/09/15 15:14:33 mgreess $ */
24 /**********************************<+>*************************************
25 ***************************************************************************
29 ** Project: COSE dtpad, a memo maker type editor based on the motif
34 ** This is the header file for the dtpad list of file which include:
37 *******************************************************************
38 ** (c) Copyright Hewlett-Packard Company, 1990. All rights are
39 ** reserved. Copying or other reproduction of this program
40 ** except for archival purposes is prohibited without prior
41 ** written consent of Hewlett-Packard Company.
42 ********************************************************************
44 ********************************************************************
45 ** (c) Copyright 1993, 1994 Hewlett-Packard Company
46 ** (c) Copyright 1993, 1994 International Business Machines Corp.
47 ** (c) Copyright 1993, 1994 Sun Microsystems, Inc.
48 ** (c) Copyright 1993, 1994 Novell, Inc.
49 ********************************************************************
52 **************************************************************************
53 **********************************<+>*************************************/
62 #include <sys/types.h>
65 #include <X11/Xatom.h>
66 #include <X11/Intrinsic.h>
67 #include <X11/Shell.h>
68 #include <Xm/Protocols.h>
72 #include <Xm/CascadeB.h>
73 #include <Xm/CascadeBG.h>
74 #include <Xm/FileSB.h>
75 #include <Xm/LabelG.h>
78 #include <Xm/MessageB.h>
80 #include <Xm/PushBG.h>
81 #include <Xm/RowColumn.h>
82 #include <Xm/SelectioB.h>
83 #include <Xm/SeparatoG.h>
86 #include <Xm/ToggleB.h>
87 #include <Xm/ToggleBG.h>
89 #include <Dt/Session.h>
92 #include <Dt/Message.h>
93 #include <Dt/UserMsg.h>
94 #include <Dt/Editor.h>
96 #include <Dt/PrintOptionsP.h>
100 #define DTPAD_CLASS_NAME "Dtpad"
101 #define CHECKSPELLING 0
105 #define UNKNOWN_ACTION -1
106 #define EXTEND_SELECTION 0
111 #define DEFAULT_GEOMETRY_STR "80x24"
112 #define DEFAULT_COLS 80
113 #define DEFAULT_ROWS 24
123 /************************************************************************
125 ************************************************************************/
131 Boolean missingFileWarning;
132 Boolean readOnlyWarning;
135 String workspaceList;
141 Boolean exitOnLastClose;
142 } ApplicationData, *ApplicationDataPtr;
145 /************************************************************************
146 * structures related to various dialogs
147 ************************************************************************/
154 /* -----> "Open" file selection box and "Save?" dialog widgets
155 * (indentation indicates widget hierarchy) */
168 ToggleWidgets toggleWidgets;
171 /* -----> "Save As" file selection box and "Already Exists" dialog widgets
172 * (indentation indicates widget hierarchy) */
176 ToggleWidgets toggleWidgets;
180 typedef struct _confirm {
181 int confirmationStatus; /* status from resource-spec'd comfirm dlg */
188 /************************************************************************
189 * structures related to menu bar functions
190 ************************************************************************/
191 /* -----> structs related to "File" pulldown menu */
202 Widget silentPrintBtn;
203 Widget xprintBtn; /* Added temporarily to support X Print Service */
208 void (*pendingFileFunc)();
209 void (*pendingFileHelpFunc)();
214 *netfile, /* obpaque Took Talk string handle to file */
217 pathDir[512], /* dir in specified path */
218 includePathDir[512]; /* dir in specified path */
219 FileWidgets fileWidgets;
226 /* -----> structs related to "Edit" pulldown menu */
243 /* -----> structs related to "Format" pulldown menu */
254 FormatWidgets widgets;
255 int right_margin; /* format size */
259 /* -----> structs related to "Options" pulldown menu */
261 Widget overstrikeBtn,
266 } OptionsMenuWidgets;
269 OptionsMenuWidgets widgets;
272 /* -----> structs related to "Help" pulldown menu */
273 typedef struct _helpStruct {
274 struct _helpStruct *pNext;
275 struct _helpStruct *pPrev;
281 /************************************************************************
282 * structs related to the status line
283 ************************************************************************/
284 typedef struct _statusWidgets {
292 typedef struct _status {
293 StatusWidgets widgets;
299 /************************************************************************
300 * structs related to a ToolTalk Edit/Display/Instantiate message and any
301 * related Quit and Save messages.
302 ************************************************************************/
303 typedef struct _ttEditRequest {
304 Tt_message contract; /* media request */
305 char *msg_id; /* id of ToolTalk media request */
306 Tttk_op op; /* op code = Edit/Display/Instantiate */
307 char *vtype; /* media type */
308 Boolean contents; /* indicates file or buffer request */
309 Boolean returnBufContents; /* indicates if contents returned in reply */
310 char *fileName; /* file name supplied in media request */
311 char *docName; /* title of file/buffer */
312 Tt_pattern savePattern; /* pattern to handle Save requests */
315 typedef struct _ttQuitRequest {
316 Tt_message contract; /* original TTDT_QUIT request */
317 Boolean silent; /* arg #1 */
318 Boolean force; /* arg #2 */
319 char * operation2Quit; /* arg #3 - window to quit (its Edit msg ID) */
322 typedef struct _ttSaveRequest {
323 Tt_message contract; /* original TTDT_SAVE request */
324 char * messageID; /* window to save (i.e. its Edit message ID) */
327 /************************************************************************
328 * Editor struct - the primary sturcture for each Editor instance
329 ************************************************************************/
330 typedef struct _editor {
331 char *progname; /* program name without the full pathname */
332 char *dialogTitle; /* string retrieved from message catalog */
333 Display *display; /* Display */
334 XtAppContext app_context; /* Application Context */
335 ApplicationData xrdb;
336 TTEditRequest ttEditReq; /* ToolTalk Edit/Display/Instantiate msg info */
337 TTQuitRequest ttQuitReq; /* ToolTalk Quit msg info */
338 TTSaveRequest ttSaveReq; /* ToolTalk Save msg info */
339 HelpStruct *pHelpCache;
340 FileStuff fileStuff; /* all data for File functions */
341 EditStuff editStuff; /* all data for Edit functions */
342 FormatStuff formatStuff; /* all data for Format functions */
343 OptionsStuff optionsStuff; /* all data for Options functions */
344 ConfirmStuff confirmStuff; /* data for resource spec'd confirm dialog */
345 StatusStuff statusStuff;
351 Dimension width, height;
353 char select_string[512];
354 Widget app_shell, /* ApplicationShell */
355 editor, /* Dt Editor widget */
356 statusLineMsg, /* Dt Editor widget status line text field */
357 panedWindow, /* Paned window */
358 mainWindow, /* MainWindow */
359 menu_bar, /* RowColumn */
367 unsigned short group_id, /* users group id - for file type checking */
368 user_id; /* the users id - for file type checking */
369 struct _editor *pNextPad;
370 struct _editor *pPrevPad;
375 XtWorkProcId fileExitWorkprocID;
384 /************************************************************************
385 * Printing structs - structures to support prining using the X Print Service
386 ************************************************************************/
388 * Enums for the strings that appear in the header and footer fields
392 PRINT_NONE_STRING_TYPE_ENUM,
393 PRINT_DATE_STRING_TYPE_ENUM,
394 PRINT_DOCNAME_STRING_TYPE_ENUM,
395 PRINT_PAGE_NUMBER_STRING_TYPE_ENUM,
396 PRINT_USER_NAME_STRING_TYPE_ENUM
397 } PrintStringTypeEnum;
401 * Data structure to saving print options from the PrintSetup GUI.
419 * Structure summarizing the setup context for a print job.
420 * Includes the widgets which make up the print setup dialog,
421 * and the printing options retrieved from the print setup dialog.
423 typedef struct print_setup_widgets {
434 typedef struct print_setup {
442 XtPointer cancelClosure,
457 * Structure summarizing a print job including the print options used
458 * and the current state of the job.
460 typedef struct print_output {
473 Dimension marginRight;
474 Dimension marginBottom;
475 Dimension marginLeft;
480 * Structure summarizing a print job including the print options used
481 * and the current state of the job.
483 typedef struct print_job {
484 struct _editor *pPad;
490 PrintOutput *pOutput;
493 DtPrintSetupData *printData;
498 Widget nextpageShell,
503 /************************************************************************
504 * macro to get message catalog strings
505 ************************************************************************/
506 #ifndef NO_MESSAGE_CATALOG
507 # define GETMESSAGE(set, number, string)\
508 _DtpadGetMessage(set, number, string)
510 # define GETMESSAGE(set, number, string)\
514 #define UNNAMED_TITLE ((char *)GETMESSAGE(7, 6, "(UNTITLED)"))
515 /*[SuG 5/10/95] Added for fixing print bug. */
516 #define UNNAMED_TITLE_P ((char *)GETMESSAGE(5, 21, "UNTITLED"))
519 /************************************************************************
520 * functions in fileCB.c
521 ************************************************************************/
522 extern void FileCascadingCB(
526 extern void FileNewCB(
530 extern void FileOpenCB(
534 extern void FileIncludeCB(
538 extern void FileSaveCB(
542 extern void FileSaveAsCB(
546 extern void FilePrintCB(
550 extern void FileXpPrintCB(
554 extern void FileExitCB(
558 extern void NoSaveCB(
562 extern void CancelFileSelectCB(
566 extern void SaveNewLinesCB(
568 XtPointer client_data,
569 XtPointer call_data);
570 extern void SaveAsOkCB(
574 extern void AlrdyExistsOkCB(
578 extern void SaveAsCancelCB(
582 extern void AlrdyExistsCancelCB(
586 extern void AskIfSaveCancelCB(
591 /************************************************************************
592 * functions in fileDlg.c
593 ************************************************************************/
594 extern void PostAlreadyExistsDlg(
596 extern void SetSaveAsDefaultString(Editor *pPad);
597 extern void CreateSaveAsDialog(
599 extern void ExtractAndStoreDir(
603 extern void GetFileName(
607 extern char *DialogTitle(
612 unsigned char dialogType);
613 extern void AskIfSave(
615 extern void PostSaveError(
618 DtEditorErrorCode errorCode);
619 extern void AskForConfirmation(
623 /************************************************************************
624 * functions in editCB.c
625 ************************************************************************/
626 extern void EditUndoCB(
630 extern void EditCutCB(
634 extern void EditCopyCB(
638 extern void EditPasteCB(
642 extern void EditClearCB(
646 extern void EditDeleteCB(
650 extern void SelectAllCB(
654 extern void FindChangeCB(
658 extern void CheckSpellingCB(
662 extern void SetSelectionMenuItems(
664 Boolean sensitivity);
665 extern void TextSelectedCB(
669 extern void TextDeselectedCB(
675 /************************************************************************
676 * functions in formatCB.c
677 ************************************************************************/
678 extern void FormatCB(
682 extern void FormatParaCB(
686 extern void FormatAllCB(
692 /************************************************************************
693 * functions in optionsCB.c
694 ************************************************************************/
695 extern void OverstrikeCB(
700 extern void WordWrapCB(
705 extern void StatusLineCB(
711 /************************************************************************
712 * functions in main.c
713 ************************************************************************/
714 extern void CreatePad(
716 extern void StartDbUpdate(
717 XtPointer clientData);
721 XtPointer clientData);
722 extern void setPanicConditions(void);
723 extern void SetWindowSize(
725 extern void SetAppShellResizeHints(
727 extern void RealizeNewPad(
729 extern void ManageOldPad(
731 Boolean isCurrentlyVisible);
732 extern void InitDtEditSession(
736 extern void SigcldHndlr(
738 extern void UnmanageAllDialogs(
740 extern void RestoreInitialServerResources(
743 #ifndef NO_MESSAGE_CATALOG
744 extern char * _DtpadGetMessage(
751 /************************************************************************
752 * functions in dtpad.c
753 ************************************************************************/
754 extern void CreateDefaultImage(
759 extern void ChangeMainWindowTitle(
761 extern void SetWindowTitles(
763 extern void SetSaveAsLabelAndDialog(
765 extern void CreateMenuBar(
767 extern void CreateEditorWidget(
769 extern Boolean FindOrCreatePad(
771 extern char *MbStrchr(
774 extern char *MbStrchri(
778 extern char *MbStrrchr(
781 extern char *MbBasename(
783 #ifndef NO_MESSAGE_CATALOG
784 extern char *GetMessage(
789 extern void SetStatusMessage(
792 extern void ClearStatusMessage(
796 /************************************************************************
797 * functions in session.c
798 ************************************************************************/
799 extern void SaveSessionCB(
807 extern void restoreSession(
809 extern void RestorePad(
815 /************************************************************************
816 * functions in fileIo.c
817 ************************************************************************/
818 extern void LoadFile(
821 extern char * GetTempFile(
823 extern void PanicSave(
825 extern void SetStatusLineMsg(
829 /************************************************************************
830 * functions in helpDlg.c
831 ************************************************************************/
832 extern void SetHelpVolAndDisplayHelp(
836 extern void DisplayHelp(
840 extern void DisplayNewHelpWindow(
844 extern Widget CreateHelpDialog(
846 extern void DisplayHelpDialog(
853 /************************************************************************
854 * functions in helpCB.c
855 ************************************************************************/
856 extern void HelpMenubarCB(
861 extern void HelpFileCB(
865 extern void HelpEditCB(
869 extern void HelpFormatCB(
873 extern void HelpOptionsCB(
877 extern void HelpHelpCB(
882 extern void HelpOpenDialogCB(
886 extern void HelpIncludeDialogCB(
890 extern void HelpSaveAsDialogCB(
894 extern void HelpFileSaveNewLinesCB(
898 extern void HelpAskIfSaveDialogCB(
902 extern void HelpFileAlreadyExistsCB(
906 extern void HelpEditorWidgetCB(
911 extern void HelpPrintSetupDialogCB(
913 XtPointer client_data,
914 XtPointer call_data );
915 extern void HelpPrintSetupAppSpecificCB(
917 XtPointer client_data,
918 XtPointer call_data );
919 extern void HelpPrintSetupGenericCB(
921 XtPointer client_data,
922 XtPointer call_data );
923 extern void HelpPrintSetupPageHeadersFootersCB(
925 XtPointer client_data,
926 XtPointer call_data );
927 extern void HelpPrintSetupPageMargins(
929 XtPointer client_data,
930 XtPointer call_data );
932 extern void HelpOverviewCB(
936 extern void HelpTasksCB(
940 extern void HelpTOCCB(
944 extern void HelpReferenceCB(
948 extern void HelpOnItemCB(
952 extern void HelpUsingHelpCB(
956 extern void HelpAboutCB(
961 extern void HelpHyperlinkCB(
965 extern void HelpCloseCB(
971 /************************************************************************
972 * functions in ttMsgSupport.c
973 ************************************************************************/
974 extern Tt_status TTstartDesktopMediaExchange(
975 Widget topLevelWithWmCommand,
977 extern Boolean TTmediaDepositContents(
979 extern Boolean TTmediaReply(
981 extern void TTresetQuitArgs(
983 extern void TTfailPendingQuit(
985 extern Tt_status TTdesktopOpen(
988 Boolean sendStarted );
989 extern void TTwarning(
994 /************************************************************************
995 * functions in printJob.c
996 ************************************************************************/
997 extern PrintJob * PrintJobCreate(
1002 extern void PrintJobDestroy(
1004 extern void PrintJobExecute(
1006 extern void PrintJobCancel(
1009 extern Display * PrintJobGetErrorPrintDisplay();
1010 extern void PrintJobSetErrorPrintDisplay(Display *display);
1011 extern Boolean PrintJobIsActivePrintDisplay(Display *display);
1013 /************************************************************************
1014 * functions in printOption.c
1015 ************************************************************************/
1016 extern void PrintOptionsGetCurrent(
1017 PrintOptions *pOptions);
1018 extern void PrintOptionsGetDefault(
1019 PrintOptions *pOptions);
1020 extern void PrintOptionsSave(
1021 PrintOptions *pOptions);
1023 /************************************************************************
1024 * functions in printOutput.c
1025 ************************************************************************/
1026 extern PrintOutput *PrintOutputCreate(
1028 extern void PrintOutputDestroy(
1029 PrintOutput *pOutput);
1030 extern void PrintOutputHideFooters(
1031 PrintOutput *pOutput);
1032 extern void PrintOutputShowFooters(
1033 PrintOutput *pOutput);
1034 extern void PrintOutputHideHeaders(
1035 PrintOutput *pOutput);
1036 extern void PrintOutputShowHeaders(
1037 PrintOutput *pOutput);
1038 extern void PrintOutputSetHdrFtrString(
1039 PrintOutput *pOutput,
1040 _DtPrintHdrFtrEnum which,
1042 extern void PrintOutputSetHdrFtrStrings(
1043 PrintOutput *pOutput,
1048 extern void PrintOutputSetPageMargin(
1049 PrintOutput *pOutput,
1050 _DtPrintMarginEnum which,
1052 Boolean *parseError);
1053 extern void PrintOutputSetPageMargins(
1054 PrintOutput *pOutput,
1055 const char *marginTop,
1056 const char *marginRight,
1057 const char *marginBottom,
1058 const char *marginLeft,
1059 Boolean *parseError);
1060 extern void PrintOutputSetWordWrap(
1061 PrintOutput *pOutput,
1063 extern int PrintOutputGetLinesPerPage(
1064 PrintOutput *pOutput);
1065 extern int PrintOutputGetNumLines(
1066 PrintOutput *pOutput);
1067 extern Boolean PrintOutputPageUp(
1068 PrintOutput *pOutput);
1069 extern Boolean PrintOutputPageDown(
1070 PrintOutput *pOutput);
1071 extern void PrintOutputFirstPage(
1072 PrintOutput *pOutput);
1073 extern DtEditorErrorCode PrintOutputLoadFile(
1074 PrintOutput *pOutput,
1077 /************************************************************************
1078 * functions in printSetup.c
1079 ************************************************************************/
1080 extern PrintSetup *PrintSetupCreate(
1085 XtCallbackProc cancelCB, XtPointer cancelClosure,
1086 XtCallbackProc closeDisplayCB, XtPointer closeDisplayClosure,
1087 XtCallbackProc printCB, XtPointer printClosure,
1088 XtCallbackProc setupCB, XtPointer setupClosure
1090 extern void PrintSetupDestroy(
1091 PrintSetup *pSetup);
1092 extern void PrintSetupDisplay(
1093 PrintSetup *pSetup);
1094 extern void PrintSetupSaveOptions(
1095 PrintSetup *pSetup);
1096 extern PrintStringTypeEnum PrintSetupGetHdrFtrSpec(
1098 _DtPrintHdrFtrEnum which);
1099 extern char *PrintSetupGetMarginSpec(
1101 _DtPrintMarginEnum which);
1102 extern Boolean PrintSetupGetDefaultPrintData(
1104 DtPrintSetupData *pData);
1105 extern Boolean PrintSetupUseWordWrap(
1106 PrintSetup *pSetup);
1108 #endif /* DTPAD_H */