tilemap-editor 3.2.1__tar.gz → 3.2.2__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 (186) hide show
  1. {tilemap_editor-3.2.1/src/tilemap_editor.egg-info → tilemap_editor-3.2.2}/PKG-INFO +1 -1
  2. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/pyproject.toml +1 -1
  3. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/character_collision/editor.py +91 -15
  4. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2/src/tilemap_editor.egg-info}/PKG-INFO +1 -1
  5. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/LICENSE +0 -0
  6. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/MANIFEST.in +0 -0
  7. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/README.md +0 -0
  8. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  9. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  10. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  11. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  12. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  13. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  14. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  15. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  16. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/arrow-down.svg +0 -0
  17. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/check.svg +0 -0
  18. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/checked.svg +0 -0
  19. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/close.svg +0 -0
  20. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/duplicate.svg +0 -0
  21. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/error.svg +0 -0
  22. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/file.svg +0 -0
  23. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/filedead.svg +0 -0
  24. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/fit.svg +0 -0
  25. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/folder.svg +0 -0
  26. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/grid.svg +0 -0
  27. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/image.svg +0 -0
  28. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/info.svg +0 -0
  29. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/load.svg +0 -0
  30. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/loop.svg +0 -0
  31. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/pan.svg +0 -0
  32. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/pause.svg +0 -0
  33. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/pencil.svg +0 -0
  34. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/play.svg +0 -0
  35. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/plus.svg +0 -0
  36. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/radio.svg +0 -0
  37. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/reset.svg +0 -0
  38. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/save.svg +0 -0
  39. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/stop.svg +0 -0
  40. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/tilemap.svg +0 -0
  41. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/tileset.svg +0 -0
  42. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/unchecked.svg +0 -0
  43. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/warning.svg +0 -0
  44. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/zoomin.svg +0 -0
  45. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/assets/icons/zoomout.svg +0 -0
  46. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/setup.cfg +0 -0
  47. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/configs/themes.py +0 -0
  48. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/constants.py +0 -0
  49. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/editor.py +0 -0
  50. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/event_map.py +0 -0
  51. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/layers.py +0 -0
  52. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/main.py +0 -0
  53. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/__init__.py +0 -0
  54. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/character_collision/__init__.py +0 -0
  55. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/character_collision/models.py +0 -0
  56. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/character_collision/protocols.py +0 -0
  57. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/character_collision/shape_editor.py +0 -0
  58. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/character_collision/standalone.py +0 -0
  59. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/object_tileset_collision/__init__.py +0 -0
  60. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/object_tileset_collision/editor.py +0 -0
  61. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/object_tileset_collision/models.py +0 -0
  62. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/object_tileset_collision/protocols.py +0 -0
  63. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/object_tileset_collision/standalone.py +0 -0
  64. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/__init__.py +0 -0
  65. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/__main__.py +0 -0
  66. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/clipboard_util.py +0 -0
  67. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/editor.py +0 -0
  68. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/frame_picker.py +0 -0
  69. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/models.py +0 -0
  70. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/preview.py +0 -0
  71. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/protocols.py +0 -0
  72. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/runtime_load.py +0 -0
  73. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/standalone.py +0 -0
  74. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/timeline.py +0 -0
  75. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_animation/validation.py +0 -0
  76. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_editor/__init__.py +0 -0
  77. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_editor/editor.py +0 -0
  78. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/sprite_editor/standalone.py +0 -0
  79. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/tileset_collision/__init__.py +0 -0
  80. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/tileset_collision/collision_painter.py +0 -0
  81. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/tileset_collision/editor.py +0 -0
  82. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/tileset_collision/models.py +0 -0
  83. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/tileset_collision/protocols.py +0 -0
  84. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/plugins/tileset_collision/standalone.py +0 -0
  85. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/standalone_automap.py +0 -0
  86. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/standalone_error_console.py +0 -0
  87. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/standalone_filemanager.py +0 -0
  88. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/standalone_image_viewer.py +0 -0
  89. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap.py +0 -0
  90. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/__init__.py +0 -0
  91. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/__main__.py +0 -0
  92. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/__init__.py +0 -0
  93. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  94. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  95. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  96. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  97. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  98. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  99. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  100. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  101. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/ToolMove.svg +0 -0
  102. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/arrow-down.svg +0 -0
  103. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/check.svg +0 -0
  104. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/checked.svg +0 -0
  105. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/close.svg +0 -0
  106. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/duplicate.svg +0 -0
  107. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/error.svg +0 -0
  108. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/file.svg +0 -0
  109. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/filedead.svg +0 -0
  110. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/fit.svg +0 -0
  111. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/folder.svg +0 -0
  112. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/grid.svg +0 -0
  113. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/image.svg +0 -0
  114. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/info.svg +0 -0
  115. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/load.svg +0 -0
  116. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/loop.svg +0 -0
  117. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/pan.svg +0 -0
  118. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/pause.svg +0 -0
  119. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/pencil.svg +0 -0
  120. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/play.svg +0 -0
  121. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/plus.svg +0 -0
  122. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/radio.svg +0 -0
  123. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/reset.svg +0 -0
  124. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/save.svg +0 -0
  125. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/stop.svg +0 -0
  126. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/tilemap.svg +0 -0
  127. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/tileset.svg +0 -0
  128. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/unchecked.svg +0 -0
  129. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/warning.svg +0 -0
  130. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/zoomin.svg +0 -0
  131. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/assets/icons/zoomout.svg +0 -0
  132. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/cli.py +0 -0
  133. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/main.py +0 -0
  134. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor/settings.py +0 -0
  135. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor.egg-info/SOURCES.txt +0 -0
  136. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor.egg-info/dependency_links.txt +0 -0
  137. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor.egg-info/entry_points.txt +0 -0
  138. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor.egg-info/requires.txt +0 -0
  139. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/tilemap_editor.egg-info/top_level.txt +0 -0
  140. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/ttypes/__init__.py +0 -0
  141. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/ttypes/tilemap.py +0 -0
  142. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/__init__.py +0 -0
  143. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/editor_preference.py +0 -0
  144. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/error_handler.py +0 -0
  145. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/font_manager.py +0 -0
  146. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/history.py +0 -0
  147. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/icon_manager.py +0 -0
  148. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/icons_cache.py +0 -0
  149. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/log_capture.py +0 -0
  150. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/project_paths.py +0 -0
  151. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/serialization.py +0 -0
  152. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/standalone.py +0 -0
  153. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/utils/validation.py +0 -0
  154. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/__init__.py +0 -0
  155. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/automap_models.py +0 -0
  156. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/autotile_template.py +0 -0
  157. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/autotiler.py +0 -0
  158. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/filemanager.py +0 -0
  159. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/input.py +0 -0
  160. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/layer_selector.py +0 -0
  161. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/map_properties.py +0 -0
  162. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/mapsetup.py +0 -0
  163. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/regex_automap_designer.py +0 -0
  164. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/spritesheet_grid.py +0 -0
  165. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/tile_grid.py +0 -0
  166. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/tile_selector.py +0 -0
  167. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/collision_layer_mask.py +0 -0
  168. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/collision_layer_sidebar.py +0 -0
  169. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/draw_utils.py +0 -0
  170. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/fileinput.py +0 -0
  171. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/layer_type_dialog.py +0 -0
  172. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/menubar.py +0 -0
  173. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/mode_indicator.py +0 -0
  174. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/notification.py +0 -0
  175. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/property_editor.py +0 -0
  176. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/region_selector.py +0 -0
  177. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/status_bar.py +0 -0
  178. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/theme.py +0 -0
  179. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/tileset_type_dialog.py +0 -0
  180. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/toolbar.py +0 -0
  181. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/src/widgets/ui/tooltip.py +0 -0
  182. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/tests/test_collision_layer_mask.py +0 -0
  183. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/tests/test_collision_layer_sidebar.py +0 -0
  184. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/tests/test_project_paths.py +0 -0
  185. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/tests/test_render_scale.py +0 -0
  186. {tilemap_editor-3.2.1 → tilemap_editor-3.2.2}/tests/test_tilemap_save.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilemap-editor
3
- Version: 3.2.1
3
+ Version: 3.2.2
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.2.1"
7
+ version = "3.2.2"
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"
@@ -3,7 +3,7 @@ Character Collision Editor — Define collision shapes for character sprites.
3
3
 
4
4
  Layout:
5
5
  +----------------------------------------------------+
6
- | Toolbar: [Character Name] [Shape Type Buttons] |
6
+ | Toolbar: [Name: _______] [Shape Type Buttons] |
7
7
  +----------------------------------------------------+
8
8
  | |
9
9
  | Shape Editor |
@@ -16,6 +16,7 @@ Layout:
16
16
 
17
17
  from __future__ import annotations
18
18
 
19
+ import re
19
20
  from typing import Optional, Tuple, Dict, Any
20
21
  from pathlib import Path
21
22
 
@@ -30,6 +31,7 @@ from utils.error_handler import error_handler, error_context
30
31
  from widgets.ui.theme import COLORS, FONTS
31
32
  from widgets.ui.draw_utils import draw_panel, draw_button
32
33
  from widgets.ui.collision_layer_sidebar import CollisionLayerSidebar
34
+ from widgets.input import InlineTextInput
33
35
 
34
36
 
35
37
  class CharacterCollisionEditor:
@@ -73,6 +75,9 @@ class CharacterCollisionEditor:
73
75
  self._font = font_manager.get_font(FONTS.name, FONTS.size_md, FontWeight.REGULAR)
74
76
  self._font_sm = font_manager.get_font(FONTS.name, FONTS.size_sm, FontWeight.REGULAR)
75
77
 
78
+ # Editable name input
79
+ self._name_input = InlineTextInput("char_name", default_val=self.character_name)
80
+
76
81
  # Shape type buttons
77
82
  self.shape_buttons: Dict[ShapeType, Rect] = {}
78
83
  self._init_shape_buttons()
@@ -106,6 +111,18 @@ class CharacterCollisionEditor:
106
111
 
107
112
  self._init_shape_buttons()
108
113
 
114
+ def _get_save_name(self) -> str:
115
+ """Build filename from the name input.
116
+
117
+ Returns "<safe-name>-character.collision.json" if non-empty,
118
+ "character.collision.json" otherwise.
119
+ """
120
+ name = self._name_input.text.strip()
121
+ if name:
122
+ safe = re.sub(r'[^\w\-]+', '-', name).strip('-').lower()
123
+ return f"{safe}-character.collision.json"
124
+ return "character.collision.json"
125
+
109
126
  def get_collision_data(self) -> CharacterCollisionData:
110
127
  """Get the current collision data"""
111
128
  shape_data = self.shape_editor.get_shape_data()
@@ -145,7 +162,7 @@ class CharacterCollisionEditor:
145
162
  raise ValueError(f"Unknown shape type: {shape_type}")
146
163
 
147
164
  return CharacterCollisionData(
148
- name=self.character_name,
165
+ name=self._name_input.text.strip() or self.character_name,
149
166
  shape=shape,
150
167
  properties={
151
168
  "collision_layer": self.layer_sidebar.get_layer(),
@@ -156,12 +173,28 @@ class CharacterCollisionEditor:
156
173
  def load_collision_data(self, data: CharacterCollisionData) -> None:
157
174
  """Load collision data"""
158
175
  self.character_name = data.name
176
+ self._name_input.text = data.name
177
+ self._name_input.cursor_pos = len(data.name)
159
178
  self.shape_editor.load_shape_data(data.shape.to_dict())
160
179
  layer = data.properties.get("collision_layer", 1)
161
180
  mask = data.properties.get("collision_mask", 0xFFFF)
162
181
  self.layer_sidebar.set_layer(layer)
163
182
  self.layer_sidebar.set_mask(mask)
164
183
 
184
+ def _get_save_path(self) -> Path:
185
+ """Full path for saving/loading collision data."""
186
+ collision_dir = self._get_collision_dir()
187
+ return collision_dir / self._get_save_name()
188
+
189
+ def _get_load_path(self) -> Path:
190
+ """Path to load from — name-priority, fallback to default."""
191
+ collision_dir = self._get_collision_dir()
192
+ name_path = collision_dir / self._get_save_name()
193
+ if name_path.exists():
194
+ return name_path
195
+ # Fallback to default
196
+ return collision_dir / "character.collision.json"
197
+
165
198
  def _get_collision_dir(self) -> Path:
166
199
  """Get collision data directory (data_root/character_collision)"""
167
200
  if self._data_root is None:
@@ -189,11 +222,17 @@ class CharacterCollisionEditor:
189
222
  except Exception as e:
190
223
  error_handler.capture(e, context="load_character_collision")
191
224
 
225
+ def _name_input_rect(self) -> Rect:
226
+ """Screen rect for the editable name field in the toolbar."""
227
+ return Rect(self.rect.x + 62, self.rect.y + 10, 175, 28)
228
+
192
229
  def handle_event(self, event: pygame.event.Event) -> bool:
193
230
  """Handle input events"""
194
231
  if not self.visible:
195
232
  return False
196
233
 
234
+ mouse = pygame.mouse.get_pos()
235
+
197
236
  # Layer/mask sidebar handles events when open
198
237
  if self.layer_sidebar.handle_event(event):
199
238
  return True
@@ -202,19 +241,40 @@ class CharacterCollisionEditor:
202
241
  if self.layer_sidebar.handle_toggle_event(event):
203
242
  return True
204
243
 
205
- # Keyboard shortcut: L to toggle sidebar
206
- if event.type == pygame.KEYDOWN and event.key == pygame.K_l:
244
+ # Keyboard shortcut: L to toggle sidebar (skip when name input is focused)
245
+ if event.type == pygame.KEYDOWN and event.key == pygame.K_l and not self._name_input.is_focused:
207
246
  mods = pygame.key.get_mods()
208
247
  if not (mods & (pygame.KMOD_CTRL | pygame.KMOD_LMETA)):
209
248
  self.layer_sidebar.toggle()
210
249
  return True
211
250
 
251
+ # Name input handling
252
+ if self._name_input.is_focused:
253
+ if event.type == pygame.KEYDOWN:
254
+ if event.key == pygame.K_RETURN:
255
+ self._name_input.is_focused = False
256
+ return True
257
+ elif event.key == pygame.K_ESCAPE:
258
+ self._name_input.is_focused = False
259
+ return True
260
+ if self._name_input.handle_event(event, self._font):
261
+ return True
262
+ # Tab/click outside handled below
263
+
264
+ # Click-to-focus name input
265
+ if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
266
+ if self._name_input_rect().collidepoint(mouse):
267
+ self._name_input.is_focused = True
268
+ self._name_input.cursor_pos = len(self._name_input.text)
269
+ self._name_input.selection_start = None
270
+ return True
271
+ elif self._name_input.is_focused:
272
+ self._name_input.is_focused = False
273
+
212
274
  # Let shape editor handle events next
213
275
  if self.shape_editor.handle_event(event):
214
276
  return True
215
277
 
216
- mouse = pygame.mouse.get_pos()
217
-
218
278
  # Shape type button clicks
219
279
  if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
220
280
  for shape_type, button_rect in self.shape_buttons.items():
@@ -249,13 +309,30 @@ class CharacterCollisionEditor:
249
309
  toolbar_rect = Rect(self.rect.x, self.rect.y, self.rect.w, self.toolbar_height)
250
310
  draw_panel(screen, toolbar_rect, COLORS.header, COLORS.border)
251
311
 
252
- # Title
253
- title = self._font.render(
254
- f"Character Collision Editor {self.character_name}",
255
- True,
256
- COLORS.text
312
+ # "Name:" label
313
+ label = self._font_sm.render("Name:", True, COLORS.text)
314
+ screen.blit(label, (toolbar_rect.x + 10, toolbar_rect.y + 17))
315
+
316
+ # Editable name field
317
+ name_rect = self._name_input_rect()
318
+ bg_color = COLORS.panel if self._name_input.is_focused else COLORS.panel_alt
319
+ pygame.draw.rect(screen, bg_color, name_rect, border_radius=4)
320
+ pygame.draw.rect(
321
+ screen, COLORS.accent if self._name_input.is_focused else COLORS.border,
322
+ name_rect, 1, border_radius=4,
257
323
  )
258
- screen.blit(title, (toolbar_rect.x + 10, toolbar_rect.y + 15))
324
+
325
+ # Render input text
326
+ display_name = self._name_input.text or "character"
327
+ txt = self._font_sm.render(display_name, True, COLORS.text)
328
+ screen.blit(txt, (name_rect.x + 4, name_rect.y + 5))
329
+
330
+ # Cursor when focused
331
+ if self._name_input.is_focused and (pygame.time.get_ticks() // 400) % 2:
332
+ pre = self._font_sm.render(self._name_input.text[:self._name_input.cursor_pos], True, (0, 0, 0))
333
+ cx = name_rect.x + 4 + pre.get_width()
334
+ cy = name_rect.y + 5
335
+ pygame.draw.line(screen, COLORS.text, (cx, cy), (cx, cy + txt.get_height()), 1)
259
336
 
260
337
  # Shape type buttons
261
338
  for shape_type, button_rect in self.shape_buttons.items():
@@ -352,15 +429,14 @@ class CharacterCollisionEditor:
352
429
  # Ctrl+S / Cmd+S to save
353
430
  collision_dir = self._get_collision_dir()
354
431
  collision_dir.mkdir(parents=True, exist_ok=True)
355
- save_path = collision_dir / "character_collision.json"
432
+ save_path = self._get_save_path()
356
433
  self.save_to_file(save_path)
357
434
  print(f"Saved collision data to {save_path}")
358
435
  elif event.key == pygame.K_l and (
359
436
  pygame.key.get_mods() & (pygame.KMOD_LCTRL | pygame.KMOD_LMETA)
360
437
  ):
361
438
  # Ctrl+L / Cmd+L to load
362
- collision_dir = self._get_collision_dir()
363
- load_path = collision_dir / "character_collision.json"
439
+ load_path = self._get_load_path()
364
440
  if load_path.exists():
365
441
  self.load_from_file(load_path)
366
442
  print(f"Loaded collision data from {load_path}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilemap-editor
3
- Version: 3.2.1
3
+ Version: 3.2.2
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
File without changes
File without changes
File without changes