Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
536
cde/programs/dtpad/helpCB.c
Normal file
536
cde/programs/dtpad/helpCB.c
Normal file
@@ -0,0 +1,536 @@
|
||||
/* $XConsortium: helpCB.c /main/4 1996/04/16 16:42:13 mgreess $ */
|
||||
/**********************************<+>*************************************
|
||||
***************************************************************************
|
||||
**
|
||||
** File: helpCB.c
|
||||
**
|
||||
** Project: DT dtpad, a memo maker type editor based on the Dt Editor
|
||||
** widget.
|
||||
**
|
||||
** Description:
|
||||
** -----------
|
||||
**
|
||||
** This file contains the all the Text Editor help related callbacks:
|
||||
**
|
||||
** o 'XmNhelpCallback' callbacks for:
|
||||
** - the menu bar and the individual menus within the bar
|
||||
** - file selection boxes, dialogs and dialog components relating to
|
||||
** the [File] menu
|
||||
** - the DtEditor widget
|
||||
** o 'XmNActivateCallback' callbacks for each item in the [Help]
|
||||
** pulldown menu
|
||||
** o 'DtNhyperLinkCallback' and 'DtNcloseCallback' callbacks passed to
|
||||
** DtCreateHelpDialog() (via helpDlg.c:CreateHelpDialog()).
|
||||
**
|
||||
** All 'XmNhelpCallback' and 'XmNActivateCallback' callbacks, except for
|
||||
** [Help] menu [On Item...], simply set the help location id to correspond
|
||||
** to help text on the widget for which the callback was set. The On Item
|
||||
** 'XmNActivateCallback' callback determines the widget on which it was
|
||||
** invoked and then calls the 'XmNhelpCallback' callback directly. If no
|
||||
** 'XmNhelpCallback' is installed, it searches up the widget's parentage
|
||||
* until it finds one and then calls it.
|
||||
**
|
||||
** NOTE: All dialogs relating to the [Edit] and [Format] menus are
|
||||
** controlled directly by the DtEditor widget. Consequently,
|
||||
** all of the help location ids for the "Find/Change", "Check
|
||||
** Spelling" and "Format Settings" dialogs are set in the
|
||||
** in the DtEditor widget's 'XmNhelpCallback' callback
|
||||
** (i.e. in, HelpEditorWidgetCB).
|
||||
**
|
||||
*******************************************************************
|
||||
** (c) Copyright Hewlett-Packard Company, 1991, 1992, 1993. All rights are
|
||||
** reserved. Copying or other reproduction of this program
|
||||
** except for archival purposes is prohibited without prior
|
||||
** written consent of Hewlett-Packard Company.
|
||||
********************************************************************
|
||||
**
|
||||
********************************************************************
|
||||
** (c) Copyright 1993, 1994 Hewlett-Packard Company
|
||||
** (c) Copyright 1993, 1994 International Business Machines Corp.
|
||||
** (c) Copyright 1993, 1994 Sun Microsystems, Inc.
|
||||
** (c) Copyright 1993, 1994 Novell, Inc.
|
||||
********************************************************************
|
||||
**
|
||||
**
|
||||
**************************************************************************
|
||||
**********************************<+>*************************************/
|
||||
#include "dtpad.h"
|
||||
#include "help.h"
|
||||
#include <Dt/HelpDialog.h>
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* The following callbacks are set as the 'XmNhelpCallback' for the menu
|
||||
* menu bar and for the individual pulldown menus within the menu bar.
|
||||
************************************************************************/
|
||||
|
||||
void
|
||||
HelpMenubarCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, MENUBAR_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpFileCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, FILE_MENU_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpEditCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, EDIT_MENU_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpFormatCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, FORMAT_MENU_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpOptionsCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data)
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, OPTIONS_MENU_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpHelpCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, HELP_MENU_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* The following callbacks are set as the 'XmNhelpCallback' on file
|
||||
* selection boxes and prompt dialogs relating to the [File] menu.
|
||||
************************************************************************/
|
||||
|
||||
void
|
||||
HelpOpenDialogCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, FILE_OPEN_DIALOG_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpIncludeDialogCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, FILE_INCLUDE_DIALOG_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpSaveAsDialogCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
Editor *pPad = (Editor *) client_data;
|
||||
|
||||
if (pPad->xrdb.nameChange) {
|
||||
SetHelpVolAndDisplayHelp(pPad, FILE_SAVEAS_DIALOG_HELP,
|
||||
(char *) NULL);
|
||||
} else {
|
||||
SetHelpVolAndDisplayHelp(pPad, FILE_COPYTOFILE_DIALOG_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
HelpAskIfSaveDialogCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, FILE_ASKIFSAVE_DIALOG_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpFileAlreadyExistsCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, FILE_EXISTS_DIALOG_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* The following callback is set as the 'XmNhelpCallback' on the DtEditor
|
||||
* widget. It controls help for the "Find/Change", "Check Spelling" and
|
||||
* "Format Settings" dialogs and dialog components.
|
||||
************************************************************************/
|
||||
|
||||
void
|
||||
HelpEditorWidgetCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
|
||||
DtEditorHelpCallbackStruct *editorHelp =
|
||||
(DtEditorHelpCallbackStruct *) call_data;
|
||||
|
||||
switch (editorHelp->reason) {
|
||||
|
||||
/* -----> edit area */
|
||||
case DtEDITOR_HELP_EDIT_WINDOW:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
EDIT_AREA_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
|
||||
/* -----> status line area and fields */
|
||||
case DtEDITOR_HELP_STATUS_LINE:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
STATUS_LINE_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_STATUS_CURRENT_LINE:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
STATUS_CURRENT_LINE_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_STATUS_TOTAL_LINES:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
STATUS_TOTAL_LINES_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_STATUS_MESSAGE:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
STATUS_MESSAGE_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_STATUS_OVERSTRIKE:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
STATUS_OVERSTRIKE_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
|
||||
/* -----> Format Settings dialog and dialog fields */
|
||||
case DtEDITOR_HELP_FORMAT_DIALOG:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
FORMAT_SETTINGS_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_FORMAT_LEFT_MARGIN:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
FORMAT_LEFT_MARGIN_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_FORMAT_RIGHT_MARGIN:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
FORMAT_RIGHT_MARGIN_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_FORMAT_ALIGNMENT:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
FORMAT_ALIGNMENT_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
|
||||
/* -----> Find/Change dialog and dialog fields */
|
||||
case DtEDITOR_HELP_CHANGE_DIALOG:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
FINDCHANGE_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_CHANGE_FIND:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
FINDCHANGE_FIND_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_CHANGE_CHANGE:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
FINDCHANGE_CHANGETO_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
|
||||
/* -----> Check Spelling dialog and dialog fields */
|
||||
case DtEDITOR_HELP_SPELL_DIALOG:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
SPELL_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_SPELL_MISSPELLED_WORDS:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
SPELL_MISSPELLED_WORDS_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
case DtEDITOR_HELP_SPELL_CHANGE:
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data,
|
||||
SPELL_CHANGETO_HELP,
|
||||
(char *) NULL);
|
||||
break;
|
||||
|
||||
default:
|
||||
;
|
||||
|
||||
} /* switch (editorHelp->reason) */
|
||||
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* The following callbacks are set as the 'XmNhelpCallback' on the print
|
||||
* setup dialogs accessible from the [File] [Print...] menu button.
|
||||
************************************************************************/
|
||||
|
||||
void
|
||||
HelpPrintSetupDialogCB(
|
||||
Widget w,
|
||||
XtPointer client_data,
|
||||
XtPointer call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, PRINT_SETUP_DIALOG_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpPrintSetupAppSpecificCB(
|
||||
Widget w,
|
||||
XtPointer client_data,
|
||||
XtPointer call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, PRINT_APP_SPECIFIC_OPTIONS,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpPrintSetupGenericCB(
|
||||
Widget w,
|
||||
XtPointer client_data,
|
||||
XtPointer call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, PRINT_GENERIC_OPTIONS,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpPrintSetupPageHeadersFootersCB(
|
||||
Widget w,
|
||||
XtPointer client_data,
|
||||
XtPointer call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, PRINT_PAGE_HEADERS_FOOTERS,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpPrintSetupPageMargins(
|
||||
Widget w,
|
||||
XtPointer client_data,
|
||||
XtPointer call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, PRINT_PAGE_MARGINS,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* The following callbacks are set (in dtpad.c:CreateHelpMenu) as the
|
||||
* 'XmNactivateCallback' for each of the items in the Help menu:
|
||||
*
|
||||
* Overview...
|
||||
* ----------
|
||||
* Table of Contents...
|
||||
* Tasks...
|
||||
* Reference...
|
||||
* On Item
|
||||
* ----------
|
||||
* Using Help...
|
||||
* ----------
|
||||
* About Text Editor...
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
void
|
||||
HelpOverviewCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, HELP_MENU_OVERVIEW_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpTasksCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, HELP_MENU_TASKS_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpTOCCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, HELP_MENU_TOC_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpReferenceCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, HELP_MENU_REFERENCE_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
void
|
||||
HelpOnItemCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
Editor *pPad = (Editor *)client_data;
|
||||
Widget widget;
|
||||
|
||||
switch(DtHelpReturnSelectedWidgetId(pPad->app_shell, (Cursor)NULL, &widget))
|
||||
{
|
||||
/*
|
||||
* There are additional cases (e.g. user aborts request) but I
|
||||
* don't feel they warrant an error dialog.
|
||||
*/
|
||||
case DtHELP_SELECT_VALID:
|
||||
while (!XtIsShell(widget)) {
|
||||
if (XtHasCallbacks(widget, XmNhelpCallback) == XtCallbackHasSome) {
|
||||
XtCallCallbacks(widget, XmNhelpCallback, (XtPointer)pPad);
|
||||
return;
|
||||
}
|
||||
widget = XtParent(widget);
|
||||
}
|
||||
break;
|
||||
case DtHELP_SELECT_INVALID:
|
||||
Warning(pPad,
|
||||
GETMESSAGE(12, 1, "You must select an item within the Text Editor."),
|
||||
XmDIALOG_INFORMATION);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
HelpUsingHelpCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *)client_data, HELP_MENU_USING_HELP_HELP,
|
||||
HELP_ON_HELP_VOLUME);
|
||||
}
|
||||
|
||||
void
|
||||
HelpAboutCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
SetHelpVolAndDisplayHelp((Editor *) client_data, HELP_MENU_ABOUT_HELP,
|
||||
(char *) NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* HelpHyperlinkCB - is the 'DtNhyperLinkCallback' passed to
|
||||
* DtCreateHelpDialog (in CreateHelpDialog).
|
||||
************************************************************************/
|
||||
void
|
||||
HelpHyperlinkCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
DtHelpDialogCallbackStruct *pHyper =
|
||||
(DtHelpDialogCallbackStruct *) call_data;
|
||||
|
||||
switch(pHyper->hyperType)
|
||||
{
|
||||
case DtHELP_LINK_JUMP_NEW:
|
||||
DisplayNewHelpWindow((Editor *)client_data, pHyper->helpVolume,
|
||||
pHyper->locationId);
|
||||
break;
|
||||
default:
|
||||
;
|
||||
/* application defined link code goes here */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* HelpCloseCB - is the 'DtNcloseCallback' passed to DtCreateHelpDialog
|
||||
* (in CreateHelpDialog) to close/unmap all help dialogs, both cached
|
||||
* and uncached. It checks to see if the referenced dialog is in the
|
||||
* uncached help for the current pad.
|
||||
************************************************************************/
|
||||
void
|
||||
HelpCloseCB(
|
||||
Widget w,
|
||||
caddr_t client_data,
|
||||
caddr_t call_data )
|
||||
{
|
||||
Editor *pPad = (Editor *)client_data;
|
||||
HelpStruct *pHelp;
|
||||
|
||||
if(w != pPad->MainHelp)
|
||||
{
|
||||
/*
|
||||
* empty for loop just marches pHelp to the right place
|
||||
*/
|
||||
for(pHelp = pPad->pHelpCache;
|
||||
pHelp != (HelpStruct *)NULL && pHelp->dialog != w;
|
||||
pHelp = pHelp->pNext)
|
||||
;
|
||||
|
||||
if(pHelp != (HelpStruct *)NULL)
|
||||
{
|
||||
/* this should always happen */
|
||||
pHelp->inUse = False;
|
||||
}
|
||||
}
|
||||
|
||||
XtUnmanageChild(w);
|
||||
}
|
||||
Reference in New Issue
Block a user