home *** CD-ROM | disk | FTP | other *** search
- /**---------------------------------------------------------------------
- ***
- *** file: xmedialg.c
- ***
- *** project: jetedit - Motif Widgets text editor
- ***
- ***-------------------------------------------------------------------*/
-
- #include "xme.h"
-
- #define DIALOG_FSELECT 300
- #define DIALOG_OWARNING 301
- #define DIALOG_NWARNING 302
- #define DIALOG_CWARNING 303
- #define DIALOG_XWARNING 304
- #define DIALOG_NEW 305
- #define DIALOG_SAVE_AS 306
- #define DIALOG_HELP 307
- #define DIALOG_PRINT 308
- #define DIALOG_GOTO 309
- #define DIALOG_FIND 310
- #define DIALOG_F_EXISTS 311
- #define DIALOG_F_MODE 312
- #define DIALOG_EXISTS_AS 313
- #define DIALOG_PREF 314
-
- extern char warningBits[];
-
- char find_help_string[] = "\n\
- Regular Expressions Quick Reference\n\
- **********************************************\n\
- RE refers to a regular expression.\n\
- ^RE$ Anchor the beginning and end of a line.\n\
- . Matches any character.\n\
- [...] Brackets match any characters they contain,\n\
- unless the first character is ^, in which\n\
- case they match characters NOT contained.\n\
- [a-e] Matches a,b,c,d or e.\n\
- RE* Matches zero or more occurences of RE.\n\
- RE\\{m,n\\} Matches a minimum m and maximum n occurrences\n\
- of RE.\n\
- **********************************************\n\
- To enter a Tab into the Find or Replace strings, type the Tab into the editor's main window, then copy it into the dialog.\n\
- ";
-
- /*-------------------------------------------------------------
- ** DialogAcceptCB
- ** Process callback from Dialog "Ok" actions.
- */
- void DialogAcceptCB (w, client_data, call_data)
- Widget w; /* widget id */
- caddr_t client_data; /* data from application */
- caddr_t call_data; /* data from widget class */
- {
- char *command; /* command used in printing */
- char *goto_string=NULL;
- char line_string[15];
- int tfd; /* temporary file descriptor */
- Arg al[1];
- mode_t mode_mask;
- struct stat statbuf; /* Information on a file. */
- char dir_string[120];
- int i,j;
-
- switch ((int)client_data)
- {
- case DIALOG_FSELECT:
- /* open the file and read it into the text widget */
- thefile = NULL;
- {
- XmFileSelectionBoxCallbackStruct *fcb =
- (XmFileSelectionBoxCallbackStruct *) call_data;
-
- /* get the thefile from the file selection box */
- XmStringGetLtoR(fcb->value, charset, &thefile);
- }
- /* Open file, print error if it does not exist. */
- if ((tfd = open(thefile, O_RDONLY)) == -1) {
- XtUnmanageChild (open_dialog);
- XtManageChild (refused_dialog);
- }
- else {
- if (stat(thefile, &statbuf) == 0) {
- file_mode = statbuf.st_mode;
- if (S_ISDIR(file_mode)) {
- /* This stuff allows directory traversal under Motif1.0 */
- strcpy(dir_string, thefile);
- i=strlen(dir_string);
- if (dir_string[i-1]=='.') {
- if (dir_string[i-2]=='.') {
- j=i-4;
- while (dir_string[j]!='/' && j>=0)
- j--;
- if (j>=0)
- dir_string[j+1] = '\0';
- else
- dir_string[i-2] = '\0';
- }
- else dir_string[i-1] = '\0';
- }
- else
- strcat(dir_string, "/");
- XmFileSelectionDoSearch(open_dialog,
- XmStringCreateLtoR(dir_string, charset));
- }
- if (S_ISREG(file_mode)) {
- XtUnmanageChild (open_dialog);
- OpenFile(tfd);
- /* close up the file */
- if (close(tfd) != NULL)
- strcat (message_string,
- " \7Warning: unable to close file.");
- }
- }
- }
- break;
-
- case DIALOG_OWARNING:
- /* save the file */
- if (SaveFile()) {
- CloseFile(); /* close the file */
- file_saved = True; /* reset the default */
- }
- break;
-
- case DIALOG_NEW:
- /* Open the file and read it into the text widget. */
- if (thefile != NULL) {
- oldfile = XtMalloc (strlen (thefile) + 1);
- strcpy (oldfile, thefile);
- thefile = NULL;
- }
- {
- XmSelectionBoxCallbackStruct *scb =
- (XmSelectionBoxCallbackStruct *) call_data;
-
- /* get thefile string from the file name prompt box */
- XmStringGetLtoR(scb->value, charset, &thefile);
- }
- XtUnmanageChild (new_dialog);
- if ((tfd = open (thefile, O_RDONLY)) == -1) {
- XtFree (oldfile);
- no_undo = True;
- XmTextSetString (text, "");
- no_undo = False;
- file_saved = True;
-
- lines = 1;
- sprintf (line_string, " Line: %4d", lines);
- XtSetArg(al[0], XmNlabelString,
- XmStringCreateLtoR(line_string, charset));
- XtSetValues(line, al, 1);
-
- mode_mask = umask(0);
- umask(mode_mask);
- file_mode = ((S_IFREG | 0777) & ~mode_mask);
- file_user = UID_NO_CHANGE;
- file_group = GID_NO_CHANGE;
-
- XtSetSensitive(text, True);
- XtSetSensitive(cut_button, True);
- XtSetSensitive(copy_button, True);
- XtSetSensitive(paste_button, True);
- XtSetSensitive(find_button, True);
- XtSetSensitive(goto_button, True);
- InitUndoBuffer();
-
- sprintf (message_string, " Editing: %s", thefile);
- XtSetArg(al[0], XmNlabelString,
- XmStringCreateLtoR(message_string, charset));
- XtSetValues(message, al, 1);
- }
- else {
- close (tfd);
- XtManageChild (file_exists_dialog);
- }
- break;
-
- case DIALOG_NWARNING:
- /* save the file */
- if (SaveFile()) {
- CloseFile(); /* close the file */
- file_saved = True; /* reset the default */
- }
- break;
-
- case DIALOG_F_EXISTS:
- XtFree (oldfile);
- XmTextSetString (text, "");
- XtSetSensitive(text, True);
- XtSetSensitive(cut_button, True);
- XtSetSensitive(copy_button, True);
- XtSetSensitive(paste_button, True);
- XtSetSensitive(find_button, True);
- XtSetSensitive(goto_button, True);
- file_saved = True; /* reset the default */
- sprintf (message_string, " Editing: %s", thefile);
- XtSetArg(al[0], XmNlabelString,
- XmStringCreateLtoR(message_string, charset));
- XtSetValues(message, al, 1);
- break;
-
- case DIALOG_CWARNING:
- /* save the file */
- if (SaveFile()) {
- CloseFile(); /* close the file */
- file_saved = True; /* reset the default */
- XtSetSensitive(text, False);
- XtSetSensitive(cut_button, False);
- XtSetSensitive(copy_button, False);
- XtSetSensitive(paste_button, False);
- XtSetSensitive(find_button, False);
- XtSetSensitive(goto_button, False);
- sprintf (message_string, " Editing:");
- XtSetArg(al[0], XmNlabelString,
- XmStringCreateLtoR(message_string, charset));
- XtSetValues(message, al, 1);
- }
- break;
-
- case DIALOG_XWARNING:
- /* save the file */
- if (SaveFile()) {
- CloseFile(); /* close the file */
- CloseUndoBuffer ();
- exit(0);
- }
- break;
-
- case DIALOG_SAVE_AS:
- /* open the file and read it into the text widget */
- if (thefile != NULL) {
- oldfile = XtMalloc (strlen (thefile) + 1);
- strcpy (oldfile, thefile);
- thefile = NULL;
- }
- {
- XmSelectionBoxCallbackStruct *scb =
- (XmSelectionBoxCallbackStruct *) call_data;
-
- /* get the thefile string from the file name prompt box */
- XmStringGetLtoR(scb->value, charset, &thefile);
- }
- XtUnmanageChild (save_as_dialog);
- if ((tfd = open (thefile, O_RDONLY)) == -1) {
- XtFree (oldfile);
- SaveFile();
- }
- else {
- close (tfd);
- XtManageChild (exists_as_dialog);
- }
- break;
-
- case DIALOG_EXISTS_AS:
- XtFree (oldfile);
- SaveFile();
- break;
-
- case DIALOG_F_MODE:
- break;
-
- case DIALOG_GOTO:
- {
- XmSelectionBoxCallbackStruct *scb =
- (XmSelectionBoxCallbackStruct *) call_data;
-
- /* get the find string from the prompt box */
- XmStringGetLtoR(scb->value, charset, &goto_string);
- GotoString(goto_string);
- }
- break;
-
- case DIALOG_HELP:
- /* no help at this time */
- break;
-
- default:
- /* unknown callback type */
- fprintf (stderr, "\7Warning: in accept callback\n");
- break;
- }
- }
-
-
-
- /*-------------------------------------------------------------
- ** DialogApplyCB
- ** Process callback from Dialog "Discard" actions.
- */
- void DialogApplyCB (w, client_data, call_data)
- Widget w; /* widget id */
- caddr_t client_data; /* data from application */
- caddr_t call_data; /* data from widget class */
- {
- char *command; /* command used in printing */
-
- switch ((int)client_data)
- {
- case DIALOG_OWARNING:
- CloseFile();
- file_saved = True;
- XtUnmanageChild (open_warning);
- break;
-
- case DIALOG_NWARNING:
- CloseFile();
- file_saved = True;
- XtUnmanageChild (new_warning);
- break;
-
- case DIALOG_CWARNING:
- CloseFile();
- file_saved = True;
- XtUnmanageChild (close_warning);
- break;
-
- case DIALOG_XWARNING:
- CloseFile();
- CloseUndoBuffer();
- XtUnmanageChild (exit_warning);
- exit();
- break;
-
- default:
- /* unknown client_data was recieved and
- there is no setup to handle this */
- fprintf (stderr, "\7Warning: in apply callback\n");
- break;
-
- }
- }
-
-
- /*-------------------------------------------------------------
- ** DialogCancelCB
- ** Process callback from Dialog "Cancel" actions.
- */
- void DialogCancelCB (w, client_data, call_data)
- Widget w; /* widget id */
- caddr_t client_data; /* data from application */
- caddr_t call_data; /* data from widget class */
- {
- int theerror;
-
- switch ((int)client_data)
- {
- case DIALOG_FSELECT:
- case DIALOG_OWARNING:
- /* popdown the file selection box */
- XtUnmanageChild (open_dialog);
- break;
-
- case DIALOG_NWARNING:
- /* popdown the file selection box */
- XtUnmanageChild (new_dialog);
- break;
- case DIALOG_F_EXISTS:
- case DIALOG_EXISTS_AS:
- strcpy (thefile, oldfile);
- XtFree (oldfile);
- break;
-
- case DIALOG_F_MODE:
- chmod (thefile, file_mode);
- CloseFile();
- file_saved = True;
- break;
-
- case DIALOG_GOTO:
- XtUnmanageChild (goto_dialog);
- break;
-
- case DIALOG_CWARNING:
- case DIALOG_XWARNING:
- case DIALOG_NEW:
- case DIALOG_SAVE_AS:
- case DIALOG_HELP:
- /* no action is necessary at this time */
- break;
-
- default:
- /* a unknown client_data was recieved and
- there is no setup to handle this */
- fprintf (stderr, "\7Warning: in cancel callback\n");
- break;
- }
- }
-
-
- /*-------------------------------------------------------------
- ** CreateMenuDialogs
- ** Create the popup dialogs.
- */
- void CreateMenuDialogs (menu_bar)
- Widget menu_bar;
- {
- Arg al[10];
- Cardinal ac;
- XImage *image; /* image for warning pixmap */
- Widget button;
-
-
- image = CreateDefaultImage (warningBits, 32, 32);
- XmInstallImage (image, "warning_image");
-
- ac = 0;
- XtSetArg(al[ac], XmNdirMask, ""); ac++;
- XtSetArg(al[ac], XmNwidth, 220); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("File Selection", charset)); ac++;
- open_dialog = XmCreateFileSelectionDialog(menu_bar,
- "file selection dialog", al, ac);
- XtAddCallback (open_dialog, XmNokCallback,
- DialogAcceptCB, DIALOG_FSELECT);
- XtAddCallback (open_dialog, XmNcancelCallback,
- DialogCancelCB, DIALOG_FSELECT);
- button = XmFileSelectionBoxGetChild (open_dialog, XmDIALOG_HELP_BUTTON);
- XtUnmanageChild (button);
-
- ac = 0;
- XtSetArg(al[ac], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Open Warning", charset)); ac++;
- open_warning = CreateSpecialWarningDialog(menu_bar, "open warning",
- "warning_image", "Save Changes?", al, ac);
- XtAddCallback (open_warning, XmNapplyCallback,
- DialogApplyCB, DIALOG_OWARNING);
- XtAddCallback (open_warning, XmNokCallback,
- DialogAcceptCB, DIALOG_OWARNING);
- XtAddCallback (open_warning, XmNcancelCallback,
- DialogCancelCB, DIALOG_OWARNING);
-
- ac = 0;
- XtSetArg(al[ac], XmNselectionLabelString, XmStringCreateLtoR
- ("Enter name of new file (including complete path).", charset)); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("New File", charset)); ac++;
- new_dialog = XmCreatePromptDialog(menu_bar,
- "new file dialog", al, ac);
- XtAddCallback (new_dialog, XmNokCallback,
- DialogAcceptCB, DIALOG_NEW);
- XtAddCallback (new_dialog, XmNcancelCallback,
- DialogCancelCB, DIALOG_NEW);
- button = XmSelectionBoxGetChild (new_dialog, XmDIALOG_HELP_BUTTON);
- XtUnmanageChild (button);
-
- ac = 0;
- XtSetArg(al[ac], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("New Warning", charset)); ac++;
- new_warning = CreateSpecialWarningDialog(menu_bar, "new_warning",
- "warning_image", "Save Changes?", al, ac);
- XtAddCallback (new_warning, XmNapplyCallback,
- DialogApplyCB, DIALOG_NWARNING);
- XtAddCallback (new_warning, XmNokCallback,
- DialogAcceptCB, DIALOG_NWARNING);
- XtAddCallback (new_warning, XmNcancelCallback,
- DialogCancelCB, DIALOG_NWARNING);
-
- ac = 0;
- XtSetArg(al[ac], XmNmessageString, XmStringCreateLtoR
- ("This file already exists.", charset)); ac++;
- XtSetArg(al[ac], XmNokLabelString,
- XmStringCreateLtoR("Overwrite", charset)); ac++;
- XtSetArg(al[ac], XmNdefaultButtonType, XmDIALOG_CANCEL_BUTTON); ac++;
- XtSetArg(al[ac], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("File Exists Warning", charset)); ac++;
- file_exists_dialog = XmCreateWarningDialog(menu_bar,
- "file exists dialog", al, ac);
- XtAddCallback (file_exists_dialog, XmNokCallback,
- DialogAcceptCB, DIALOG_F_EXISTS);
- XtAddCallback (file_exists_dialog, XmNcancelCallback,
- DialogCancelCB, DIALOG_F_EXISTS);
- button = XmMessageBoxGetChild (file_exists_dialog, XmDIALOG_HELP_BUTTON);
- XtUnmanageChild (button);
-
- ac = 0;
- XtSetArg(al[ac], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Close Warning", charset)); ac++;
- close_warning = CreateSpecialWarningDialog(menu_bar, "close_warning",
- "warning_image", "Save Changes?", al, ac);
- XtAddCallback (close_warning, XmNapplyCallback,
- DialogApplyCB, DIALOG_CWARNING);
- XtAddCallback (close_warning, XmNokCallback,
- DialogAcceptCB, DIALOG_CWARNING);
- XtAddCallback (close_warning, XmNcancelCallback,
- DialogCancelCB, DIALOG_CWARNING);
-
- ac = 0;
- XtSetArg(al[ac], XmNselectionLabelString, XmStringCreateLtoR
- ("Save As...", charset)); ac++;
- XtSetArg(al[ac], XmNtextString, XmStringCreateLtoR
- (thefile, charset)); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Save As", charset)); ac++;
- save_as_dialog = XmCreatePromptDialog(menu_bar, "save as dialog", al, ac);
- XtAddCallback (save_as_dialog, XmNokCallback,
- DialogAcceptCB, DIALOG_SAVE_AS);
- button = XmSelectionBoxGetChild (save_as_dialog, XmDIALOG_HELP_BUTTON);
- XtUnmanageChild (button);
-
- ac = 0;
- XtSetArg(al[ac], XmNmessageString, XmStringCreateLtoR
- ("This file already exists.", charset)); ac++;
- XtSetArg(al[ac], XmNokLabelString,
- XmStringCreateLtoR("Overwrite", charset)); ac++;
- XtSetArg(al[ac], XmNdefaultButtonType, XmDIALOG_CANCEL_BUTTON); ac++;
- XtSetArg(al[ac], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("File Exists Warning", charset)); ac++;
- exists_as_dialog = XmCreateWarningDialog(menu_bar,
- "file exists as dialog", al, ac);
- XtAddCallback (exists_as_dialog, XmNokCallback,
- DialogAcceptCB, DIALOG_EXISTS_AS);
- XtAddCallback (exists_as_dialog, XmNcancelCallback,
- DialogCancelCB, DIALOG_EXISTS_AS);
- button = XmMessageBoxGetChild (exists_as_dialog, XmDIALOG_HELP_BUTTON);
- XtUnmanageChild (button);
-
- ac = 0;
- XtSetArg(al[ac], XmNmessageString, XmStringCreateLtoR
- ("This file does not have write permission.", charset)); ac++;
- XtSetArg(al[ac], XmNokLabelString,
- XmStringCreateLtoR("Continue", charset)); ac++;
- XtSetArg(al[ac], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL); ac++;
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Permission Warning", charset)); ac++;
- file_mode_dialog = XmCreateWarningDialog(menu_bar,
- "file mode dialog", al, ac);
- XtAddCallback (file_mode_dialog, XmNokCallback,
- DialogAcceptCB, DIALOG_F_MODE);
- XtAddCallback (file_mode_dialog, XmNcancelCallback,
- DialogCancelCB, DIALOG_F_MODE);
- button = XmMessageBoxGetChild (file_mode_dialog, XmDIALOG_HELP_BUTTON);
- XtUnmanageChild (button);
-
- ac = 0;
- XtSetArg(al[ac], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL); ac++;
- XtSetArg(al[ac], XmNmessageString, XmStringCreateLtoR
- ("Access permission Denied.", charset)); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Refused Warning", charset)); ac++;
- refused_dialog = XmCreateMessageDialog(menu_bar, "refused", al, ac);
- button = XmMessageBoxGetChild (refused_dialog, XmDIALOG_CANCEL_BUTTON);
- XtUnmanageChild (button);
- button = XmMessageBoxGetChild (refused_dialog, XmDIALOG_HELP_BUTTON);
- XtUnmanageChild (button);
-
- ac = 0;
- XtSetArg(al[ac], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Exit Warning", charset)); ac++;
- exit_warning = CreateSpecialWarningDialog(menu_bar, "exit_warning",
- "warning_image", "Save Changes?", al, ac);
- XtAddCallback (exit_warning, XmNapplyCallback,
- DialogApplyCB, DIALOG_XWARNING);
- XtAddCallback (exit_warning, XmNokCallback,
- DialogAcceptCB, DIALOG_XWARNING);
-
- ac = 0;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- XtSetArg (al[ac], XmNautoUnmanage, False); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Find/Replace", charset)); ac++;
- find_dialog = CreateSpecialFindDialog(menu_bar,
- "Find", al, ac);
-
- ac = 0;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Find Help", charset)); ac++;
- find_help_dialog = CreateSpecialHelpDialog(menu_bar, &find_help_text,
- "find_help", al, ac);
- XmTextSetString(find_help_text, find_help_string);
-
- ac = 0;
- XtSetArg(al[ac], XmNselectionLabelString,
- XmStringCreateLtoR ("Go to line:", charset)); ac++;
- XtSetArg(al[ac], XmNcancelLabelString,
- XmStringCreateLtoR ("Done", charset)); ac++;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- XtSetArg (al[ac], XmNautoUnmanage, False); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("GoTo", charset)); ac++;
- goto_dialog = XmCreatePromptDialog(menu_bar,
- "goto dialog", al, ac);
- XtAddCallback (goto_dialog, XmNokCallback,
- DialogAcceptCB, DIALOG_GOTO);
- XtAddCallback (goto_dialog, XmNcancelCallback,
- DialogCancelCB, DIALOG_GOTO);
- button = XmSelectionBoxGetChild (goto_dialog, XmDIALOG_HELP_BUTTON);
- XtUnmanageChild (button);
-
- ac = 0;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Preferences", charset)); ac++;
- prefer_dialog = CreatePreferencesDialog(menu_bar,
- "preferences", al, ac);
-
- ac = 0;
- #ifdef HARDCODE
- XtSetArg (al[ac], XmNtextFontList, fontlist); ac++;
- #endif
- XtSetArg (al[ac], XmNdialogTitle,
- XmStringCreateLtoR("Preferences Help", charset)); ac++;
- help_dialog = CreateSpecialHelpDialog(menu_bar, &help_text,
- "help", al, ac);
- }
-
-