root/lib/widget/input.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. input_get_text
  2. input_get_ctext
  3. input_is_empty

   1 
   2 /** \file input.h
   3  *  \brief Header: WInput widget
   4  */
   5 
   6 #ifndef MC__WIDGET_INPUT_H
   7 #define MC__WIDGET_INPUT_H
   8 
   9 #include <limits.h>             /* MB_LEN_MAX */
  10 
  11 /*** typedefs(not structures) and defined constants **********************************************/
  12 
  13 #define INPUT(x) ((WInput *)(x))
  14 
  15 /* For history load-save functions */
  16 #define INPUT_LAST_TEXT ((char *) 2)
  17 
  18 /*** enums ***************************************************************************************/
  19 
  20 typedef enum
  21 {
  22     WINPUTC_MAIN,               /* color used */
  23     WINPUTC_MARK,               /* color for marked text */
  24     WINPUTC_UNCHANGED,          /* color for inactive text (Is first keystroke) */
  25     WINPUTC_HISTORY,            /* color for history list */
  26     WINPUTC_COUNT_COLORS        /* count of used colors */
  27 } input_colors_enum_t;
  28 
  29 /* completion flags */
  30 typedef enum
  31 {
  32     INPUT_COMPLETE_NONE = 0,
  33     INPUT_COMPLETE_FILENAMES = 1 << 0,
  34     INPUT_COMPLETE_HOSTNAMES = 1 << 1,
  35     INPUT_COMPLETE_COMMANDS = 1 << 2,
  36     INPUT_COMPLETE_VARIABLES = 1 << 3,
  37     INPUT_COMPLETE_USERNAMES = 1 << 4,
  38     INPUT_COMPLETE_CD = 1 << 5,
  39     INPUT_COMPLETE_SHELL_ESC = 1 << 6,
  40 } input_complete_t;
  41 
  42 /*** structures declarations (and typedefs of structures)*****************************************/
  43 
  44 typedef int input_colors_t[WINPUTC_COUNT_COLORS];
  45 
  46 typedef struct
  47 {
  48     Widget widget;
  49 
  50     GString *buffer;
  51     const int *color;
  52     int point;                  /* cursor position in the input line in characters */
  53     int mark;                   /* the mark position in characters; negative value means no marked text */
  54     int term_first_shown;       /* column of the first shown character */
  55     gboolean first;             /* is first keystroke? */
  56     int disable_update;         /* do we want to skip updates? */
  57     gboolean is_password;       /* is this a password input line? */
  58     gboolean init_from_history; /* init text will be get from history */
  59     gboolean need_push;         /* need to push the current Input on hist? */
  60     gboolean strip_password;    /* need to strip password before placing string to history */
  61     char **completions;         /* possible completions array */
  62     input_complete_t completion_flags;
  63     char charbuf[MB_LEN_MAX];   /* buffer for multibytes characters */
  64     size_t charpoint;           /* point to end of mulibyte sequence in charbuf */
  65     WLabel *label;              /* label associated with this input line */
  66     struct input_history_t
  67     {
  68         char *name;             /* name of history for loading and saving */
  69         GList *list;            /* the history */
  70         GList *current;         /* current history item */
  71         gboolean changed;       /* the history has changed */
  72     } history;
  73 } WInput;
  74 
  75 /*** global variables defined in .c file *********************************************************/
  76 
  77 extern int quote;
  78 
  79 extern const global_keymap_t *input_map;
  80 
  81 /* Color styles for normal and command line input widgets */
  82 extern input_colors_t input_colors;
  83 
  84 /*** declarations of public functions ************************************************************/
  85 
  86 WInput *input_new (int y, int x, const int *colors,
  87                    int len, const char *text, const char *histname,
  88                    input_complete_t completion_flags);
  89 /* callback is public; needed for command line */
  90 cb_ret_t input_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data);
  91 void input_set_default_colors (void);
  92 cb_ret_t input_handle_char (WInput * in, int key);
  93 void input_assign_text (WInput * in, const char *text);
  94 void input_insert (WInput * in, const char *text, gboolean insert_extra_space);
  95 void input_set_point (WInput * in, int pos);
  96 void input_update (WInput * in, gboolean clear_first);
  97 void input_enable_update (WInput * in);
  98 void input_disable_update (WInput * in);
  99 void input_clean (WInput * in);
 100 
 101 /* input_complete.c */
 102 void input_complete (WInput * in);
 103 void input_complete_free (WInput * in);
 104 
 105 /* --------------------------------------------------------------------------------------------- */
 106 /*** inline functions ****************************************************************************/
 107 /* --------------------------------------------------------------------------------------------- */
 108 
 109 /**
 110  * Get text of input line.
 111  *
 112  * @param in input line
 113  *
 114  * @return newly allocated string that contains a copy of @in's text.
 115  */
 116 static inline char *
 117 input_get_text (const WInput * in)
     /* [previous][next][first][last][top][bottom][index][help]  */
 118 {
 119     return g_strndup (in->buffer->str, in->buffer->len);
 120 }
 121 
 122 /* --------------------------------------------------------------------------------------------- */
 123 
 124 /**
 125  * Get pointer to input line buffer.
 126  *
 127  * @param in input line
 128  *
 129  * @return pointer to @in->buffer->str.
 130  */
 131 static inline const char *
 132 input_get_ctext (const WInput * in)
     /* [previous][next][first][last][top][bottom][index][help]  */
 133 {
 134     return in->buffer->str;
 135 }
 136 
 137 /* --------------------------------------------------------------------------------------------- */
 138 
 139 /**
 140  * Is input line empty or not.
 141  *
 142  * @param in input line
 143  *
 144  * @return TRUE if buffer of @in is empty, FALSE othewise.
 145  */
 146 static inline gboolean
 147 input_is_empty (const WInput * in)
     /* [previous][next][first][last][top][bottom][index][help]  */
 148 {
 149     return (in->buffer->len == 0);
 150 }
 151 
 152 /* --------------------------------------------------------------------------------------------- */
 153 
 154 
 155 #endif /* MC__WIDGET_INPUT_H */

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