00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __JED_MENU__
00023 #define __JED_MENU__
00024
00025 #include "jed_defs.h"
00026 #include "toolkits/util/parsero.h"
00027
00028 #ifdef WXWINDOWS_ENABLED
00029
00030 #if PLATAFORMA == SPARC64_LINUX_GCC
00031
00032
00033
00034
00035 extern "C" char *strdup(const char *s);
00036 extern "C" int strcasecmp(const char *s1, const char *s2);
00037 #endif
00038
00039 #include <wx/wx.h>
00040 class _WXWINDOWS_WINDOW;
00041 #endif
00042
00043 #ifdef MOTIF_ENABLED
00044 #include <Xm/Xm.h>
00045 #endif
00046
00047 class GUI_MENU;
00048 class JED_INTERFACE;
00049 class JED_MOTIF_INTERFACE;
00050 class GUI_CONSTANTE_ENTERA;
00051
00052 class GUI_COMANDO {
00053 private:
00054 int _id;
00055 char *_nombre;
00056 char *resumen;
00057 char *ayuda;
00058 char *_archivo_icono;
00059
00060 BOOLEAN concatenar_ayuda(char *nueva);
00061
00062 public:
00063 GUI_COMANDO();
00064 ~GUI_COMANDO();
00065
00066 BOOLEAN leer(TOKENIZADOR *Sabiondo, LISTA<GUI_CONSTANTE_ENTERA *> *Tabla_idcs);
00067 void imprimir(void);
00068 int id(void);
00069 char *nombre(void);
00070 char *archivo_icono(void);
00071 };
00072
00073 class GUI_ELEMENTO {
00074 public:
00075 virtual ~GUI_ELEMENTO();
00076 virtual void imprimir(void) = 0;
00077 #ifdef GLUT_ENABLED
00078 virtual void crear_glut(int padre) = 0;
00079 #endif
00080 #ifdef MOTIF_ENABLED
00081 virtual Widget crear_motif(Widget padre) = 0;
00082 #endif
00083 #if PLATAFORMA == i386_WIN32_VC
00084 virtual BOOLEAN crear_mswin32sdk(HMENU padre) = 0;
00085 #endif
00086 #ifdef WXWINDOWS_ENABLED
00087 virtual wxMenu * crear_wxw(wxMenu *Padre, int tipo_menu) = 0;
00088 #endif
00089 };
00090
00091 enum ENUM_TIPOS_MENU {
00092 TM_MENUBAR = 1,
00093 TM_MENUCOLUMN,
00094 TM_POPUP,
00095 TM_PULLDOWN
00096 };
00097
00098 class REFERENCIA_GUI : public GUI_ELEMENTO {
00099 private:
00100 char *nombre;
00101 GUI_MENU *Ref;
00102 JED_INTERFACE *Interface;
00103 public:
00104 REFERENCIA_GUI(char *n, JED_INTERFACE *i);
00105 virtual ~REFERENCIA_GUI();
00106 void imprimir(void);
00107 #ifdef GLUT_ENABLED
00108 void crear_glut(int padre);
00109 #endif
00110 #ifdef MOTIF_ENABLED
00111 Widget crear_motif(Widget padre);
00112 Widget crear_motif(Widget padre, int tipo_menu);
00113 #endif
00114 #if PLATAFORMA == i386_WIN32_VC
00115 BOOLEAN crear_mswin32sdk(HMENU padre);
00116 #endif
00117 #ifdef WXWINDOWS_ENABLED
00118 wxMenu *
00119 crear_wxw(wxMenu *Padre, int tipo_menu);
00120 #endif
00121 };
00122
00123 class SEPARADOR : public GUI_ELEMENTO {
00124 public:
00125 virtual ~SEPARADOR();
00126 void imprimir(void);
00127 #ifdef GLUT_ENABLED
00128 void crear_glut(int padre);
00129 #endif
00130 #ifdef MOTIF_ENABLED
00131 Widget crear_motif(Widget padre);
00132 #endif
00133 #if PLATAFORMA == i386_WIN32_VC
00134 BOOLEAN crear_mswin32sdk(HMENU padre);
00135 #endif
00136 #ifdef WXWINDOWS_ENABLED
00137 wxMenu *
00138 crear_wxw(wxMenu *Padre, int tipo_menu);
00139 #endif
00140 };
00141
00142 enum ENUM_OPTION_FLAGS {
00143 OF_CHECKED = 0x0001,
00144 OF_BINARY = 0x0002,
00145 OF_GRAYED = 0x0004
00146 };
00147
00148 class OPCION : public GUI_ELEMENTO {
00149 private:
00150 char *nombre;
00151 int idc;
00152 WORD flags;
00153 public:
00154 OPCION(char *name, int id);
00155 virtual ~OPCION();
00156
00157 void check(void);
00158 void uncheck(void);
00159 void enable(void);
00160 void disable(void);
00161 void imprimir(void);
00162 int id(void);
00163 #ifdef GLUT_ENABLED
00164 void crear_glut(int padre);
00165 #endif
00166 #ifdef MOTIF_ENABLED
00167 Widget crear_motif(Widget padre);
00168 #endif
00169 #if PLATAFORMA == i386_WIN32_VC
00170 BOOLEAN crear_mswin32sdk(HMENU padre);
00171 #endif
00172 #ifdef WXWINDOWS_ENABLED
00173 wxMenu *
00174 crear_wxw(wxMenu *Padre, int tipo_menu);
00175 #endif
00176 };
00177
00178 class GUI_MENU : public GUI_ELEMENTO {
00179 private:
00180 LISTA <GUI_ELEMENTO *> lista_hijos;
00181 LISTA <GUI_CONSTANTE_ENTERA *> *Tabla_idcs;
00182 char *_nombre;
00183 #if PLATAFORMA == i386_WIN32_VC
00184 HMENU popup_id;
00185 #endif
00186
00187 public:
00188 GUI_MENU(LISTA<GUI_CONSTANTE_ENTERA *> *tabla_constantes);
00189 virtual ~GUI_MENU();
00190
00191 char *nombre(void);
00192 BOOLEAN leer(TOKENIZADOR *Sabiondo, JED_INTERFACE *i);
00193 void imprimir(void);
00194
00195 #ifdef GLUT_ENABLED
00196 int crear_glut( void (*menu_callback)(int param) );
00197 void crear_glut(int padre);
00198 void insertar_glut(int padre);
00199 #endif
00200
00201 #ifdef MOTIF_ENABLED
00202 Widget crear_motif(Widget padre, int tipo_menu);
00203 Widget crear_motif(Widget padre);
00204 void insertar_motif(Widget padre);
00205 #endif
00206
00207 #if PLATAFORMA == i386_WIN32_VC
00208 BOOLEAN crear_mswin32sdk(HMENU padre);
00209 BOOLEAN crear_mswin32sdk(HMENU padre, int tipo_menu);
00210 BOOLEAN insertar_mswin32sdk(HMENU padre);
00211 #endif
00212
00213 #ifdef WXWINDOWS_ENABLED
00214 wxMenuBar * crear_wxw_barra(_WXWINDOWS_WINDOW *Ventana);
00215 wxMenu * crear_wxw(wxMenu *Padre, int tipo_menu);
00216 #endif
00217 };
00218
00219 #ifndef VEL_ROSITA
00220 #include "framework/gui/jed_gui.h"
00221 #endif
00222
00223
00224
00225
00226
00227 #endif // __JED_MENU__
00228
00229
00230
00231
00232