tilemap-editor 3.1.2__tar.gz → 3.1.3__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 (180) hide show
  1. {tilemap_editor-3.1.2/src/tilemap_editor.egg-info → tilemap_editor-3.1.3}/PKG-INFO +1 -1
  2. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/pyproject.toml +1 -1
  3. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/editor.py +1 -1
  4. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/settings.py +4 -0
  5. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3/src/tilemap_editor.egg-info}/PKG-INFO +1 -1
  6. tilemap_editor-3.1.3/tests/test_project_paths.py +145 -0
  7. tilemap_editor-3.1.2/tests/test_project_paths.py +0 -73
  8. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/LICENSE +0 -0
  9. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/MANIFEST.in +0 -0
  10. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/README.md +0 -0
  11. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  12. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  13. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  14. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  15. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  16. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  17. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  18. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  19. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/arrow-down.svg +0 -0
  20. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/check.svg +0 -0
  21. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/checked.svg +0 -0
  22. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/close.svg +0 -0
  23. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/duplicate.svg +0 -0
  24. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/error.svg +0 -0
  25. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/file.svg +0 -0
  26. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/filedead.svg +0 -0
  27. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/fit.svg +0 -0
  28. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/folder.svg +0 -0
  29. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/grid.svg +0 -0
  30. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/image.svg +0 -0
  31. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/info.svg +0 -0
  32. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/load.svg +0 -0
  33. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/loop.svg +0 -0
  34. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/pan.svg +0 -0
  35. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/pause.svg +0 -0
  36. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/pencil.svg +0 -0
  37. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/play.svg +0 -0
  38. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/plus.svg +0 -0
  39. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/radio.svg +0 -0
  40. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/reset.svg +0 -0
  41. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/save.svg +0 -0
  42. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/stop.svg +0 -0
  43. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/tilemap.svg +0 -0
  44. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/tileset.svg +0 -0
  45. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/unchecked.svg +0 -0
  46. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/warning.svg +0 -0
  47. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/zoomin.svg +0 -0
  48. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/assets/icons/zoomout.svg +0 -0
  49. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/setup.cfg +0 -0
  50. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/configs/themes.py +0 -0
  51. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/constants.py +0 -0
  52. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/event_map.py +0 -0
  53. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/layers.py +0 -0
  54. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/main.py +0 -0
  55. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/__init__.py +0 -0
  56. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/character_collision/__init__.py +0 -0
  57. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/character_collision/editor.py +0 -0
  58. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/character_collision/models.py +0 -0
  59. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/character_collision/protocols.py +0 -0
  60. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/character_collision/shape_editor.py +0 -0
  61. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/character_collision/standalone.py +0 -0
  62. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/object_tileset_collision/__init__.py +0 -0
  63. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/object_tileset_collision/editor.py +0 -0
  64. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/object_tileset_collision/models.py +0 -0
  65. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/object_tileset_collision/protocols.py +0 -0
  66. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/object_tileset_collision/standalone.py +0 -0
  67. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/__init__.py +0 -0
  68. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/__main__.py +0 -0
  69. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/clipboard_util.py +0 -0
  70. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/editor.py +0 -0
  71. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/frame_picker.py +0 -0
  72. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/models.py +0 -0
  73. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/preview.py +0 -0
  74. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/protocols.py +0 -0
  75. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/runtime_load.py +0 -0
  76. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/standalone.py +0 -0
  77. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/timeline.py +0 -0
  78. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/sprite_animation/validation.py +0 -0
  79. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/tileset_collision/__init__.py +0 -0
  80. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/tileset_collision/collision_painter.py +0 -0
  81. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/tileset_collision/editor.py +0 -0
  82. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/tileset_collision/models.py +0 -0
  83. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/tileset_collision/protocols.py +0 -0
  84. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/plugins/tileset_collision/standalone.py +0 -0
  85. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/standalone_automap.py +0 -0
  86. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/standalone_error_console.py +0 -0
  87. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/standalone_filemanager.py +0 -0
  88. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/standalone_image_viewer.py +0 -0
  89. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap.py +0 -0
  90. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/__init__.py +0 -0
  91. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/__main__.py +0 -0
  92. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/__init__.py +0 -0
  93. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  94. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  95. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  96. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  97. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  98. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  99. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  100. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  101. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/ToolMove.svg +0 -0
  102. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/arrow-down.svg +0 -0
  103. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/check.svg +0 -0
  104. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/checked.svg +0 -0
  105. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/close.svg +0 -0
  106. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/duplicate.svg +0 -0
  107. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/error.svg +0 -0
  108. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/file.svg +0 -0
  109. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/filedead.svg +0 -0
  110. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/fit.svg +0 -0
  111. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/folder.svg +0 -0
  112. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/grid.svg +0 -0
  113. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/image.svg +0 -0
  114. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/info.svg +0 -0
  115. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/load.svg +0 -0
  116. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/loop.svg +0 -0
  117. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/pan.svg +0 -0
  118. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/pause.svg +0 -0
  119. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/pencil.svg +0 -0
  120. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/play.svg +0 -0
  121. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/plus.svg +0 -0
  122. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/radio.svg +0 -0
  123. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/reset.svg +0 -0
  124. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/save.svg +0 -0
  125. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/stop.svg +0 -0
  126. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/tilemap.svg +0 -0
  127. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/tileset.svg +0 -0
  128. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/unchecked.svg +0 -0
  129. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/warning.svg +0 -0
  130. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/zoomin.svg +0 -0
  131. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/assets/icons/zoomout.svg +0 -0
  132. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/cli.py +0 -0
  133. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor/main.py +0 -0
  134. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor.egg-info/SOURCES.txt +0 -0
  135. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor.egg-info/dependency_links.txt +0 -0
  136. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor.egg-info/entry_points.txt +0 -0
  137. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor.egg-info/requires.txt +0 -0
  138. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/tilemap_editor.egg-info/top_level.txt +0 -0
  139. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/ttypes/__init__.py +0 -0
  140. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/ttypes/tilemap.py +0 -0
  141. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/__init__.py +0 -0
  142. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/editor_preference.py +0 -0
  143. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/error_handler.py +0 -0
  144. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/font_manager.py +0 -0
  145. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/history.py +0 -0
  146. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/icon_manager.py +0 -0
  147. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/icons_cache.py +0 -0
  148. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/log_capture.py +0 -0
  149. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/project_paths.py +0 -0
  150. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/serialization.py +0 -0
  151. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/standalone.py +0 -0
  152. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/utils/validation.py +0 -0
  153. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/__init__.py +0 -0
  154. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/automap_models.py +0 -0
  155. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/autotile_template.py +0 -0
  156. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/autotiler.py +0 -0
  157. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/filemanager.py +0 -0
  158. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/input.py +0 -0
  159. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/layer_selector.py +0 -0
  160. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/mapsetup.py +0 -0
  161. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/regex_automap_designer.py +0 -0
  162. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/tile_grid.py +0 -0
  163. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/tile_selector.py +0 -0
  164. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/collision_layer_mask.py +0 -0
  165. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/collision_layer_sidebar.py +0 -0
  166. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/draw_utils.py +0 -0
  167. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/fileinput.py +0 -0
  168. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/layer_type_dialog.py +0 -0
  169. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/menubar.py +0 -0
  170. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/mode_indicator.py +0 -0
  171. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/notification.py +0 -0
  172. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/property_editor.py +0 -0
  173. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/region_selector.py +0 -0
  174. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/status_bar.py +0 -0
  175. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/theme.py +0 -0
  176. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/tileset_type_dialog.py +0 -0
  177. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/toolbar.py +0 -0
  178. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/src/widgets/ui/tooltip.py +0 -0
  179. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/tests/test_collision_layer_mask.py +0 -0
  180. {tilemap_editor-3.1.2 → tilemap_editor-3.1.3}/tests/test_collision_layer_sidebar.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilemap-editor
3
- Version: 3.1.2
3
+ Version: 3.1.3
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.1.2"
7
+ version = "3.1.3"
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"
@@ -117,7 +117,7 @@ def _load_project_config() -> tuple[Path, Path, dict]:
117
117
  data_root = base_path / data_path
118
118
 
119
119
  if not data_root.exists():
120
- raise RuntimeError(f"Data directory not found: {data_root}. Run 'tilemap-editor init' to create project structure.")
120
+ raise RuntimeError(f"Data directory not found: {data_root}. Run 'tilemap-editor init' to create the project structure.")
121
121
 
122
122
  # Initialize error_handler with proper paths
123
123
  log_root = data_root / "logs"
@@ -42,6 +42,10 @@ def init_settings(generate_main: bool = False) -> None:
42
42
 
43
43
  print(f"Created settings.json at {settings_file}")
44
44
 
45
+ data_dir = base_path / settings["data_path"]
46
+ data_dir.mkdir(parents=True, exist_ok=True)
47
+ print(f"Created data directory: {data_dir}")
48
+
45
49
  if generate_main:
46
50
  generate_main_file()
47
51
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilemap-editor
3
- Version: 3.1.2
3
+ Version: 3.1.3
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
@@ -0,0 +1,145 @@
1
+ import json
2
+ import os
3
+ import tempfile
4
+ from pathlib import Path
5
+ from unittest import mock
6
+
7
+ import pytest
8
+
9
+ import sys
10
+ sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
11
+
12
+ from utils.project_paths import to_project_path, resolve_project_path
13
+ from tilemap_editor.settings import init_settings
14
+
15
+
16
+ @pytest.fixture
17
+ def tmp_base():
18
+ with tempfile.TemporaryDirectory() as tmp:
19
+ yield Path(tmp)
20
+
21
+
22
+ @pytest.fixture
23
+ def tmp_with_file(tmp_base):
24
+ target = tmp_base / "subdir" / "file.png"
25
+ target.parent.mkdir(parents=True)
26
+ target.touch()
27
+ return tmp_base, target
28
+
29
+
30
+ class TestToProjectPath:
31
+ def test_relative_to_base(self, tmp_with_file):
32
+ base, target = tmp_with_file
33
+ assert to_project_path(target, base) == "subdir/file.png"
34
+
35
+ def test_absolute_input(self, tmp_base):
36
+ target = tmp_base / "file.png"
37
+ target.touch()
38
+ assert to_project_path(str(target), tmp_base) == "file.png"
39
+
40
+ def test_outside_base_directory(self, tmp_base):
41
+ base = tmp_base / "project"
42
+ base.mkdir()
43
+ outside = tmp_base / "outside" / "file.png"
44
+ outside.parent.mkdir(parents=True)
45
+ outside.touch()
46
+
47
+ result = to_project_path(outside, base)
48
+ assert ".." in result
49
+
50
+
51
+ class TestResolveProjectPath:
52
+ def test_resolves_relative_to_base(self, tmp_base):
53
+ target = tmp_base / "subdir" / "file.png"
54
+ target.parent.mkdir(parents=True)
55
+ target.touch()
56
+
57
+ result = resolve_project_path("subdir/file.png", tmp_base, must_exist=True)
58
+ assert result == target.resolve()
59
+
60
+ def test_resolves_via_fallback(self, tmp_base):
61
+ base = tmp_base / "project"
62
+ base.mkdir()
63
+ fallback = tmp_base / "maps"
64
+ fallback.mkdir()
65
+ target = fallback / "assets" / "file.png"
66
+ target.parent.mkdir(parents=True)
67
+ target.touch()
68
+
69
+ stored = "assets/file.png"
70
+ result = resolve_project_path(stored, base, fallback_roots=[fallback], must_exist=True)
71
+ assert result == target.resolve()
72
+
73
+ def test_returns_first_candidate_when_not_exist(self, tmp_base):
74
+ stored = "nonexistent/file.png"
75
+ result = resolve_project_path(stored, tmp_base)
76
+ assert result == (tmp_base / stored).resolve()
77
+
78
+
79
+ class TestInitSettings:
80
+ def test_creates_settings_json_and_data_dir(self):
81
+ with tempfile.TemporaryDirectory() as tmp:
82
+ tmp_path = Path(tmp).resolve()
83
+ orig_cwd = Path.cwd()
84
+ os.chdir(str(tmp_path))
85
+ try:
86
+ with mock.patch("builtins.input", return_value=str(tmp_path)):
87
+ init_settings()
88
+
89
+ settings_file = tmp_path / "settings.json"
90
+ assert settings_file.exists()
91
+
92
+ with open(settings_file) as f:
93
+ cfg = json.load(f)
94
+ assert cfg["base_path"] == str(tmp_path)
95
+ assert cfg["data_path"] == "data"
96
+
97
+ data_dir = tmp_path / "data"
98
+ assert data_dir.is_dir()
99
+ finally:
100
+ os.chdir(str(orig_cwd))
101
+
102
+ def test_uses_current_dir_as_default_base(self):
103
+ with tempfile.TemporaryDirectory() as tmp:
104
+ tmp_path = Path(tmp).resolve()
105
+ orig_cwd = Path.cwd()
106
+ os.chdir(str(tmp_path))
107
+ try:
108
+ with mock.patch("builtins.input", return_value=""):
109
+ init_settings()
110
+
111
+ settings_file = tmp_path / "settings.json"
112
+ assert settings_file.exists()
113
+
114
+ with open(settings_file) as f:
115
+ cfg = json.load(f)
116
+ assert Path(cfg["base_path"]).resolve() == tmp_path
117
+ finally:
118
+ os.chdir(str(orig_cwd))
119
+
120
+ def test_aborts_if_settings_already_exists(self):
121
+ with tempfile.TemporaryDirectory() as tmp:
122
+ tmp_path = Path(tmp).resolve()
123
+ (tmp_path / "settings.json").touch()
124
+ orig_cwd = Path.cwd()
125
+ os.chdir(str(tmp_path))
126
+ try:
127
+ with mock.patch("builtins.input", return_value=str(tmp_path)):
128
+ with pytest.raises(RuntimeError, match="already exists"):
129
+ init_settings()
130
+ finally:
131
+ os.chdir(str(orig_cwd))
132
+
133
+ def test_creates_main_file_when_flag_set(self):
134
+ with tempfile.TemporaryDirectory() as tmp:
135
+ tmp_path = Path(tmp).resolve()
136
+ orig_cwd = Path.cwd()
137
+ os.chdir(str(tmp_path))
138
+ try:
139
+ with mock.patch("builtins.input", return_value=str(tmp_path)):
140
+ init_settings(generate_main=True)
141
+
142
+ src_main = tmp_path / "src" / "main.py"
143
+ assert src_main.exists()
144
+ finally:
145
+ os.chdir(str(orig_cwd))
@@ -1,73 +0,0 @@
1
- import tempfile
2
- from pathlib import Path
3
-
4
- import sys
5
- sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
6
-
7
- from utils.project_paths import to_project_path, resolve_project_path
8
-
9
-
10
- class TestToProjectPath:
11
- def test_relative_to_base(self):
12
- with tempfile.TemporaryDirectory() as tmp:
13
- base = Path(tmp)
14
- target = base / "subdir" / "file.png"
15
- target.parent.mkdir(parents=True)
16
- target.touch()
17
-
18
- result = to_project_path(target, base)
19
- assert result == "subdir/file.png"
20
-
21
- def test_absolute_input(self):
22
- with tempfile.TemporaryDirectory() as tmp:
23
- base = Path(tmp)
24
- target = base / "file.png"
25
- target.touch()
26
-
27
- result = to_project_path(str(target), base)
28
- assert result == "file.png"
29
-
30
- def test_outside_base_directory(self):
31
- with tempfile.TemporaryDirectory() as tmp:
32
- base = Path(tmp) / "project"
33
- base.mkdir()
34
- outside = Path(tmp) / "outside" / "file.png"
35
- outside.parent.mkdir(parents=True)
36
- outside.touch()
37
-
38
- result = to_project_path(outside, base)
39
- assert ".." in result
40
-
41
-
42
- class TestResolveProjectPath:
43
- def test_resolves_relative_to_base(self):
44
- with tempfile.TemporaryDirectory() as tmp:
45
- base = Path(tmp)
46
- target = base / "subdir" / "file.png"
47
- target.parent.mkdir(parents=True)
48
- target.touch()
49
-
50
- stored = "subdir/file.png"
51
- result = resolve_project_path(stored, base, must_exist=True)
52
- assert result == target.resolve()
53
-
54
- def test_resolves_via_fallback(self):
55
- with tempfile.TemporaryDirectory() as tmp:
56
- base = Path(tmp) / "project"
57
- base.mkdir()
58
- fallback = Path(tmp) / "maps"
59
- fallback.mkdir()
60
- target = fallback / "assets" / "file.png"
61
- target.parent.mkdir(parents=True)
62
- target.touch()
63
-
64
- stored = "assets/file.png"
65
- result = resolve_project_path(stored, base, fallback_roots=[fallback], must_exist=True)
66
- assert result == target.resolve()
67
-
68
- def test_returns_first_candidate_when_not_exist(self):
69
- with tempfile.TemporaryDirectory() as tmp:
70
- base = Path(tmp)
71
- stored = "nonexistent/file.png"
72
- result = resolve_project_path(stored, base)
73
- assert result == (base / stored).resolve()
File without changes
File without changes
File without changes