mc/src/menu.h

78 lines
2.4 KiB
C
Raw Normal View History

/* Header file for pulldown menu engine for Midnignt Commander
Copyright (C) 1994, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2007, 2009 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/** \file menu.h
* \brief Header: pulldown menu code
*/
#ifndef MC_MENU_H
#define MC_MENU_H
1998-02-27 07:54:42 +03:00
#include "global.h"
1998-02-27 07:54:42 +03:00
#include "widget.h"
extern int menubar_visible;
typedef void (*menu_exec_fn) (void);
1998-02-27 07:54:42 +03:00
typedef struct menu_entry_t {
unsigned char first_letter;
struct hotkey_t text;
menu_exec_fn callback;
} menu_entry_t;
menu_entry_t *menu_entry_create (const char *name, menu_exec_fn cmd);
void menu_entry_free (menu_entry_t *me);
#define menu_separator_create() NULL
1998-02-27 07:54:42 +03:00
typedef struct Menu {
int start_x; /* position relative to menubar start */
struct hotkey_t text;
GPtrArray *entries;
size_t max_entry_len;
unsigned int selected; /* pointer to current menu entry */
char *help_node;
} Menu;
1998-02-27 07:54:42 +03:00
Menu *create_menu (const char *name, GPtrArray *entries,
const char *help_node);
void destroy_menu (Menu *menu);
void menu_add_entry (Menu *menu, const char *name, menu_exec_fn cmd);
void menu_add_separator (Menu *menu);
1998-02-27 07:54:42 +03:00
/* The button bar menu */
typedef struct WMenuBar {
1998-02-27 07:54:42 +03:00
Widget widget;
gboolean is_active; /* If the menubar is in use */
gboolean is_dropped; /* If the menubar has dropped */
GPtrArray *menu; /* The actual menus */
unsigned int selected; /* Selected menu on the top bar */
int previous_widget; /* Selected widget ID before activating menu */
} WMenuBar;
WMenuBar *menubar_new (int y, int x, int cols, GPtrArray *menu);
void menubar_set_menu (WMenuBar *menubar, GPtrArray *menu);
void menubar_add_menu (WMenuBar *menubar, Menu *menu);
void menubar_arrange (WMenuBar *menubar);
#endif /* MC_MENU_H */