tilemap-editor 3.3.5__tar.gz → 3.3.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. {tilemap_editor-3.3.5/src/tilemap_editor.egg-info → tilemap_editor-3.3.7}/PKG-INFO +1 -1
  2. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/pyproject.toml +1 -1
  3. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/editor.py +6 -51
  4. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/frame_picker.py +8 -32
  5. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7/src/tilemap_editor.egg-info}/PKG-INFO +1 -1
  6. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/filemanager.py +13 -3
  7. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/spritesheet_grid.py +3 -3
  8. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/LICENSE +0 -0
  9. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/MANIFEST.in +0 -0
  10. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/README.md +0 -0
  11. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  12. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  13. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  14. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  15. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  16. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  17. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  18. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  19. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/arrow-down.svg +0 -0
  20. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/check.svg +0 -0
  21. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/checked.svg +0 -0
  22. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/close.svg +0 -0
  23. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/duplicate.svg +0 -0
  24. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/error.svg +0 -0
  25. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/file.svg +0 -0
  26. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/filedead.svg +0 -0
  27. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/fit.svg +0 -0
  28. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/folder.svg +0 -0
  29. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/grid.svg +0 -0
  30. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/image.svg +0 -0
  31. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/info.svg +0 -0
  32. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/load.svg +0 -0
  33. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/loop.svg +0 -0
  34. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/pan.svg +0 -0
  35. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/pause.svg +0 -0
  36. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/pencil.svg +0 -0
  37. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/play.svg +0 -0
  38. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/plus.svg +0 -0
  39. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/radio.svg +0 -0
  40. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/reset.svg +0 -0
  41. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/save.svg +0 -0
  42. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/stop.svg +0 -0
  43. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/tilemap.svg +0 -0
  44. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/tileset.svg +0 -0
  45. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/unchecked.svg +0 -0
  46. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/warning.svg +0 -0
  47. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/zoomin.svg +0 -0
  48. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/zoomout.svg +0 -0
  49. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/setup.cfg +0 -0
  50. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/configs/themes.py +0 -0
  51. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/constants.py +0 -0
  52. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/editor.py +0 -0
  53. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/event_map.py +0 -0
  54. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/layers.py +0 -0
  55. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/main.py +0 -0
  56. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/node_manager.py +0 -0
  57. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/nodes.py +0 -0
  58. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/__init__.py +0 -0
  59. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/__init__.py +0 -0
  60. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/editor.py +0 -0
  61. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/models.py +0 -0
  62. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/protocols.py +0 -0
  63. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/shape_editor.py +0 -0
  64. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/standalone.py +0 -0
  65. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/__init__.py +0 -0
  66. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/editor.py +0 -0
  67. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/models.py +0 -0
  68. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/protocols.py +0 -0
  69. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/standalone.py +0 -0
  70. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/__init__.py +0 -0
  71. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/__main__.py +0 -0
  72. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/clipboard_util.py +0 -0
  73. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/models.py +0 -0
  74. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/preview.py +0 -0
  75. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/protocols.py +0 -0
  76. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/runtime_load.py +0 -0
  77. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/standalone.py +0 -0
  78. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/timeline.py +0 -0
  79. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/validation.py +0 -0
  80. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_editor/__init__.py +0 -0
  81. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_editor/editor.py +0 -0
  82. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_editor/standalone.py +0 -0
  83. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/__init__.py +0 -0
  84. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/collision_painter.py +0 -0
  85. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/editor.py +0 -0
  86. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/models.py +0 -0
  87. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/protocols.py +0 -0
  88. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/standalone.py +0 -0
  89. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/standalone_automap.py +0 -0
  90. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/standalone_error_console.py +0 -0
  91. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/standalone_filemanager.py +0 -0
  92. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/standalone_image_viewer.py +0 -0
  93. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap.py +0 -0
  94. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/__init__.py +0 -0
  95. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/__main__.py +0 -0
  96. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/__init__.py +0 -0
  97. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  98. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  99. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  100. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  101. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  102. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  103. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  104. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  105. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/ToolMove.svg +0 -0
  106. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/arrow-down.svg +0 -0
  107. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/check.svg +0 -0
  108. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/checked.svg +0 -0
  109. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/close.svg +0 -0
  110. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/duplicate.svg +0 -0
  111. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/error.svg +0 -0
  112. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/file.svg +0 -0
  113. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/filedead.svg +0 -0
  114. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/fit.svg +0 -0
  115. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/folder.svg +0 -0
  116. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/grid.svg +0 -0
  117. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/image.svg +0 -0
  118. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/info.svg +0 -0
  119. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/load.svg +0 -0
  120. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/loop.svg +0 -0
  121. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/pan.svg +0 -0
  122. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/pause.svg +0 -0
  123. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/pencil.svg +0 -0
  124. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/play.svg +0 -0
  125. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/plus.svg +0 -0
  126. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/radio.svg +0 -0
  127. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/reset.svg +0 -0
  128. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/save.svg +0 -0
  129. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/stop.svg +0 -0
  130. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/tilemap.svg +0 -0
  131. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/tileset.svg +0 -0
  132. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/unchecked.svg +0 -0
  133. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/warning.svg +0 -0
  134. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/zoomin.svg +0 -0
  135. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/zoomout.svg +0 -0
  136. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/cli.py +0 -0
  137. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/main.py +0 -0
  138. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/settings.py +0 -0
  139. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/SOURCES.txt +0 -0
  140. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/dependency_links.txt +0 -0
  141. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/entry_points.txt +0 -0
  142. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/requires.txt +0 -0
  143. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/top_level.txt +0 -0
  144. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/ttypes/__init__.py +0 -0
  145. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/ttypes/tilemap.py +0 -0
  146. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/__init__.py +0 -0
  147. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/editor_preference.py +0 -0
  148. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/error_handler.py +0 -0
  149. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/font_manager.py +0 -0
  150. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/history.py +0 -0
  151. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/icon_manager.py +0 -0
  152. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/icons_cache.py +0 -0
  153. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/log_capture.py +0 -0
  154. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/project_paths.py +0 -0
  155. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/serialization.py +0 -0
  156. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/standalone.py +0 -0
  157. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/validation.py +0 -0
  158. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/__init__.py +0 -0
  159. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/automap_models.py +0 -0
  160. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/autotile_template.py +0 -0
  161. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/autotiler.py +0 -0
  162. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/input.py +0 -0
  163. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/layer_selector.py +0 -0
  164. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/map_properties.py +0 -0
  165. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/mapsetup.py +0 -0
  166. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/particle_presets.py +0 -0
  167. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/particle_system.py +0 -0
  168. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/regex_automap_designer.py +0 -0
  169. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/tile_grid.py +0 -0
  170. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/tile_selector.py +0 -0
  171. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/checkbox.py +0 -0
  172. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/collision_layer_mask.py +0 -0
  173. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/collision_layer_sidebar.py +0 -0
  174. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/confirm_dialog.py +0 -0
  175. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/draw_utils.py +0 -0
  176. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/fileinput.py +0 -0
  177. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/layer_type_dialog.py +0 -0
  178. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/menubar.py +0 -0
  179. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/mode_indicator.py +0 -0
  180. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/node_editor.py +0 -0
  181. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/node_selector.py +0 -0
  182. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/notification.py +0 -0
  183. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/particle_config_dialog.py +0 -0
  184. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/property_editor.py +0 -0
  185. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/region_selector.py +0 -0
  186. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/status_bar.py +0 -0
  187. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/theme.py +0 -0
  188. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/tileset_type_dialog.py +0 -0
  189. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/toolbar.py +0 -0
  190. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/tooltip.py +0 -0
  191. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_animation_library_grid_offset.py +0 -0
  192. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_collision_layer_mask.py +0 -0
  193. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_collision_layer_sidebar.py +0 -0
  194. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_editor_pan_mode.py +0 -0
  195. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_project_paths.py +0 -0
  196. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_render_scale.py +0 -0
  197. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_sprite_animation_editor_grid.py +0 -0
  198. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_tile_grid_selection.py +0 -0
  199. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_tile_selector_pick.py +0 -0
  200. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_tilemap_save.py +0 -0
  201. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_timeline_invalidate_cache.py +0 -0
  202. {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_toolbar_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilemap-editor
3
- Version: 3.3.5
3
+ Version: 3.3.7
4
4
  Summary: Pygame tilemap editor with SVG icons, professional UI, and sprite animation tools
5
5
  Author: tilemap editor contributors
6
6
  License: Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tilemap-editor"
7
- version = "3.3.5"
7
+ version = "3.3.7"
8
8
  description = "Pygame tilemap editor with SVG icons, professional UI, and sprite animation tools"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -310,10 +310,11 @@ class SpriteAnimationEditor:
310
310
  )
311
311
  elif event.type == pygame.KEYDOWN:
312
312
  if event.key == pygame.K_ESCAPE:
313
- if self._file_manager is not None:
314
- self.handle_event(event)
313
+ if self._info_tooltip_pinned:
314
+ self._info_tooltip_pinned = False
315
315
  continue
316
- if not self.handle_event(event):
316
+ # Don't close editor if file manager is open - let file manager handle ESC
317
+ if self._file_manager is None:
317
318
  running = False
318
319
  continue
319
320
  self.handle_event(event)
@@ -382,11 +383,6 @@ class SpriteAnimationEditor:
382
383
  self._info_tooltip_pinned = False
383
384
  return True
384
385
 
385
- # Close dropdown on Escape
386
- if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE and self._dropdown_open:
387
- self._dropdown_open = False
388
- return True
389
-
390
386
  if self._meta_panel_open and self._route_meta_panel_event(event):
391
387
  return True
392
388
 
@@ -431,14 +427,6 @@ class SpriteAnimationEditor:
431
427
  self._start_rename()
432
428
  return True
433
429
 
434
- # [ / ]: Cycle animations
435
- elif event.key == pygame.K_LEFTBRACKET:
436
- self._cycle_animation(-1)
437
- return True
438
- elif event.key == pygame.K_RIGHTBRACKET:
439
- self._cycle_animation(1)
440
- return True
441
-
442
430
  # Close dropdown on outside click
443
431
  if event.type == pygame.MOUSEBUTTONDOWN and self._dropdown_open:
444
432
  mouse = pygame.mouse.get_pos()
@@ -1252,32 +1240,13 @@ class SpriteAnimationEditor:
1252
1240
  screen.blit(text_surf, (tooltip_rect.x + padding, y))
1253
1241
  y += line_height
1254
1242
 
1255
- def _compute_dropdown_width(self, names: List[str]) -> int:
1256
- capped = self._active_anim_name or "(none)"
1257
- if len(capped) > 16:
1258
- capped = capped[:14] + ".."
1259
- cap_w = self._font.size(f" {capped}")[0]
1260
- max_name_w = 0
1261
- max_badge_w = 0
1262
- for name in names:
1263
- w = self._font.size(name)[0]
1264
- if w > max_name_w:
1265
- max_name_w = w
1266
- anim = self.library.get_animation(name)
1267
- if anim:
1268
- bw = self._font_sm.size(f"{anim.frame_count()}f")[0]
1269
- if bw > max_badge_w:
1270
- max_badge_w = bw
1271
- dd_w = max(cap_w, max_name_w + max_badge_w + 24)
1272
- return min(dd_w, 400)
1273
-
1274
1243
  def _draw_dropdown(self, screen: pygame.Surface) -> None:
1275
1244
  names = self.library.animation_names()
1276
1245
  if not names:
1277
1246
  return
1278
1247
 
1279
1248
  item_h = 26
1280
- dd_w = self._compute_dropdown_width(names)
1249
+ dd_w = self._btn_anim_selector.w
1281
1250
  dd_h = len(names) * item_h + 4
1282
1251
  dd_x = self._btn_anim_selector.x
1283
1252
  dd_y = self._btn_anim_selector.bottom + 2
@@ -1312,7 +1281,7 @@ class SpriteAnimationEditor:
1312
1281
  screen, _COLORS["dropdown_hover"], item_rect, border_radius=3
1313
1282
  )
1314
1283
 
1315
- display = name
1284
+ display = name if len(name) < 18 else name[:16] + ".."
1316
1285
  color = _COLORS["accent"] if is_active else _COLORS["text"]
1317
1286
  lbl = self._font.render(display, True, color)
1318
1287
  screen.blit(lbl, (item_rect.x + 8, item_rect.y + 4))
@@ -1489,20 +1458,6 @@ class SpriteAnimationEditor:
1489
1458
  self.preview.grid_offset_x = gx
1490
1459
  self.preview.grid_offset_y = gy
1491
1460
 
1492
- def _cycle_animation(self, delta: int) -> None:
1493
- """Switch to next (delta=1) or previous (delta=-1) animation."""
1494
- names = self.library.animation_names()
1495
- if not names:
1496
- return
1497
- if self._active_anim_name is None or self._active_anim_name not in names:
1498
- idx = 0 if delta > 0 else len(names) - 1
1499
- else:
1500
- idx = (names.index(self._active_anim_name) + delta) % len(names)
1501
- self._active_anim_name = names[idx]
1502
- self._sync_active_animation()
1503
- if self._dropdown_open:
1504
- self._dropdown_hover_idx = idx
1505
-
1506
1461
  def _sync_active_animation(self) -> None:
1507
1462
  """Push current animation data to sub-widgets."""
1508
1463
  anim = self._get_active()
@@ -81,13 +81,9 @@ class FramePicker:
81
81
  self._filter_input_rect = Rect(0, 0, 0, 0)
82
82
  self._btn_unused_rect = Rect(0, 0, 0, 0)
83
83
 
84
- # Callback fired when user clicks or drags over a tile
84
+ # Callback fired when user clicks a tile
85
85
  self.on_frame_clicked: Optional[Callable[[int], None]] = None
86
86
 
87
- # Drag selection state
88
- self._selecting = False
89
- self._last_drag_idx = -1
90
-
91
87
  # Fonts (created lazily so pygame.init() can happen anytime before draw)
92
88
  self._font: Optional[pygame.font.Font] = None
93
89
  self._font_sm: Optional[pygame.font.Font] = None
@@ -210,39 +206,19 @@ class FramePicker:
210
206
  self.offset_y = self._pan_start_offset[1] + dy
211
207
  return True
212
208
 
213
- # Left-click to select a frame (starts drag for multi-select)
209
+ # Left-click to select a frame
214
210
  if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
215
211
  if (
216
212
  self.rect.collidepoint(mouse)
217
213
  and mouse[1] >= self.rect.y + TOP_BAR_TOTAL
218
214
  ):
219
215
  idx = self._index_at(mouse)
220
- if idx >= 0 and self._tile_matches_filter(idx):
221
- self._selecting = True
222
- self._last_drag_idx = idx
223
- if self.on_frame_clicked:
224
- self.on_frame_clicked(idx)
225
- return True
226
-
227
- # Drag to select/deselect multiple frames (toggles like single-click)
228
- if event.type == pygame.MOUSEMOTION and self._selecting:
229
- if pygame.mouse.get_pressed()[0]:
230
- if self.rect.collidepoint(mouse) and mouse[1] >= self.rect.y + TOP_BAR_TOTAL:
231
- idx = self._index_at(mouse)
232
- if idx != self._last_drag_idx and idx >= 0 and self._tile_matches_filter(idx):
233
- self._last_drag_idx = idx
234
- if self.on_frame_clicked:
235
- self.on_frame_clicked(idx)
236
- return True
237
- else:
238
- self._selecting = False
239
- self._last_drag_idx = -1
240
-
241
- # End drag selection
242
- if event.type == pygame.MOUSEBUTTONUP and event.button == 1:
243
- if self._selecting:
244
- self._selecting = False
245
- self._last_drag_idx = -1
216
+ if (
217
+ idx >= 0
218
+ and self._tile_matches_filter(idx)
219
+ and self.on_frame_clicked
220
+ ):
221
+ self.on_frame_clicked(idx)
246
222
  return True
247
223
 
248
224
  # Scroll to pan / Ctrl+scroll to zoom
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilemap-editor
3
- Version: 3.3.5
3
+ Version: 3.3.7
4
4
  Summary: Pygame tilemap editor with SVG icons, professional UI, and sprite animation tools
5
5
  Author: tilemap editor contributors
6
6
  License: Proprietary
@@ -333,9 +333,19 @@ class ImagePreview:
333
333
  new_height = target_height
334
334
  new_width = int(target_height * aspect_ratio)
335
335
 
336
- scaled_surface = pygame.transform.smoothscale(
337
- self.current_image, (new_width, new_height)
338
- )
336
+ try:
337
+ image = self.current_image.convert_alpha()
338
+ except Exception:
339
+ image = self.current_image
340
+
341
+ try:
342
+ scaled_surface = pygame.transform.smoothscale(
343
+ image, (new_width, new_height)
344
+ )
345
+ except ValueError:
346
+ scaled_surface = pygame.transform.scale(
347
+ image, (new_width, new_height)
348
+ )
339
349
 
340
350
  self.scaled_cache = scaled_surface
341
351
  self.cached_target_size = (target_width, target_height)
@@ -312,7 +312,7 @@ class SpritesheetGrid:
312
312
  h = self.surface.get_height()
313
313
  new_w = max(1, int(w * factor))
314
314
  new_h = max(1, int(h * factor))
315
- self.surface = pygame.transform.smoothscale(self.surface, (new_w, new_h))
315
+ self.surface = pygame.transform.scale(self.surface, (new_w, new_h))
316
316
  self.tile_size = (max(1, int(self.tile_size[0] * factor)),
317
317
  max(1, int(self.tile_size[1] * factor)))
318
318
  self._recalc_grid()
@@ -690,7 +690,7 @@ class SpritesheetGrid:
690
690
 
691
691
  # Scaled spritesheet
692
692
  if scaled_w > 0 and scaled_h > 0:
693
- scaled = pygame.transform.smoothscale(self.surface, (scaled_w, scaled_h))
693
+ scaled = pygame.transform.scale(self.surface, (scaled_w, scaled_h))
694
694
  screen.blit(scaled, (img_x, img_y))
695
695
 
696
696
  cell_w = tw * z
@@ -740,7 +740,7 @@ class SpritesheetGrid:
740
740
  gh = max(1, int(th * z))
741
741
  ghost_rect = Rect(int(gx), int(gy), gw, gh)
742
742
  if self.rect.colliderect(ghost_rect):
743
- ghost_scaled = pygame.transform.smoothscale(tile, (gw, gh))
743
+ ghost_scaled = pygame.transform.scale(tile, (gw, gh))
744
744
  ghost_scaled.set_alpha(180)
745
745
  screen.blit(ghost_scaled, ghost_rect.topleft)
746
746
  pygame.draw.rect(screen, (100, 220, 100), ghost_rect, 2)
File without changes
File without changes
File without changes