cdesktopenv/cde/programs/dtcreate/FileCharacteristics.c

1633 lines
70 KiB
C

/*
* CDE - Common Desktop Environment
*
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these libraries and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
/* $TOG: FileCharacteristics.c /main/7 1999/09/17 15:43:31 mgreess $ */
/*******************************************************************************
FileCharacteristics.c
Associated Header file: FileCharacteristics.h
*******************************************************************************/
#include <stdio.h>
#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
#include <Xm/Xm.h>
#include <Xm/MwmUtil.h>
#include <Xm/DialogS.h>
#include <Xm/MenuShell.h>
#include <Xm/RowColumn.h>
#include <Xm/Form.h>
#include <Xm/ToggleBG.h>
#include <Xm/Text.h>
#include <Xm/TextF.h>
#include <Xm/Label.h>
#include <Xm/PushBG.h>
#include <Xm/Form.h>
#include <Xm/ScrolledW.h>
#include "UxXt.h"
#include "dtcreate.h"
#include "cmncbs.h"
#include "cmnrtns.h"
#include "cmnutils.h"
#include "ErrorDialog.h"
#define CONTEXT_MACRO_ACCESS 1
#include "FileCharacteristics.h"
#undef CONTEXT_MACRO_ACCESS
/*******************************************************************************
Includes, Defines, and Global variables from the Declarations Editor:
*******************************************************************************/
/*
int set=1;
*/
Widget FC_ReadOnToggle, FC_ReadOffToggle, FC_ReadEitherToggle;
Widget FC_WriteOnToggle, FC_WriteOffToggle, FC_WriteEitherToggle;
Widget FC_ExecuteOnToggle, FC_ExecuteOffToggle, FC_ExecuteEitherToggle;
Widget FC_PermissionForm;
Widget FC_ReadLabel;
Widget FC_WriteLabel;
Widget FC_ExecuteLabel;
/******************************************************************************/
/* */
/* GetPermissionsPattern */
/* */
/* INPUT: none */
/* OUTPUT: permissions pattern in database format */
/* */
/******************************************************************************/
void GetPermissionsPattern(char **ppszPermPattern)
{
if (*ppszPermPattern) {
XtFree(*ppszPermPattern);
*ppszPermPattern = (char *)NULL;
}
*ppszPermPattern = (char *)XtMalloc(20);
memset(*ppszPermPattern, 0, 20);
if (XmToggleButtonGadgetGetState(FC_DirectoryToggle)) {
strcat(*ppszPermPattern, "d");
} else {
strcat(*ppszPermPattern, "!d");
}
if (XmToggleButtonGadgetGetState(FC_PermissionToggle)) {
/******************************************************************/
/* Get Read state */
/******************************************************************/
if (XmToggleButtonGadgetGetState(FC_ReadOnToggle)) {
strcat(*ppszPermPattern, "&r");
} else {
if (XmToggleButtonGadgetGetState(FC_ReadOffToggle)) {
strcat(*ppszPermPattern, "&!r");
}
}
/******************************************************************/
/* Get Write state */
/******************************************************************/
if (XmToggleButtonGadgetGetState(FC_WriteOnToggle)) {
strcat(*ppszPermPattern, "&w");
} else {
if (XmToggleButtonGadgetGetState(FC_WriteOffToggle)) {
strcat(*ppszPermPattern, "&!w");
}
}
/******************************************************************/
/* Get Execute state */
/******************************************************************/
if (XmToggleButtonGadgetGetState(FC_ExecuteOnToggle)) {
strcat(*ppszPermPattern, "&x");
} else {
if (XmToggleButtonGadgetGetState(FC_ExecuteOffToggle)) {
strcat(*ppszPermPattern, "&!x");
}
}
}
#if 0
if (XmToggleButtonGadgetGetState(FC_PermissionToggle)) {
if (XmToggleButtonGadgetGetState(FC_ReadToggle)) {
strcat(*ppszPermPattern, "&r");
} else {
strcat(*ppszPermPattern, "&!r");
}
if (XmToggleButtonGadgetGetState(FC_WriteToggle)) {
strcat(*ppszPermPattern, "&w");
} else {
strcat(*ppszPermPattern, "&!w");
}
if (XmToggleButtonGadgetGetState(FC_ExecuteToggle)) {
strcat(*ppszPermPattern, "&x");
} else {
strcat(*ppszPermPattern, "&!x");
}
}
#endif
}
/******************************************************************************/
/* */
/* GetContentsType */
/* */
/* INPUT: none */
/* OUTPUT: contents type selected */
/* */
/******************************************************************************/
ushort GetContentsType(void)
{
if (XmToggleButtonGadgetGetState(FC_StringToggle)) {
return((ushort)CA_FT_CNTSTRING);
} else if (XmToggleButtonGadgetGetState(FC_ByteToggle)) {
return((ushort)CA_FT_CNTBYTE);
} else if (XmToggleButtonGadgetGetState(FC_ShortToggle)) {
return((ushort)CA_FT_CNTSHORT);
} else if (XmToggleButtonGadgetGetState(FC_LongToggle)) {
return((ushort)CA_FT_CNTLONG);
}
/* NOTREACHED */
}
/******************************************************************************/
/* */
/* Save_FileChar_Info */
/* */
/* INPUT: none */
/* OUTPUT: none */
/* */
/******************************************************************************/
void Save_FileChar_Info(void)
{
FiletypeData *pFtD;
char *ptr = (char *)NULL;
short sContentsType;
/**************************************************************************/
/* Clear file characteristics text widget on the AddFiletype dialog. */
/**************************************************************************/
XmTextSetString(AF_IdCharacteristicsText, "");
/**************************************************************************/
/* Get pointer to FiletypeData structure. */
/* Also, update the filetypes listbox on the AddFiletype window. */
/**************************************************************************/
XtVaGetValues(FileCharacteristics,
XmNuserData, &pFtD,
NULL);
/**************************************************************************/
/* Get Name Pattern Info */
/**************************************************************************/
if (XmToggleButtonGadgetGetState(FC_NameOrPathToggle)) {
GetWidgetTextString(FC_NameOrPathText, &(pFtD->pszPattern));
#if DEBUG
printf("Pattern is '%s'\n", pFtD->pszPattern);
#endif
} else {
if (pFtD->pszPattern) {
XtFree(pFtD->pszPattern);
pFtD->pszPattern = (char *)NULL;
}
}
/**************************************************************************/
/* Get Permission Info */
/**************************************************************************/
GetPermissionsPattern(&(pFtD->pszPermissions));
/**************************************************************************/
/* Get Content Pattern Info */
/**************************************************************************/
if (XmToggleButtonGadgetGetState(FC_ContentsToggle)) {
/************************************************************************/
/* Save data in structure. */
/************************************************************************/
GetWidgetTextString(FC_ContentsPatternText, &(pFtD->pszContents));
ptr = (char *)NULL;
GetWidgetTextString(FC_StartByteTextField, &ptr);
if (ptr) {
pFtD->sStart = atoi(ptr);
XtFree(ptr);
}
#if 0
ptr = (char *)NULL;
GetWidgetTextString(FC_EndByteTextField, &ptr);
if (ptr) {
pFtD->sEnd = atoi(ptr);
XtFree(ptr);
}
#endif
pFtD->fsFlags = GetContentsType();
} else {
if (pFtD->pszContents) {
XtFree(pFtD->pszContents);
pFtD->pszContents = (char *)NULL;
}
pFtD->sStart = 0;
}
/**************************************************************************/
/* Parse the ID fields in the FiletypeData structure and create a text */
/* string for the Identifying Characteristics text field in AddFiletype. */
/**************************************************************************/
ParseAndUpdateID(pFtD);
}
/******************************************************************************/
/* */
/* ParseAndUpdateID */
/* */
/* INPUT: none */
/* OUTPUT: none */
/* */
/******************************************************************************/
void ParseAndUpdateID(FiletypeData *pFtD)
{
char *ptr = (char *)NULL;
int size;
/**************************************************************************/
/* Init size variable. This will be used to indicate size of buffer to */
/* allocate to hold text string that will be displayed in FC text widget. */
/**************************************************************************/
size = 0;
/**************************************************************************/
/* Get Name Pattern Info */
/**************************************************************************/
if (pFtD->pszPattern) {
/*size += strlen("Name: ");*/
size += strlen(GETMESSAGE(9, 20, "Name Pattern:")) + 1; /* 1 for space */
size += strlen(pFtD->pszPattern);
size += 1; /* For newline character */
}
/**************************************************************************/
/* Get Permission Info */
/**************************************************************************/
if (pFtD->pszPermissions) {
size += strlen(GETMESSAGE(9, 21, "Permission Pattern:")) + 1; /* space */
size += strlen(pFtD->pszPermissions);
size += 1; /* For newline character */
}
/**************************************************************************/
/* Get Content Pattern Info */
/**************************************************************************/
if (pFtD->pszContents) {
size += strlen(GETMESSAGE(9, 28, "Contents:")) + 1; /* 1 for space */
size += strlen(pFtD->pszContents);
size += 1; /* For newline character */
}
/**************************************************************************/
/* Allocate buffer and fill with ID info. */
/**************************************************************************/
if (size > 0) {
ptr = XtMalloc(size);
if (ptr) {
memset(ptr, 0, size);
if (pFtD->pszPattern) {
strcat(ptr, GETMESSAGE(9, 20, "Name Pattern:"));
strcat(ptr, " ");
strcat(ptr, pFtD->pszPattern);
strcat(ptr, "\n");
}
if (pFtD->pszPermissions) {
strcat(ptr, GETMESSAGE(9, 21, "Permission Pattern:"));
strcat(ptr, " ");
strcat(ptr, pFtD->pszPermissions);
strcat(ptr, "\n");
}
if (pFtD->pszContents) {
strcat(ptr, GETMESSAGE(9, 28, "Contents:"));
strcat(ptr, " ");
strcat(ptr, pFtD->pszContents);
strcat(ptr, "\n");
}
XmTextSetString(AF_IdCharacteristicsText, ptr);
XtFree(ptr);
}
}
}
/*****************************************************************************/
/* */
/* CalculateAND */
/* */
/* */
/*****************************************************************************/
void CalculateAND(void)
{
XtArgVal /* Boolean */ set1, set2, set3, set4;
int cnt;
XtVaGetValues(FC_NameOrPathToggle, XmNset, &set1, NULL);
XtVaGetValues(FC_PermissionToggle, XmNset, &set2, NULL);
XtVaGetValues(FC_ContentsToggle, XmNset, &set3, NULL);
XtSetSensitive(FC_AndLabel1, False);
XtSetSensitive(FC_AndLabel2, False);
cnt = (int)set1 + (int)set2 + (int)set3;
if (set1 && (set2 || set3))
XtSetSensitive(FC_AndLabel1, True);
if (set2 && set3)
XtSetSensitive(FC_AndLabel2, True);
}
/*******************************************************************************
The following are callback functions.
*******************************************************************************/
static void activateCB_FC_OkButton( Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
if (!FileCharCheckFields()) {
Save_FileChar_Info();
UxPopdownInterface(FileCharacteristics);
}
}
static void activateCB_FC_ClearButton(Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
/* Clear_FileChar_Info(); */
clear_FileCharacteristics_dialog_fields();
}
static void activateCB_FC_CancelButton(Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
/*
_UxCFileCharacteristics *UxSaveCtx, *UxContext;
UxSaveCtx = UxFileCharacteristicsContext;
UxFileCharacteristicsContext = UxContext =
(_UxCFileCharacteristics *) UxGetContext( UxWidget );
{
*/
UxPopdownInterface(FileCharacteristics);
/*
}
UxFileCharacteristicsContext = UxSaveCtx;
*/
}
static void valueChangedCB_FC_PermissionToggle(Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
XtArgVal /* Boolean */ set;
XtVaGetValues(UxWidget, XmNset, &set, NULL);
XtSetSensitive(FC_PermissionLabel, set);
XtSetSensitive(FC_PermissionForm, set);
/*
XtSetSensitive(FC_ReadLabel, set);
XtSetSensitive(FC_WriteLabel, set);
XtSetSensitive(FC_ExecuteLabel, set);
XtSetSensitive(FC_ReadOnToggle, set);
XtSetSensitive(FC_WriteOnToggle, set);
XtSetSensitive(FC_ExecuteOnToggle, set);
XtSetSensitive(FC_ReadOffToggle, set);
XtSetSensitive(FC_WriteOffToggle, set);
XtSetSensitive(FC_ExecuteOffToggle, set);
XtSetSensitive(FC_ReadEitherToggle, set);
XtSetSensitive(FC_WriteEitherToggle, set);
XtSetSensitive(FC_ExecuteEitherToggle, set);
*/
CalculateAND();
}
#if 0
static void armCB_FC_StringToggle(Widget UxWidget,
XtPointer UxClientData,
XtPointe`r UxCallbackArg)
{
/*set=1;*/
}
static void armCB_FC_ByteToggle(Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
/*set=2;*/
}
static void armCB_FC_ShortToggle(Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
/*set=3;*/
}
static void armCB_FC_LongToggle( Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
/*set=4;*/
}
#endif
static void valueChangedCB_FC_ContentsToggle( Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
XtArgVal /* Boolean */ set;
XtVaGetValues(UxWidget, XmNset, &set, NULL);
XtSetSensitive(FC_ContentsLabel, set);
XtSetSensitive(FC_ContentsBox, set);
if (set) {
XmProcessTraversal(FC_ContentsPatternText, XmTRAVERSE_CURRENT);
}
CalculateAND();
}
static void valueChangedCB_FC_NameOrPathToggle(Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
XtArgVal /* Boolean */ set;
XtVaGetValues(UxWidget, XmNset, &set, NULL);
XtSetSensitive(FC_NamePatternLabel, set);
XtSetSensitive(FC_NameOrPathText, set);
if (set) {
XmProcessTraversal(FC_NameOrPathText, XmTRAVERSE_CURRENT);
}
CalculateAND();
}
/*******************************************************************************
The 'build_' function creates all the widgets
using the resource values specified in the Property Editor.
*******************************************************************************/
static Widget _Uxbuild_FileCharacteristics(void)
{
Widget _UxParent;
Widget FC_ActionAreaForm;
Widget FC_OkButton;
Widget FC_ClearButton;
Widget FC_CancelButton;
Widget FC_HelpButton;
Widget FC_MainLabel1;
Widget FC_MainLabel2;
Widget FC_TypeFileRowColumn;
Widget FC_ReadRowColumn;
Widget FC_WriteRowColumn;
Widget FC_ExecuteRowColumn;
int ntotalbuttons = 4;
int nbutton = 0;
#define TIGHTNESS 20
Widget FC_ScrolledWindow;
Widget FC_BigForm;
char *dialog_title, *pre, *suf;
/* Creation of FileCharacteristics */
#if 0
_UxParent = UxParent;
if ( _UxParent == NULL )
{
_UxParent = UxTopLevel;
}
#endif
_UxParent = UxTopLevel;
pre = GETMESSAGE(3, 10, "Create Action");
suf = GETMESSAGE(9, 10, "Identifying Characteristics");
dialog_title = XtMalloc(strlen(pre) + strlen(suf) + 4);
sprintf(dialog_title, "%s - %s", pre, suf);
if (bLowRes) {
_UxParent = XtVaCreatePopupShell( "FileCharacteristics_shell",
xmDialogShellWidgetClass, _UxParent,
XmNx, 398,
XmNy, 222,
XmNwidth, 446,
XmNheight, 579,
XmNshellUnitType, XmPIXELS,
XmNtitle, dialog_title,
NULL );
FC_BigForm = XtVaCreateWidget( "FC_BigForm",
xmFormWidgetClass,
_UxParent,
XmNunitType, XmPIXELS,
XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL,
RES_CONVERT( XmNdialogTitle, dialog_title ),
XmNautoUnmanage, FALSE,
XmNrubberPositioning, FALSE,
NULL );
FC_ScrolledWindow = XtVaCreateManagedWidget( "FC_ScrolledWindow",
xmScrolledWindowWidgetClass,
FC_BigForm,
XmNscrollingPolicy, XmAUTOMATIC,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_FORM,
NULL );
XtVaSetValues(FC_BigForm, XmNuserData, FC_ScrolledWindow, NULL);
FileCharacteristics = XtVaCreateManagedWidget( "FileCharacteristics",
xmFormWidgetClass,
FC_ScrolledWindow,
NULL );
} else {
_UxParent = XtVaCreatePopupShell( "FileCharacteristics_shell",
xmDialogShellWidgetClass, _UxParent,
XmNx, 398,
XmNy, 222,
XmNmwmDecorations, MWM_DECOR_ALL | MWM_DECOR_RESIZEH,
XmNwidth, 446,
XmNheight, 579,
XmNshellUnitType, XmPIXELS,
XmNtitle, dialog_title,
NULL );
FileCharacteristics = XtVaCreateWidget( "FileCharacteristics",
xmFormWidgetClass,
_UxParent,
XmNunitType, XmPIXELS,
XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL,
RES_CONVERT( XmNdialogTitle, dialog_title ),
XmNautoUnmanage, FALSE,
XmNrubberPositioning, FALSE,
NULL );
}
XtFree(dialog_title);
XtAddCallback( FileCharacteristics, XmNhelpCallback,
(XtCallbackProc) helpCB_general,
(XtPointer) HELP_FILECHAR );
/* Creation of FC_MainLabel1 */
FC_MainLabel1 = XtVaCreateManagedWidget( "FC_MainLabel1",
xmLabelWidgetClass,
FileCharacteristics,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 11, "Include All")),
XmNleftOffset, 40,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopOffset, 15,
XmNtopAttachment, XmATTACH_FORM,
NULL );
/* Creation of FC_TypeFileRowColumn */
FC_TypeFileRowColumn = XtVaCreateManagedWidget( "FC_TypeFileRowColumn",
xmRowColumnWidgetClass,
FileCharacteristics,
XmNradioBehavior, TRUE,
XmNsensitive, TRUE,
XmNnumColumns, 2,
XmNorientation, XmVERTICAL,
XmNpacking, XmPACK_COLUMN,
XmNshadowThickness, 1,
XmNleftWidget, FC_MainLabel1,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 5,
XmNtopWidget, FC_MainLabel1,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_FileToggle */
FC_FileToggle = XtVaCreateManagedWidget( "FC_FileToggle",
xmToggleButtonGadgetClass,
FC_TypeFileRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 12, "Files")),
XmNset, TRUE,
NULL );
/* Creation of FC_DirectoryToggle */
FC_DirectoryToggle = XtVaCreateManagedWidget( "FC_DirectoryToggle",
xmToggleButtonGadgetClass,
FC_TypeFileRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 13, "Folders")),
NULL );
/* Creation of FC_MainLabel2 */
FC_MainLabel2 = XtVaCreateManagedWidget( "FC_MainLabel2",
xmLabelWidgetClass,
FileCharacteristics,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 14, "That Match the Following:")),
XmNleftOffset, 40,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopOffset, 5,
XmNtopWidget, FC_TypeFileRowColumn,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_NamePatternLabel */
FC_NamePatternLabel = XtVaCreateManagedWidget( "FC_NamePatternLabel",
xmLabelWidgetClass,
FileCharacteristics,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 20, "Name Pattern:")),
XmNleftWidget, FC_MainLabel2,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightAttachment, XmATTACH_NONE,
XmNtopOffset, 20,
XmNtopWidget, FC_MainLabel2,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_NameOrPathText */
FC_NameOrPathText = XtVaCreateManagedWidget( "FC_NameOrPathText",
xmTextFieldWidgetClass,
FileCharacteristics,
XmNx, 59,
XmNy, 66,
XmNleftWidget, FC_NamePatternLabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, FC_NamePatternLabel,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_AndLabel1 */
FC_AndLabel1 = XtVaCreateManagedWidget( "FC_AndLabel1",
xmLabelWidgetClass,
FileCharacteristics,
XmNx, 420,
XmNy, 98,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 27, "AND")),
XmNsensitive, FALSE,
XmNrightOffset, 30,
XmNrightAttachment, XmATTACH_FORM,
XmNtopOffset, 0,
XmNtopWidget, FC_NamePatternLabel,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
XtVaSetValues(FC_NameOrPathText,
XmNrightOffset, 30,
XmNrightWidget, FC_AndLabel1,
XmNrightAttachment, XmATTACH_WIDGET,
NULL);
/* Creation of FC_NameOrPathToggle */
FC_NameOrPathToggle = XtVaCreateManagedWidget( "FC_NameOrPathToggle",
xmToggleButtonGadgetClass,
FileCharacteristics,
RES_CONVERT( XmNlabelString, "" ),
XmNset, TRUE,
XmNnavigationType, XmTAB_GROUP,
XmNindicatorSize, 20,
XmNleftAttachment, XmATTACH_NONE,
XmNrightOffset, 2,
XmNrightWidget, FC_NameOrPathText,
XmNrightAttachment, XmATTACH_WIDGET,
XmNtopWidget, FC_NameOrPathText,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomAttachment, XmATTACH_NONE,
NULL );
XtAddCallback( FC_NameOrPathToggle, XmNvalueChangedCallback,
(XtCallbackProc) valueChangedCB_FC_NameOrPathToggle,
(XtPointer) NULL );
/******************************************************************/
/* */
/* Permission Area creation <<<<<<<>>>>>>>> */
/* */
/******************************************************************/
/* Creation of FC_PermissionLabel */
FC_PermissionLabel = XtVaCreateManagedWidget( "FC_PermissionLabel",
xmLabelWidgetClass,
FileCharacteristics,
XmNx, 50,
XmNy, 155,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 21, "Permission Pattern:")),
XmNsensitive, FALSE,
XmNleftWidget, FC_NameOrPathText,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightAttachment, XmATTACH_NONE,
XmNtopOffset, 15,
XmNtopWidget, FC_NameOrPathText,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
FC_PermissionForm = XtVaCreateManagedWidget( "FC_PermissionForm",
xmFormWidgetClass,
FileCharacteristics,
XmNresizePolicy, XmRESIZE_NONE,
XmNborderWidth, 1,
XmNsensitive, FALSE,
XmNleftWidget, FC_PermissionLabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, FC_PermissionLabel,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/******************************************************************/
/* Creation of FC_ReadRowColumn */
/* */
/* This is the read row column - on, off, either radio buttons */
/******************************************************************/
FC_ReadRowColumn = XtVaCreateManagedWidget( "FC_ReadRowColumn",
xmRowColumnWidgetClass,
FC_PermissionForm,
XmNradioBehavior, TRUE,
XmNnumColumns, 3,
XmNorientation, XmVERTICAL,
XmNpacking, XmPACK_COLUMN,
XmNshadowThickness, 1,
XmNrightOffset, 10,
XmNrightAttachment, XmATTACH_FORM,
XmNtopOffset, 10,
XmNtopAttachment, XmATTACH_FORM,
NULL );
/* Creation of FC_ReadOnToggle */
FC_ReadOnToggle = XtVaCreateManagedWidget( "FC_ReadOnToggle",
xmToggleButtonGadgetClass,
FC_ReadRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 43, "On")),
XmNset, FALSE,
NULL );
/* Creation of FC_ReadOffToggle */
FC_ReadOffToggle = XtVaCreateManagedWidget( "FC_ReadOffToggle",
xmToggleButtonGadgetClass,
FC_ReadRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 44, "Off")),
XmNset, FALSE,
NULL );
/* Creation of FC_ReadEitherToggle */
FC_ReadEitherToggle = XtVaCreateManagedWidget( "FC_ReadEitherToggle",
xmToggleButtonGadgetClass,
FC_ReadRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 45, "Either")),
XmNset, TRUE,
NULL );
/******************************************************************/
/* Creation of FC_WriteRowColumn */
/* */
/* This is the write row column - on, off, either radio buttons */
/******************************************************************/
FC_WriteRowColumn = XtVaCreateManagedWidget( "FC_WriteRowColumn",
xmRowColumnWidgetClass,
FC_PermissionForm,
XmNradioBehavior, TRUE,
XmNnumColumns, 3,
XmNorientation, XmVERTICAL,
XmNpacking, XmPACK_COLUMN,
XmNshadowThickness, 1,
XmNrightOffset, 10,
XmNrightAttachment, XmATTACH_FORM,
XmNtopWidget, FC_ReadRowColumn,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_WriteOnToggle */
FC_WriteOnToggle = XtVaCreateManagedWidget( "FC_WriteOnToggle",
xmToggleButtonGadgetClass,
FC_WriteRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 43, "On")),
XmNset, FALSE,
NULL );
/* Creation of FC_WriteOffToggle */
FC_WriteOffToggle = XtVaCreateManagedWidget( "FC_WriteOffToggle",
xmToggleButtonGadgetClass,
FC_WriteRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 44, "Off")),
XmNset, FALSE,
NULL );
/* Creation of FC_WriteEitherToggle */
FC_WriteEitherToggle = XtVaCreateManagedWidget( "FC_WriteEitherToggle",
xmToggleButtonGadgetClass,
FC_WriteRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 45, "Either")),
XmNset, TRUE,
NULL );
/******************************************************************/
/* Creation of FC_ExecuteRowColumn */
/* */
/* This is the execute row column - on, off, either radio buttons */
/******************************************************************/
FC_ExecuteRowColumn = XtVaCreateManagedWidget( "FC_ExecuteRowColumn",
xmRowColumnWidgetClass,
FC_PermissionForm,
XmNradioBehavior, TRUE,
XmNnumColumns, 3,
XmNorientation, XmVERTICAL,
XmNpacking, XmPACK_COLUMN,
XmNshadowThickness, 1,
XmNrightOffset, 10,
XmNrightAttachment, XmATTACH_FORM,
XmNtopWidget, FC_WriteRowColumn,
XmNtopAttachment, XmATTACH_WIDGET,
XmNbottomOffset, 10,
XmNbottomAttachment, XmATTACH_FORM,
NULL );
/* Creation of FC_ExecuteOnToggle */
FC_ExecuteOnToggle = XtVaCreateManagedWidget( "FC_ExecuteOnToggle",
xmToggleButtonGadgetClass,
FC_ExecuteRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 43, "On")),
XmNset, FALSE,
NULL );
/* Creation of FC_ExecuteOffToggle */
FC_ExecuteOffToggle = XtVaCreateManagedWidget( "FC_ExecuteOffToggle",
xmToggleButtonGadgetClass,
FC_ExecuteRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 44, "Off")),
XmNset, FALSE,
NULL );
/* Creation of FC_ExecuteEitherToggle */
FC_ExecuteEitherToggle = XtVaCreateManagedWidget( "FC_ExecuteEitherToggle",
xmToggleButtonGadgetClass,
FC_ExecuteRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 45, "Either")),
XmNset, TRUE,
NULL );
/******************************************************************/
/* Creation of Permission Labels */
/******************************************************************/
FC_ReadLabel = XtVaCreateManagedWidget( "FC_ReadLabel",
xmLabelWidgetClass,
FC_PermissionForm,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 40, "Read:")),
XmNrightWidget, FC_ReadRowColumn,
XmNrightAttachment, XmATTACH_WIDGET,
XmNleftOffset, 10,
XmNleftAttachment, XmATTACH_FORM,
XmNtopWidget, FC_ReadRowColumn,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
NULL );
FC_WriteLabel = XtVaCreateManagedWidget( "FC_WriteLabel",
xmLabelWidgetClass,
FC_PermissionForm,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 41, "Write:")),
XmNrightWidget, FC_WriteRowColumn,
XmNrightAttachment, XmATTACH_WIDGET,
XmNleftOffset, 10,
XmNleftAttachment, XmATTACH_FORM,
XmNtopWidget, FC_WriteRowColumn,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
NULL );
FC_ExecuteLabel = XtVaCreateManagedWidget( "FC_ExecuteLabel",
xmLabelWidgetClass,
FC_PermissionForm,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 42, "Execute:")),
XmNrightWidget, FC_ExecuteRowColumn,
XmNrightAttachment, XmATTACH_WIDGET,
XmNleftOffset, 10,
XmNleftAttachment, XmATTACH_FORM,
XmNtopWidget, FC_ExecuteRowColumn,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
NULL );
/******************************************************************/
/* Creation of the AND label for permissions. */
/******************************************************************/
FC_AndLabel2 = XtVaCreateManagedWidget( "FC_AndLabel2",
xmLabelWidgetClass,
FileCharacteristics,
XmNx, 420,
XmNy, 192,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 27, "AND")),
XmNsensitive, FALSE,
XmNrightOffset, 30,
XmNrightAttachment, XmATTACH_FORM,
XmNtopOffset, 0,
XmNtopWidget, FC_PermissionLabel,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
XtVaSetValues(FC_PermissionForm,
XmNrightOffset, 30,
XmNrightWidget, FC_AndLabel2,
XmNrightAttachment, XmATTACH_WIDGET,
NULL);
/* Creation of FC_PermissionToggle */
FC_PermissionToggle = XtVaCreateManagedWidget( "FC_PermissionToggle",
xmToggleButtonGadgetClass,
FileCharacteristics,
RES_CONVERT( XmNlabelString, "" ),
XmNnavigationType, XmTAB_GROUP,
XmNindicatorSize, 20,
XmNleftAttachment, XmATTACH_NONE,
XmNrightOffset, 2,
XmNrightWidget, FC_PermissionForm,
XmNrightAttachment, XmATTACH_WIDGET,
XmNtopWidget, FC_PermissionForm,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomAttachment, XmATTACH_NONE,
NULL );
XtAddCallback( FC_PermissionToggle, XmNvalueChangedCallback,
(XtCallbackProc) valueChangedCB_FC_PermissionToggle,
(XtPointer) NULL );
/* Creation of FC_ContentsLabel */
FC_ContentsLabel = XtVaCreateManagedWidget( "FC_ContentsLabel",
xmLabelWidgetClass,
FileCharacteristics,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 28, "Contents:")),
XmNsensitive, FALSE,
XmNleftWidget, FC_PermissionForm,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightAttachment, XmATTACH_NONE,
XmNtopOffset, 15,
XmNtopWidget, FC_PermissionForm,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_ContentsBox */
FC_ContentsBox = XtVaCreateManagedWidget( "FC_ContentsBox",
xmFormWidgetClass,
FileCharacteristics,
XmNresizePolicy, XmRESIZE_NONE,
XmNborderWidth, 1,
XmNsensitive, FALSE,
XmNleftWidget, FC_ContentsLabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightOffset, 30,
XmNrightAttachment, XmATTACH_FORM,
XmNtopOffset, 0,
XmNtopWidget, FC_ContentsLabel,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_ContentsToggle */
FC_ContentsToggle = XtVaCreateManagedWidget( "FC_ContentsToggle",
xmToggleButtonGadgetClass,
FileCharacteristics,
RES_CONVERT( XmNlabelString, "" ),
XmNnavigationType, XmTAB_GROUP,
XmNindicatorSize, 20,
XmNleftAttachment, XmATTACH_NONE,
XmNrightOffset, 2,
XmNrightWidget, FC_ContentsBox,
XmNrightAttachment, XmATTACH_WIDGET,
XmNtopWidget, FC_ContentsBox,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomAttachment, XmATTACH_NONE,
NULL );
XtAddCallback( FC_ContentsToggle, XmNvalueChangedCallback,
(XtCallbackProc) valueChangedCB_FC_ContentsToggle,
(XtPointer) NULL );
/* Creation of FC_ContentsPatternLabel */
FC_ContentsPatternLabel = XtVaCreateManagedWidget( "FC_ContentsPatternLabel",
xmLabelWidgetClass,
FC_ContentsBox,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 29, "Pattern:")),
XmNleftOffset, 10,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
XmNtopOffset, 10,
XmNtopAttachment, XmATTACH_FORM,
NULL );
/* Creation of FC_ContentsPatternText */
FC_ContentsPatternText = XtVaCreateManagedWidget( "FC_ContentsPatternText",
xmTextFieldWidgetClass,
FC_ContentsBox,
XmNwidth, 300,
XmNleftOffset, 5,
XmNleftWidget, FC_ContentsPatternLabel,
XmNleftAttachment, XmATTACH_WIDGET,
XmNrightOffset, 10,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNtopWidget, FC_ContentsPatternLabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
NULL );
/* Creation of FC_TypeLabel */
FC_TypeLabel = XtVaCreateManagedWidget( "FC_TypeLabel",
xmLabelWidgetClass,
FC_ContentsBox,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 30, "Type:")),
XmNleftWidget, FC_ContentsPatternLabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomAttachment, XmATTACH_NONE,
XmNtopOffset, 15,
XmNtopWidget, FC_ContentsPatternLabel,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_TypeRowColumn */
FC_TypeRowColumn = XtVaCreateManagedWidget( "FC_TypeRowColumn",
xmRowColumnWidgetClass,
FC_ContentsBox,
XmNnumColumns, 1,
XmNpacking, XmPACK_COLUMN,
XmNradioBehavior, TRUE,
XmNwhichButton, 1,
XmNleftWidget, FC_ContentsPatternText,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, FC_ContentsPatternText,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomAttachment, XmATTACH_NONE,
XmNtopWidget, FC_TypeLabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
NULL );
/* Creation of FC_StringToggle */
FC_StringToggle = XtVaCreateManagedWidget( "FC_StringToggle",
xmToggleButtonGadgetClass,
FC_TypeRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 31, "String")),
XmNset, TRUE,
NULL );
/* Creation of FC_ByteToggle */
FC_ByteToggle = XtVaCreateManagedWidget( "FC_ByteToggle",
xmToggleButtonGadgetClass,
FC_TypeRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 32, "Byte (Hex)")),
NULL );
/* Creation of FC_ShortToggle */
FC_ShortToggle = XtVaCreateManagedWidget( "FC_ShortToggle",
xmToggleButtonGadgetClass,
FC_TypeRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 33, "Short (Decimal)")),
NULL );
/* Creation of FC_LongToggle */
FC_LongToggle = XtVaCreateManagedWidget( "FC_LongToggle",
xmToggleButtonGadgetClass,
FC_TypeRowColumn,
XmNindicatorType, XmONE_OF_MANY,
XmNindicatorSize, 17,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 34, "Long (Decimal)")),
NULL );
/* Creation of FC_StartByteLabel */
FC_StartByteLabel = XtVaCreateManagedWidget( "FC_StartByteLabel",
xmLabelWidgetClass,
FC_ContentsBox,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, GETMESSAGE(9, 35, "Start Byte:")),
XmNleftWidget, FC_TypeLabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 15,
XmNbottomAttachment, XmATTACH_FORM,
XmNtopOffset, 15,
XmNtopWidget, FC_TypeRowColumn,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_StartByteTextField */
FC_StartByteTextField = XtVaCreateManagedWidget( "FC_StartByteTextField",
xmTextFieldWidgetClass,
FC_ContentsBox,
XmNcursorPosition, 5,
XmNwidth, 80,
XmNleftOffset, 5,
XmNleftWidget, FC_StartByteLabel,
XmNleftAttachment, XmATTACH_WIDGET,
XmNtopWidget, FC_StartByteLabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
NULL );
#if 0
/* Creation of FC_EndByteLabel */
FC_EndByteLabel = XtVaCreateManagedWidget( "FC_EndByteLabel",
xmLabelWidgetClass,
FC_ContentsBox,
XmNx, 248,
XmNy, 189,
XmNalignment, XmALIGNMENT_BEGINNING,
RES_CONVERT( XmNlabelString, "End byte:" ),
XmNleftOffset, 10,
XmNleftWidget, FC_StartByteTextField,
XmNleftAttachment, XmATTACH_WIDGET,
XmNtopWidget, FC_StartByteTextField,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
NULL );
/* Creation of FC_EndByteTextField */
FC_EndByteTextField = XtVaCreateManagedWidget( "FC_EndByteTextField",
xmTextFieldWidgetClass,
FC_ContentsBox,
XmNcolumns, 6,
XmNcursorPosition, 5,
XmNwidth, 80,
XmNleftOffset, 5,
XmNleftWidget, FC_EndByteLabel,
XmNleftAttachment, XmATTACH_WIDGET,
XmNrightOffset, 10,
XmNrightAttachment, XmATTACH_FORM,
XmNtopWidget, FC_EndByteLabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
NULL );
#endif
FC_ActionAreaForm = XtVaCreateManagedWidget( "FC_ActionAreaForm",
xmFormWidgetClass,
FileCharacteristics,
XmNskipAdjust, TRUE,
XmNfractionBase, ((TIGHTNESS * ntotalbuttons) - 1),
XmNleftWidget, FC_ContentsBox,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightOffset, 30,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomOffset, 20,
XmNbottomAttachment, XmATTACH_FORM,
XmNtopOffset, 20,
XmNtopWidget, FC_ContentsBox,
XmNtopAttachment, XmATTACH_WIDGET,
NULL );
/* Creation of FC_OkButton */
FC_OkButton = XtVaCreateManagedWidget( "FC_OkButton",
xmPushButtonGadgetClass,
FC_ActionAreaForm,
RES_CONVERT( XmNlabelString, GETMESSAGE(6, 10, "OK")),
XmNleftAttachment, nbutton ?
XmATTACH_POSITION : XmATTACH_FORM,
XmNleftPosition, TIGHTNESS * nbutton,
XmNrightAttachment, nbutton != (ntotalbuttons - 1) ?
XmATTACH_POSITION : XmATTACH_FORM,
XmNrightPosition, (TIGHTNESS * nbutton)+(TIGHTNESS - 1),
NULL );
nbutton++;
XtAddCallback( FC_OkButton, XmNactivateCallback,
(XtCallbackProc) activateCB_FC_OkButton,
(XtPointer) NULL );
/* Creation of FC_CancelButton */
FC_CancelButton = XtVaCreateManagedWidget( "FC_CancelButton",
xmPushButtonGadgetClass,
FC_ActionAreaForm,
RES_CONVERT( XmNlabelString, GETMESSAGE(6, 12, "Cancel")),
XmNleftAttachment, nbutton ?
XmATTACH_POSITION : XmATTACH_FORM,
XmNleftPosition, TIGHTNESS * nbutton,
XmNrightAttachment, nbutton != (ntotalbuttons - 1) ?
XmATTACH_POSITION : XmATTACH_FORM,
XmNrightPosition, (TIGHTNESS * nbutton)+(TIGHTNESS - 1),
NULL );
nbutton++;
XtAddCallback( FC_CancelButton, XmNactivateCallback,
(XtCallbackProc) activateCB_FC_CancelButton,
(XtPointer) NULL );
/* Creation of FC_ClearButton */
FC_ClearButton = XtVaCreateManagedWidget( "FC_ClearButton",
xmPushButtonGadgetClass,
FC_ActionAreaForm,
RES_CONVERT( XmNlabelString, GETMESSAGE(6, 14, "Clear")),
XmNleftAttachment, nbutton ?
XmATTACH_POSITION : XmATTACH_FORM,
XmNleftPosition, TIGHTNESS * nbutton,
XmNrightAttachment, nbutton != (ntotalbuttons - 1) ?
XmATTACH_POSITION : XmATTACH_FORM,
XmNrightPosition, (TIGHTNESS * nbutton)+(TIGHTNESS - 1),
NULL );
nbutton++;
XtAddCallback( FC_ClearButton, XmNactivateCallback,
(XtCallbackProc) activateCB_FC_ClearButton,
(XtPointer) NULL );
/* Creation of FC_HelpButton */
FC_HelpButton = XtVaCreateManagedWidget( "FC_HelpButton",
xmPushButtonGadgetClass,
FC_ActionAreaForm,
RES_CONVERT( XmNlabelString, GETMESSAGE(6, 13, "Help")),
XmNuserData, FileCharacteristics,
XmNleftAttachment, nbutton ?
XmATTACH_POSITION : XmATTACH_FORM,
XmNleftPosition, TIGHTNESS * nbutton,
XmNrightAttachment, nbutton != (ntotalbuttons - 1) ?
XmATTACH_POSITION : XmATTACH_FORM,
XmNrightPosition, (TIGHTNESS * nbutton)+(TIGHTNESS - 1),
NULL );
nbutton++;
XtAddCallback( FC_HelpButton, XmNactivateCallback,
(XtCallbackProc) helpCB_general,
(XtPointer) HELP_FILECHAR );
XtVaSetValues(FileCharacteristics,
XmNcancelButton, FC_CancelButton,
XmNdefaultButton, FC_OkButton,
XmNinitialFocus, FC_NameOrPathText,
NULL );
XtAddCallback( FileCharacteristics, XmNdestroyCallback,
(XtCallbackProc) UxDestroyContextCB,
(XtPointer) NULL );
if (bLowRes) {
return ( FC_BigForm );
} else {
return ( FileCharacteristics );
}
}
/*******************************************************************************
The following is the 'Interface function' which is the
external entry point for creating this interface.
This function should be called from your application or from
a callback function.
*******************************************************************************/
Widget create_FileCharacteristics( swidget _UxUxParent )
{
Widget rtrn;
XtArgVal /* Dimension */ dimHeight;
XtArgVal /* Dimension */ dimWidth;
XtArgVal /* Dimension */ dimTmp;
Widget widScrolledWindow;
Widget widTmp;
rtrn = _Uxbuild_FileCharacteristics();
if (bLowRes) {
XtRealizeWidget(rtrn);
XtVaGetValues (FileCharacteristics,
XmNheight, &dimHeight,
XmNwidth, &dimWidth,
NULL);
XtVaGetValues (rtrn,
XmNuserData, &widScrolledWindow,
NULL);
XtVaGetValues (widScrolledWindow,
XmNverticalScrollBar, &widTmp,
NULL);
XtVaGetValues (widTmp,
XmNwidth, &dimTmp,
NULL);
dimHeight += dimTmp;
dimWidth += dimTmp;
XtVaSetValues (rtrn,
XmNheight, dimHeight,
XmNwidth, dimWidth,
NULL);
}
return(rtrn);
}
/******************************************************************************/
/* */
/* init_FileCharacteristics_dialog_fields */
/* */
/* INPUT: FiletypeData * - pointer to FiletypeData structure */
/* OUTPUT: none */
/* */
/******************************************************************************/
void init_FileCharacteristics_dialog_fields(FiletypeData *pFtD)
{
char buffer[MAXBUFSIZE];
char *pszPerms = (char *)NULL;
/************************************************************************/
/* Initialize name pattern. */
/************************************************************************/
if (pFtD->pszPattern) {
/*XmToggleButtonSetState(FC_NameOrPathToggle, TRUE);*/
XmToggleButtonGadgetSetState(FC_NameOrPathToggle, TRUE, TRUE);
PutWidgetTextString(FC_NameOrPathText, pFtD->pszPattern);
} else {
/*XmToggleButtonSetState(FC_NameOrPathToggle, FALSE);*/
XmToggleButtonGadgetSetState(FC_NameOrPathToggle, FALSE, TRUE);
}
/************************************************************************/
/* Initialize permission pattern. */
/************************************************************************/
if (pFtD->pszPermissions) {
if (strstr(pFtD->pszPermissions, "!d")) {
XmToggleButtonGadgetSetState(FC_FileToggle, TRUE, TRUE);
} else {
XmToggleButtonGadgetSetState(FC_DirectoryToggle, TRUE, TRUE);
}
pszPerms = strchr(pFtD->pszPermissions, 'd');
if (pszPerms) {
pszPerms++;
if (!*pszPerms) {
pszPerms = (char *)NULL;
}
}
}
if (pszPerms) {
XmToggleButtonGadgetSetState(FC_PermissionToggle, TRUE, TRUE);
/******************************************************************/
/* Initialize Read permission */
/******************************************************************/
if (strstr(pFtD->pszPermissions, "!r")) {
XmToggleButtonGadgetSetState(FC_ReadOffToggle, TRUE, TRUE);
} else {
if (strstr(pFtD->pszPermissions, "r")) {
XmToggleButtonGadgetSetState(FC_ReadOnToggle, TRUE, TRUE);
} else {
XmToggleButtonGadgetSetState(FC_ReadEitherToggle, TRUE, TRUE);
}
}
/******************************************************************/
/* Initialize Write permission */
/******************************************************************/
if (strstr(pFtD->pszPermissions, "!w")) {
XmToggleButtonGadgetSetState(FC_WriteOffToggle, TRUE, TRUE);
} else {
if (strstr(pFtD->pszPermissions, "w")) {
XmToggleButtonGadgetSetState(FC_WriteOnToggle, TRUE, TRUE);
} else {
XmToggleButtonGadgetSetState(FC_WriteEitherToggle, TRUE, TRUE);
}
}
/******************************************************************/
/* Initialize Execute permission */
/******************************************************************/
if (strstr(pFtD->pszPermissions, "!x")) {
XmToggleButtonGadgetSetState(FC_ExecuteOffToggle, TRUE, TRUE);
} else {
if (strstr(pFtD->pszPermissions, "x")) {
XmToggleButtonGadgetSetState(FC_ExecuteOnToggle, TRUE, TRUE);
} else {
XmToggleButtonGadgetSetState(FC_ExecuteEitherToggle, TRUE, TRUE);
}
}
} else {
XmToggleButtonGadgetSetState(FC_PermissionToggle, FALSE, TRUE);
}
/************************************************************************/
/* Initialize contents pattern. */
/************************************************************************/
if (pFtD->pszContents) {
XmToggleButtonGadgetSetState(FC_ContentsToggle, TRUE, TRUE);
/*XmToggleButtonSetState(FC_ContentsToggle, TRUE);*/
PutWidgetTextString(FC_ContentsPatternText, pFtD->pszContents);
if (pFtD->fsFlags & CA_FT_CNTSTRING)
XmToggleButtonGadgetSetState(FC_StringToggle, TRUE, TRUE);
else if (pFtD->fsFlags & CA_FT_CNTBYTE)
XmToggleButtonGadgetSetState(FC_ByteToggle, TRUE, TRUE);
else if (pFtD->fsFlags & CA_FT_CNTSHORT)
XmToggleButtonGadgetSetState(FC_ShortToggle, TRUE, TRUE);
else if (pFtD->fsFlags & CA_FT_CNTLONG)
XmToggleButtonGadgetSetState(FC_LongToggle, TRUE, TRUE);
sprintf(buffer, "%d", pFtD->sStart);
PutWidgetTextString(FC_StartByteTextField,buffer);
#if 0
sprintf(buffer, "%d", pFtD->sEnd);
PutWidgetTextString(FC_EndByteTextField, buffer);
#endif
} else {
XmToggleButtonGadgetSetState(FC_ContentsToggle, FALSE, TRUE);
/*XmToggleButtonSetState(FC_ContentsToggle, FALSE);*/
}
return;
}
/******************************************************************************/
/* */
/* clear_FileCharacteristics_dialog_fields */
/* */
/* INPUT: FiletypeData * - pointer to FiletypeData structure */
/* OUTPUT: none */
/* */
/******************************************************************************/
void clear_FileCharacteristics_dialog_fields(void)
{
/************************************************************************/
/* Clear Files/Directories - set to default */
/************************************************************************/
XmToggleButtonGadgetSetState(FC_FileToggle, TRUE, TRUE);
/************************************************************************/
/* Clear name pattern. */
/************************************************************************/
XmToggleButtonGadgetSetState(FC_NameOrPathToggle, FALSE, TRUE);
clear_text_field(FC_NameOrPathText);
/************************************************************************/
/* Clear permission pattern - set to default */
/************************************************************************/
XmToggleButtonGadgetSetState(FC_PermissionToggle, FALSE, TRUE);
XmToggleButtonGadgetSetState(FC_ReadOnToggle, FALSE, TRUE);
XmToggleButtonGadgetSetState(FC_WriteOnToggle, FALSE, TRUE);
XmToggleButtonGadgetSetState(FC_ExecuteOnToggle, FALSE, TRUE);
XmToggleButtonGadgetSetState(FC_ReadOffToggle, FALSE, TRUE);
XmToggleButtonGadgetSetState(FC_WriteOffToggle, FALSE, TRUE);
XmToggleButtonGadgetSetState(FC_ExecuteOffToggle, FALSE, TRUE);
XmToggleButtonGadgetSetState(FC_ReadEitherToggle, TRUE, TRUE);
XmToggleButtonGadgetSetState(FC_WriteEitherToggle, TRUE, TRUE);
XmToggleButtonGadgetSetState(FC_ExecuteEitherToggle, TRUE, TRUE);
/************************************************************************/
/* Clear contents pattern - set to default */
/************************************************************************/
XmToggleButtonGadgetSetState(FC_ContentsToggle, FALSE, TRUE);
clear_text_field(FC_ContentsPatternText);
XmToggleButtonGadgetSetState(FC_StringToggle, TRUE, TRUE);
clear_text_field(FC_StartByteTextField);
#if 0
clear_text_field(FC_EndByteTextField);
#endif
return;
}
/******************************************************************************/
/* */
/* FileCharCheckFields */
/* */
/* INPUT: none */
/* OUTPUT: FALSE - no errors found */
/* TRUE - found errors */
/* */
/******************************************************************************/
Boolean FileCharCheckFields(void)
{
char *ptr = (char *)NULL;
Boolean bError = FALSE;
char *msgPtr, *errPtr;
/**************************************************************************/
/* Check to make sure at least one characteristic is selected. */
/**************************************************************************/
if (!bError) {
if ( !(XmToggleButtonGadgetGetState(FC_NameOrPathToggle)) &&
!(XmToggleButtonGadgetGetState(FC_PermissionToggle)) &&
!(XmToggleButtonGadgetGetState(FC_ContentsToggle)) ) {
msgPtr = GETMESSAGE(10, 30,
"An identifying characteristic has not been selected.\n\
Select one or more of the characteristics\n\
(Name Pattern, Permissions Pattern, or Contents).");
errPtr = XtNewString(msgPtr);
display_error_message(FileCharacteristics, errPtr);
XtFree(errPtr);
XmProcessTraversal(FC_NameOrPathText, XmTRAVERSE_CURRENT);
bError = TRUE;
}
}
/**************************************************************************/
/* Check if name pattern is selected. If so must have a name pattern. */
/**************************************************************************/
if (!bError) {
if (XmToggleButtonGadgetGetState(FC_NameOrPathToggle)) {
ptr = (char *)NULL;
GetWidgetTextString(FC_NameOrPathText, &ptr);
#ifdef DEBUG
printf("Name Pattern = '%s'\n", ptr);
#endif
if (!ptr) {
msgPtr = GETMESSAGE(10, 10, "Name Pattern is missing.\n\
If Name Pattern is selected, a name pattern\n\
must be entered.");
errPtr = XtNewString(msgPtr);
display_error_message(FileCharacteristics, errPtr);
XtFree(errPtr);
XmProcessTraversal(FC_NameOrPathText, XmTRAVERSE_CURRENT);
bError = TRUE;
} else {
XtFree(ptr);
}
}
}
/**************************************************************************/
/* Check if contents is selected. If so must have a contents pattern. */
/**************************************************************************/
if (!bError) {
if (XmToggleButtonGadgetGetState(FC_ContentsToggle)) {
ptr = (char *)NULL;
GetWidgetTextString(FC_ContentsPatternText, &ptr);
#ifdef DEBUG
printf("Name Pattern = '%s'\n", ptr);
#endif
if (!ptr) {
msgPtr = GETMESSAGE(10, 20, "Contents Pattern is missing.\n\
If Contents is selected, then the Pattern field\n\
under Contents must be filled in.");
errPtr = XtNewString(msgPtr);
display_error_message(FileCharacteristics, errPtr);
XtFree(errPtr);
bError = TRUE;
} else {
XtFree(ptr);
/*****************************************************************/
/* Now check to make sure there is a start byte value. */
/*****************************************************************/
ptr = (char *)NULL;
GetWidgetTextString(FC_StartByteTextField, &ptr);
if (!ptr) {
msgPtr = GETMESSAGE(10, 25, "Start byte value is missing.\n\
If Contents is selected, then a number must be\n\
entered in the 'Start Byte' field.");
errPtr = XtNewString(msgPtr);
display_error_message(FileCharacteristics, errPtr);
XtFree(errPtr);
bError = TRUE;
} else {
XtFree(ptr);
}
}
}
}
return(bError);
}
/*******************************************************************************
END OF FILE
*******************************************************************************/