Buenas! He estado trabajando en el bug reportado en Trello: “Corregir el bug en el dibujado/creación de un mapatiled, pues falla cuando éste está bajo un path que tiene caracteres no-anglosajones”.
Pude reproducir el problema y encontrar una solución, pero no estoy muy seguro que la solución que encontré sea la más conveniente, y tengo mis dudas cómo funcionará en otros sistemas operativos (este fix lo desarrollé en Linux).
No estoy seguro cuál es el problema de fondo, pero me di cuenta que, usando carpetas con caracteres no-ascii, aparecen estos errores por consola:
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::end: Painter not active, aborted
(pueden ver un screenshot con los errores en https://goo.gl/photos/HNqwfJvopujoqZfdA)
El posible fix lo pueden ver en Transforma ruta de archivo a unicode · hgdeoro/pilas@01f1bb7 · GitHub. Lo que hace es convertir el path, de str a unicode. Yo supongo que QT entiende bien el unicode, entonces puede leer el path, y todo vuelve a funcionar…
Si creen que esa solución sirve, puedo hacer un pull request. El tema es que, en mis pruebas, el str está codificado con utf-8, y el FIX está basado en esa suposición… Pero no sé qué tipo de codificación se utilizará en otros sistemas operativos, por eso dudo que esta sea la solución definitiva.
Como alternativas, se me ocurre suponer que es utf8, intentar la conversión a unicode, y si falla, utilizar el str original y que QT se arregle… Supongo que esto haría que, en caso de fallar la conversion a unicode, se produzca el error de “QPainter::begin …”. ¿O quizá lo mejor es que falle rápido para hacer evidente el problema?
De cualquier manera, esto es más un workaround que un FIX real, pero por ahí sirve como paso intermedio…
Saludos!
Horacio