¿Alguien puede recomendar un contenedor de C++ para ncurses?C++ wrappers para ncurses?
Respuesta
Pruebe este proyecto de forge de origen. Se trata de un kit de desarrollo de ncurses para C++
He escrito mis propios hace unos años ... lo hice porque una biblioteca compatible con ncurses fue instalado en Linux, pero no bajo Win32. (Podría usar PDCurses, pero en ese momento no pude evitar que PDC_breakout() detuviera una operación de actualización() sin abrir el código fuente).
Este contenedor fue escrito dentro de los 7 días, como parte de un proceso rápido desarrollo. Como tal, tiene algunas dependencias (extraíbles) en tipos de datos no de entrada/salida específicos de un programa, pero se pueden eliminar de forma segura.
Básicamente, tengo dos funciones principales: inicialización, que llama a todas las funciones de inicialización de maldiciones y definiciones de color que no planeo modificar más adelante, y la función de actualización, que transfiere el búfer de visualización "interno" a la salida .
En general, se puede sentir la creación de más cómoda en la tarjeta de índice o de hoja de trucos que contiene "initscr(); cbreak(); noecho(); movimiento (y, x); addch (CH); endwin(); ", pero si desea usar mi envoltorio, puede enviarme un mensaje o descargarlo desde here, siempre y cuando cumpla con la licencia de Creative Commons.
Gracias pero no. Este es un proyecto personal, y comencé a escribir una versión basada en flujos. Solo debería llevarme unas horas más para hacer un esqueleto básico. – BubbaT
ncurses en sí mismo incluye un conjunto de enlaces de C++. No sé si alguna de las principales distribuciones incluye los enlaces C++, pero si obtiene el ncurses source, los encontrará en el directorio C++.
No sé si los recomendaría necesariamente, pero probablemente sean los mejores enlaces de C++ e incluye enlaces para las extensiones de Formularios, Panel y Menú. Son un poco rudos en los bordes y no hay mucha documentación.
De hecho. ¿Conoce alguna documentación sobre las fijaciones? No puedo encontrar tal cosa en línea y preferiría evitar leer la fuente -_- – alkar
Hasta donde yo sé, solo lo que está en el directorio C++ en la fuente ncurses. Pasé mucho tiempo leyendo la fuente. – Craig
Ni siquiera hay la menor pista en el directorio de documentos. Supongo que llevará un tiempo. ¿Algún consejo sobre dónde comenzar? – alkar
Hace un par de años, cuando lo necesitaba, revisé los varios archivos de maldiciones que proporcionan las maldiciones de las cosas en C++. Aunque funcionaron bien, me decepcionó; este nuevo código inyecta aún más 'macros malditos'. No reconocí ningún intento de bloquear las macros (sin espacio de nombres, solo unas pocas clases). Supongo que ese no era su objetivo.
Finalmente decidí que estas macros también pisotearon demasiados símbolos útiles, del modo que solo las macros pueden hacer. Terminé refactorizando mi código para minimizar la exposición a estas macros.
Esencialmente, moví varios de mis métodos de aplicaciones que muestran cosas a 2 archivos nuevos. Esta refactorización también creó algunos métodos nuevos y pequeños, que se agregaron a los 2 nuevos archivos de 'visualización'. (11 archivos expandidos a 13)
Como digo, funcionan bien, mi código no se vio afectado por el cambio, los comentarios en cursesw.h sugieren que cambia las macros por las líneas, y encuentro algunas clases en ahí.
cursesf.h tiene clases utilizadas en otros lugares como lo hace cursesm.h (para el menú), y cursesw.h (para windows), curseslk.h (para el conjunto de teclas soft label), todas las cosas que aún no he usado.
No me gustó cursesapp.h - tal vez esto es algo de Windows?
¿Lo puedo recomendar? Bueno, prefiero este código a las maldiciones anteriores, aunque refactoré para mantener las macros contenidas.
¿Quizás enrolle su propio envoltorio de C++?
... He creado algunas envolturas de C++ para algunos ncurses y funciones y objetos de CDK.
Sin embargo, solo creé wrappers para las funciones y estructuras como soporte necesario para mi pequeño proyecto, que usa CDK y ncurses para su GUI. Sin embargo, es posible que le brinden ideas para crear sus propios envoltorios de C++ de las llamadas CDK y ncurses que necesita.
Básicamente los usé para evitar fugas de memoria al hacer que los destructores C++ eliminen cadenas de caracteres creadas dinámicamente o usando std::string
en lugar de char*
cadenas, y cosas así.
Aquí es un ejemplo muy modesta:
class RXL_ncurses {
public:
static void draw(WINDOW * pWin, int y, int x, std::string lineOfText);
};
void RXL_ncurses::draw(WINDOW * pWin, int y, int x, std::string lineOfText) {
//
// Draw a std::string into the WINDOW*, starting at y,x
//
chtype letter;
unsigned int i;
unsigned int xPos;
unsigned int yPos;
for(i = 0; i < lineOfText.size(); i++) {
letter = (chtype) lineOfText[i];
xPos = i + x;
yPos = y;
mvwaddch(pWin, yPos, xPos, letter);
}
}
http://mrflash818.geophile.net/software/nc_834v5010generator/
- 1. authorize.net C# wrappers/library
- 2. ¿Hay ncurses disponibles para Windows?
- 3. ¿Cómo puedo generar C wrappers sobre API C++ utilizando SWIG?
- 4. NCurses-Like System para Windows
- 5. estáticamente ncurses enlace para programar
- 6. Haskell ncurses
- 7. ncurses novatos - comenzando con GNU C
- 8. NCurses Refresh
- 9. Biblioteca estándar de C++: ¿Cómo escribir wrappers para cout, cerr, cin y endl?
- 10. hscurses o ncurses, ¿cuál usar?
- 11. ncurses- KEY_ENTER falló
- 12. getch sin bloqueo(), ncurses
- 13. Python ncurses, CDK, diferencia urwid
- 14. ncurses tamaño de terminal
- 15. ncurses transparent console background
- 16. ¿Cómo puedo terminar ncurses sin finalizar el programa C++?
- 17. Usando el espacio de fondo con ncurses
- 18. ncurses y blanco sobre negro
- 19. NCurses y Perl, ¿alguna guía?
- 20. Ncurses de depuración con Eclipse CDT
- 21. ¿Qué estructuras de ncurses están disponibles para BASH?
- 22. Mejor gema para trabajar con ncurses y ruby
- 23. Wrappers/law of demeter parece ser un anti-patrón
- 24. Inicialización de NCurses sin borrar la pantalla
- 25. referencia indefinida al usar ncurses en Linux
- 26. No es capaz de compilar C/C++ código que está usando ncurses
- 27. Eventos de movimiento de mouse en NCurses
- 28. Macports ncurses error al intentar actualizar
- 29. Rellenar una ventana ncurses con un color
- 30. ¿Cómo funciona ncurses et. Alabama. ¿Trabajo?
Tengo curiosidad, ¿Por qué necesitaría C++ envoltorios? ¿Por qué no usar la API C directamente? Me preguntaba :) – hhafez
Claro si los envoltorios no existen. Pero si existen envoltorios, ¿por qué no usarlos? Supongo que solo usa ensamblador para todo? – BubbaT
es un poco exagerado comparar el paso de C a C++ con ir de C a ensamblador ¿no? – hhafez