diff options
Diffstat (limited to 'Build/source/texk/xdvik/gui/xm_filesel.c')
-rw-r--r-- | Build/source/texk/xdvik/gui/xm_filesel.c | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/Build/source/texk/xdvik/gui/xm_filesel.c b/Build/source/texk/xdvik/gui/xm_filesel.c deleted file mode 100644 index b7a2d6fe2f4..00000000000 --- a/Build/source/texk/xdvik/gui/xm_filesel.c +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright (c) 2001-2004 Marcin Dalecki and others - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * PAUL VOJTA OR ANY OTHER AUTHOR OF THIS SOFTWARE BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/* - * Implementation of the File selection dialogue for the Motif GUI. - */ - -#include "xdvi-config.h" -#include "xdvi.h" -#include "sfSelFile.h" - -#include "dvi.h" -#include "string-utils.h" -#include "util.h" -#include "events.h" -#include "message-window.h" -#include "dvi-init.h" /* for dviErrFlagT */ -#include "x_util.h" - -#if defined(MOTIF) /* entire file */ - -#include <Xm/FileSB.h> -#include <Xm/Form.h> -#include <Xm/ToggleBG.h> - -#if HAVE_XKB_BELL_EXT -# include <X11/XKBlib.h> -# define XdviBell(display, window, percent) \ - XkbBell(display, window, percent, (Atom) None) -#else -# define XdviBell(display, window, percent) XBell(display, percent) -#endif - -/* static Widget dialog = NULL; */ -/* static char *browse_fname = NULL; */ - -/* - * Process callback from Dialog cancel actions. - */ -static void -cancel_callback(Widget w, - XtPointer client_data, - XtPointer call_data) -{ - struct filesel_callback *callback = (struct filesel_callback *)client_data; - - UNUSED(w); - UNUSED(call_data); -#if 0 - /* DON'T reset browse_fname, so that user gets the current - value as default next time when he cancels now */ - if (callback->browse_fname != NULL) - { - XtFree(callback->browse_fname); - callback->browse_fname = NULL; - } -#endif - - XtUnmanageChild(callback->shell); - if (callback->exit_on_cancel) { - exit(0); - } -} - -/* - * Process callback from Dialog actions. - */ - -static void -accept_callback(Widget w, - XtPointer client_data, - XtPointer call_data) -{ - XmFileSelectionBoxCallbackStruct *fcb; - struct filesel_callback *callback; - - UNUSED(w); - - ASSERT(client_data != NULL, "struct filesel_callback pointer expected in client data"); - callback = (struct filesel_callback *)client_data; - - /* get the filename from the file selection box */ - fcb = (XmFileSelectionBoxCallbackStruct *)call_data; - if (callback->browse_fname != NULL) { - XtFree(callback->browse_fname); - callback->browse_fname = NULL; - } - XmStringGetLtoR(fcb->value, G_charset, &callback->browse_fname); - - if (0 && callback->must_exist) { - FILE *tmp_fp = XFOPEN(callback->browse_fname, "r"); - dviErrFlagT errflag = NO_ERROR; - if (tmp_fp == NULL) { - popup_message(XtParent(callback->shell), - MSG_ERR, NULL, "Could not open %s: %s.\n", - callback->browse_fname, strerror(errno)); - /* leave file selection box open */ - return; - } - else if (!process_preamble(tmp_fp, &errflag) - || !find_postamble(tmp_fp, &errflag) - || !read_postamble(tmp_fp, &errflag, True -#if DELAYED_MKTEXPK - , False -#endif - )) { - popup_message(XtParent(callback->shell), - MSG_ERR, NULL, "Error opening %s:\n%s.", - callback->browse_fname, get_dvi_error(errflag)); - fclose(tmp_fp); - /* leave file selection box open */ - return; - } - else { /* file is OK */ - fclose(tmp_fp); - } - } - - /* success; close dialog, and call our callback */ - XtUnmanageChild(callback->shell); - callback->func_ptr(callback->browse_fname, callback->data); -} - -static void -cb_open_new_window(Widget w, XtPointer client_data, XtPointer call_data) -{ - UNUSED(client_data); - UNUSED(call_data); - - if (XmToggleButtonGadgetGetState(w)) - resource.filesel_open_new_window = True; - else - resource.filesel_open_new_window = False; - store_preference(NULL, "fileselOpenNewWindow", "%d", resource.filesel_open_new_window); -} - -void raise_file_selector(void) -{ - /* dummy */ - return; -} - -void -XsraSelFilePopup(struct filesel_callback *callback) -{ - if (XtIsManaged(callback->shell)) { - XdviBell(DISP, XtWindow(callback->shell), 10); - XRaiseWindow(DISP, XtWindow(callback->shell)); - return; - } - else { -#define ARG_CNT 4 - XmString filemask = NULL; - XmString directory = NULL; - Arg args[ARG_CNT]; - int i = 0; - char *path, *ptr; - - /* only show files matching our mask */ - filemask = XmStringCreateLtoR((char *)callback->filemask, G_charset); - XtSetArg(args[i], XmNpattern, filemask); i++; - - /* set directory to last directory used */ - if (callback->browse_fname == NULL) { - ASSERT(callback->init_path != NULL, "callback->init_path mustn't be NULL!"); - callback->browse_fname = xt_strdup(callback->init_path); - } - path = xstrdup(callback->browse_fname); - ptr = strrchr(path, '/'); - if (ptr != NULL) - *ptr = '\0'; - directory = XmStringCreateLtoR(path, G_charset); - XtSetArg(args[i], XmNdirectory, directory); i++; - free(path); - - - ASSERT(i < ARG_CNT, "args list too short"); - XtSetValues(callback->shell, args, (Cardinal)i); - - free(filemask); - free(directory); - - XtManageChild(callback->shell); -#undef ARG_CNT - } -} - -Widget -XsraSelFile(Widget parent, struct filesel_callback *callback) -{ - Widget dialog = XmCreateFileSelectionDialog(parent, "file", NULL, 0); - - XtVaSetValues(XtParent(dialog), XmNtitle, callback->title, NULL); - - XtAddCallback(dialog, XmNokCallback, accept_callback, (XtPointer)callback); - XtAddCallback(dialog, XmNcancelCallback, cancel_callback, (XtPointer)callback); - - /* When opening a DVI file, offer to open in new window */ - if (callback->must_exist) { - Widget form, button; - XmString test; - form = XtVaCreateManagedWidget("new_window_form", xmFormWidgetClass, dialog, NULL); - test = XmStringCreateLocalized("Open file in new window"); - button = XtVaCreateManagedWidget(Xdvi_NEW_WINDOW_RADIO_NAME, xmToggleButtonGadgetClass, form, - XmNlabelString, test, - XmNindicatorType, XmN_OF_MANY, - XmNset, resource.filesel_open_new_window, - NULL); - XmStringFree(test); - XtAddCallback(button, XmNvalueChangedCallback, cb_open_new_window, (XtPointer)NULL); - } - - - /* We have no help in this window, so hide help button */ - XtUnmanageChild(XmFileSelectionBoxGetChild(dialog, (unsigned char)XmDIALOG_HELP_BUTTON)); - - return dialog; -} - -#else -/* silence `empty compilation unit' warnings */ -static void bar(void); static void foo(void) { bar(); } static void bar(void) { foo(); } -#endif /* defined(MOTIF) */ |