/* Simple BBC News ticker client
 * (c) Darren Salt
 * GPL applies
 * $Id: wimpmenu.h,v 1.1 2003/05/28 16:04:50 ds Exp $
 */

#ifndef _Ticker_WIMPMENU_H
#define _Ticker_WIMPMENU_H

#include "wimp.h"

struct menu_entry
{
  unsigned int menuflags, submenu, icon_flags;
  union
  {
    struct
    {
      char text[12];
    }
    t;

    struct
    {
      char *text;
      char *validation;
      int text_len;
    }
    it;
  }
  text;
};

#define MENU_ENTRIES(num) \
  { \
    char title[12]; \
    int colours, width, height, gap; \
    struct menu_entry items[num]; \
  }

struct current_menu_t
{
  void *handle;
  struct coords pos;
  int window, icon;
  const struct story *story;
};
extern struct current_menu_t current_menu;

extern int force_reopen_menu;

typedef struct MENU_ENTRIES (1) base_menu_type;
typedef base_menu_type		base_menu1_type;
typedef struct MENU_ENTRIES (2) base_menu2_type;
typedef struct MENU_ENTRIES (3) base_menu3_type;
typedef struct MENU_ENTRIES (4) base_menu4_type;
typedef struct MENU_ENTRIES (5) base_menu5_type;
typedef struct MENU_ENTRIES (6) base_menu6_type;
typedef struct MENU_ENTRIES (7) base_menu7_type;
typedef struct MENU_ENTRIES (8) base_menu8_type;

extern base_menu_type *servers_menu, *servers_submenu, *resources_menu;

extern base_menu2_type url_menu_bbc;
extern base_menu1_type null_goto_menu;
extern base_menu6_type iconbar_menu;
extern base_menu6_type ticker_control_menu;
extern base_menu6_type ticker_menu;
extern base_menu8_type ticker_menu_no_ibar;

#define ICONBAR_MENU_Y (92 + 6 * 44)
#define TICKER_MENU_HEIGHT (6 * 44)
#define TICKER_MENU_NO_IBAR_HEIGHT (8 * 44)

#define reopen_menu() force_reopen_menu = 1

void update_menu (void *menu);
void mark_menu_closed (void);
void close_menu (void);
void open_menu (void *menu, int x, int y);
base_menu_type *find_goto_menu (int use_null);
//void menu_launch_url (int sel);
int menu_click (void);



#endif
