tilemap-editor 3.3.7__tar.gz → 3.3.9__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 (208) hide show
  1. {tilemap_editor-3.3.7/src/tilemap_editor.egg-info → tilemap_editor-3.3.9}/PKG-INFO +1 -1
  2. tilemap_editor-3.3.9/assets/icons/onion.svg +6 -0
  3. tilemap_editor-3.3.9/assets/icons/skip-back.svg +4 -0
  4. tilemap_editor-3.3.9/assets/icons/skip-forward.svg +4 -0
  5. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/pyproject.toml +1 -1
  6. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/preview.py +9 -3
  7. tilemap_editor-3.3.9/src/tilemap_editor/assets/icons/onion.svg +6 -0
  8. tilemap_editor-3.3.9/src/tilemap_editor/assets/icons/skip-back.svg +4 -0
  9. tilemap_editor-3.3.9/src/tilemap_editor/assets/icons/skip-forward.svg +4 -0
  10. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/cli.py +11 -1
  11. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/settings.py +35 -1
  12. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9/src/tilemap_editor.egg-info}/PKG-INFO +1 -1
  13. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor.egg-info/SOURCES.txt +6 -0
  14. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_project_paths.py +81 -1
  15. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/LICENSE +0 -0
  16. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/MANIFEST.in +0 -0
  17. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/README.md +0 -0
  18. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  19. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  20. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  21. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  22. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  23. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  24. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  25. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  26. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/arrow-down.svg +0 -0
  27. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/check.svg +0 -0
  28. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/checked.svg +0 -0
  29. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/close.svg +0 -0
  30. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/duplicate.svg +0 -0
  31. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/error.svg +0 -0
  32. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/file.svg +0 -0
  33. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/filedead.svg +0 -0
  34. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/fit.svg +0 -0
  35. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/folder.svg +0 -0
  36. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/grid.svg +0 -0
  37. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/image.svg +0 -0
  38. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/info.svg +0 -0
  39. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/load.svg +0 -0
  40. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/loop.svg +0 -0
  41. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/pan.svg +0 -0
  42. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/pause.svg +0 -0
  43. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/pencil.svg +0 -0
  44. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/play.svg +0 -0
  45. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/plus.svg +0 -0
  46. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/radio.svg +0 -0
  47. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/reset.svg +0 -0
  48. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/save.svg +0 -0
  49. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/stop.svg +0 -0
  50. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/tilemap.svg +0 -0
  51. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/tileset.svg +0 -0
  52. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/unchecked.svg +0 -0
  53. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/warning.svg +0 -0
  54. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/zoomin.svg +0 -0
  55. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/assets/icons/zoomout.svg +0 -0
  56. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/setup.cfg +0 -0
  57. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/configs/themes.py +0 -0
  58. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/constants.py +0 -0
  59. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/editor.py +0 -0
  60. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/event_map.py +0 -0
  61. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/layers.py +0 -0
  62. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/main.py +0 -0
  63. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/node_manager.py +0 -0
  64. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/nodes.py +0 -0
  65. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/__init__.py +0 -0
  66. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/character_collision/__init__.py +0 -0
  67. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/character_collision/editor.py +0 -0
  68. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/character_collision/models.py +0 -0
  69. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/character_collision/protocols.py +0 -0
  70. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/character_collision/shape_editor.py +0 -0
  71. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/character_collision/standalone.py +0 -0
  72. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/object_tileset_collision/__init__.py +0 -0
  73. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/object_tileset_collision/editor.py +0 -0
  74. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/object_tileset_collision/models.py +0 -0
  75. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/object_tileset_collision/protocols.py +0 -0
  76. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/object_tileset_collision/standalone.py +0 -0
  77. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/__init__.py +0 -0
  78. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/__main__.py +0 -0
  79. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/clipboard_util.py +0 -0
  80. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/editor.py +0 -0
  81. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/frame_picker.py +0 -0
  82. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/models.py +0 -0
  83. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/protocols.py +0 -0
  84. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/runtime_load.py +0 -0
  85. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/standalone.py +0 -0
  86. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/timeline.py +0 -0
  87. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_animation/validation.py +0 -0
  88. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_editor/__init__.py +0 -0
  89. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_editor/editor.py +0 -0
  90. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/sprite_editor/standalone.py +0 -0
  91. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/tileset_collision/__init__.py +0 -0
  92. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/tileset_collision/collision_painter.py +0 -0
  93. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/tileset_collision/editor.py +0 -0
  94. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/tileset_collision/models.py +0 -0
  95. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/tileset_collision/protocols.py +0 -0
  96. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/plugins/tileset_collision/standalone.py +0 -0
  97. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/standalone_automap.py +0 -0
  98. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/standalone_error_console.py +0 -0
  99. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/standalone_filemanager.py +0 -0
  100. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/standalone_image_viewer.py +0 -0
  101. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap.py +0 -0
  102. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/__init__.py +0 -0
  103. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/__main__.py +0 -0
  104. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/__init__.py +0 -0
  105. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
  106. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
  107. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
  108. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
  109. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  110. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  111. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  112. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  113. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/ToolMove.svg +0 -0
  114. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/arrow-down.svg +0 -0
  115. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/check.svg +0 -0
  116. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/checked.svg +0 -0
  117. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/close.svg +0 -0
  118. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/duplicate.svg +0 -0
  119. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/error.svg +0 -0
  120. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/file.svg +0 -0
  121. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/filedead.svg +0 -0
  122. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/fit.svg +0 -0
  123. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/folder.svg +0 -0
  124. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/grid.svg +0 -0
  125. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/image.svg +0 -0
  126. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/info.svg +0 -0
  127. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/load.svg +0 -0
  128. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/loop.svg +0 -0
  129. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/pan.svg +0 -0
  130. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/pause.svg +0 -0
  131. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/pencil.svg +0 -0
  132. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/play.svg +0 -0
  133. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/plus.svg +0 -0
  134. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/radio.svg +0 -0
  135. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/reset.svg +0 -0
  136. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/save.svg +0 -0
  137. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/stop.svg +0 -0
  138. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/tilemap.svg +0 -0
  139. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/tileset.svg +0 -0
  140. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/unchecked.svg +0 -0
  141. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/warning.svg +0 -0
  142. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/zoomin.svg +0 -0
  143. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/assets/icons/zoomout.svg +0 -0
  144. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor/main.py +0 -0
  145. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor.egg-info/dependency_links.txt +0 -0
  146. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor.egg-info/entry_points.txt +0 -0
  147. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor.egg-info/requires.txt +0 -0
  148. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/tilemap_editor.egg-info/top_level.txt +0 -0
  149. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/ttypes/__init__.py +0 -0
  150. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/ttypes/tilemap.py +0 -0
  151. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/__init__.py +0 -0
  152. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/editor_preference.py +0 -0
  153. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/error_handler.py +0 -0
  154. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/font_manager.py +0 -0
  155. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/history.py +0 -0
  156. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/icon_manager.py +0 -0
  157. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/icons_cache.py +0 -0
  158. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/log_capture.py +0 -0
  159. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/project_paths.py +0 -0
  160. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/serialization.py +0 -0
  161. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/standalone.py +0 -0
  162. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/utils/validation.py +0 -0
  163. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/__init__.py +0 -0
  164. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/automap_models.py +0 -0
  165. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/autotile_template.py +0 -0
  166. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/autotiler.py +0 -0
  167. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/filemanager.py +0 -0
  168. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/input.py +0 -0
  169. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/layer_selector.py +0 -0
  170. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/map_properties.py +0 -0
  171. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/mapsetup.py +0 -0
  172. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/particle_presets.py +0 -0
  173. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/particle_system.py +0 -0
  174. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/regex_automap_designer.py +0 -0
  175. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/spritesheet_grid.py +0 -0
  176. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/tile_grid.py +0 -0
  177. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/tile_selector.py +0 -0
  178. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/checkbox.py +0 -0
  179. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/collision_layer_mask.py +0 -0
  180. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/collision_layer_sidebar.py +0 -0
  181. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/confirm_dialog.py +0 -0
  182. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/draw_utils.py +0 -0
  183. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/fileinput.py +0 -0
  184. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/layer_type_dialog.py +0 -0
  185. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/menubar.py +0 -0
  186. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/mode_indicator.py +0 -0
  187. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/node_editor.py +0 -0
  188. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/node_selector.py +0 -0
  189. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/notification.py +0 -0
  190. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/particle_config_dialog.py +0 -0
  191. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/property_editor.py +0 -0
  192. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/region_selector.py +0 -0
  193. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/status_bar.py +0 -0
  194. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/theme.py +0 -0
  195. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/tileset_type_dialog.py +0 -0
  196. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/toolbar.py +0 -0
  197. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/src/widgets/ui/tooltip.py +0 -0
  198. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_animation_library_grid_offset.py +0 -0
  199. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_collision_layer_mask.py +0 -0
  200. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_collision_layer_sidebar.py +0 -0
  201. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_editor_pan_mode.py +0 -0
  202. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_render_scale.py +0 -0
  203. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_sprite_animation_editor_grid.py +0 -0
  204. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_tile_grid_selection.py +0 -0
  205. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_tile_selector_pick.py +0 -0
  206. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_tilemap_save.py +0 -0
  207. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/tests/test_timeline_invalidate_cache.py +0 -0
  208. {tilemap_editor-3.3.7 → tilemap_editor-3.3.9}/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.7
3
+ Version: 3.3.9
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,6 @@
1
+ <svg xmlns="http://w3.org" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M18.5 10a6.5 6.5 0 1 0-13 0c0 4.5-1.5 6-1.5 6h16s-1.5-1.5-1.5-6z" />
3
+ <path d="M7 16l1.5 3 1.5-3 1.5 3 1.5-3 1.5 3 1.5-3 1.5 3 1.5-3" />
4
+ <circle cx="9.5" cy="10.5" r="1" fill="currentColor" />
5
+ <circle cx="14.5" cy="10.5" r="1" fill="currentColor" />
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://w3.org" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <line x1="5" y1="4" x2="5" y2="20" />
3
+ <polygon points="19 20 9 12 19 4 19 20" fill="currentColor" />
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://w3.org" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <polygon points="5 4 15 12 5 20 5 4" fill="currentColor" />
3
+ <line x1="19" y1="4" x2="19" y2="20" />
4
+ </svg>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tilemap-editor"
7
- version = "3.3.7"
7
+ version = "3.3.9"
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"
@@ -341,7 +341,9 @@ class AnimationPreview:
341
341
 
342
342
  # |<< (prev)
343
343
  self._btn_prev = Rect(x, y, bw, bh)
344
- self._draw_btn(screen, self._btn_prev, "|◀", mouse)
344
+ self._draw_btn(screen, self._btn_prev, "", mouse)
345
+ prev_icon = icon_manager.get_icon("skip-back", 12, _COLORS["text"])
346
+ screen.blit(prev_icon, prev_icon.get_rect(center=self._btn_prev.center))
345
347
  x += bw + pad
346
348
 
347
349
  # Play / Pause
@@ -362,7 +364,9 @@ class AnimationPreview:
362
364
 
363
365
  # >>| (next)
364
366
  self._btn_next = Rect(x, y, bw, bh)
365
- self._draw_btn(screen, self._btn_next, "▶|", mouse)
367
+ self._draw_btn(screen, self._btn_next, "", mouse)
368
+ next_icon = icon_manager.get_icon("skip-forward", 12, _COLORS["text"])
369
+ screen.blit(next_icon, next_icon.get_rect(center=self._btn_next.center))
366
370
  x += bw + pad + 4
367
371
 
368
372
  # Loop toggle
@@ -393,7 +397,9 @@ class AnimationPreview:
393
397
  # Onion skin
394
398
  if x + bw + 12 < ctrl_rect.right:
395
399
  self._btn_onion = Rect(x, y, bw + 4, bh)
396
- self._draw_btn(screen, self._btn_onion, "👻", mouse, active=self.show_onion)
400
+ self._draw_btn(screen, self._btn_onion, "", mouse, active=self.show_onion)
401
+ onion_icon = icon_manager.get_icon("onion", 14, _COLORS["text"])
402
+ screen.blit(onion_icon, onion_icon.get_rect(center=self._btn_onion.center))
397
403
 
398
404
  def _draw_btn(
399
405
  self, screen: pygame.Surface, rect: Rect, label: str, mouse, active=False
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://w3.org" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M18.5 10a6.5 6.5 0 1 0-13 0c0 4.5-1.5 6-1.5 6h16s-1.5-1.5-1.5-6z" />
3
+ <path d="M7 16l1.5 3 1.5-3 1.5 3 1.5-3 1.5 3 1.5-3 1.5 3 1.5-3" />
4
+ <circle cx="9.5" cy="10.5" r="1" fill="currentColor" />
5
+ <circle cx="14.5" cy="10.5" r="1" fill="currentColor" />
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://w3.org" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <line x1="5" y1="4" x2="5" y2="20" />
3
+ <polygon points="19 20 9 12 19 4 19 20" fill="currentColor" />
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://w3.org" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <polygon points="5 4 15 12 5 20 5 4" fill="currentColor" />
3
+ <line x1="19" y1="4" x2="19" y2="20" />
4
+ </svg>
@@ -5,7 +5,7 @@ import sys
5
5
 
6
6
  from editor import Editor
7
7
  from utils import error_handler, error_context
8
- from .settings import init_settings
8
+ from .settings import init_settings, update_settings
9
9
 
10
10
 
11
11
  def _parse_size(text: str) -> tuple[int, int]:
@@ -29,6 +29,12 @@ def main() -> None:
29
29
  help="Also create src/main.py boilerplate"
30
30
  )
31
31
 
32
+ update_parser = subparsers.add_parser("update", help="Update settings.json base_path for current device")
33
+ update_parser.add_argument(
34
+ "--path", default=None,
35
+ help="Explicit base path (default: resolves cwd to absolute path)"
36
+ )
37
+
32
38
  run_parser = subparsers.add_parser("run", help="Run the tilemap editor")
33
39
  run_parser.add_argument(
34
40
  "--size", default="1500x900", help="Window size as WIDTHxHEIGHT"
@@ -43,6 +49,10 @@ def main() -> None:
43
49
  init_settings(generate_main=args.with_main)
44
50
  return
45
51
 
52
+ if args.command == "update":
53
+ update_settings(path=args.path)
54
+ return
55
+
46
56
  if args.command is None or args.command == "run":
47
57
  _run_editor(args)
48
58
  return
@@ -1,6 +1,7 @@
1
1
  import json
2
2
  import sys
3
3
  from pathlib import Path
4
+ from typing import Optional
4
5
 
5
6
 
6
7
  def init_settings(generate_main: bool = False) -> None:
@@ -71,4 +72,37 @@ if __name__ == "__main__":
71
72
  with open(main_file, "w") as f:
72
73
  f.write(boilerplate)
73
74
 
74
- print(f"Created {main_file}")
75
+ print(f"Created {main_file}")
76
+
77
+
78
+ def update_settings(path: Optional[str] = None) -> None:
79
+ """Update base_path in an existing settings.json to the current device path.
80
+
81
+ If no path is given, resolves the current working directory to an absolute
82
+ path and writes it as base_path. This makes settings.json portable when
83
+ shared across devices — run update on each device to fix the path.
84
+
85
+ Args:
86
+ path: Optional explicit base_path to write (e.g. --path /home/user/project)
87
+ """
88
+ settings_file = Path.cwd() / "settings.json"
89
+
90
+ if not settings_file.exists():
91
+ raise RuntimeError(
92
+ "settings.json not found. Run 'tilemap-editor init' first."
93
+ )
94
+
95
+ with open(settings_file, "r") as f:
96
+ config = json.load(f)
97
+
98
+ if path is not None:
99
+ new_base = str(Path(path).expanduser().resolve())
100
+ else:
101
+ new_base = str(Path.cwd().resolve())
102
+
103
+ config["base_path"] = new_base
104
+
105
+ with open(settings_file, "w") as f:
106
+ json.dump(config, f, indent=4)
107
+
108
+ print(f"Updated base_path to '{new_base}' in {settings_file}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilemap-editor
3
- Version: 3.3.7
3
+ Version: 3.3.9
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
@@ -25,6 +25,7 @@ assets/icons/image.svg
25
25
  assets/icons/info.svg
26
26
  assets/icons/load.svg
27
27
  assets/icons/loop.svg
28
+ assets/icons/onion.svg
28
29
  assets/icons/pan.svg
29
30
  assets/icons/pause.svg
30
31
  assets/icons/pencil.svg
@@ -33,6 +34,8 @@ assets/icons/plus.svg
33
34
  assets/icons/radio.svg
34
35
  assets/icons/reset.svg
35
36
  assets/icons/save.svg
37
+ assets/icons/skip-back.svg
38
+ assets/icons/skip-forward.svg
36
39
  assets/icons/stop.svg
37
40
  assets/icons/tilemap.svg
38
41
  assets/icons/tileset.svg
@@ -122,6 +125,7 @@ src/tilemap_editor/assets/icons/image.svg
122
125
  src/tilemap_editor/assets/icons/info.svg
123
126
  src/tilemap_editor/assets/icons/load.svg
124
127
  src/tilemap_editor/assets/icons/loop.svg
128
+ src/tilemap_editor/assets/icons/onion.svg
125
129
  src/tilemap_editor/assets/icons/pan.svg
126
130
  src/tilemap_editor/assets/icons/pause.svg
127
131
  src/tilemap_editor/assets/icons/pencil.svg
@@ -130,6 +134,8 @@ src/tilemap_editor/assets/icons/plus.svg
130
134
  src/tilemap_editor/assets/icons/radio.svg
131
135
  src/tilemap_editor/assets/icons/reset.svg
132
136
  src/tilemap_editor/assets/icons/save.svg
137
+ src/tilemap_editor/assets/icons/skip-back.svg
138
+ src/tilemap_editor/assets/icons/skip-forward.svg
133
139
  src/tilemap_editor/assets/icons/stop.svg
134
140
  src/tilemap_editor/assets/icons/tilemap.svg
135
141
  src/tilemap_editor/assets/icons/tileset.svg
@@ -10,7 +10,7 @@ import sys
10
10
  sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
11
11
 
12
12
  from utils.project_paths import to_project_path, resolve_project_path
13
- from tilemap_editor.settings import init_settings
13
+ from tilemap_editor.settings import init_settings, update_settings
14
14
 
15
15
 
16
16
  @pytest.fixture
@@ -143,3 +143,83 @@ class TestInitSettings:
143
143
  assert src_main.exists()
144
144
  finally:
145
145
  os.chdir(str(orig_cwd))
146
+
147
+
148
+ class TestUpdateSettings:
149
+ def test_updates_base_path_to_cwd_when_no_path_given(self):
150
+ with tempfile.TemporaryDirectory() as tmp:
151
+ tmp_path = Path(tmp).resolve()
152
+ orig_cwd = Path.cwd()
153
+ os.chdir(str(tmp_path))
154
+ try:
155
+ settings_file = tmp_path / "settings.json"
156
+ with open(settings_file, "w") as f:
157
+ json.dump({"base_path": "/old/path", "data_path": "data"}, f)
158
+
159
+ update_settings()
160
+
161
+ with open(settings_file) as f:
162
+ cfg = json.load(f)
163
+ assert cfg["base_path"] == str(tmp_path)
164
+ assert cfg["data_path"] == "data"
165
+ finally:
166
+ os.chdir(str(orig_cwd))
167
+
168
+ def test_updates_base_path_to_given_path(self):
169
+ with tempfile.TemporaryDirectory() as tmp:
170
+ tmp_path = Path(tmp).resolve()
171
+ orig_cwd = Path.cwd()
172
+ os.chdir(str(tmp_path))
173
+ try:
174
+ settings_file = tmp_path / "settings.json"
175
+ with open(settings_file, "w") as f:
176
+ json.dump({"base_path": "/old/path", "data_path": "data"}, f)
177
+
178
+ new_path = tmp_path / "some" / "other"
179
+ update_settings(path=str(new_path))
180
+
181
+ with open(settings_file) as f:
182
+ cfg = json.load(f)
183
+ assert cfg["base_path"] == str(new_path.resolve())
184
+ finally:
185
+ os.chdir(str(orig_cwd))
186
+
187
+ def test_raises_when_settings_json_missing(self):
188
+ with tempfile.TemporaryDirectory() as tmp:
189
+ tmp_path = Path(tmp).resolve()
190
+ orig_cwd = Path.cwd()
191
+ os.chdir(str(tmp_path))
192
+ try:
193
+ with pytest.raises(RuntimeError, match="settings.json not found"):
194
+ update_settings()
195
+ finally:
196
+ os.chdir(str(orig_cwd))
197
+
198
+ def test_does_not_touch_other_fields(self):
199
+ with tempfile.TemporaryDirectory() as tmp:
200
+ tmp_path = Path(tmp).resolve()
201
+ orig_cwd = Path.cwd()
202
+ os.chdir(str(tmp_path))
203
+ try:
204
+ original = {
205
+ "base_path": "/old/path",
206
+ "data_path": "data",
207
+ "collision_paths": {"tileset": "collision"},
208
+ "nodes_path": "nodes",
209
+ "error_handler": {"log_path": "errors.log"},
210
+ }
211
+ settings_file = tmp_path / "settings.json"
212
+ with open(settings_file, "w") as f:
213
+ json.dump(original, f)
214
+
215
+ update_settings()
216
+
217
+ with open(settings_file) as f:
218
+ cfg = json.load(f)
219
+ assert cfg["base_path"] == str(tmp_path)
220
+ assert cfg["data_path"] == "data"
221
+ assert cfg["collision_paths"] == {"tileset": "collision"}
222
+ assert cfg["nodes_path"] == "nodes"
223
+ assert cfg["error_handler"] == {"log_path": "errors.log"}
224
+ finally:
225
+ os.chdir(str(orig_cwd))
File without changes
File without changes
File without changes