root/lib/widget/listbox.h

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

INCLUDED FROM


   1 
   2 /** \file listbox.h
   3  *  \brief Header: WListbox widget
   4  */
   5 
   6 #ifndef MC__WIDGET_LISTBOX_H
   7 #define MC__WIDGET_LISTBOX_H
   8 
   9 #include "lib/keybind.h"        /* global_keymap_t */
  10 
  11 /*** typedefs(not structures) and defined constants **********************************************/
  12 
  13 #define LISTBOX(x) ((WListbox *)(x))
  14 #define LENTRY(x) ((WLEntry *)(x))
  15 
  16 /*** enums ***************************************************************************************/
  17 
  18 /* callback should return one of the following values */
  19 typedef enum
  20 {
  21     LISTBOX_CONT,               /* continue */
  22     LISTBOX_DONE                /* finish dialog */
  23 } lcback_ret_t;
  24 
  25 typedef enum
  26 {
  27     LISTBOX_APPEND_AT_END = 0,  /* append at the end */
  28     LISTBOX_APPEND_BEFORE,      /* insert before current */
  29     LISTBOX_APPEND_AFTER,       /* insert after current */
  30     LISTBOX_APPEND_SORTED       /* insert alphabetically */
  31 } listbox_append_t;
  32 
  33 /*** structures declarations (and typedefs of structures)*****************************************/
  34 
  35 struct WListbox;
  36 typedef lcback_ret_t (*lcback_fn) (struct WListbox * l);
  37 
  38 typedef struct WLEntry
  39 {
  40     char *text;                 /* Text to display */
  41     int hotkey;
  42     void *data;                 /* Client information */
  43     gboolean free_data;         /* Whether to free the data on entry's removal */
  44 } WLEntry;
  45 
  46 typedef struct WListbox
  47 {
  48     Widget widget;
  49     GQueue *list;               /* Pointer to the list of WLEntry */
  50     int pos;                    /* The current element displayed */
  51     int top;                    /* The first element displayed */
  52     gboolean allow_duplicates;  /* Do we allow duplicates on the list? */
  53     gboolean scrollbar;         /* Draw a scrollbar? */
  54     gboolean deletable;         /* Can list entries be deleted? */
  55     lcback_fn callback;         /* The callback function */
  56     int cursor_x, cursor_y;     /* Cache the values */
  57 } WListbox;
  58 
  59 /*** global variables defined in .c file *********************************************************/
  60 
  61 extern const global_keymap_t *listbox_map;
  62 
  63 /*** declarations of public functions ************************************************************/
  64 
  65 WListbox *listbox_new (int y, int x, int height, int width, gboolean deletable, lcback_fn callback);
  66 int listbox_search_text (WListbox * l, const char *text);
  67 int listbox_search_data (WListbox * l, const void *data);
  68 void listbox_select_first (WListbox * l);
  69 void listbox_select_last (WListbox * l);
  70 void listbox_select_entry (WListbox * l, int dest);
  71 int listbox_get_length (const WListbox * l);
  72 void listbox_get_current (WListbox * l, char **string, void **extra);
  73 WLEntry *listbox_get_nth_item (const WListbox * l, int pos);
  74 GList *listbox_get_first_link (const WListbox * l);
  75 void listbox_remove_current (WListbox * l);
  76 gboolean listbox_is_empty (const WListbox * l);
  77 void listbox_set_list (WListbox * l, GQueue * list);
  78 void listbox_remove_list (WListbox * l);
  79 char *listbox_add_item (WListbox * l, listbox_append_t pos, int hotkey, const char *text,
  80                         void *data, gboolean free_data);
  81 
  82 /*** inline functions ****************************************************************************/
  83 
  84 #endif /* MC__WIDGET_LISTBOX_H */

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