tilemap-editor 4.3.2__tar.gz → 4.3.4__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 (228) hide show
  1. {tilemap_editor-4.3.2/src/tilemap_editor.egg-info → tilemap_editor-4.3.4}/PKG-INFO +1 -1
  2. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/pyproject.toml +1 -1
  3. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/layers.py +8 -0
  4. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap.py +4 -0
  5. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4/src/tilemap_editor.egg-info}/PKG-INFO +1 -1
  6. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/layer_selector.py +47 -3
  7. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_layers_autotile.py +45 -0
  8. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/LICENSE +0 -0
  9. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/MANIFEST.in +0 -0
  10. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/README.md +0 -0
  11. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  12. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  13. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  14. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  15. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  16. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  17. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  18. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  19. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/arrow-down.svg +0 -0
  20. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/check.svg +0 -0
  21. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/checked.svg +0 -0
  22. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/close.svg +0 -0
  23. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/duplicate.svg +0 -0
  24. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/error.svg +0 -0
  25. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/file.svg +0 -0
  26. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/filedead.svg +0 -0
  27. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/fit.svg +0 -0
  28. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/folder.svg +0 -0
  29. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/grid.svg +0 -0
  30. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/image.svg +0 -0
  31. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/info.svg +0 -0
  32. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/load.svg +0 -0
  33. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/loop.svg +0 -0
  34. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/onion.svg +0 -0
  35. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/pan.svg +0 -0
  36. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/pause.svg +0 -0
  37. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/pencil.svg +0 -0
  38. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/play.svg +0 -0
  39. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/plus.svg +0 -0
  40. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/radio.svg +0 -0
  41. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/reset.svg +0 -0
  42. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/save.svg +0 -0
  43. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/skip-back.svg +0 -0
  44. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/skip-forward.svg +0 -0
  45. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/stop.svg +0 -0
  46. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/tilemap.svg +0 -0
  47. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/tileset.svg +0 -0
  48. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/unchecked.svg +0 -0
  49. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/warning.svg +0 -0
  50. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/zoomin.svg +0 -0
  51. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/assets/icons/zoomout.svg +0 -0
  52. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/setup.cfg +0 -0
  53. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/constants.py +0 -0
  54. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/editor.py +0 -0
  55. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/event_map.py +0 -0
  56. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/main.py +0 -0
  57. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/node_manager.py +0 -0
  58. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/nodes.py +0 -0
  59. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/__init__.py +0 -0
  60. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/character_collision/__init__.py +0 -0
  61. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/character_collision/editor.py +0 -0
  62. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/character_collision/models.py +0 -0
  63. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/character_collision/protocols.py +0 -0
  64. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/character_collision/shape_editor.py +0 -0
  65. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/character_collision/standalone.py +0 -0
  66. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/object_tileset_collision/__init__.py +0 -0
  67. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/object_tileset_collision/editor.py +0 -0
  68. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/object_tileset_collision/models.py +0 -0
  69. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/object_tileset_collision/protocols.py +0 -0
  70. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/object_tileset_collision/standalone.py +0 -0
  71. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/__init__.py +0 -0
  72. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/__main__.py +0 -0
  73. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/clipboard_util.py +0 -0
  74. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/editor.py +0 -0
  75. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/frame_picker.py +0 -0
  76. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/models.py +0 -0
  77. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/preview.py +0 -0
  78. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/protocols.py +0 -0
  79. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/runtime_load.py +0 -0
  80. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/standalone.py +0 -0
  81. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/timeline.py +0 -0
  82. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_animation/validation.py +0 -0
  83. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_editor/__init__.py +0 -0
  84. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_editor/dialogs.py +0 -0
  85. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_editor/editor.py +0 -0
  86. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_editor/region_export.py +0 -0
  87. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/sprite_editor/standalone.py +0 -0
  88. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/tileset_collision/__init__.py +0 -0
  89. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/tileset_collision/collision_painter.py +0 -0
  90. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/tileset_collision/editor.py +0 -0
  91. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/tileset_collision/models.py +0 -0
  92. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/tileset_collision/protocols.py +0 -0
  93. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/plugins/tileset_collision/standalone.py +0 -0
  94. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/standalone_automap.py +0 -0
  95. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/standalone_error_console.py +0 -0
  96. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/standalone_filemanager.py +0 -0
  97. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/standalone_image_viewer.py +0 -0
  98. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/__init__.py +0 -0
  99. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/__main__.py +0 -0
  100. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/__init__.py +0 -0
  101. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  102. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  103. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  104. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  105. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  106. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  107. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  108. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  109. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/ToolMove.svg +0 -0
  110. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/arrow-down.svg +0 -0
  111. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/check.svg +0 -0
  112. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/checked.svg +0 -0
  113. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/close.svg +0 -0
  114. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/duplicate.svg +0 -0
  115. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/error.svg +0 -0
  116. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/file.svg +0 -0
  117. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/filedead.svg +0 -0
  118. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/fit.svg +0 -0
  119. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/fold_down_arrow.svg +0 -0
  120. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/folder.svg +0 -0
  121. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/gear.svg +0 -0
  122. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/grid.svg +0 -0
  123. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/image.svg +0 -0
  124. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/info.svg +0 -0
  125. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/load.svg +0 -0
  126. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/loop.svg +0 -0
  127. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/miniobj.svg +0 -0
  128. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/onion.svg +0 -0
  129. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/pan.svg +0 -0
  130. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/pause.svg +0 -0
  131. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/pencil.svg +0 -0
  132. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/play.svg +0 -0
  133. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/plus.svg +0 -0
  134. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/radio.svg +0 -0
  135. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/reset.svg +0 -0
  136. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/save.svg +0 -0
  137. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/skip-back.svg +0 -0
  138. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/skip-forward.svg +0 -0
  139. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/stop.svg +0 -0
  140. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/tilemap.svg +0 -0
  141. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/tileset.svg +0 -0
  142. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/unchecked.svg +0 -0
  143. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/unfold_right_arrow.svg +0 -0
  144. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/warning.svg +0 -0
  145. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/zoomin.svg +0 -0
  146. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/assets/icons/zoomout.svg +0 -0
  147. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/cli.py +0 -0
  148. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/main.py +0 -0
  149. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor/settings.py +0 -0
  150. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor.egg-info/SOURCES.txt +0 -0
  151. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor.egg-info/dependency_links.txt +0 -0
  152. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor.egg-info/entry_points.txt +0 -0
  153. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor.egg-info/requires.txt +0 -0
  154. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/tilemap_editor.egg-info/top_level.txt +0 -0
  155. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/ttypes/__init__.py +0 -0
  156. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/ttypes/tilemap.py +0 -0
  157. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/__init__.py +0 -0
  158. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/editor_preference.py +0 -0
  159. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/error_handler.py +0 -0
  160. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/font_manager.py +0 -0
  161. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/history.py +0 -0
  162. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/icon_manager.py +0 -0
  163. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/icons_cache.py +0 -0
  164. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/log_capture.py +0 -0
  165. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/project_paths.py +0 -0
  166. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/serialization.py +0 -0
  167. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/standalone.py +0 -0
  168. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/utils/validation.py +0 -0
  169. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/__init__.py +0 -0
  170. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/automap_models.py +0 -0
  171. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/autotile_template.py +0 -0
  172. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/autotiler.py +0 -0
  173. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/filemanager.py +0 -0
  174. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/input.py +0 -0
  175. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/map_properties.py +0 -0
  176. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/mapsetup.py +0 -0
  177. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/particle_presets.py +0 -0
  178. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/particle_system.py +0 -0
  179. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/regex_automap_designer.py +0 -0
  180. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/spritesheet_grid.py +0 -0
  181. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/tile_grid.py +0 -0
  182. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/tile_selector.py +0 -0
  183. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/button.py +0 -0
  184. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/checkbox.py +0 -0
  185. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/collision_layer_mask.py +0 -0
  186. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/collision_layer_sidebar.py +0 -0
  187. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/confirm_dialog.py +0 -0
  188. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/dialog_base.py +0 -0
  189. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/drag_tracker.py +0 -0
  190. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/draw_utils.py +0 -0
  191. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/fileinput.py +0 -0
  192. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/label.py +0 -0
  193. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/layer_type_dialog.py +0 -0
  194. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/menubar.py +0 -0
  195. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/mode_indicator.py +0 -0
  196. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/node_editor.py +0 -0
  197. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/node_selector.py +0 -0
  198. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/notification.py +0 -0
  199. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/particle_config_dialog.py +0 -0
  200. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/property_editor.py +0 -0
  201. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/region_selector.py +0 -0
  202. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/scrollbar.py +0 -0
  203. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/sidebar_container.py +0 -0
  204. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/splitter.py +0 -0
  205. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/status_bar.py +0 -0
  206. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/theme.py +0 -0
  207. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/tileset_type_dialog.py +0 -0
  208. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/toast.py +0 -0
  209. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/tool_manager.py +0 -0
  210. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/toolbar.py +0 -0
  211. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/tooltip.py +0 -0
  212. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/ui/tree_widget.py +0 -0
  213. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/src/widgets/widget_base.py +0 -0
  214. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_animation_library_grid_offset.py +0 -0
  215. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_collision_layer_mask.py +0 -0
  216. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_collision_layer_sidebar.py +0 -0
  217. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_drag_tracker.py +0 -0
  218. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_editor_pan_mode.py +0 -0
  219. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_gid_collision.py +0 -0
  220. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_project_paths.py +0 -0
  221. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_render_scale.py +0 -0
  222. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_serialization_regression.py +0 -0
  223. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_sprite_animation_editor_grid.py +0 -0
  224. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_tile_grid_selection.py +0 -0
  225. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_tile_selector_pick.py +0 -0
  226. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_tilemap_save.py +0 -0
  227. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_timeline_invalidate_cache.py +0 -0
  228. {tilemap_editor-4.3.2 → tilemap_editor-4.3.4}/tests/test_toolbar_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilemap-editor
3
- Version: 4.3.2
3
+ Version: 4.3.4
4
4
  Summary: Pygame tilemap editor with collision, animation, sprite & particle 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 = "4.3.2"
7
+ version = "4.3.4"
8
8
  description = "Pygame tilemap editor with collision, animation, sprite & particle tools"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -27,6 +27,8 @@ class Layer:
27
27
  visible: bool = True,
28
28
  locked: bool = False,
29
29
  opacity: float = 1.0,
30
+ y_sort: bool = False,
31
+ y_sort_origin: int = 0,
30
32
  ):
31
33
  self.name = name
32
34
  self.layer_type = layer_type
@@ -34,6 +36,8 @@ class Layer:
34
36
  self.visible = visible
35
37
  self.locked = locked
36
38
  self.opacity = max(0.0, min(1.0, opacity))
39
+ self.y_sort = y_sort
40
+ self.y_sort_origin = y_sort_origin
37
41
  self.properties: dict[str, Any] = {}
38
42
 
39
43
  self.tiles: dict[tuple[int, int], TypeTile] = {}
@@ -303,6 +307,8 @@ class Layer:
303
307
  "visible": self.visible,
304
308
  "locked": self.locked,
305
309
  "opacity": self.opacity,
310
+ "y_sort": self.y_sort,
311
+ "y_sort_origin": self.y_sort_origin,
306
312
  }
307
313
 
308
314
  if self.tiles:
@@ -331,6 +337,8 @@ class Layer:
331
337
  visible=data.get("visible", True),
332
338
  locked=data.get("locked", False),
333
339
  opacity=data.get("opacity", 1.0),
340
+ y_sort=data.get("y_sort", False),
341
+ y_sort_origin=data.get("y_sort_origin", 0),
334
342
  )
335
343
 
336
344
  if "tiles" in data:
@@ -331,6 +331,8 @@ class Tilemap:
331
331
  "locked": layer.locked,
332
332
  "opacity": layer.opacity,
333
333
  "z_index": layer.z_index,
334
+ "y_sort": layer.y_sort,
335
+ "y_sort_origin": layer.y_sort_origin,
334
336
  "tiles": {},
335
337
  }
336
338
 
@@ -674,6 +676,8 @@ class Tilemap:
674
676
  visible=layer_data.get("visible", True),
675
677
  locked=layer_data.get("locked", False),
676
678
  opacity=layer_data.get("opacity", 1.0),
679
+ y_sort=layer_data.get("y_sort", False),
680
+ y_sort_origin=layer_data.get("y_sort_origin", 0),
677
681
  )
678
682
  layer.properties = layer_data.get("properties", {})
679
683
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilemap-editor
3
- Version: 4.3.2
3
+ Version: 4.3.4
4
4
  Summary: Pygame tilemap editor with collision, animation, sprite & particle tools
5
5
  Author: tilemap editor contributors
6
6
  License: Proprietary
@@ -109,6 +109,15 @@ class LayerSelector:
109
109
  layer.locked = not layer.locked
110
110
  return True
111
111
 
112
+ ysort_rect = self._get_ysort_icon_rect(layer_idx)
113
+ if ysort_rect and ysort_rect.collidepoint(mouse_pos):
114
+ layer = self.editor.tilemap.layer_manager.get_layer(
115
+ layer_idx
116
+ )
117
+ if layer:
118
+ layer.y_sort = not layer.y_sort
119
+ return True
120
+
112
121
  opacity_rect = self._get_opacity_bar_rect(layer_idx)
113
122
  if opacity_rect and opacity_rect.collidepoint(mouse_pos):
114
123
  layer = self.editor.tilemap.layer_manager.get_layer(
@@ -269,6 +278,27 @@ class LayerSelector:
269
278
  bar_y = item_y + self.item_h - bar_h - 3
270
279
  return Rect(bar_x, bar_y, bar_w, bar_h)
271
280
 
281
+ def _get_ysort_icon_rect(self, layer_idx: int) -> Rect | None:
282
+ """Get the clickable rect for the y-sort toggle of a layer."""
283
+ if layer_idx is None:
284
+ return None
285
+
286
+ item_y = self.list_rect.y + (layer_idx * self.item_h) - self.scroll_offset
287
+
288
+ if item_y + self.item_h < self.list_rect.y or item_y > self.list_rect.bottom:
289
+ return None
290
+
291
+ item_rect = Rect(
292
+ self.list_rect.x,
293
+ item_y,
294
+ self.list_rect.width,
295
+ self.item_h,
296
+ )
297
+
298
+ ysort_x = item_rect.x + 5
299
+ ysort_y = item_rect.y + 4
300
+ return Rect(ysort_x, ysort_y, 12, 20)
301
+
272
302
  def _get_eye_icon_rect(self, layer_idx: int, mouse_pos) -> Rect | None:
273
303
  """Get the clickable rect for the eye icon of a layer."""
274
304
  if layer_idx is None:
@@ -435,16 +465,20 @@ class LayerSelector:
435
465
  mx, my = pygame.mouse.get_pos()
436
466
  eye_rect = self._get_eye_icon_rect(i, (mx, my))
437
467
  lock_rect = self._get_lock_icon_rect(i, (mx, my))
468
+ ysort_rect = self._get_ysort_icon_rect(i)
438
469
  if eye_rect and eye_rect.collidepoint(mx, my):
439
470
  self.editor.tooltip.show("Toggle Visibility", (mx + 10, my + 10))
440
471
  elif lock_rect and lock_rect.collidepoint(mx, my):
441
472
  self.editor.tooltip.show("Toggle Lock", (mx + 10, my + 10))
473
+ elif ysort_rect and ysort_rect.collidepoint(mx, my):
474
+ label = "On" if layer.y_sort else "Off"
475
+ self.editor.tooltip.show(f"Y-Sort: {label}", (mx + 10, my + 10))
442
476
 
443
477
  if i == self.renaming_layer_idx:
444
478
  pygame.draw.rect(
445
479
  screen,
446
480
  COLORS.selected,
447
- Rect(item_rect.x + 4, item_rect.y + 4, 120, 20),
481
+ Rect(item_rect.x + 22, item_rect.y + 4, 120, 20),
448
482
  border_radius=SHAPE.radius_sm,
449
483
  )
450
484
  name_txt = self.font_layer.render(
@@ -452,7 +486,7 @@ class LayerSelector:
452
486
  )
453
487
  else:
454
488
  name_txt = self.font_layer.render(layer.name, True, COLORS.text)
455
- screen.blit(name_txt, (item_rect.x + 5, item_rect.y + 5))
489
+ screen.blit(name_txt, (item_rect.x + 22, item_rect.y + 5))
456
490
 
457
491
  opacity_bar = self._get_opacity_bar_rect(i)
458
492
  if opacity_bar:
@@ -508,6 +542,16 @@ class LayerSelector:
508
542
  screen, COLORS.text_muted, Rect(lock_x - 4, lock_y - 4, 8, 8), 1
509
543
  )
510
544
 
545
+ ysort_rect = self._get_ysort_icon_rect(i)
546
+ if ysort_rect:
547
+ ysort_color = COLORS.accent if layer.y_sort else COLORS.text_dim
548
+ pygame.draw.rect(
549
+ screen, ysort_color, ysort_rect,
550
+ border_radius=SHAPE.radius_sm,
551
+ )
552
+ ysort_txt = self.font_layer.render("Y", True, COLORS.text)
553
+ screen.blit(ysort_txt, (ysort_rect.x + 3, ysort_rect.y + 3))
554
+
511
555
  if self.dragging_layer_idx is not None:
512
556
  mouse_y = pygame.mouse.get_pos()[1]
513
557
  dragging_layer = layer_manager.layers[self.dragging_layer_idx]
@@ -525,7 +569,7 @@ class LayerSelector:
525
569
  screen.blit(drag_surf, preview_rect)
526
570
 
527
571
  name_txt = self.font_layer.render(dragging_layer.name, True, COLORS.text)
528
- screen.blit(name_txt, (preview_rect.x + 5, preview_rect.y + 5))
572
+ screen.blit(name_txt, (preview_rect.x + 22, preview_rect.y + 5))
529
573
 
530
574
  pygame.draw.rect(screen, (150, 150, 255), preview_rect, 2)
531
575
 
@@ -1018,3 +1018,48 @@ class TestPropagation:
1018
1018
  changes = layer._autotile_tiles([solo, top], [(5, 5)])
1019
1019
  assert changes == 1
1020
1020
  assert layer.tiles[(5, 5)]["variant"] == 1
1021
+
1022
+
1023
+ class TestLayerYSort:
1024
+ def test_default_is_false(self):
1025
+ layer = Layer("test")
1026
+ assert layer.y_sort is False
1027
+
1028
+ def test_to_dict_includes_y_sort(self):
1029
+ layer = Layer("test", layer_type="tile")
1030
+ layer.y_sort = True
1031
+ data = layer.to_dict()
1032
+ assert data["y_sort"] is True
1033
+
1034
+ def test_from_dict_reads_y_sort(self):
1035
+ layer = Layer.from_dict({"name": "test", "type": "tile", "y_sort": True})
1036
+ assert layer.y_sort is True
1037
+
1038
+ def test_from_dict_defaults_false(self):
1039
+ layer = Layer.from_dict({"name": "test", "type": "tile"})
1040
+ assert layer.y_sort is False
1041
+
1042
+ def test_roundtrip(self):
1043
+ layer = Layer("bushes", layer_type="tile", y_sort=True)
1044
+ data = layer.to_dict()
1045
+ restored = Layer.from_dict(data)
1046
+ assert restored.y_sort is True
1047
+ assert restored.name == "bushes"
1048
+
1049
+ def test_y_sort_origin_defaults_to_zero(self):
1050
+ layer = Layer("test")
1051
+ assert layer.y_sort_origin == 0
1052
+
1053
+ def test_to_dict_includes_y_sort_origin(self):
1054
+ layer = Layer("test", y_sort_origin=16)
1055
+ data = layer.to_dict()
1056
+ assert data["y_sort_origin"] == 16
1057
+
1058
+ def test_from_dict_reads_y_sort_origin(self):
1059
+ layer = Layer.from_dict({"name": "test", "type": "tile", "y_sort_origin": 32})
1060
+ assert layer.y_sort_origin == 32
1061
+
1062
+ def test_y_sort_origin_roundtrip(self):
1063
+ layer = Layer("test", y_sort=True, y_sort_origin=24)
1064
+ restored = Layer.from_dict(layer.to_dict())
1065
+ assert restored.y_sort_origin == 24
File without changes
File without changes
File without changes