--- /dev/null
+/*
+ menu.h
+
+ Copyright (C) 2010-2019 Amf
+
+ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#define MENU_GREY 1
+#define MENU_NOTE 2
+#define MENU_RIGHT 4
+#define MENU_CENTRE 8
+#define MENU_DOUBLE 16
+#define MENU_SORT 32
+#define MENU_TOPSORT 64
+#define MENU_DELETABLE 128
+#define MENU_BOLD 256
+#define MENU_INVISIBLE 512
+#define MENU_SCROLLABLE 1024
+#define MENU_EDITABLE 2048
+#define MENU_EDITING 4096
+#define MENU_SPACE 8192
+#define MENU_TEXT 16384
+
+#define MENU_NULL 0
+#define MENU_QUIT 1
+#define MENU_SELECT 2
+#define MENU_DELETE 3
+#define MENU_SCROLLLEFT 4
+#define MENU_SCROLLRIGHT 5
+#define MENU_RESIZE 6
+
+#define LEVELMENU_RETURN 1
+#define LEVELMENU_NEW 2
+#define LEVELMENU_FILENAMES 4
+#define LEVELMENU_DELETE 8
+#define LEVELMENU_MAIN 16
+#define LEVELMENU_MOVES 32
+#define LEVELMENU_SAVED 64
+#define LEVELMENU_SOLVED 128
+#define LEVELMENU_CREATE 256
+#define LEVELMENU_GAME 512
+#define LEVELMENU_IMPORT 1024
+#define LEVELMENU_FILTER 2048
+
+#define MENU_KEY_ANY 1
+
+enum {
+ MENUREDRAW_NONE,
+ MENUREDRAW_CHANGED,
+ MENUREDRAW_ENTRIES,
+ MENUREDRAW_ALL,
+};
+
+struct menuentry
+{
+ struct menuentry *next;
+ struct menuentry *previous;
+ char *text;
+ char *text2;
+ char *text3;
+ char *text4;
+ char *value;
+ int redraw;
+ int flags;
+ char key;
+};
+
+struct menu
+{
+ char *title;
+ struct menuentry *entry_first;
+ struct menuentry *entry_last;
+ struct menuentry *entry_selected;
+ struct menuentry *display_first;
+ struct menuentry *display_last;
+ int offset;
+ int redraw;
+ int logo;
+};
+
+/* menu.c */
+struct menu *menu_new(char *);
+struct menuentry *menuentry_new(struct menu *, char *, char, int);
+struct menuentry *menuentry_newwithvalue(struct menu *, char *, char, int, char *);
+void menu_delete(struct menu *);
+void menu_unsort(struct menu *);
+void menu_assignletters(struct menu *);
+void menuentry_text(struct menuentry* pentry, char *text);
+void menuentry_value(struct menuentry* pentry, char *value);
+void menuentry_extratext(struct menuentry* pentry, char *text2, char *text3, char *text4);
+int menu_levelselector(char *directory, char *chosen, char *title, int flags);
+int menu_colourselector(char *directory, char *chosen, char *title, int flags);
+
+/* $DISPLAYmenudisplay.c */
+void menu_display(struct menu *, int);
+int menu_process(struct menu *);
+int menu_addfile(struct menu *, char *);