|
CMimeTypes: un sustituto para DesktopMime - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: Controles/Librerías/Componentes (https://gambas-es.org/forum-7.html) +--- Tema: CMimeTypes: un sustituto para DesktopMime (/thread-1990.html) |
CMimeTypes: un sustituto para DesktopMime - Harpo - 14-10-2025 Buenas! Les traigo un sustituto para DeskTopMime. En el último código que subí al foro, GCompress, había una clase interna para gestionar mimetypes. Y puliendo esta última le he dado una vuelta: CMimeTypes. ¿Porqué un sustituto de DesktopMime?. Básicamente, porque, en mi humilde opinión, no está bien resuelto el tema. Utilizando el componente estándar no me devolvía los iconos por defecto del sistema, y si el fichero a buscar tiene una extensión poco común devolvía un icono estándar. El mótivo de esto es en cómo hace el proceso de carga de los iconos, y busca el icono asociado a la extensión del fichero, la función GetIcon():
Cómo funciona CMimeType: La clase carga la base de datos de mimetypes del sistema, como DesktopMime. Además añade la información del mimetype genérico asociado, como DesktopMime, pero esta última no lo hace correctamente y se pierde esa información. Por último carga la subclase asociada al mimetype. Y además utiliza una clase auxiliar, CTheme, que analiza los temas de iconos del sistema. Y busca el icono asociado a la extensión de fichero:
Un ejemplo de la información interna que manejan ambas clases para el mismo mimetype: ![]()
Ventajas de DesktopMime:
Ventajas de CMimeType:
Hay un par de formularios para probar. Como dato curioso, están embebidos dentro de un control Wizard, he descubierto que es muy cómodo para cosas rápidas y de prueba, así me ahorro el añadir el control gb.form.mdi y usar un WorkSpace. Con los botones de arriba se cambia de formulario y se cierra la aplicación. ![]() Este es el formulario para buscar mimetypes, basta pulsar sobre un fichero y a la derecha salen los iconos que devuelven CMimeType y DesktopMime. El que devuelve este último es un icono de Stock, no del sistema. También se ve que el control FileChooser, que usa DesktopMime, no encuentra varios ficheros y devuelve el icono estándar. Arriba a la derecha se puede seleccionar el tema de iconos y el tamaño. El botón Home vuelve a poner el tema por defecto en el ComboBox. Se visualiza el mimetype asociado al fichero, el icono y la descripción asociada al mimetype. ![]() Este es para explorar los temas de iconos que tenemos en el sistema y qué información guarda la clase CTheme:
Y nada más, como siempre son bienvenidos los comentarios y las sugerencias. Un saludo, Harpo.
RE: CMimeTypes: un sustituto para DesktopMime - Shordi - 15-10-2025 Muy bueno, ¡Gracias! RE: CMimeTypes: un sustituto para DesktopMime - tincho - 08-11-2025 Hola Harpo, si el tema del los iconos no esta bien resuelto en gambas, yo hace tiempo abandone los iconos de sistema y los de gambas, en lugar de estos uso mis propios iconos SVG. Me descargue tu código para echarle un vistazo. Pero por la descripcion que proporcionaste se ve que te lo has trabajado bien en tema. Saludos y gracias por compartir. |