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. ![]() |