1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
/* widget.h: Simple dialog boxes for all user interfaces.
Copyright (c) 2001-2004 Matan Ziv-Av, Philip Kendall
$Id: widget.h 4109 2009-12-27 06:15:10Z fredm $
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.
Author contact information:
E-mail: philip-fuse@shadowmagic.org.uk
*/
#ifndef FUSE_WIDGET_H
#define FUSE_WIDGET_H
#include "input.h"
#include "ui/scaler/scaler.h"
#include "ui/ui.h"
/* Code called at start and end of emulation */
int widget_init( void );
int widget_end( void );
/* The various widgets which are available */
typedef enum widget_type {
WIDGET_TYPE_FILESELECTOR, /* File selector (load) */
WIDGET_TYPE_FILESELECTOR_SAVE,/* File selector (save) */
WIDGET_TYPE_GENERAL, /* General options */
WIDGET_TYPE_PICTURE, /* Keyboard picture */
WIDGET_TYPE_MENU, /* General menu */
WIDGET_TYPE_SELECT, /* Select machine */
WIDGET_TYPE_SOUND, /* Sound options */
WIDGET_TYPE_ERROR, /* Error report */
WIDGET_TYPE_RZX, /* RZX options */
WIDGET_TYPE_BROWSE, /* Browse tape */
WIDGET_TYPE_TEXT, /* Text entry widget */
WIDGET_TYPE_DEBUGGER, /* Debugger widget */
WIDGET_TYPE_POKEFINDER, /* Poke finder widget */
WIDGET_TYPE_MEMORYBROWSER, /* Memory browser widget */
WIDGET_TYPE_ROM, /* ROM selector widget */
WIDGET_TYPE_PERIPHERALS, /* Peripherals options */
WIDGET_TYPE_QUERY, /* Query (yes/no) */
WIDGET_TYPE_QUERY_SAVE, /* Query (save/don't save/cancel) */
WIDGET_TYPE_DISKOPTIONS, /* Disk options widget */
} widget_type;
/* Activate a widget */
int widget_do( widget_type which, void *data );
/* Finish with widgets for now */
void widget_finish( void );
/* A function to handle keypresses */
typedef void (*widget_keyhandler_fn)( input_key key );
/* The current widget keyhandler */
extern widget_keyhandler_fn widget_keyhandler;
/* Widget-specific bits */
/* Menu widget */
/* A generic callback function */
typedef void (*widget_menu_callback_fn)( int action );
/* A generic menu detail callback function */
typedef const char* (*widget_menu_detail_callback_fn)( void );
/* A general menu */
typedef struct widget_menu_entry {
const char *text; /* Menu entry text */
input_key key; /* Which key to activate this widget */
struct widget_menu_entry *submenu;
widget_menu_callback_fn callback;
widget_menu_detail_callback_fn detail;
int action;
int inactive;
} widget_menu_entry;
/* The main menu as activated with F1 */
extern widget_menu_entry widget_menu[];
/* Get the maximum menu width to use in pixels */
int widget_calculate_menu_width( widget_menu_entry *menu );
/* The name returned from the file selector */
extern char* widget_filesel_name;
/* Select a machine */
int widget_select_machine( void *data );
/* The error widget data type */
typedef struct widget_error_t {
ui_error_level severity;
const char *message;
} widget_error_t;
#endif /* #ifndef FUSE_WIDGET_H */
|