00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __JED_GUI__
00023 #define __JED_GUI__
00024
00025 #include "jed_defs.h"
00026
00027
00028 #include "entidad.h"
00029 #include "toolkits/entorno/jed_evnt.h"
00030 #include "framework/gui/jed_menu.h"
00031 #include "framework/gui/jed_btn.h"
00032 #include "framework/gui/logo.h"
00033 #include "framework/gui/control_gui.h"
00034
00035
00036
00037 #define JED_GUI_CLASE_NULA(M_CLASE, M_NCLASE, M_GUI, M_LIB, M_CONST) \
00038 M_CLASE::M_CLASE(){;} \
00039 M_CLASE::~M_CLASE(){;} \
00040 void M_CLASE::finalizar(void){;} \
00041 void M_CLASE::ejecutar(void){;} \
00042 void M_CLASE::solicitar_repintado(void){;} \
00043 void M_CLASE::set_draw_callback( void (*)(int) ){} \
00044 void M_CLASE::set_tick_callback( int (*)(int) ){} \
00045 void M_CLASE::set_resize_callback(void (*)(int, int, int) ){} \
00046 void M_CLASE::set_mouse_callback(int (*)(EVENTO_GUI *, int) ){} \
00047 void M_CLASE::set_ejecutor(int (*)(int, int) ){} \
00048 void M_CLASE::set_keyboard_callback(int (*)(EVENTO_GUI *, int) ){} \
00049 void M_CLASE::set_multiview_callback( \
00050 void (*)(int, int, char *, char *, char *) ){} \
00051 BOOLEAN \
00052 M_CLASE::crear(int *, char *[], int, int, char *) \
00053 { \
00054 fprintf(stderr, \
00055 "<%s> - ERROR: El modo de ejecucion de interfase %s\n" \
00056 " no esta disponible. Esto se debe a que la constante \"%s\" no ha\n" \
00057 " sido definida. Es posible que haya sido desactivada en tiempo de\n" \
00058 " compilacion debido a que la libreria \"%s\" no esta instalada\n" \
00059 " en su sistema. Consulte con el administrador del sistema la \n" \
00060 " disponibilidad de la libreria e intente recompilar AQUYNZA, con\n" \
00061 " la opcion \"%s\" activa.\n", M_NCLASE,M_GUI,M_CONST,M_LIB,M_CONST \
00062 ); \
00063 fflush(stderr); \
00064 return FALSE; \
00065 } \
00066 BOOLEAN \
00067 M_CLASE::anexar_controles(LISTA <CONTROL_GUI *> *, \
00068 REPOSITORIO_DE_ENTIDADES * ) { \
00069 fprintf(stderr, "<%s> ERROR: Los controles GUI no estan\n" \
00070 " implemetados en la interface actual. Intente Motif.\n", \
00071 M_NCLASE); fflush(stderr); return FALSE; }
00072
00073
00074
00075
00076 enum ENUM_OPERACIONES_VISTA {
00077 GUI_UNKNOWN = 0,
00078 GUI_CREAR_VISTA,
00079 GUI_BORRAR_VISTA
00080 };
00081
00082 class GUI_CONSTANTE_ENTERA {
00083 private:
00084 char *nombre;
00085 int valor;
00086 public:
00087 void leer(TOKENIZADOR *Sabiondo);
00088 void imprimir(void);
00089 friend class GUI_MENU;
00090 friend class GUI_SUB_BOTONERA;
00091 friend class GUI_COMANDO;
00092 };
00093
00094 class JED_INTERFACE {
00095 protected:
00096 BOOLEAN leer_gui(char *archivo);
00097 LISTA <GUI_CONSTANTE_ENTERA *> lista_idcs;
00098 LISTA <GUI_COMANDO *> lista_comandos;
00099 LISTA <GUI_MENU *> lista_menus;
00100 LISTA <GUI_BOTONERA *> lista_botoneras;
00101
00102 public:
00103 virtual ~JED_INTERFACE();
00104 virtual BOOLEAN crear(int *Argc, char *argv[],
00105 int x_tam = 320, int y_tam = 200, char *nombre = "AQUYNZA") = 0;
00106 virtual void finalizar(void);
00107 virtual void ejecutar(void) = 0;
00108 virtual void desktop_size(int *x_tam, int *y_tam);
00109 virtual void solicitar_nueva_ventana(void);
00110 virtual void solicitar_repintado(void) = 0;
00111 virtual void set_draw_callback( void (*p)(int context_id) ) = 0;
00112 virtual void set_tick_callback( int (*p)(int context_id) ) = 0;
00113 virtual void set_ejecutor( int (*p)(int idc, int context_id) ) = 0;
00114 virtual void
00115 set_keyboard_callback( int (*p)(EVENTO_GUI *e, int context_id) ) = 0;
00116 virtual void
00117 set_mouse_callback( int (*p)(EVENTO_GUI *e, int context_id) ) = 0;
00118 virtual void
00119 set_resize_callback( void (*p)(int x_tam, int y_tam, int context_id) ) = 0;
00120 virtual void set_multiview_callback
00121 ( void (*p)(int operacion, int id_vista, char *detalles,
00122 char *menu, char *botonera) ) = 0;
00123
00124 GUI_MENU *resolver_menu(char *llave);
00125 GUI_BOTONERA *resolver_botonera(char *llave);
00126 BOOLEAN leer(TOKENIZADOR *Sabiondo);
00127 virtual BOOLEAN
00128 anexar_controles(LISTA <CONTROL_GUI *> *Controles,
00129 REPOSITORIO_DE_ENTIDADES *Repositorio) = 0;
00130 };
00131
00132 #ifndef VEL_ROSITA
00133
00134 #include "framework/gui/_tk.h"
00135 #include "framework/gui/_glut.h"
00136 #include "framework/gui/_wxwindows.h"
00137 #include "framework/gui/_windows.h"
00138 #include "framework/gui/_motif.h"
00139 #include "framework/gui/_owl.h"
00140
00141 #endif
00142
00143 #endif // __JED_GUI__
00144
00145
00146
00147
00148