Página principal | Jerarquía de la clase | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

_palm.C

Ir a la documentación de este archivo.
00001 //===========================================================================
00002 //= _palm.C                                                   Enero de 2004 =
00003 //=-------------------------------------------------------------------------=
00004 //= Definicion de elementos GUI especificos a la plataforma PALM.           =
00005 //=-------------------------------------------------------------------------=
00006 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO   =
00007 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN   =
00008 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES,     = 
00009 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO,        =
00010 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO,  =
00011 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA   =
00012 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES       =
00013 //= ("ACTIVIDADES DE ALGO RIESGO").                                         =
00014 //=-------------------------------------------------------------------------=
00015 //= Autor original: Oscar J. Chavarro G.  A.K.A. JEDILINK. Copyright (c),   =
00016 //= 1997 - 2004, oscarchavarro@hotmail.com                                  =
00017 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia   =
00018 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la  =
00019 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. =
00020 //===========================================================================
00021 
00022 #include "framework/gui/_palm.h"
00023 
00024 //===========================================================================
00025 //= Chequeo de activacion de esta interfaz                                  =
00026 //===========================================================================
00027 
00028 #if PLATAFORMA != PALM_PALMOS_CODEWARRIOR
00029 
00030 JED_GUI_CLASE_NULA(JED_PALM_INTERFACE, "JED_PALM_INTERFACE",
00031     "PALM", "palm", "(PLATAFORMA == PALM_PALMOS_*)");
00032 
00033 #endif
00034 
00035 #if PLATAFORMA == PALM_PALMOS_CODEWARRIOR
00036 
00037 #include <stdarg.h>
00038 #include <string.h>
00039 
00040 //===========================================================================
00041 
00042 #define CONSTRUIR_EVENTO_MOUSE()                                \
00043     EVNT_EVENTO_GUI->mouse_old_x = EVNT_EVENTO_GUI->mouse_x;    \
00044     EVNT_EVENTO_GUI->mouse_old_y = EVNT_EVENTO_GUI->mouse_y;    \
00045     EVNT_EVENTO_GUI->mouse_x = evento->screenX;                 \
00046     EVNT_EVENTO_GUI->mouse_y = evento->screenY;                 \
00047     EVNT_EVENTO_GUI->mouse_delta_x=                             \
00048         evento->screenX-EVNT_EVENTO_GUI->mouse_old_x;           \
00049     EVNT_EVENTO_GUI->mouse_delta_y=                             \
00050         evento->screenY-EVNT_EVENTO_GUI->mouse_old_y;
00051 
00052 #define LINEAS_EN_CONSOLA 15
00053 
00054 //===========================================================================
00055 
00056 static int PALM_procesar_mouse_nulo(EVENTO_GUI *e, int context_id);
00057 static int PALM_procesar_teclado_nulo(EVENTO_GUI *e, int context_id);
00058 static Boolean PALM_procesar_eventos_nulo(EventPtr event);
00059 
00060 //===========================================================================
00061 
00062 static int (*PALM_keyboard_callback)(EVENTO_GUI *e, int) =
00063     PALM_procesar_teclado_nulo;
00064 
00065 static int (*PALM_mouse_callback)(EVENTO_GUI *e, int context_id) =
00066     PALM_procesar_mouse_nulo;
00067 
00068 static EVENTO_GUI EVENTO_palm;   // Esto es para que funcione EVNT_EVENTO_GUI
00069 
00070 static char *BUFFER_consola[LINEAS_EN_CONSOLA] = {
00071     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
00072     NULL, NULL, NULL, NULL, NULL
00073 };
00074 
00075 //===========================================================================
00076 //= Funciones utilitarias                                                   =
00077 //===========================================================================
00078 
00079 static int
00080 PALM_procesar_mouse_nulo(EVENTO_GUI *e, int context_id)
00081 {
00082     return 0;
00083 }
00084 static int
00085 PALM_procesar_teclado_nulo(EVENTO_GUI *e, int context_id)
00086 {
00087     return 0;
00088 }
00089 
00090 static Boolean
00091 PALM_procesar_eventos_nulo(EventPtr event)
00092 {
00093     return false;
00094 }
00095 
00096 static void
00097 liberar_buffer_consola(void)
00098 {
00099     int i;
00100 
00101     for ( i = 0; i < LINEAS_EN_CONSOLA; i++ ) {
00102         if ( BUFFER_consola[i] ) delete BUFFER_consola[i];
00103     }
00104 }
00105 
00106 int
00107 jprintf(char *cadena_de_formato, ...)
00108 {
00109     //-----------------------------------------------------------------
00110     RectangleType rect;
00111 
00112     rect.topLeft.x = 0;
00113     rect.topLeft.y = 0;
00114     WinGetWindowExtent(&rect.extent.x, &rect.extent.y);
00115 
00116     // Modificar el area de la ventana para dejar espacio a elementos extra
00117     rect.extent.y -= 13;
00118 
00119     //-----------------------------------------------------------------
00120     int margen_x = rect.topLeft.x + 5;
00121     int min_y = rect.topLeft.y + 3;
00122     int max_y = rect.topLeft.y + rect.extent.y - 5;
00123 
00124     //-----------------------------------------------------------------
00125     char cad[256];
00126 
00127     va_list lista_de_argumentos;
00128 
00129     va_start(lista_de_argumentos, cadena_de_formato);
00130     StrPrintF(cad, cadena_de_formato, lista_de_argumentos);
00131 
00132     strcpy(cad, cadena_de_formato); // OJO: Esto no!
00133 
00134     va_end(lista_de_argumentos);
00135 
00136     //-----------------------------------------------------------------
00137     static int ultima_linea = 0;
00138     int i;
00139 
00140     if ( BUFFER_consola[ultima_linea] ) {
00141         delete BUFFER_consola[ultima_linea];
00142     }
00143     BUFFER_consola[ultima_linea] = new char[strlen(cad) + 1];
00144     strcpy(BUFFER_consola[ultima_linea], cad);
00145 
00146     ultima_linea++;
00147     if ( ultima_linea >= LINEAS_EN_CONSOLA ) {
00148         delete BUFFER_consola[0];
00149         for ( i = 0; i < LINEAS_EN_CONSOLA-1; i++ ) {
00150             BUFFER_consola[i] = BUFFER_consola[i+1];
00151         }
00152         ultima_linea = LINEAS_EN_CONSOLA-1;
00153         BUFFER_consola[ultima_linea] = NULL;
00154     }
00155     
00156     //-----------------------------------------------------------------
00157     int y;
00158 
00159     for ( i = 0, y = min_y; i < LINEAS_EN_CONSOLA && BUFFER_consola[i]; 
00160           i++, y += 10 ) {
00161         if ( y > max_y - 4 ) {
00162             y = min_y;
00163         }
00164         WinDrawChars(BUFFER_consola[i], strlen(BUFFER_consola[i]), 
00165                      margen_x, y);
00166     }
00167 
00168     return 0;
00169 }
00170 
00171 //===========================================================================
00172 //= Clase JED_PALM_INTERFACE                                                =
00173 //===========================================================================
00174 
00175 JED_PALM_INTERFACE::JED_PALM_INTERFACE()
00176 {
00177     EVNT_EVENTO_GUI = &EVENTO_palm;
00178     quiero_salir = FALSE;
00179     handler = PALM_procesar_eventos_nulo;
00180 }
00181 
00182 JED_PALM_INTERFACE::~JED_PALM_INTERFACE()
00183 {
00184 
00185 }
00186 
00187 void
00188 JED_PALM_INTERFACE::set_palm_callback(Boolean (*h)(EventPtr event))
00189 {
00190     handler = h;
00191 }
00192 
00193 void
00194 JED_PALM_INTERFACE::set_mouse_callback( 
00195     int (*p)(EVENTO_GUI *e, int context_id) )
00196 {
00197     PALM_mouse_callback = p;
00198 }
00199 
00200 void
00201 JED_PALM_INTERFACE::set_keyboard_callback( 
00202     int (*p)(EVENTO_GUI *e, int context_id) )
00203 {
00204     PALM_keyboard_callback = p;
00205 }
00206 
00207 Boolean
00208 JED_PALM_INTERFACE::procesar_evento_palm(EventPtr evento)
00213 {
00214     switch ( evento->eType ) {
00215       case penUpEvent:
00216         CONSTRUIR_EVENTO_MOUSE()
00217         EVNT_EVENTO_GUI->tipo_de_evento = ETYPE_BUTTON_UP;
00218         return PALM_mouse_callback(EVNT_EVENTO_GUI, 1);
00219       case penMoveEvent:
00220         CONSTRUIR_EVENTO_MOUSE()
00221         EVNT_EVENTO_GUI->tipo_de_evento = ETYPE_MOUSE_MOVE;
00222         return PALM_mouse_callback(EVNT_EVENTO_GUI, 1);
00223       case penDownEvent:
00224         CONSTRUIR_EVENTO_MOUSE()
00225         EVNT_EVENTO_GUI->tipo_de_evento = ETYPE_BUTTON_DOWN;
00226         return PALM_mouse_callback(EVNT_EVENTO_GUI, 1);
00227       case keyDownEvent:
00228         Palm2JEDkeycode(EVNT_EVENTO_GUI, evento);
00229         return PALM_keyboard_callback(EVNT_EVENTO_GUI, 1);
00230       default:
00231         break;
00232     }
00233     return 0;
00234 }
00235 
00236 void
00237 JED_PALM_INTERFACE::ejecutar(void)
00241 {
00242     EventType event;
00243     UInt16 error;
00244 
00245     // Esto no esta funcionando... o hay algo que aprenderle!
00246     KeySetMask(keyBitsAll);
00247         
00248     do{
00249         EvtGetEvent(&event, evtWaitForever);
00250 
00251         if ( !SysHandleEvent (&event) ) {
00252             // check if it is a menu event 
00253             if ( !MenuHandleEvent(0, &event, &error) ) {
00254                 // if not let the application handle it 
00255                 if ( !handler(&event) ) {
00256                     // otherwise put it back into the queue
00257                     FrmDispatchEvent(&event); 
00258                 }
00259             }
00260         }
00261     } while ( event.eType != appStopEvent && !quiero_salir );
00262 
00263     FrmCloseAllForms();
00264     liberar_buffer_consola();
00265 }
00266 
00267 void
00268 JED_PALM_INTERFACE::finalizar(void)
00269 {
00270     quiero_salir = TRUE;
00271 }
00272 
00273 BOOLEAN
00274 JED_PALM_INTERFACE::crear(int *Argc, char *argv[],
00275                           int x_tam, int y_tam, char *nombre)
00276 {
00277     return TRUE;
00278 }
00279 
00280 void
00281 JED_PALM_INTERFACE::solicitar_repintado(void)
00282 {
00283     ;
00284 }
00285 
00286 void
00287 JED_PALM_INTERFACE::set_draw_callback( void (*p)(int) )
00288 {
00289     ;
00290 }
00291 
00292 void
00293 JED_PALM_INTERFACE::set_tick_callback( int (*p)(int context_id) )
00294 {
00295     ;
00296 }
00297 
00298 void
00299 JED_PALM_INTERFACE::set_ejecutor( int (*p)(int idc, int context_id) )
00300 {
00301     ;
00302 }
00303 
00304 void
00305 JED_PALM_INTERFACE::set_resize_callback(
00306     void (*p)(int x_tam, int y_tam, int context_id) )
00307 {
00308     ;
00309 }
00310 
00311 void
00312 JED_PALM_INTERFACE::set_multiview_callback
00313     ( void (*p)(int operacion, int id_vista, char *detalles,
00314                 char *menu, char *botonera) )
00315 {
00316     ;
00317 }
00318 
00319 BOOLEAN
00320 JED_PALM_INTERFACE::anexar_controles(LISTA <CONTROL_GUI *> *Controles, 
00321                      REPOSITORIO_DE_ENTIDADES *Repositorio)
00322 {
00323     return FALSE;
00324 }
00325 
00326 #endif // PLATAFORMA == PALM_PALMOS_CODEWARRIOR
00327 
00328 //===========================================================================
00329 //= EOF                                                                     =
00330 //===========================================================================
00331 

Este archivo HTML ha sido generado automáticamente a partir del código fuente AQUYNZA. NO LO EDITE. Para mayor información contacte al autor.