#include #include #include #include #include #include #include #include #include using std::cout; using std::endl; using std::string; class VisitasWin : public Fl_Double_Window { public: VisitasWin(int x, int y); private: // Campos en la tarjeta de visita static enum {PRIMERO, NOMBRE=PRIMERO, CARGO, DIRECCION, CORREO, WEB, ULTIMO=WEB} campos; static const int numCampos; // Controles (widgets) Fl_Choice *chDatos, *chFuentes; // Lista de opciones Fl_Value_Slider *vsTamanyos; // Barra desplazamiento para el tamaño de la fuente Fl_Input *inTexto; // El texto para el dato actual Fl_Roller *rollX, *rollY; // Las ruedas para la posicion (x,y) del texto Fl_Box *marcoTarjeta; // El marco de la tarjeta entera Fl_Box *marcoDatos; // El marco de los controles para los datos Fl_Box **boxDato; // Las cajas asociadas a los datos // Variables string *textoDato; // Vector de los textos de cada campo int datoActual; // Dato actual (nombre, cargo,...) int margen; // separación entre algunos widgets int widgH; // altura de caja de los Fl_Input, Fl_Value_Slider y Fl_Choice(s) int wx,wy,wh,ww; // posicion y dimensiones de la ventana // Funciones para crear e inicializar variables y controles void inicializarVariables(); void inicializarMarcoTarjeta(); void inicializarMarcoDatos(); void inicializarSelectorDatos(); void inicializarSelectorFuentes(); void inicializarSelectorTamanyos(); void inicializarTextoEntrada(); void inicializarRollers(); void inicializarDatos(); // Manejadores de eventos (funciones de callback) static void datosCB(Fl_Widget *w, void *v); static void textoCB(Fl_Widget *w, void *texto); static void fuentesCB(Fl_Widget *w, void *fuente); static void tamanyosCB(Fl_Widget *w, void *v); static void rollerXCB(Fl_Widget *w, void *v); // Funciones auxiliares (y miembro) de las funciones de callback void cambiarDatos(int nuevoDatoActual); void cambiarTexto(char *texto); void cambiarFuente(int fuente); void cambiarX(int nuevaX); };