root/lib/widget/dialog.h

/* [previous][next][first][last][top][bottom][index][help]  */

INCLUDED FROM


   1 /*
   2    Dialog box features module for the Midnight Commander
   3  */
   4 
   5 /** \file dialog.h
   6  *  \brief Header: dialog box features module
   7  */
   8 
   9 #ifndef MC__DIALOG_H
  10 #define MC__DIALOG_H
  11 
  12 #include <sys/types.h>          /* size_t */
  13 
  14 #include "lib/global.h"
  15 #include "lib/hook.h"           /* hook_t */
  16 #include "lib/keybind.h"        /* global_keymap_t */
  17 
  18 /*** typedefs(not structures) and defined constants **********************************************/
  19 
  20 #define DIALOG(x) ((WDialog *)(x))
  21 #define CONST_DIALOG(x) ((const WDialog *)(x))
  22 
  23 /* Common return values */
  24 /* ATTENTION: avoid overlapping with FileProgressStatus values */
  25 #define B_EXIT          0
  26 #define B_CANCEL        1
  27 #define B_ENTER         2
  28 #define B_HELP          3
  29 #define B_USER          100
  30 
  31 /*** enums ***************************************************************************************/
  32 
  33 /* Dialog color constants */
  34 typedef enum
  35 {
  36     DLG_COLOR_NORMAL,
  37     DLG_COLOR_FOCUS,
  38     DLG_COLOR_HOT_NORMAL,
  39     DLG_COLOR_HOT_FOCUS,
  40     DLG_COLOR_TITLE,
  41     DLG_COLOR_COUNT
  42 } dlg_colors_enum_t;
  43 
  44 /*** typedefs(not structures) ********************************************************************/
  45 
  46 typedef struct WDialog WDialog;
  47 
  48 /* get string representation of shortcut assigned  with command */
  49 /* as menu is a widget of dialog, ask dialog about shortcut string */
  50 typedef char *(*dlg_shortcut_str) (long command);
  51 
  52 /* get dialog name to show in dialog list */
  53 typedef char *(*dlg_title_str) (const WDialog * h, size_t len);
  54 
  55 typedef int dlg_colors_t[DLG_COLOR_COUNT];
  56 
  57 /*** structures declarations (and typedefs of structures)*****************************************/
  58 
  59 struct WDialog
  60 {
  61     WGroup group;               /* base class */
  62 
  63     /* Set by the user */
  64     gboolean compact;           /* Suppress spaces around the frame */
  65     const char *help_ctx;       /* Name of the help entry */
  66     const int *colors;          /* Color set. Unused in viewer and editor */
  67 
  68     /* Set and received by the user */
  69     int ret_value;              /* Result of dlg_run() */
  70 
  71     /* Internal variables */
  72     void *data;                 /* Data can be passed to dialog */
  73     char *event_group;          /* Name of event group for this dialog */
  74     Widget *bg;                 /* WFrame or WBackground */
  75 
  76     dlg_shortcut_str get_shortcut;      /* Shortcut string */
  77     dlg_title_str get_title;    /* useless for modal dialogs */
  78 };
  79 
  80 /*** global variables defined in .c file *********************************************************/
  81 
  82 /* Color styles for normal and error dialogs */
  83 extern dlg_colors_t dialog_colors;
  84 extern dlg_colors_t alarm_colors;
  85 extern dlg_colors_t listbox_colors;
  86 
  87 extern GList *top_dlg;
  88 
  89 /* A hook list for idle events */
  90 extern hook_t *idle_hook;
  91 
  92 extern gboolean fast_refresh;
  93 extern gboolean mouse_close_dialog;
  94 
  95 extern const global_keymap_t *dialog_map;
  96 
  97 /*** declarations of public functions ************************************************************/
  98 
  99 /* Creates a dialog head  */
 100 WDialog *dlg_create (gboolean modal, int y1, int x1, int lines, int cols,
 101                      widget_pos_flags_t pos_flags, gboolean compact,
 102                      const int *colors, widget_cb_fn callback, widget_mouse_cb_fn mouse_callback,
 103                      const char *help_ctx, const char *title);
 104 
 105 void dlg_set_default_colors (void);
 106 
 107 void dlg_init (WDialog * h);
 108 int dlg_run (WDialog * d);
 109 
 110 void dlg_run_done (WDialog * h);
 111 void dlg_save_history (WDialog * h);
 112 void dlg_process_event (WDialog * h, int key, Gpm_Event * event);
 113 
 114 char *dlg_get_title (const WDialog * h, size_t len);
 115 
 116 /* Default callbacks for dialogs */
 117 cb_ret_t dlg_default_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data);
 118 void dlg_default_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event);
 119 
 120 void dlg_stop (WDialog * h);
 121 
 122 /* Redraw all dialogs */
 123 void do_refresh (void);
 124 
 125 /* --------------------------------------------------------------------------------------------- */
 126 /*** inline functions ****************************************************************************/
 127 /* --------------------------------------------------------------------------------------------- */
 128 
 129 #endif /* MC__DIALOG_H */

/* [previous][next][first][last][top][bottom][index][help]  */