Estoy trabajando en una aplicación de escritorio en PyGTK y parecen estar chocando contra algunas limitaciones de mi organización de archivos. Hasta aquí hemos estructurado mi proyecto de esta manera:¿Cómo organizo de manera coherente módulos para una aplicación de escritorio PyGTK?
- application.py - tiene la clase de aplicación primaria (rutinas más funcionales)
- gui.py - posee una aplicación GUI GTK débilmente acoplado. Maneja las devoluciones de llamada de señal, etc.
- command.py - mantiene las funciones de automatización de línea de comandos que no dependen de los datos de la clase de aplicación
- state.py - ejerce en la clase de persistencia de datos estatales
Esto ha servido bastante bien hasta el momento, pero en este punto, application.py está empezando a ser bastante largo. He examinado muchas otras aplicaciones PyGTK y parecen tener problemas estructurales similares. En cierto punto, el módulo primario comienza a ser muy largo y no hay una manera obvia de dividir el código en módulos más estrechos sin sacrificar la claridad y la orientación del objeto.
He considerado hacer de la GUI el módulo principal y tener módulos separados para las rutinas de la barra de herramientas, los menús, etc. referencias-todo escenario.
¿Debo tratar con tener un módulo central muy largo o hay una mejor manera de estructurar el proyecto de modo que no tengo que confiar en el navegador de clases tanto?
EDIT
Ok, por lo que el punto tomado con respecto a todas las cosas MVC. Tengo una aproximación aproximada de MVC en mi código, pero es cierto que probablemente podría obtener un poco de kilometraje segregando aún más el modelo y el controlador. Sin embargo, estoy leyendo la documentación de python-gtkmvc (que es un gran hallazgo por cierto, gracias por hacer referencia a ella) y mi impresión es que no va a resolver mi problema sino solo formalizarlo. Mi aplicación es un archivo de glade único, generalmente una sola ventana. Entonces, no importa cuán estrictamente defina los roles MVC de los módulos, todavía tendré un módulo de controlador haciendo casi todo, que es más o menos lo que tengo ahora. Es cierto que estoy un poco confuso sobre la implementación correcta de MVC y voy a seguir investigando, pero no me parece que esta arquitectura vaya a sacar más cosas de mi archivo principal, solo va a cambiar el nombre de esa arquitectura. archivo a controller.py
Debería estar pensando en Controlador/Ver pares separados para las secciones separadas de la ventana (la barra de herramientas, los menús, etc)? Tal vez eso es lo que me estoy perdiendo aquí. Parece que esto es a lo que se refiere S. Lott en su segundo punto.
Gracias por las respuestas hasta ahora.