Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
282
cde/programs/dtfile/PrefsP.c
Normal file
282
cde/programs/dtfile/PrefsP.c
Normal file
@@ -0,0 +1,282 @@
|
||||
/* $XConsortium: PrefsP.c /main/4 1995/11/02 14:43:38 rswiston $ */
|
||||
/************************************<+>*************************************
|
||||
****************************************************************************
|
||||
*
|
||||
* FILE: PrefsP.c
|
||||
*
|
||||
* COMPONENT_NAME: Desktop File Manager (dtfile)
|
||||
*
|
||||
* Description: Processing functions for the preferences dialog.
|
||||
*
|
||||
* FUNCTIONS: PreferencesChange
|
||||
* PreferencesClose
|
||||
* ShowPreferencesDialog
|
||||
*
|
||||
* (c) Copyright 1993, 1994, 1995 Hewlett-Packard Company
|
||||
* (c) Copyright 1993, 1994, 1995 International Business Machines Corp.
|
||||
* (c) Copyright 1993, 1994, 1995 Sun Microsystems, Inc.
|
||||
* (c) Copyright 1993, 1994, 1995 Novell, Inc.
|
||||
*
|
||||
****************************************************************************
|
||||
************************************<+>*************************************/
|
||||
|
||||
#include <Xm/Xm.h>
|
||||
#include <Xm/RowColumn.h>
|
||||
|
||||
#include <Dt/FileM.h>
|
||||
#include "Encaps.h"
|
||||
#include "SharedProcs.h"
|
||||
|
||||
#include "FileMgr.h"
|
||||
#include "Desktop.h"
|
||||
#include "Main.h"
|
||||
#include "Prefs.h"
|
||||
|
||||
|
||||
/******** Static Function Declarations ********/
|
||||
|
||||
static void PreferencesChange(
|
||||
XtPointer client_data,
|
||||
DialogData *old_dialog_data,
|
||||
DialogData *new_dialog_data,
|
||||
XtPointer call_data) ;
|
||||
static void PreferencesClose(
|
||||
XtPointer client_data,
|
||||
DialogData *old_dialog_data,
|
||||
DialogData *new_dialog_data) ;
|
||||
|
||||
/******** End Static Function Declarations ********/
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* ShowPreferencesDialog
|
||||
* Callback functions invoked from the Change Directory... menu
|
||||
* item. This function displays the change directory dialog.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
void
|
||||
ShowPreferencesDialog(
|
||||
Widget w,
|
||||
XtPointer client_data,
|
||||
XtPointer callback )
|
||||
{
|
||||
FileMgrRec * file_mgr_rec;
|
||||
DialogData * dialog_data;
|
||||
FileMgrData * file_mgr_data;
|
||||
PreferencesRec *preferences_rec;
|
||||
Arg args[1];
|
||||
Widget mbar;
|
||||
char *tmpStr, *tempStr;
|
||||
|
||||
|
||||
|
||||
/* Set the menu item to insensitive to prevent multiple */
|
||||
/* dialogs from being posted and get the area under the */
|
||||
/* menu pane redrawn. */
|
||||
|
||||
if (w)
|
||||
{
|
||||
mbar = XmGetPostedFromWidget(XtParent(w));
|
||||
XmUpdateDisplay (w);
|
||||
XtSetArg(args[0], XmNuserData, &file_mgr_rec);
|
||||
XtGetValues(mbar, args, 1);
|
||||
|
||||
/* Ignore accelerators when we're insensitive */
|
||||
if ((file_mgr_rec->menuStates & PREFERENCES) == 0)
|
||||
{
|
||||
XSetInputFocus(XtDisplay(w),
|
||||
XtWindow(file_mgr_rec->preferencesBtn_child),
|
||||
RevertToParent, CurrentTime);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Done only during a restore session */
|
||||
file_mgr_rec = (FileMgrRec *)client_data;
|
||||
}
|
||||
|
||||
|
||||
/* Ignore accelerators received after we're unposted */
|
||||
if ((dialog_data = _DtGetInstanceData ((XtPointer)file_mgr_rec)) == NULL)
|
||||
return;
|
||||
file_mgr_data = (FileMgrData *) dialog_data->data;
|
||||
|
||||
file_mgr_rec->menuStates &= ~ PREFERENCES;
|
||||
|
||||
_DtShowDialog (file_mgr_rec->shell, NULL, (XtPointer)file_mgr_rec,
|
||||
file_mgr_data->preferences, PreferencesChange,
|
||||
(XtPointer)file_mgr_rec, PreferencesClose,
|
||||
(XtPointer)file_mgr_rec, NULL, False, False, NULL, NULL);
|
||||
|
||||
/* set the title */
|
||||
preferences_rec = (PreferencesRec *)_DtGetDialogInstance(
|
||||
file_mgr_data->preferences);
|
||||
|
||||
if(file_mgr_data->title != NULL &&
|
||||
(strcmp(file_mgr_data->helpVol, DTFILE_HELP_NAME) != 0 ||
|
||||
strcmp(file_mgr_data->title, "Trash Can") == 0))
|
||||
{
|
||||
tmpStr = GETMESSAGE(23, 1, "Set View Options");
|
||||
tempStr = (char *)XtMalloc(strlen(tmpStr) +
|
||||
strlen(file_mgr_data->title) + 5);
|
||||
sprintf(tempStr, "%s - %s", file_mgr_data->title, tmpStr);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmpStr = (GETMESSAGE(23,22, "File Manager - Set View Options"));
|
||||
tempStr = XtNewString(tmpStr);
|
||||
}
|
||||
XtSetArg (args[0], XmNtitle, tempStr);
|
||||
XtSetValues (preferences_rec->shell, args, 1);
|
||||
XtFree(tempStr);
|
||||
file_mgr_rec->preferencesBtn_child=preferences_rec->shell;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* PreferencesChange
|
||||
* Callback functions invoked from the current directory dialog's
|
||||
* apply button being pressed. This function updates and redisplays
|
||||
* the current directory information.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
static void
|
||||
PreferencesChange(
|
||||
XtPointer client_data,
|
||||
DialogData *old_dialog_data,
|
||||
DialogData *new_dialog_data,
|
||||
XtPointer call_data )
|
||||
{
|
||||
FileMgrRec * file_mgr_rec = (FileMgrRec *) client_data;
|
||||
DialogData * dialog_data;
|
||||
FileMgrData * file_mgr_data;
|
||||
XtPointer save_data;
|
||||
PreferencesData * preferences_data;
|
||||
unsigned char *viewP;
|
||||
FileViewData *branch;
|
||||
int i;
|
||||
|
||||
dialog_data = _DtGetInstanceData ((XtPointer)file_mgr_rec);
|
||||
file_mgr_data = (FileMgrData *) dialog_data->data;
|
||||
|
||||
save_data = file_mgr_data->preferences->data;
|
||||
file_mgr_data->preferences->data = new_dialog_data->data;
|
||||
new_dialog_data->data = save_data;
|
||||
_DtFreeDialogData (new_dialog_data);
|
||||
|
||||
|
||||
preferences_data = (PreferencesData *) (file_mgr_data->preferences->data);
|
||||
|
||||
if (file_mgr_data->show_type != preferences_data->show_type ||
|
||||
file_mgr_data->tree_files != preferences_data->tree_files ||
|
||||
file_mgr_data->view_single != preferences_data->view_single ||
|
||||
file_mgr_data->view_tree != preferences_data->view_tree ||
|
||||
file_mgr_data->order != preferences_data->order ||
|
||||
file_mgr_data->direction != preferences_data->direction ||
|
||||
file_mgr_data->positionEnabled != preferences_data->positionEnabled ||
|
||||
file_mgr_data->show_iconic_path != preferences_data->show_iconic_path ||
|
||||
file_mgr_data->show_current_dir != preferences_data->show_current_dir ||
|
||||
file_mgr_data->show_status_line != preferences_data->show_status_line)
|
||||
{
|
||||
/*
|
||||
* Depending upon which of the preferences values changed, positioning
|
||||
* may need to be disabled, and the preferences dialog updated.
|
||||
*/
|
||||
if (((file_mgr_data->order != preferences_data->order) ||
|
||||
(file_mgr_data->direction != preferences_data->direction)) &&
|
||||
(file_mgr_data->positionEnabled == RANDOM_ON))
|
||||
{
|
||||
/* Discard positioning info */
|
||||
file_mgr_data->grid_height = 0;
|
||||
file_mgr_data->grid_width = 0;
|
||||
if(file_mgr_data->object_positions)
|
||||
FreePositionInfo(file_mgr_data);
|
||||
}
|
||||
|
||||
/*
|
||||
* In tree mode, if we switch from showing files "always" to "choose",
|
||||
* change all branches from tsAll back to tsDirs.
|
||||
*/
|
||||
if (file_mgr_data->tree_files == TREE_FILES_ALWAYS &&
|
||||
preferences_data->tree_files == TREE_FILES_CHOOSE)
|
||||
{
|
||||
for (i = 0; i < file_mgr_data->directory_count; i++)
|
||||
{
|
||||
branch = file_mgr_data->directory_set[i]->sub_root;
|
||||
if (branch->ts == tsAll)
|
||||
{
|
||||
branch->ts = tsDirs;
|
||||
UpdateBranchList(file_mgr_data, file_mgr_data->directory_set[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (preferences_data->show_type == MULTIPLE_DIRECTORY)
|
||||
viewP = &preferences_data->view_tree;
|
||||
else
|
||||
viewP = &preferences_data->view_single;
|
||||
if (file_mgr_data->view != *viewP)
|
||||
{
|
||||
file_mgr_data->newSize = True;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (file_mgr_data->show_type != preferences_data->show_type)
|
||||
file_mgr_data->newSize = True;
|
||||
else
|
||||
file_mgr_data->newSize = False;
|
||||
}
|
||||
file_mgr_data->show_type = preferences_data->show_type;
|
||||
file_mgr_data->tree_files = preferences_data->tree_files;
|
||||
file_mgr_data->view = *viewP;
|
||||
file_mgr_data->view_single = preferences_data->view_single;
|
||||
file_mgr_data->view_tree = preferences_data->view_tree;
|
||||
file_mgr_data->order = preferences_data->order;
|
||||
file_mgr_data->direction = preferences_data->direction;
|
||||
file_mgr_data->show_iconic_path = preferences_data->show_iconic_path;
|
||||
file_mgr_data->show_current_dir = preferences_data->show_current_dir;
|
||||
file_mgr_data->show_status_line = preferences_data->show_status_line;
|
||||
if (file_mgr_data->positionEnabled == preferences_data->positionEnabled)
|
||||
FileMgrRedisplayFiles (file_mgr_rec, file_mgr_data, False);
|
||||
else
|
||||
{
|
||||
file_mgr_data->positionEnabled = preferences_data->positionEnabled;
|
||||
FileMgrRedisplayFiles (file_mgr_rec, file_mgr_data, True);
|
||||
}
|
||||
|
||||
if(openDirType == NEW)
|
||||
ForceMyIconOpen(file_mgr_data->host, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* PreferencesClose
|
||||
* Callback function invoked from the preferences dialog's close
|
||||
* button. This function resensitizes the menu item.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
static void
|
||||
PreferencesClose(
|
||||
XtPointer client_data,
|
||||
DialogData *old_dialog_data,
|
||||
DialogData *new_dialog_data )
|
||||
{
|
||||
FileMgrRec * file_mgr_rec = (FileMgrRec *) client_data;
|
||||
|
||||
_DtFreeDialogData (new_dialog_data);
|
||||
|
||||
/* Resensitize the associated menu button */
|
||||
file_mgr_rec->menuStates |= PREFERENCES;
|
||||
}
|
||||
Reference in New Issue
Block a user