summaryrefslogtreecommitdiff
path: root/app/xman/man.h
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu@cvs.openbsd.org>2006-11-25 20:52:24 +0000
committerMatthieu Herrb <matthieu@cvs.openbsd.org>2006-11-25 20:52:24 +0000
commitcf87db164aa2401ec33a041d3969d6ccb1ef49d9 (patch)
tree9b65838d7e1aee39d37defb896a5fd6a3922d5ba /app/xman/man.h
parent2387c426e6dfc2b0a2d0aa5585dbeb580f5ea91e (diff)
Importing from X.Org 7.2RC2
Diffstat (limited to 'app/xman/man.h')
-rw-r--r--app/xman/man.h281
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);