/* * 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 */ /* $XConsortium: Prefs.c /main/7 1996/10/23 17:04:25 mustafa $ */ /************************************<+>************************************* **************************************************************************** * * FILE: Prefs.c * * COMPONENT_NAME: Desktop File Manager (dtfile) * * Description: Source file for the change directory dialog. * * FUNCTIONS: ApplyCallback * Create * Destroy * DirectionToString * FreeValues * GetDefaultValues * GetPreferencesValues * GetResourceValues * GetValues * InstallChange * InstallClose * OkCallback * OrderToString * RandomToString * ResetCallback * SetValues * ShowTypeToString * StringToDirection * StringToOrder * StringToRandom * StringToShowType * StringToTreeFiles * StringToView * ToggleCallback * TreeFilesToString * ViewToString * WriteResourceValues * * (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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
#include
#include "Encaps.h" #include "SharedProcs.h" #include #include #include #include "FileMgr.h" #include "Desktop.h" #include "Main.h" #include "Prefs.h" #include "Help.h" /******** Static Function Declarations ********/ static void Create( Display *display, Widget parent, Widget *return_widget, XtPointer *dialog) ; static void InstallChange( PreferencesRec *preferences_rec, XtCallbackProc callback, XtPointer client_data) ; static void InstallClose( PreferencesRec *preferences_rec, XtCallbackProc callback, XtPointer client_data) ; static void Destroy( PreferencesRec *preferences_rec) ; static XtPointer GetValues( PreferencesRec *preferences_rec) ; static XtPointer GetDefaultValues( void ) ; static XtPointer GetResourceValues( XrmDatabase data_base, char **name_list) ; static void SetValues( PreferencesRec *preferences_rec, PreferencesData *preferences_data) ; static void WriteResourceValues( DialogData *values, int fd, char **name_list) ; static void FreeValues( PreferencesData *preferences_data) ; static void ResetCallback( Widget w, XtPointer client_data, XtPointer call_data) ; static void ToggleCallback( Widget w, XtPointer client_data, XtPointer call_data) ; static void OkCallback( Widget w, PreferencesApply *apply_data, XtPointer call_data) ; static void ApplyCallback( Widget w, PreferencesApply *apply_data, XtPointer call_data) ; static void GetPreferencesValues( PreferencesRec *preferences_rec, PreferencesData *preferences_data) ; /******** End Static Function Declarations ********/ static char * Order_by_file_type = "order_by_file_type"; static char * Order_by_alphabetical = "order_by_alphabetical"; static char * Order_by_date = "order_by_date"; static char * Order_by_size = "order_by_size"; static char * By_name = "by_name"; static char * By_name_and_icon = "by_name_and_icon"; static char * By_name_and_small_icon = "by_name_and_small_icon"; static char * By_attributes = "by_attributes"; static char * Direction_descending = "direction_descending"; static char * Direction_ascending = "direction_ascending"; static char * Single_directory = "single_directory"; static char * DirectoryTree = "directory_tree"; static char * Tree_files_never = "never"; static char * Tree_files_choose = "choose"; static char * Tree_files_always = "always"; static char * PreferencesName = "Preferences"; static char * Random_on = "random_on"; static char * Random_off = "random_off"; /* Resource definitions for the preferences dialog */ static DialogResource resources[] = { { "showType", SHOW_TYPE, sizeof(unsigned char), XtOffset(PreferencesDataPtr, show_type), (XtPointer) SINGLE_DIRECTORY, ShowTypeToString }, { "treeFiles", TREE_FILES, sizeof(unsigned char), XtOffset(PreferencesDataPtr, tree_files), (XtPointer) TREE_FILES_NEVER, TreeFilesToString }, { "view_single", VIEW, sizeof(unsigned char), XtOffset(PreferencesDataPtr, view_single), (XtPointer) BY_NAME_AND_ICON, ViewToString }, { "view_tree", VIEW, sizeof(unsigned char), XtOffset(PreferencesDataPtr, view_tree), (XtPointer) BY_NAME_AND_SMALL_ICON, ViewToString }, { "order", ORDER, sizeof(unsigned char), XtOffset(PreferencesDataPtr, order), (XtPointer) ORDER_BY_ALPHABETICAL, OrderToString }, { "direction", DIRECTION_RESRC, sizeof(unsigned char), XtOffset(PreferencesDataPtr, direction), (XtPointer) DIRECTION_ASCENDING, DirectionToString }, { "positionEnabled", RANDOM, sizeof(unsigned char), XtOffset(PreferencesDataPtr, positionEnabled), (XtPointer) RANDOM_OFF, RandomToString }, }; /* Callback function definitions */ /* * The Dialog Class structure. */ static DialogClass preferencesClassRec = { resources, XtNumber(resources), Create, (DialogInstallChangeProc) InstallChange, (DialogInstallCloseProc) InstallClose, (DialogDestroyProc) Destroy, (DialogGetValuesProc) GetValues, GetDefaultValues, GetResourceValues, (DialogSetValuesProc) SetValues, WriteResourceValues, (DialogFreeValuesProc) FreeValues, (DialogMapWindowProc) _DtGenericMapWindow, NULL, }; DialogClass * preferencesClass = (DialogClass *) &preferencesClassRec; int showType; /************************************************************************ * * Create * ************************************************************************/ static void Create( Display *display, Widget parent, Widget *return_widget, XtPointer *dialog ) { PreferencesRec * preferences_rec; Widget shell; Widget form; Widget show_frame; Widget view_frame; Widget order_frame; Widget direction_frame; Widget group_form; Widget separator; Widget temp; Widget headers_frame; Widget position_frame; Widget titleWidget; XmString label_string; Arg args[15]; Dimension offset, screenHeight; int n; char * tmpStr; /* Allocate the change directory dialog instance record. */ preferences_rec = (PreferencesRec *) XtMalloc (sizeof (PreferencesRec)); screenHeight = HeightOfScreen( XtScreen( parent ) ); /* We are supporting 3 sizes. They are: 1200, 1024, 480 For the sake of simplicity, process two of them. */ if( screenHeight >= (Dimension) 1024 ) offset = (Dimension)5; else offset = (Dimension)1; /* Create the shell, bulletin board and form used for the dialog. */ n = 0; XtSetArg (args[n], XmNmwmFunctions, MWM_FUNC_MOVE | MWM_FUNC_CLOSE); ++n; XtSetArg (args[n], XmNmwmDecorations, MWM_DECOR_BORDER | MWM_DECOR_TITLE); ++n; XtSetArg (args[n], XmNallowShellResize, False); ++n; preferences_rec->shell = shell = XmCreateDialogShell (parent, "preferences", args, n); /* Set the useAsyncGeo on the shell */ XtSetArg (args[0], XmNuseAsyncGeometry, True); XtSetValues (XtParent(shell), args, 1); n = 0; XtSetArg (args[n], XmNmarginWidth, 1); n++; XtSetArg (args[n], XmNmarginHeight, 1); n++; XtSetArg (args[n], XmNshadowThickness, 1); n++; XtSetArg (args[n], XmNshadowType, XmSHADOW_OUT); n++; XtSetArg (args[n], XmNautoUnmanage, False); n++; form = XmCreateForm (shell, "form", args, n); XtAddCallback(form, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIALOG_STR); /* Create the headers status line */ label_string = XmStringCreateLocalized ((GETMESSAGE(23,23, "Headers"))); n = 0; XtSetArg (args[n], XmNtitleString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNrightOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftOffset, offset); n++; XtSetArg (args[n], XmNmarginWidth, offset); n++; XtSetArg (args[n], XmNmarginHeight, offset); n++; headers_frame = _DtCreateTitleBox(form, "headers_frame", args, n); XtManageChild (headers_frame); XtAddCallback(headers_frame, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_HEADERS_STR); XmStringFree(label_string); titleWidget = _DtTitleBoxGetTitleArea(headers_frame); XtSetArg (args[0], XmNtraversalOn, False); XtSetValues (titleWidget, args, 1); group_form = XmCreateForm (headers_frame, "group_form", args, 0); XtManageChild (group_form); label_string = XmStringCreateLocalized ((GETMESSAGE(23,24, "Iconic Path"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; preferences_rec->show_iconic_path = temp = XmCreateToggleButtonGadget (group_form, "show_iconic_path", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_HEADERS_STR); label_string = XmStringCreateLocalized ((GETMESSAGE(23,36, "Text Path"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNleftWidget, preferences_rec->show_iconic_path);n++; XtSetArg (args[n], XmNleftOffset, 10); n++; preferences_rec->show_current_dir = temp = XmCreateToggleButtonGadget (group_form, "show_current_dir", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_HEADERS_STR); label_string = XmStringCreateLocalized ((GETMESSAGE(23,37, "Message Line"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNleftWidget, preferences_rec->show_current_dir);n++; XtSetArg (args[n], XmNleftOffset, 10); n++; preferences_rec->show_status_line = temp = XmCreateToggleButtonGadget (group_form, "show_status_line", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_HEADERS_STR); /* Create the positioning status line */ label_string = XmStringCreateLocalized ((GETMESSAGE(23,18, "Placement"))); n = 0; XtSetArg (args[n], XmNtitleString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, headers_frame); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNrightOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftOffset, offset); n++; XtSetArg (args[n], XmNmarginWidth, offset); n++; XtSetArg (args[n], XmNmarginHeight, offset); n++; position_frame = _DtCreateTitleBox(form, "position_frame", args, n); XtManageChild (position_frame); XtAddCallback(position_frame, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_PLACEMENT_STR); XmStringFree(label_string); titleWidget = _DtTitleBoxGetTitleArea(position_frame); XtSetArg (args[0], XmNtraversalOn, False); XtSetValues (titleWidget, args, 1); group_form = XmCreateForm (position_frame, "group_form", args, 0); XtManageChild (group_form); label_string = XmStringCreateLocalized ((GETMESSAGE(23,20, "As Placed"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->random_on = temp = XmCreateToggleButtonGadget (group_form, "random_on", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_PLACEMENT_STR); label_string = XmStringCreateLocalized ((GETMESSAGE(23,35, "Rows and Columns"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNleftWidget, preferences_rec->random_on); n++; XtSetArg (args[n], XmNleftOffset, 10); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->random_off = temp = XmCreateToggleButtonGadget (group_form, "random_off", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_PLACEMENT_STR); /* Create the show container and widgets */ label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 7, "Show"))); n = 0; XtSetArg (args[n], XmNtitleString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, position_frame); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftOffset, offset); n++; XtSetArg (args[n], XmNmarginWidth, offset); n++; XtSetArg (args[n], XmNmarginHeight, offset); n++; show_frame = _DtCreateTitleBox (form, "show_frame", args, n); XtManageChild (show_frame); XmStringFree (label_string); XtAddCallback(show_frame, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_SHOW_STR); titleWidget = _DtTitleBoxGetTitleArea(show_frame); XtSetArg (args[0], XmNtraversalOn, False); XtSetValues (titleWidget, args, 1); group_form = XmCreateForm (show_frame, "show_form", args, 0); XtManageChild (group_form); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 8, "By Single Folder"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->show_single = temp = XmCreateToggleButtonGadget (group_form, "by_single_directory", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_SHOW_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 9, "By Tree"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->show_multiple = temp = XmCreateToggleButtonGadget (group_form, "by_directory_tree", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_SHOW_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 27, "Folders only"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftOffset, 25); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->tree_files_never = temp = XmCreateToggleButtonGadget (group_form, "tree_files_never", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_SHOW_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 28, "Folders, then Files"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftOffset, 25); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->tree_files_choose = temp = XmCreateToggleButtonGadget (group_form, "tree_files_choose", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_SHOW_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 29, "Folders and Files"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftOffset, 25); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->tree_files_always = temp = XmCreateToggleButtonGadget (group_form, "tree_files_always", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_SHOW_STR); /* Create the view container and widgets */ label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23,31, "Representation"))); n = 0; XtSetArg (args[n], XmNtitleString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, position_frame); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNleftOffset, 10); n++; XtSetArg (args[n], XmNleftWidget, show_frame); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNrightOffset, offset); n++; XtSetArg (args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg (args[n], XmNbottomWidget, show_frame); n++; XtSetArg (args[n], XmNmarginWidth, offset); n++; XtSetArg (args[n], XmNmarginHeight, offset); n++; view_frame = _DtCreateTitleBox(form, "view_frame", args, n); XtManageChild (view_frame); XmStringFree (label_string); XtAddCallback(view_frame, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_VIEW_STR); titleWidget = _DtTitleBoxGetTitleArea(view_frame); XtSetArg (args[0], XmNtraversalOn, False); XtSetValues (titleWidget, args, 1); group_form = XmCreateForm (view_frame, "view_form", args, 0); XtManageChild (group_form); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23,32, "By Name Only"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->by_name = temp = XmCreateToggleButtonGadget (group_form, "by_name", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_VIEW_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23,33, "By Large Icons"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->by_name_and_icon = temp = XmCreateToggleButtonGadget (group_form, "by_name_and_icon", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_VIEW_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23,34, "By Small Icons"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->by_name_and_small_icon = temp = XmCreateToggleButtonGadget (group_form, "by_name_and_small_icon", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_VIEW_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23,6, "By Name, date, size ..."))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->by_attributes = temp = XmCreateToggleButtonGadget (group_form, "by_attributes", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_VIEW_STR); /* Create the file order container and widgets */ label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 10, "Order"))); n = 0; XtSetArg (args[n], XmNtitleString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, view_frame); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftOffset, offset); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg (args[n], XmNrightWidget, show_frame); n++; XtSetArg (args[n], XmNmarginWidth, offset); n++; XtSetArg (args[n], XmNmarginHeight, offset); n++; order_frame = _DtCreateTitleBox (form, "order_frame", args, n); XtManageChild (order_frame); XmStringFree (label_string); XtAddCallback(order_frame, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_ORDER_STR); titleWidget = _DtTitleBoxGetTitleArea(order_frame); XtSetArg (args[0], XmNtraversalOn, False); XtSetValues (titleWidget, args, 1); group_form = XmCreateForm (order_frame, "order_form", args, 0); XtManageChild (group_form); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 12, "Alphabetically"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->order_alphabetical = temp = XmCreateToggleButtonGadget (group_form, "alphabetically", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_ORDER_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 11, "By File Type"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->order_file_type = temp = XmCreateToggleButtonGadget (group_form, "by_file_type", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_ORDER_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 13, "By Date"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->order_date = temp = XmCreateToggleButtonGadget (group_form, "by_date", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_ORDER_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 14, "By Size"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->order_size = temp = XmCreateToggleButtonGadget (group_form, "by_size", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_ORDER_STR); /* Create the file direction container and widgets */ label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 15, "Direction"))); n = 0; XtSetArg (args[n], XmNtitleString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, view_frame); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg (args[n], XmNbottomWidget, order_frame); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg (args[n], XmNleftWidget, view_frame); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNrightOffset, offset); n++; XtSetArg (args[n], XmNmarginWidth, offset); n++; XtSetArg (args[n], XmNmarginHeight, offset); n++; direction_frame = _DtCreateTitleBox (form, "direction_frame", args, n); XtManageChild (direction_frame); XmStringFree (label_string); XtAddCallback(direction_frame, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIRECTION_STR); titleWidget = _DtTitleBoxGetTitleArea(direction_frame); XtSetArg (args[0], XmNtraversalOn, False); XtSetValues (titleWidget, args, 1); group_form = XmCreateForm (direction_frame, "direction_form", args, 0); XtManageChild (group_form); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 16, "Ascending"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->direction_ascending = temp = XmCreateToggleButtonGadget (group_form, "ascending", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIRECTION_STR); label_string = XmStringCreateLocalized (((char *)GETMESSAGE(23, 17, "Descending"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, temp); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++; preferences_rec->direction_descending = temp = XmCreateToggleButtonGadget (group_form, "descending", args, n); XtManageChild (temp); XmStringFree (label_string); XtAddCallback (temp, XmNvalueChangedCallback, ToggleCallback, (XtPointer) preferences_rec); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIRECTION_STR); /* Create a separator between the buttons */ n = 0; XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, order_frame); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; separator = XmCreateSeparatorGadget (form, "separator", args, n); XtManageChild (separator); /* Create the ok, apply, reset, cancel and help buttons */ n = 0; XtSetArg (args[n], XmNlabelString, okXmString); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNleftPosition, 1); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNrightPosition, 19); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, separator); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNbottomOffset, offset); n++; XtSetArg (args[n], XmNmarginWidth, 4); n++; XtSetArg (args[n], XmNmarginHeight, 4); n++; preferences_rec->ok = temp = XmCreatePushButtonGadget (form, "ok", args, n); XtManageChild (temp); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIALOG_STR); n = 0; XtSetArg (args[n], XmNlabelString, applyXmString); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNleftPosition, 21); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNrightPosition, 39); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, separator); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNbottomOffset, offset); n++; XtSetArg (args[n], XmNmarginWidth, 4); n++; XtSetArg (args[n], XmNmarginHeight, 4); n++; preferences_rec->apply = temp = XmCreatePushButtonGadget (form, "apply", args, n); XtManageChild (temp); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIALOG_STR); label_string = XmStringCreateLocalized ((GETMESSAGE(23,30, "Defaults"))); n = 0; XtSetArg (args[n], XmNlabelString, label_string); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNleftPosition, 41); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNrightPosition, 59); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, separator); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNbottomOffset, offset); n++; XtSetArg (args[n], XmNmarginWidth, 4); n++; XtSetArg (args[n], XmNmarginHeight, 4); n++; preferences_rec->reset = temp = XmCreatePushButtonGadget (form, "defaults", args, n); XmStringFree (label_string); XtManageChild (temp); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIALOG_STR); XtAddCallback (temp, XmNactivateCallback, ResetCallback, (XtPointer) preferences_rec); n = 0; XtSetArg (args[n], XmNlabelString, cancelXmString); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNleftPosition, 61); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNrightPosition, 79); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, separator); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNbottomOffset, offset); n++; XtSetArg (args[n], XmNmarginWidth, 4); n++; XtSetArg (args[n], XmNmarginHeight, 4); n++; preferences_rec->close = temp = XmCreatePushButtonGadget (form, "close", args, n); XtManageChild (temp); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIALOG_STR); n = 0; XtSetArg (args[n], XmNlabelString, helpXmString); n++; XtSetArg (args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNleftPosition, 81); n++; XtSetArg (args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg (args[n], XmNrightPosition, 99); n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg (args[n], XmNtopWidget, separator); n++; XtSetArg (args[n], XmNtopOffset, offset); n++; XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNbottomOffset, offset); n++; XtSetArg (args[n], XmNmarginWidth, 4); n++; XtSetArg (args[n], XmNmarginHeight, 4); n++; preferences_rec->help = temp = XmCreatePushButtonGadget (form, "help", args, n); XtManageChild (temp); XtAddCallback(temp, XmNactivateCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIALOG_STR); XtAddCallback(temp, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, HELP_PREFERENCES_DIALOG_STR); XtSetArg (args[0], XmNcancelButton, preferences_rec->close); XtSetArg (args[1], XmNdefaultButton, preferences_rec->ok); XtSetValues (form, args, 2); /* Set the return values for the dialog widget and dialog instance. */ *return_widget = form; *dialog = (XtPointer) preferences_rec; } /************************************************************************ * * InstallChange * ************************************************************************/ static void InstallChange( PreferencesRec *preferences_rec, XtCallbackProc callback, XtPointer client_data ) { PreferencesApply * apply_data; /* Setup the callback data to be sent to the Ok callback. */ /* This contains the encapsulation callback to invoke upon */ /* the data within the dialog being changed. */ apply_data = (PreferencesApply *) XtMalloc (sizeof (PreferencesApply)); apply_data->callback = callback; apply_data->client_data = client_data; apply_data->preferences_rec = (XtPointer) preferences_rec; preferences_rec->apply_data = apply_data; /* Add the callbacks for list item insertion. */ XtAddCallback (preferences_rec->apply, XmNactivateCallback, (XtCallbackProc)ApplyCallback, (XtPointer) apply_data); XtAddCallback (preferences_rec->ok, XmNactivateCallback, (XtCallbackProc)OkCallback, (XtPointer) apply_data); } /************************************************************************ * * InstallClose * ************************************************************************/ static void InstallClose( PreferencesRec *preferences_rec, XtCallbackProc callback, XtPointer client_data ) { Atom delete_window_atom; XtAddCallback (preferences_rec->close, XmNactivateCallback, callback, client_data); delete_window_atom = XmInternAtom (XtDisplay(preferences_rec->shell), "WM_DELETE_WINDOW", True); XmRemoveWMProtocols( preferences_rec->shell, &delete_window_atom, 1 ); XmAddWMProtocolCallback( preferences_rec->shell, delete_window_atom, callback, (XtPointer) client_data ); } /************************************************************************ * * Destroy * ************************************************************************/ static void Destroy( PreferencesRec *preferences_rec ) { XtDestroyWidget (preferences_rec->shell); XtFree ((char *) preferences_rec->apply_data); XtFree ((char *) preferences_rec); } /************************************************************************ * * GetValues * ************************************************************************/ static XtPointer GetValues( PreferencesRec *preferences_rec ) { PreferencesData * preferences_data; Arg args[4]; /* Allocate and initialize the change dir dialog data. */ preferences_data = (PreferencesData *) XtMalloc (sizeof (PreferencesData)); preferences_data->displayed = True; XtSetArg (args[0], XmNx, &preferences_data->x); XtSetArg (args[1], XmNy, &preferences_data->y); XtSetArg (args[2], XmNwidth, &preferences_data->width); XtSetArg (args[3], XmNheight, &preferences_data->height); XtGetValues (preferences_rec->shell, args, 4); GetPreferencesValues (preferences_rec, preferences_data); return ((XtPointer) preferences_data); } /************************************************************************ * * GetDefaultValues * ************************************************************************/ static XtPointer GetDefaultValues( void ) { PreferencesData * preferences_data; /* Allocate and initialize the default change dir dialog data. */ preferences_data = (PreferencesData *) XtMalloc (sizeof (PreferencesData)); preferences_data->displayed = False; preferences_data->x = 0; preferences_data->y = 0; preferences_data->height = 0; preferences_data->width = 0; preferences_data->show_type = SINGLE_DIRECTORY; preferences_data->tree_files = TREE_FILES_NEVER; preferences_data->view_single = BY_NAME_AND_ICON; preferences_data->view_tree = BY_NAME_AND_SMALL_ICON; preferences_data->order = ORDER_BY_ALPHABETICAL; preferences_data->direction = DIRECTION_ASCENDING; preferences_data->positionEnabled = RANDOM_OFF; return ((XtPointer) preferences_data); } /************************************************************************ * * GetResourceValues * ************************************************************************/ static XtPointer GetResourceValues( XrmDatabase data_base, char **name_list ) { PreferencesData * preferences_data; /* Allocate and get the resources for change dir dialog data. */ preferences_data = (PreferencesData *) XtMalloc (sizeof (PreferencesData)); _DtDialogGetResources (data_base, name_list, PreferencesName, (char *)preferences_data, resources, preferencesClass->resource_count); return ((XtPointer) preferences_data); } /************************************************************************ * * SetValues * ************************************************************************/ static void SetValues( PreferencesRec *preferences_rec, PreferencesData *preferences_data ) { Arg true_args[1]; Arg false_args[1]; unsigned char *viewP; XtSetArg (true_args[0], XmNset, True); XtSetArg (false_args[0], XmNset, False); if (preferences_data->show_type == SINGLE_DIRECTORY) { XtSetValues (preferences_rec->show_single, true_args, 1); XtSetValues (preferences_rec->show_multiple, false_args, 1); if( trashFileMgrData &&(PreferencesData *)trashFileMgrData->preferences->data == preferences_data) XtSetSensitive (XtParent (preferences_rec->show_multiple), False); else XtSetSensitive (XtParent (preferences_rec->show_multiple), True); XtSetSensitive (preferences_rec->tree_files_never, False); XtSetSensitive (preferences_rec->tree_files_choose, False); XtSetSensitive (preferences_rec->tree_files_always, False); viewP = &preferences_data->view_single; if (*viewP == BY_ATTRIBUTES) XtSetSensitive (XtParent (preferences_rec->random_on), False); else XtSetSensitive (XtParent (preferences_rec->random_on), True); } else { XtSetValues (preferences_rec->show_single, false_args, 1); XtSetValues (preferences_rec->show_multiple, true_args, 1); XtSetSensitive (XtParent (preferences_rec->random_on), False); XtSetSensitive (preferences_rec->tree_files_never, True); XtSetSensitive (preferences_rec->tree_files_choose, True); XtSetSensitive (preferences_rec->tree_files_always, True); viewP = &preferences_data->view_tree; } if (preferences_data->tree_files == TREE_FILES_NEVER) { XtSetValues (preferences_rec->tree_files_never, true_args, 1); XtSetValues (preferences_rec->tree_files_choose, false_args, 1); XtSetValues (preferences_rec->tree_files_always, false_args, 1); } else if (preferences_data->tree_files == TREE_FILES_CHOOSE) { XtSetValues (preferences_rec->tree_files_never, false_args, 1); XtSetValues (preferences_rec->tree_files_choose, true_args, 1); XtSetValues (preferences_rec->tree_files_always, false_args, 1); } else /* preferences_data->tree_files == TREE_FILES_ALWAYS */ { XtSetValues (preferences_rec->tree_files_never, false_args, 1); XtSetValues (preferences_rec->tree_files_choose, false_args, 1); XtSetValues (preferences_rec->tree_files_always, true_args, 1); } preferences_rec->view_single = preferences_data->view_single; preferences_rec->view_tree = preferences_data->view_tree; if (*viewP == BY_NAME) { XtSetValues (preferences_rec->by_name, true_args, 1); XtSetValues (preferences_rec->by_name_and_icon, false_args, 1); XtSetValues (preferences_rec->by_name_and_small_icon, false_args, 1); XtSetValues (preferences_rec->by_attributes, false_args, 1); } else if (*viewP == BY_NAME_AND_ICON) { XtSetValues (preferences_rec->by_name, false_args, 1); XtSetValues (preferences_rec->by_name_and_icon, true_args, 1); XtSetValues (preferences_rec->by_name_and_small_icon, false_args, 1); XtSetValues (preferences_rec->by_attributes, false_args, 1); } else if (*viewP == BY_NAME_AND_SMALL_ICON) { XtSetValues (preferences_rec->by_name, false_args, 1); XtSetValues (preferences_rec->by_name_and_icon, false_args, 1); XtSetValues (preferences_rec->by_name_and_small_icon, true_args, 1); XtSetValues (preferences_rec->by_attributes, false_args, 1); } else if (*viewP == BY_ATTRIBUTES) { XtSetValues (preferences_rec->by_name, false_args, 1); XtSetValues (preferences_rec->by_name_and_icon, false_args, 1); XtSetValues (preferences_rec->by_name_and_small_icon, false_args, 1); XtSetValues (preferences_rec->by_attributes, true_args, 1); } if (preferences_data->order == ORDER_BY_FILE_TYPE) { XtSetValues (preferences_rec->order_file_type, true_args, 1); XtSetValues (preferences_rec->order_alphabetical, false_args, 1); XtSetValues (preferences_rec->order_date, false_args, 1); XtSetValues (preferences_rec->order_size, false_args, 1); } else if (preferences_data->order == ORDER_BY_ALPHABETICAL) { XtSetValues (preferences_rec->order_file_type, false_args, 1); XtSetValues (preferences_rec->order_alphabetical, true_args, 1); XtSetValues (preferences_rec->order_date, false_args, 1); XtSetValues (preferences_rec->order_size, false_args, 1); } else if (preferences_data->order == ORDER_BY_DATE) { XtSetValues (preferences_rec->order_file_type, false_args, 1); XtSetValues (preferences_rec->order_alphabetical, false_args, 1); XtSetValues (preferences_rec->order_date, true_args, 1); XtSetValues (preferences_rec->order_size, false_args, 1); } else if (preferences_data->order == ORDER_BY_SIZE) { XtSetValues (preferences_rec->order_file_type, false_args, 1); XtSetValues (preferences_rec->order_alphabetical, false_args, 1); XtSetValues (preferences_rec->order_date, false_args, 1); XtSetValues (preferences_rec->order_size, true_args, 1); } if (preferences_data->direction == DIRECTION_ASCENDING) { XtSetValues (preferences_rec->direction_ascending, true_args, 1); XtSetValues (preferences_rec->direction_descending, false_args, 1); } if (preferences_data->direction == DIRECTION_DESCENDING) { XtSetValues (preferences_rec->direction_ascending, false_args, 1); XtSetValues (preferences_rec->direction_descending, true_args, 1); } if (preferences_data->positionEnabled == RANDOM_ON) { XtSetValues (preferences_rec->random_on, true_args, 1); XtSetValues (preferences_rec->random_off, false_args, 1); } if (preferences_data->positionEnabled == RANDOM_OFF) { XtSetValues (preferences_rec->random_off, true_args, 1); XtSetValues (preferences_rec->random_on, false_args, 1); } if( trashFileMgrData &&(PreferencesData *)trashFileMgrData->preferences->data == preferences_data ) { XtSetSensitive( preferences_rec->show_iconic_path, False ); XtSetSensitive( preferences_rec->show_current_dir, False ); XtSetSensitive( preferences_rec->show_status_line, False ); XtSetSensitive( preferences_rec->random_on, False ); } else if( showFilesystem ) { XtSetSensitive( preferences_rec->show_iconic_path, True ); XtSetSensitive( preferences_rec->show_current_dir, True ); XtSetSensitive( preferences_rec->show_status_line, True ); XtSetSensitive( preferences_rec->random_on, True ); if (preferences_data->show_iconic_path) XtSetValues (preferences_rec->show_iconic_path, true_args, 1); else XtSetValues (preferences_rec->show_iconic_path, false_args, 1); if (preferences_data->show_current_dir) XtSetValues (preferences_rec->show_current_dir, true_args, 1); else XtSetValues (preferences_rec->show_current_dir, false_args, 1); if (preferences_data->show_status_line) XtSetValues (preferences_rec->show_status_line, true_args, 1); else XtSetValues (preferences_rec->show_status_line, false_args, 1); } else { XtSetSensitive( preferences_rec->show_iconic_path, False ); XtSetSensitive( preferences_rec->show_current_dir, False ); XtSetSensitive( preferences_rec->show_status_line, False ); XtSetSensitive( preferences_rec->random_on, True ); } } /************************************************************************ * * WriteResourceValues * ************************************************************************/ static void WriteResourceValues( DialogData *values, int fd, char **name_list ) { PreferencesData * preferences_data = (PreferencesData *) values->data; PreferencesRec * preferences_rec; Arg args[2]; /* If the dialog is currently displayed, update the geometry */ /* fields to their current values. */ if (preferences_data->displayed == True) { _DtGenericUpdateWindowPosition(values); preferences_rec = (PreferencesRec *) _DtGetDialogInstance (values); } _DtDialogPutResources (fd, name_list, PreferencesName, values->data, resources, preferencesClass->resource_count); } /************************************************************************ * * FreeValues * ************************************************************************/ static void FreeValues( PreferencesData *preferences_data ) { XtFree ((char *) preferences_data); } /************************************************************************ * * ResetCallback * ************************************************************************/ static void ResetCallback( Widget w, XtPointer client_data, XtPointer call_data ) { PreferencesRec * preferences_rec = (PreferencesRec *) client_data; DialogData * dialog_data; PreferencesData * preferences_data; dialog_data = _DtGetInstanceData ((XtPointer)preferences_rec); preferences_data = (PreferencesData *) dialog_data->data; preferences_data->show_type = SINGLE_DIRECTORY; preferences_data->tree_files = TREE_FILES_NEVER; preferences_data->view_single = BY_NAME_AND_ICON; preferences_data->view_tree = BY_NAME_AND_SMALL_ICON; preferences_data->order = ORDER_BY_ALPHABETICAL; preferences_data->direction = DIRECTION_ASCENDING; preferences_data->positionEnabled = RANDOM_OFF; preferences_data->show_iconic_path = True; preferences_data->show_current_dir = True; preferences_data->show_status_line = True; /* Get the current data for the dialog and redisplay. */ SetValues (preferences_rec, (PreferencesData *) dialog_data->data); } /************************************************************************ * * ToggleCallback * Handle the one of many processing for the toggles. * ************************************************************************/ static void ToggleCallback( Widget w, XtPointer client_data, XtPointer call_data ) { PreferencesRec * preferences_rec; DialogData * dialog_data; PreferencesData * preferences_data; Boolean set; unsigned char *viewP; Arg args[1]; Arg false_args[1]; Arg true_args[1]; int tmp_view; preferences_rec = (PreferencesRec *) client_data; dialog_data = _DtGetInstanceData ((XtPointer)preferences_rec); preferences_data = (PreferencesData *) dialog_data->data; XtSetArg (false_args[0], XmNset, False); XtSetArg (true_args[0], XmNset, True); XtSetArg (args[0], XmNset, &set); XtGetValues (preferences_rec->show_multiple, args, 1); if (set) viewP = &preferences_rec->view_tree; else viewP = &preferences_rec->view_single; if (w == preferences_rec->show_single) { XtSetValues (preferences_rec->show_multiple, false_args, 1); XtSetValues (preferences_rec->show_single, true_args, 1); XtSetSensitive (XtParent (preferences_rec->random_on), True); XtSetSensitive (preferences_rec->tree_files_never, False); XtSetSensitive (preferences_rec->tree_files_choose, False); XtSetSensitive (preferences_rec->tree_files_always, False); if (preferences_rec->view_single == BY_NAME) w = preferences_rec->by_name; else if (preferences_rec->view_single == BY_NAME_AND_ICON) w = preferences_rec->by_name_and_icon; else if (preferences_rec->view_single == BY_NAME_AND_SMALL_ICON) w = preferences_rec->by_name_and_small_icon; else { w = preferences_rec->by_attributes; XtSetSensitive (XtParent (preferences_rec->random_on), False); } showType = SINGLE_DIRECTORY; ToggleCallback (w, client_data, call_data); } else if (w == preferences_rec->show_multiple) { XtSetValues (preferences_rec->show_single, false_args, 1); XtSetValues (preferences_rec->show_multiple, true_args, 1); XtSetSensitive (XtParent (preferences_rec->random_on), False); XtSetSensitive (preferences_rec->tree_files_never, True); XtSetSensitive (preferences_rec->tree_files_choose, True); XtSetSensitive (preferences_rec->tree_files_always, True); if (preferences_rec->view_tree == BY_NAME) w = preferences_rec->by_name; else if (preferences_rec->view_tree == BY_NAME_AND_ICON) w = preferences_rec->by_name_and_icon; else if (preferences_rec->view_tree == BY_NAME_AND_SMALL_ICON) w = preferences_rec->by_name_and_small_icon; else w = preferences_rec->by_attributes; showType = MULTIPLE_DIRECTORY; ToggleCallback (w, client_data, call_data); } else if (w == preferences_rec->tree_files_never) { XtSetValues (preferences_rec->tree_files_choose, false_args, 1); XtSetValues (preferences_rec->tree_files_always, false_args, 1); XtSetValues (preferences_rec->tree_files_never, true_args, 1); } else if (w == preferences_rec->tree_files_choose) { XtSetValues (preferences_rec->tree_files_never, false_args, 1); XtSetValues (preferences_rec->tree_files_always, false_args, 1); XtSetValues (preferences_rec->tree_files_choose, true_args, 1); } else if (w == preferences_rec->tree_files_always) { XtSetValues (preferences_rec->tree_files_never, false_args, 1); XtSetValues (preferences_rec->tree_files_choose, false_args, 1); XtSetValues (preferences_rec->tree_files_always, true_args, 1); } else if (w == preferences_rec->by_name) { if (showType == SINGLE_DIRECTORY) XtSetSensitive (XtParent (preferences_rec->random_on), True); XtSetValues (preferences_rec->by_name_and_icon, false_args, 1); XtSetValues (preferences_rec->by_name_and_small_icon, false_args, 1); XtSetValues (preferences_rec->by_attributes, false_args, 1); XtSetValues (preferences_rec->by_name, true_args, 1); *viewP = BY_NAME; } else if (w == preferences_rec->by_name_and_icon) { if (showType == SINGLE_DIRECTORY) XtSetSensitive (XtParent (preferences_rec->random_on), True); XtSetValues (preferences_rec->by_name, false_args, 1); XtSetValues (preferences_rec->by_name_and_small_icon, false_args, 1); XtSetValues (preferences_rec->by_attributes, false_args, 1); XtSetValues (preferences_rec->by_name_and_icon, true_args, 1); *viewP = BY_NAME_AND_ICON; } else if (w == preferences_rec->by_name_and_small_icon) { if (showType == SINGLE_DIRECTORY) XtSetSensitive (XtParent (preferences_rec->random_on), True); XtSetValues (preferences_rec->by_name, false_args, 1); XtSetValues (preferences_rec->by_attributes, false_args, 1); XtSetValues (preferences_rec->by_name_and_icon, false_args, 1); XtSetValues (preferences_rec->by_name_and_small_icon, true_args, 1); *viewP = BY_NAME_AND_SMALL_ICON; } else if (w == preferences_rec->by_attributes) { XtSetSensitive (XtParent (preferences_rec->random_on), False); XtSetValues (preferences_rec->by_name, false_args, 1); XtSetValues (preferences_rec->by_name_and_icon, false_args, 1); XtSetValues (preferences_rec->by_name_and_small_icon, false_args, 1); XtSetValues (preferences_rec->by_attributes, true_args, 1); *viewP = BY_ATTRIBUTES; } else if (w == preferences_rec->order_file_type) { XtSetValues (preferences_rec->order_alphabetical, false_args, 1); XtSetValues (preferences_rec->order_date, false_args, 1); XtSetValues (preferences_rec->order_size, false_args, 1); XtSetValues (preferences_rec->order_file_type, true_args, 1); } else if (w == preferences_rec->order_alphabetical) { XtSetValues (preferences_rec->order_file_type, false_args, 1); XtSetValues (preferences_rec->order_date, false_args, 1); XtSetValues (preferences_rec->order_size, false_args, 1); XtSetValues (preferences_rec->order_alphabetical, true_args, 1); } else if (w == preferences_rec->order_date) { XtSetValues (preferences_rec->order_file_type, false_args, 1); XtSetValues (preferences_rec->order_alphabetical, false_args, 1); XtSetValues (preferences_rec->order_size, false_args, 1); XtSetValues (preferences_rec->order_date, true_args, 1); } else if (w == preferences_rec->order_size) { XtSetValues (preferences_rec->order_file_type, false_args, 1); XtSetValues (preferences_rec->order_alphabetical, false_args, 1); XtSetValues (preferences_rec->order_date, false_args, 1); XtSetValues (preferences_rec->order_size, true_args, 1); } else if (w == preferences_rec->direction_ascending) { XtSetValues (preferences_rec->direction_descending, false_args, 1); XtSetValues (preferences_rec->direction_ascending, true_args, 1); } else if (w == preferences_rec->direction_descending) { XtSetValues (preferences_rec->direction_ascending, false_args, 1); XtSetValues (preferences_rec->direction_descending, true_args, 1); } else if (w == preferences_rec->random_on) { XtSetValues (preferences_rec->random_off, false_args, 1); XtSetValues (preferences_rec->random_on, true_args, 1); } else if (w == preferences_rec->random_off) { XtSetValues (preferences_rec->random_on, false_args, 1); XtSetValues (preferences_rec->random_off, true_args, 1); } } /************************************************************************ * * OkCallback * This is a callback function called when the (Ok) button * is pressed. It saves the new preverences data itnernally and * then calls the encapsulations callback function. * ************************************************************************/ static void OkCallback( Widget w, PreferencesApply *apply_data, XtPointer call_data ) { PreferencesRec * preferences_rec; DialogData * dialog_data; ApplyCallback( w, apply_data, call_data); preferences_rec = (PreferencesRec *) apply_data->preferences_rec; dialog_data = _DtGetInstanceData ((XtPointer)preferences_rec); XtCallCallbacks(preferences_rec->close, XmNactivateCallback, (XtPointer)dialog_data); } /************************************************************************ * * ApplyCallback * This is a callback function called when the (Apply) button * is pressed. It saves the new preverences data itnernally and * then calls the encapsulations callback funtion. * ************************************************************************/ static void ApplyCallback( Widget w, PreferencesApply *apply_data, XtPointer call_data ) { (*(apply_data->callback)) (w, apply_data->client_data, NULL); } /************************************************************************ * * GetPreferencesValues * Update the current preferences values within the data structure * from the current toggle button values. * ************************************************************************/ static void GetPreferencesValues( PreferencesRec *preferences_rec, PreferencesData *preferences_data ) { Boolean set; Arg args[2]; XtSetArg (args[0], XmNset, &set); XtGetValues (preferences_rec->show_single, args, 1); if (set) preferences_data->show_type = SINGLE_DIRECTORY; XtGetValues (preferences_rec->show_multiple, args, 1); if (set) preferences_data->show_type = MULTIPLE_DIRECTORY; preferences_data->view_single = preferences_rec->view_single; preferences_data->view_tree = preferences_rec->view_tree; XtGetValues (preferences_rec->tree_files_never, args, 1); if (set) preferences_data->tree_files = TREE_FILES_NEVER; XtGetValues (preferences_rec->tree_files_choose, args, 1); if (set) preferences_data->tree_files = TREE_FILES_CHOOSE; XtGetValues (preferences_rec->tree_files_always, args, 1); if (set) preferences_data->tree_files = TREE_FILES_ALWAYS; XtGetValues (preferences_rec->order_file_type, args, 1); if (set) preferences_data->order = ORDER_BY_FILE_TYPE; XtGetValues (preferences_rec->order_alphabetical, args, 1); if (set) preferences_data->order = ORDER_BY_ALPHABETICAL; XtGetValues (preferences_rec->order_date, args, 1); if (set) preferences_data->order = ORDER_BY_DATE; XtGetValues (preferences_rec->order_size, args, 1); if (set) preferences_data->order = ORDER_BY_SIZE; XtGetValues (preferences_rec->direction_ascending, args, 1); if (set) preferences_data->direction = DIRECTION_ASCENDING; XtGetValues (preferences_rec->direction_descending, args, 1); if (set) preferences_data->direction = DIRECTION_DESCENDING; XtGetValues (preferences_rec->random_on, args, 1); if (set) preferences_data->positionEnabled = RANDOM_ON; XtGetValues (preferences_rec->random_off, args, 1); if (set) preferences_data->positionEnabled = RANDOM_OFF; XtGetValues (preferences_rec->show_iconic_path, args, 1); preferences_data->show_iconic_path = set; XtGetValues (preferences_rec->show_current_dir, args, 1); preferences_data->show_current_dir = set; XtGetValues (preferences_rec->show_status_line, args, 1); preferences_data->show_status_line = set; } /************************************************************************ * * ShowTypeToString * Convert the show type to a string and write it out. * ***********************************************************************/ void ShowTypeToString( int fd, unsigned char *value, char *out_buf ) { char * buf = NULL; if (*value == SINGLE_DIRECTORY) buf = Single_directory; else if (*value == MULTIPLE_DIRECTORY) buf = DirectoryTree; _DtStringToString(fd, (char **)&buf, out_buf); } /************************************************************************ * * StringToShowType * Convert string to a show type. * ************************************************************************/ void StringToShowType( XrmValuePtr args, Cardinal *num_args, XrmValue *from_val, XrmValue *to_val ) { char * in_str = (char *)(from_val->addr); static unsigned char i; to_val->size = sizeof (unsigned char); to_val->addr = (XtPointer) &i; if (_DtStringsAreEquivalent (in_str, Single_directory)) i = SINGLE_DIRECTORY; else if (_DtStringsAreEquivalent (in_str, DirectoryTree)) i = MULTIPLE_DIRECTORY; else { to_val->size = 0; to_val->addr = NULL; XtStringConversionWarning ((char *)from_val->addr, SHOW_TYPE); } } /************************************************************************ * * TreeFilesToString * Convert the tree-files option to a string and write it out. * ***********************************************************************/ void TreeFilesToString( int fd, unsigned char *value, char *out_buf ) { char * buf = NULL; if (*value == TREE_FILES_NEVER) buf = Tree_files_never; else if (*value == TREE_FILES_CHOOSE) buf = Tree_files_choose; else if (*value == TREE_FILES_ALWAYS) buf = Tree_files_always; _DtStringToString(fd, (char **)&buf, out_buf); } /************************************************************************ * * StringToTreeFiles * Convert string to a tree-files option. * ************************************************************************/ void StringToTreeFiles( XrmValuePtr args, Cardinal *num_args, XrmValue *from_val, XrmValue *to_val ) { char * in_str = (char *)(from_val->addr); static unsigned char i; to_val->size = sizeof (unsigned char); to_val->addr = (XtPointer) &i; if (_DtStringsAreEquivalent (in_str, Tree_files_never)) i = TREE_FILES_NEVER; else if (_DtStringsAreEquivalent (in_str, Tree_files_choose)) i = TREE_FILES_CHOOSE; else if (_DtStringsAreEquivalent (in_str, Tree_files_always)) i = TREE_FILES_ALWAYS; else { to_val->size = 0; to_val->addr = NULL; XtStringConversionWarning ((char *)from_val->addr, TREE_FILES); } } /************************************************************************ * * ViewToString * Convert the view mode to a string and write it out. * ***********************************************************************/ void ViewToString( int fd, unsigned char *value, char *out_buf ) { char * buf = NULL; if (*value == BY_NAME) buf = By_name; else if (*value == BY_NAME_AND_ICON) buf = By_name_and_icon; else if (*value == BY_NAME_AND_SMALL_ICON) buf = By_name_and_small_icon; else if (*value == BY_ATTRIBUTES) buf = By_attributes; _DtStringToString(fd, (char **)&buf, out_buf); } /************************************************************************ * * StringToView * Convert string to a viewing mode. * ************************************************************************/ void StringToView( XrmValuePtr args, Cardinal *num_args, XrmValue *from_val, XrmValue *to_val ) { char * in_str = (char *)(from_val->addr); static unsigned char i; to_val->size = sizeof (unsigned char); to_val->addr = (XtPointer) &i; if (_DtStringsAreEquivalent (in_str, By_name)) i = BY_NAME; else if (_DtStringsAreEquivalent (in_str, By_name_and_icon)) i = BY_NAME_AND_ICON; else if (_DtStringsAreEquivalent (in_str, By_name_and_small_icon)) i = BY_NAME_AND_SMALL_ICON; else if (_DtStringsAreEquivalent (in_str, By_attributes)) i = BY_ATTRIBUTES; else { to_val->size = 0; to_val->addr = NULL; XtStringConversionWarning ((char *)from_val->addr, VIEW); } } /************************************************************************ * * OrderToString * Convert the viewing order to a string and write it out. * ***********************************************************************/ void OrderToString( int fd, unsigned char *value, char *out_buf ) { char * buf = NULL; if (*value == ORDER_BY_FILE_TYPE) buf = Order_by_file_type; else if (*value == ORDER_BY_ALPHABETICAL) buf = Order_by_alphabetical; else if (*value == ORDER_BY_DATE) buf = Order_by_date; else if (*value == ORDER_BY_SIZE) buf = Order_by_size; _DtStringToString(fd, (char **)&buf, out_buf); } /************************************************************************ * * StringToOrder * Convert string to a view order. * ************************************************************************/ void StringToOrder( XrmValuePtr args, Cardinal *num_args, XrmValue *from_val, XrmValue *to_val ) { char * in_str = (char *)(from_val->addr); static unsigned char i; to_val->size = sizeof (unsigned char); to_val->addr = (XtPointer) &i; if (_DtStringsAreEquivalent (in_str, Order_by_file_type)) i = ORDER_BY_FILE_TYPE; else if (_DtStringsAreEquivalent (in_str, Order_by_alphabetical)) i = ORDER_BY_ALPHABETICAL; else if (_DtStringsAreEquivalent (in_str, Order_by_date)) i = ORDER_BY_DATE; else if (_DtStringsAreEquivalent (in_str, Order_by_size)) i = ORDER_BY_SIZE; else { to_val->size = 0; to_val->addr = NULL; XtStringConversionWarning ((char *)from_val->addr, DIRECTION_RESRC); } } /************************************************************************ * * DirectionToString * Convert the ordering direction to a string and write it out. * ***********************************************************************/ void DirectionToString( int fd, unsigned char *value, char *out_buf ) { char * buf = NULL; if (*value == DIRECTION_ASCENDING) buf = Direction_ascending; else if (*value == DIRECTION_DESCENDING) buf = Direction_descending; _DtStringToString(fd, (char **)&buf, out_buf); } /************************************************************************ * * RandomToString * Convert the random placement to a string and write it out. * ***********************************************************************/ void RandomToString( int fd, unsigned char *value, char *out_buf ) { char * buf = NULL; if (*value == RANDOM_ON) buf = Random_on; else if (*value == RANDOM_OFF) buf = Random_off; _DtStringToString(fd, (char **)&buf, out_buf); } /************************************************************************ * * StringToDirection * Convert string to a view ordering direction. * ************************************************************************/ void StringToDirection( XrmValuePtr args, Cardinal *num_args, XrmValue *from_val, XrmValue *to_val ) { char * in_str = (char *)(from_val->addr); static unsigned char i; to_val->size = sizeof (unsigned char); to_val->addr = (XtPointer) &i; if (_DtStringsAreEquivalent (in_str, Direction_ascending)) i = DIRECTION_ASCENDING; else if (_DtStringsAreEquivalent (in_str, Direction_descending)) i = DIRECTION_DESCENDING; else { to_val->size = 0; to_val->addr = NULL; XtStringConversionWarning ((char *)from_val->addr, DIRECTION_RESRC); } } /************************************************************************ * * StringToRandom * Convert string to either random placement on or off * ************************************************************************/ void StringToRandom( XrmValuePtr args, Cardinal *num_args, XrmValue *from_val, XrmValue *to_val ) { char * in_str = (char *)(from_val->addr); static unsigned char i; to_val->size = sizeof (unsigned char); to_val->addr = (XtPointer) &i; if (_DtStringsAreEquivalent (in_str, Random_on)) i = RANDOM_ON; else if (_DtStringsAreEquivalent (in_str, Random_off)) i = RANDOM_OFF; else { to_val->size = 0; to_val->addr = NULL; XtStringConversionWarning ((char *)from_val->addr, RANDOM); } }