diff options
author | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2006-11-25 20:52:24 +0000 |
---|---|---|
committer | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2006-11-25 20:52:24 +0000 |
commit | cf87db164aa2401ec33a041d3969d6ccb1ef49d9 (patch) | |
tree | 9b65838d7e1aee39d37defb896a5fd6a3922d5ba /app/xman/man.h | |
parent | 2387c426e6dfc2b0a2d0aa5585dbeb580f5ea91e (diff) |
Importing from X.Org 7.2RC2
Diffstat (limited to 'app/xman/man.h')
-rw-r--r-- | app/xman/man.h | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/app/xman/man.h b/app/xman/man.h new file mode 100644 index 000000000..d1c7f1eb0 --- /dev/null +++ b/app/xman/man.h @@ -0,0 +1,281 @@ +/* $XConsortium: man.h,v 1.31 94/12/16 21:36:53 gildea Exp $ */ +/* $XdotOrg: app/xman/man.h,v 1.8 2004/09/02 08:40:33 kem Exp $ */ +/* + +Copyright (c) 1987, 1988 X Consortium + +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 THE X CONSORTIUM 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. + +Except as contained in this notice, the name of the X Consortium shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from the X Consortium. + +*/ +/* $XFree86: xc/programs/xman/man.h,v 1.4 2001/07/25 15:05:27 dawes Exp $ */ + + +/* X toolkit header files */ + +#include <X11/Intrinsic.h> +#include <X11/StringDefs.h> +#include <X11/Shell.h> + +#include <X11/Xaw/Cardinals.h> + +/* Std system and C header files */ + +#include <stdio.h> +#include <limits.h> + +#include <X11/Xfuncs.h> +#include <X11/Xos.h> + +/* X include files */ + +#include <X11/Xatom.h> + +/* Widget header files. */ + +#include <X11/Xaw/AsciiText.h> +#include <X11/Xaw/SmeBSB.h> +#include <X11/Xaw/Box.h> +#include <X11/Xaw/Command.h> +#include <X11/Xaw/Dialog.h> +#include <X11/Xaw/Label.h> +#include <X11/Xaw/List.h> +#include <X11/Xaw/MenuButton.h> +#include <X11/Xaw/SimpleMenu.h> +#include <X11/Xaw/Paned.h> +#include <X11/Xaw/Viewport.h> + +/* program specific header files. */ + +#include "ScrollByL.h" + +#include "version.h" +#include "defs.h" + +/* Turn a NULL pointer string into an empty string */ +#define NULLSTR(x) (((x)!=NULL)?(x):("")) + +#define Error(x) { printf x ; exit(EXIT_FAILURE); } +#define Assertion(expr, msg) { if (!(expr)) { Error msg } } +#ifdef DEBUG +# define Log(x) { if(True) printf x; } +#else +# define Log(x) { if(False) printf x; } +#endif /* DEBUG */ + +/* + * Assigning values here allows the user of Bitwise Or. + */ + +typedef struct _XmanFonts { + XFontStruct * directory; /* The font for the directory. */ +} XmanFonts; + +typedef struct _XmanCursors { + Cursor top, /* The top Cursor, default for xman. */ + help, /* The top cursor for the help menu. */ + manpage, /* The cursor for the Manpage. */ + search_entry; /* The cursor for the text widget in the + search box.*/ + Pixel fg_color; /* foreground color of cursors. */ + Pixel bg_color; /* background color of cursors. */ +} XmanCursors; + +typedef struct _ManPageWidgets { + Widget manpage, /* The manual page window (scrolled) */ + directory, /* The widget in which all directories will + appear. */ + *box; /* The boxes containing the sections. */ +} ManPageWidgets; + +typedef struct _MenuStruct { + caddr_t data; + int number; + XrmQuark quark; +} MenuStruct; + +/* + * The manual sections and entries + */ + +typedef struct tManual { + char * blabel; /* The button label. */ + char ** entries; /* The individual man page file names. */ + char ** entries_less_paths; /* Entry names only */ + int nentries; /* how many (TOTAL)*/ + int nalloc; /* how much space allocated */ + int flags; /* suffix, fold */ +} Manual; + +/* psuedo Globals that are specific to each manpage created. */ + +typedef struct _ManpageGlobals{ + int current_directory; /* The directory currently being shown + on this manpage. */ + Boolean dir_shown, /* True if the directory is then current + visable screen */ + both_shown; /* If true then both the manpage and + the directory are to be shown.*/ + Widget label, /* The label widget at the top of the page. */ + standby, /* The please standby widget. */ + save, /* The "would you like to save?" widget. */ + search_widget, /* The search widget popup. */ + help_button, /* The help button. */ + option_menu, /* The option menu. */ + text_widget; /* text widget containing search string. */ + + /* Widgets (Objects really) for the command menu entries. */ + + Widget dir_entry, manpage_entry, help_entry, + search_entry, both_screens_entry, remove_entry, + open_entry, print_entry, version_entry, quit_entry; + +#ifdef INCLUDE_XPRINT_SUPPORT + /* Print objects and data */ + Widget printdialog_shell; /* Shell for the print dialog */ + Widget printdialog; /* Print dialog */ +#endif /*INCLUDE_XPRINT_SUPPORT */ + /* Misc. */ + + char manpage_title[80]; /* The label to use for the current manpage. */ + + char save_file[80]; /* the name of the file to save fomatted + page into. */ + char tempfile[80]; /* the name of the file to copy the formatted + page from. */ + Boolean compress; /* Compress file on save? */ + Boolean gzip; /* Gzip file on save? */ + Boolean deletetempfile; /* Need to delete tempfile when done? */ + char ** section_name; /* The name of each of the sections */ + + ManPageWidgets manpagewidgets; /* The manpage widgets. */ + + /* Things to remember when cleaning up when killing manpage. */ + + Widget This_Manpage; /* a pointer to the root of + this manpage. */ + + FILE *curr_file; /* Current file shown in manpage widget */ +} ManpageGlobals; + + +/* Resource manager sets these. */ + +typedef struct _Xman_Resources { + XmanFonts fonts; /* The fonts used for the man pages. */ + XmanCursors cursors; /* The cursors for xman. */ + Boolean show_help_syntax; /* True if syntax message should be dumped to + stdout. */ + Boolean both_shown_initial; /* The initial state of the manual pages + show two screens or only one. */ + Boolean top_box_active; /* Put up the Top Box. */ + Boolean clear_search_string; /* clear the search string each time it + is popped down? */ + int directory_height; /* The default height of directory in + both_shown mode. */ + char * help_file; /* The name of the help file. */ + char * title; /* The title for topBox */ + Boolean iconic; /* Should topBox come up in an iconic state */ +} Xman_Resources; + +/************************************************************ + * + * Function Defintions + * + ************************************************************/ + +/* + * This is easier than trying to find all calls to StrAlloc(). + */ + +#define StrAlloc(ptr) XtNewString(ptr) + +/* Standard library function definitions. */ +#include <stdlib.h> + +/* buttons.c */ + +ManpageGlobals * InitPsuedoGlobals(void); +Widget CreateManpage(FILE * file); +void CreateManpageWidget(ManpageGlobals * man_globals, char * name, Boolean full_instance); +void FormUpWidgets(Widget parent, char ** full_size, char ** half_size); +void MakeDirectoryBox(ManpageGlobals *man_globals, Widget parent, Widget *dir_disp, int section); +void MakeSaveWidgets(ManpageGlobals *man_globals, Widget parent); +void MakeTopBox(void); + +/* handler.c */ + +void DirPopupCallback(Widget w, XtPointer pointer, XtPointer junk); +void DirectoryHandler(Widget w, XtPointer global_pointer, XtPointer ret_val); +void OptionCallback(Widget w, XtPointer pointer, XtPointer junk); +void Popup(Widget w, XtGrabKind grab_kind); + +/* Action Routines. */ + +void CreateNewManpage(Widget w, XEvent * event, String * params, Cardinal * num_params); +void GotoPage(Widget w, XEvent * event, String * params, Cardinal * num_params); +void PopupHelp(Widget w, XEvent * event, String * params, Cardinal * num_params); +void PopupSearch(Widget w, XEvent * event, String * params, Cardinal * num_params); +void Quit(Widget w, XEvent * event, String * params, Cardinal * num_params); +void RemoveThisManpage(Widget w, XEvent * event, String * params, Cardinal * num_params); +void SaveFormattedPage(Widget w, XEvent * event, String * params, Cardinal * num_params); +void Search(Widget w, XEvent * event, String * params, Cardinal * num_params); +#ifdef INCLUDE_XPRINT_SUPPORT +void PrintThisManpage(Widget w, XEvent * event, String * params, Cardinal * num_params); +#endif /* INCLUDE_XPRINT_SUPPORT */ +void ShowVersion(Widget w, XEvent * event, String * params, Cardinal * num_params); + +/* help.c */ + +Boolean MakeHelpWidget(void); +Boolean OpenHelpfile(ManpageGlobals * man_globals); + +/* man.c */ +Bool ReadManConfig(char manpath[]); +int Man(void); + +/* misc.c */ +FILE * FindManualFile(ManpageGlobals * man_globals, int section_num, int entry_num); +ManpageGlobals * GetGlobals(Widget w); +void AddCursor(Widget w, Cursor cursor); +void ChangeLabel(Widget w, char * str); +void OpenFile(ManpageGlobals * man_globals, FILE * file); +void PopupWarning(ManpageGlobals * man_globals, char * string); +void PositionCenter(Widget widget, int x, int y, int above, int left, int v_space, int h_space); +void PrintError(char * string); +void RemoveGlobals(Widget w); +void SaveGlobals(Widget w, ManpageGlobals * globals); +void ParseEntry(char *entry, char *path, char *sect, char *page); +FILE * Format(ManpageGlobals * man_globals, char * entry); + +/* search */ +FILE * DoSearch(ManpageGlobals * man_globals, int type); +void MakeSearchWidget(ManpageGlobals * man_globals, Widget parent); + +/* tkfunctions.c */ + +int Width(Widget); +int Height(Widget); +int BorderWidth(Widget); +char * Name(Widget); |